tx · FNuZtVcQfU3qYjpZ1ejvjQesbHXpuyknJ5MhxAM16s7w

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02600000 Waves

2023.01.11 17:06 [2400393] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "FNuZtVcQfU3qYjpZ1ejvjQesbHXpuyknJ5MhxAM16s7w", "fee": 2600000, "feeAssetId": null, "timestamp": 1673445988487, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "4rY46U5GdF3jkErfX6yMY8shrdZdC9CaeLLTQFZDWpcC9caM7P6mnrt5a6S8qxsCX29uiZU84Rf48KdWDwPiWHsT" ], "script": "base64:BgJLCAISAwoBCBIDCgEIEgMKAQgSABIAEgQKAggBEgMKAQgSBAoCCAgSBgoEARgIGBIECgIYCBIECgIICBIECgIICBIDCgEIEgQKAggIYQAGU0NBTEU4AAgABU1VTFQ4AIDC1y8AB1NDQUxFMTgAEgAGTVVMVDE4CQC2AgEAgICQu7rWrfANAANTRVACAl9fAA5QT09MV0VJR0hUTVVMVAUFTVVMVDgACnplcm9CaWdJbnQJALYCAQAAAAlvbmVCaWdJbnQJALYCAQABAQd3cmFwRXJyAQNtc2cJAAIBCQC5CQIJAMwIAgINc3Rha2luZy5yaWRlOgkAzAgCCQClCAEFBHRoaXMJAMwIAgUDbXNnBQNuaWwCASABCHRocm93RXJyAQNtc2cJAAIBCQEHd3JhcEVycgEFA21zZwEJYXNBbnlMaXN0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUx5c3QFByRtYXRjaDAFCnZhbEFueUx5c3QJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQhhc1N0cmluZwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEMYXNCeXRlVmVjdG9yAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAZ2YWxCaW4FByRtYXRjaDAFBnZhbEJpbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQdhZGRyZXNzAgEuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0SW50T3JaZXJvAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEPZ2V0SW50T3JEZWZhdWx0AwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CB2FkZHJlc3MDa2V5CQEFdmFsdWUBCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUHYWRkcmVzcwUDa2V5AgEwARxnZXRCaWdJbnRGcm9tU3RyaW5nT3JEZWZhdWx0AwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsBAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAQV2YWx1ZQEJAKgDAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQpkZWZhdWx0VmFsCQACAQILTWF0Y2ggZXJyb3IBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZNVUxUMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBk1VTFQxOAERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAIaJXNfX3ZvdGluZ0VtaXNzaW9uQ29udHJhY3QAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAABABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAIAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAMAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAEABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAUAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAGABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAcBDWtleUZhY3RvcnlDZmcAAhElc19fZmFjdG9yeUNvbmZpZwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWa2V5U3RhYmxlUG9vbEFkZG9uQWRkcgACFyVzX19zdGFibGVQb29sQWRkb25BZGRyAQxrZXlBZGRvbkFkZHIAAg0lc19fYWRkb25BZGRyARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABEGtleUZhY3RvcnlMcExpc3QAAhAlc19fbHBUb2tlbnNMaXN0ASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABFGtleUZhY3RvcnlQb29sV2VpZ2h0AQ9jb250cmFjdEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUPY29udHJhY3RBZGRyZXNzBQNuaWwFA1NFUAEKcmVhZExwTGlzdAEHZmFjdG9yeQkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFB2ZhY3RvcnkJARBrZXlGYWN0b3J5THBMaXN0AAIABQNTRVABFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQdmYWN0b3J5CQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50ARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uARNrZXlFbWlzc2lvbkVuZEJsb2NrAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQ9rZXlTdGFrZWRCeVVzZXICDnVzZXJBZGRyZXNzU3RyDGxwQXNzZXRJZFN0cgkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABDmtleVN0YWtlZFRvdGFsAQxscEFzc2V0SWRTdHIJAKwCAgIXJXMlcyVzX19zdGFrZWRfX3RvdGFsX18FDGxwQXNzZXRJZFN0cgEQa2V5Q2xhaW1lZEJ5VXNlcgIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIPJXMlcyVzX19jbGFpbWVkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGCVzJXMlc19fY2xhaW1lZE1pblJld2FyZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQARtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGiVzJXMlc19fY2xhaW1lZEJvb3N0UmV3YXJkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABD2tleUNsYWltZWRUb3RhbAEMbHBBc3NldElkU3RyCQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQpyZWFkU3Rha2VkAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABFWtleUxhc3RUb3RhbExwQmFsYW5jZQEJbHBBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUDU0VQARRrZXlMYXN0VXNlckxwQmFsYW5jZQIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgNiYWwFA25pbAUDU0VQARlrZXlUb3RhbExwQmFsYW5jZUludGVncmFsAQlscEFzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICBXRvdGFsCQDMCAICBmJhbElOVAUDbmlsBQNTRVABGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgZiYWxJTlQFA25pbAUDU0VQASZrZXlUb3RhbExwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodAEJbHBBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgV0b3RhbAkAzAgCAgdsYXN0VXBkBQNuaWwFA1NFUAEla2V5VXNlckxwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgdsYXN0VXBkBQNuaWwFA1NFUAESa2V5V3hQZXJMcEludGVncmFsAQlscEFzc2V0SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQlscEFzc2V0SWQJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFA1NFUAEfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodAEJbHBBc3NldElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUDU0VQARBrZXlXeFRvQ2xhaW1Vc2VyAglscEFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQlscEFzc2V0SWQJAMwIAgULdXNlckFkZHJlc3MJAMwIAgIFbHBJbnQFA25pbAUDU0VQASNrZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICBmxwSW50SAUDbmlsBQNTRVABCmtleVd4UGVyTHABCWxwQXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgd3eFBlckxwBQNuaWwFA1NFUAENa2V5V3hQZXJMcFgxOAEJbHBBc3NldElkCQC5CQIJAMwIAgICJXMJAMwIAgUJbHBBc3NldElkCQDMCAICCnd4UGVyTHBYMTgFA25pbAUDU0VQARprZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICBXVJbnRMBQNuaWwFA1NFUAEZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZAMEdHlwZQt1c2VyQWRkcmVzcwZ0eElkNTgJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFBnR4SWQ1OAUDbmlsBQNTRVABE2Zvcm1hdEhpc3RvcnlSZWNvcmQEC3VzZXJBZGRyZXNzCWxwQXNzZXRJZAR0eXBlBmFtb3VudAkAuQkCCQDMCAICDCVzJXMlcyVkJWQlZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQlscEFzc2V0SWQJAMwIAgUEdHlwZQkAzAgCCQCkAwEFBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGYW1vdW50BQNuaWwFA1NFUAEVT3BlcmF0aW9uSGlzdG9yeUVudHJ5BQR0eXBlC3VzZXJBZGRyZXNzCWxwQXNzZXRJZAZhbW91bnQEdHhJZAkBC1N0cmluZ0VudHJ5AgkBGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwkA2AQBBQR0eElkCQETZm9ybWF0SGlzdG9yeVJlY29yZAQFC3VzZXJBZGRyZXNzBQlscEFzc2V0SWQFBHR5cGUFBmFtb3VudAAOZmFjdG9yeUFkZHJlc3MJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQERa2V5RmFjdG9yeUFkZHJlc3MAAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDmZhY3RvcnlBZGRyZXNzAApmYWN0b3J5Q2ZnCQEUcmVhZEZhY3RvcnlDZmdPckZhaWwBBQ9mYWN0b3J5Q29udHJhY3QAEGVtaXNzaW9uQ29udHJhY3QJARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnABBib29zdGluZ0NvbnRyYWN0CQEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwAWbHBTdGFraW5nUG9vbHNDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQC5CQIJAMwIAgICJXMJAMwIAgIWbHBTdGFraW5nUG9vbHNDb250cmFjdAUDbmlsBQNTRVAJAQd3cmFwRXJyAQIubHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzIGlzIHVuZGVmaW5lZAkBB3dyYXBFcnIBAilpbnZhbGlkIGxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcwELa2V5TmV4dFVzZXIBCWxwQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICCG5leHRVc2VyBQNuaWwFA1NFUAEQZ2V0VXNlcnNMaXN0TmFtZQEJbHBBc3NldElkCQC5CQIJAMwIAgIFdXNlcnMJAMwIAgUJbHBBc3NldElkBQNuaWwFA1NFUAELa2V5TGlzdEhlYWQBCGxpc3ROYW1lCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCGxpc3ROYW1lCQDMCAICBGhlYWQFA25pbAUDU0VQAQtrZXlMaXN0U2l6ZQEIbGlzdE5hbWUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUIbGlzdE5hbWUJAMwIAgIEc2l6ZQUDbmlsBQNTRVABC2tleUxpc3RQcmV2AghsaXN0TmFtZQJpZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFCGxpc3ROYW1lCQDMCAIFAmlkCQDMCAICBHByZXYFA25pbAUDU0VQAQtrZXlMaXN0TmV4dAIIbGlzdE5hbWUCaWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRuZXh0BQNuaWwFA1NFUAEMY29udGFpbnNOb2RlAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQKcHJldk9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQECm5leHRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkAwMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIABgkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAYJAQIhPQIFCm5leHRPclVuaXQFBHVuaXQBEWluc2VydE5vZGVBY3Rpb25zAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQIbGlzdFNpemUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUAAAQJY2hlY2tOb2RlAwkBASEBCQEMY29udGFpbnNOb2RlAgUIbGlzdE5hbWUFAmlkBgkAAgECC05vZGUgZXhpc3RzAwkAAAIFCWNoZWNrTm9kZQUJY2hlY2tOb2RlCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGQCBQhsaXN0U2l6ZQABBQNuaWwDCQECIT0CBQpoZWFkT3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkBBXZhbHVlAQUKaGVhZE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKaGVhZE9yVW5pdAUCaWQFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQJpZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFkZWxldGVOb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQkAZQIFCGxpc3RTaXplAAEFA25pbAMDCQECIT0CBQpwcmV2T3JVbml0BQR1bml0CQECIT0CBQpuZXh0T3JVbml0BQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQkBBXZhbHVlAQUKcHJldk9yVW5pdAkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkBBXZhbHVlAQUKcHJldk9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkBQNuaWwDCQECIT0CBQpuZXh0T3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lCQEFdmFsdWUBBQpuZXh0T3JVbml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAUDbmlsAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQFA25pbAMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUIbGlzdE5hbWUCAS4FAmlkARtjYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3QEDHN0YWtlZEJ5VXNlciZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybxJ3eFBlckxwSW50ZWdyYWxOZXcad3hQZXJMcEludGVncmFsVXNlckxhc3RLRVkDAwkAAAIFJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBQp6ZXJvQmlnSW50CQC/AgIFDHN0YWtlZEJ5VXNlcgUKemVyb0JpZ0ludAcFCnplcm9CaWdJbnQDCQAAAgUMc3Rha2VkQnlVc2VyBQp6ZXJvQmlnSW50BRJ3eFBlckxwSW50ZWdyYWxOZXcDAwkAvwICBSZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwUKemVyb0JpZ0ludAkAvwICBQxzdGFrZWRCeVVzZXIFCnplcm9CaWdJbnQHCQEFdmFsdWUBCQCoAwEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzBRp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkAAgECLWNhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdDogdW5leHBlY3RlZCBzdGF0ZQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDDGxwQXNzZXRJZFN0cg5wb29sQWRkcmVzc1N0cg1scERlbHRhQW1vdW50BA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAtzdGFrZWRUb3RhbAkAtgIBCQEKcmVhZFN0YWtlZAEFDnN0YWtlZFRvdGFsS0VZBBJub25aZXJvU3Rha2VkVG90YWwDCQAAAgULc3Rha2VkVG90YWwFCnplcm9CaWdJbnQFCW9uZUJpZ0ludAULc3Rha2VkVG90YWwECnBvb2xXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD2ZhY3RvcnlDb250cmFjdAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIEEmVtaXNzaW9uU3RhcnRCbG9jawkBDGdldEludE9yRmFpbAIFEGVtaXNzaW9uQ29udHJhY3QJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAVNVUxUMwDoBwQUd3hFbWlzc2lvblBlckJsb2NrWDMJAGgCCQEMZ2V0SW50T3JGYWlsAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAFBU1VTFQzBBhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAGsDBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwUKcG9vbFdlaWdodAkAaAIFDlBPT0xXRUlHSFRNVUxUAAMEEnd4UGVyTHBJbnRlZ3JhbEtFWQkBEmtleVd4UGVyTHBJbnRlZ3JhbAEFDGxwQXNzZXRJZFN0cgQfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQkBH2tleVd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQBBQxscEFzc2V0SWRTdHIECnd4UGVyTHBLRVkJAQprZXlXeFBlckxwAQUMbHBBc3NldElkU3RyBBx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0CQEPZ2V0SW50T3JEZWZhdWx0AwUEdGhpcwUfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQUSZW1pc3Npb25TdGFydEJsb2NrBA93eFBlckxwSW50ZWdyYWwJARlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAgUEdGhpcwUSd3hQZXJMcEludGVncmFsS0VZBA93eFBlckxwT3JaZXJvWDMAAAQCZGgJAJYDAQkAzAgCCQBlAgUGaGVpZ2h0BRx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0CQDMCAIAAAUDbmlsBAl3eFBlckxwWDMDCQECIT0CBQ93eFBlckxwT3JaZXJvWDMAAAkAtgIBBQ93eFBlckxwT3JaZXJvWDMJALwCAwkAtgIBBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJALYCAQUFTVVMVDgFEm5vblplcm9TdGFrZWRUb3RhbAQOc3Rha2VkVG90YWxOZXcJALcCAgULc3Rha2VkVG90YWwJALYCAQUNbHBEZWx0YUFtb3VudAQVbm9uWmVyb1N0YWtlZFRvdGFsTmV3AwkAAAIFDnN0YWtlZFRvdGFsTmV3BQp6ZXJvQmlnSW50BQlvbmVCaWdJbnQFDnN0YWtlZFRvdGFsTmV3BBJ3eFBlckxwSW50ZWdyYWxOZXcJALcCAgUPd3hQZXJMcEludGVncmFsCQC5AgIFCXd4UGVyTHBYMwkAtgIBBQJkaAQMd3hQZXJMcFgzTmV3CQC6AgIJALYCAQUYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzBRVub25aZXJvU3Rha2VkVG90YWxOZXcEH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXcFBmhlaWdodAQFZGVidWcJALkJAgkAzAgCCQCmAwEFEnd4UGVyTHBJbnRlZ3JhbE5ldwkAzAgCCQCkAwEFAmRoCQDMCAIJAKYDAQUJd3hQZXJMcFgzCQDMCAIJAKYDAQULc3Rha2VkVG90YWwJAMwIAgkApAMBBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAMwIAgkApAMBBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwkAzAgCCQCkAwEFCnBvb2xXZWlnaHQFA25pbAICOjoJAJUKAwUSd3hQZXJMcEludGVncmFsTmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIFEnd4UGVyTHBJbnRlZ3JhbEtFWQkApgMBBRJ3eFBlckxwSW50ZWdyYWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkFH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXcJAMwIAgkBC1N0cmluZ0VudHJ5AgUKd3hQZXJMcEtFWQkApgMBBQx3eFBlckxwWDNOZXcFA25pbAUFZGVidWcBEHJlZnJlc2hJTlRFR1JBTFMEDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cg5wb29sQWRkcmVzc1N0cg1scERlbHRhQW1vdW50BA0kdDAxNDc1ODE0ODgwCQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDBQxscEFzc2V0SWRTdHIFDnBvb2xBZGRyZXNzU3RyBQ1scERlbHRhQW1vdW50BBJ3eFBlckxwSW50ZWdyYWxOZXcIBQ0kdDAxNDc1ODE0ODgwAl8xBBFwb29sSW50ZWdyYWxTVEFURQgFDSR0MDE0NzU4MTQ4ODACXzIECXBvb2xERUJVRwgFDSR0MDE0NzU4MTQ4ODACXzMEBU1VTFQzAOgHBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBBB3eFRvQ2xhaW1Vc2VyS0VZCQEQa2V5V3hUb0NsYWltVXNlcgIFDGxwQXNzZXRJZFN0cgUOdXNlckFkZHJlc3NTdHIEI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZCQEja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQCBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBBp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkBGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0AgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQNd3hUb0NsYWltVXNlcgkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBRB3eFRvQ2xhaW1Vc2VyS0VZBCZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwkBDGdldEludE9yWmVybwIFBHRoaXMFI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZBBd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkBG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAQJALYCAQUMc3Rha2VkQnlVc2VyCQC2AgEFJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBRJ3eFBlckxwSW50ZWdyYWxOZXcFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZBAZNVUxUMTEJAGgCBQVNVUxUOAUFTVVMVDMEEHd4VG9DbGFpbVVzZXJOZXcJAJgDAQkAzAgCCQC3AgIFDXd4VG9DbGFpbVVzZXIJALwCAwkAuAICBRJ3eFBlckxwSW50ZWdyYWxOZXcFF3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0CQC2AgEFDHN0YWtlZEJ5VXNlcgkAtgIBBQZNVUxUMTEJAMwIAgUKemVyb0JpZ0ludAUDbmlsBBp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldwUSd3hQZXJMcEludGVncmFsTmV3BCN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE5ldwUGaGVpZ2h0BAVkZWJ1ZwkAuQkCCQDMCAIJAKYDAQUNd3hUb0NsYWltVXNlcgkAzAgCCQCmAwEFF3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0CQDMCAIJAKQDAQUMc3Rha2VkQnlVc2VyCQDMCAIFCXBvb2xERUJVRwkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgI6OgkAlQoDBRB3eFRvQ2xhaW1Vc2VyTmV3CQDOCAIFEXBvb2xJbnRlZ3JhbFNUQVRFCQDMCAIJAQtTdHJpbmdFbnRyeQIFEHd4VG9DbGFpbVVzZXJLRVkJAKYDAQUQd3hUb0NsYWltVXNlck5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRLRVkFI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0TmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZCQCmAwEFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0TmV3BQNuaWwFBWRlYnVnARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECC01hdGNoIGVycm9yDgFpAQtjb25zdHJ1Y3RvcgERZmFjdG9yeUFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5RmFjdG9yeUFkZHJlc3MABRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QEBWNoZWtzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQIhPQIJAKYIAQUWdm90aW5nRW1pc3Npb25Db250cmFjdAUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQVjaGVrcwUFY2hla3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QABRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAECWxwQXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBAZhbW91bnQIBQNwbXQGYW1vdW50BA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBAljYWxsZXJTdHIJAKUIAQgFAWkGY2FsbGVyBA51c2VyQWRkcmVzc1N0cgMJAAACBQljYWxsZXJTdHIFDnBvb2xBZGRyZXNzU3RyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgUJY2FsbGVyU3RyBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBAtzdGFrZWRUb3RhbAkBCnJlYWRTdGFrZWQBBQ5zdGFrZWRUb3RhbEtFWQQNJHQwMTkzMTYxOTQzMwkBEHJlZnJlc2hJTlRFR1JBTFMEBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBQ5wb29sQWRkcmVzc1N0cgUGYW1vdW50BBB3eFRvQ2xhaW1Vc2VyTmV3CAUNJHQwMTkzMTYxOTQzMwJfMQQNaW50ZWdyYWxTVEFURQgFDSR0MDE5MzE2MTk0MzMCXzIEBWRlYnVnCAUNJHQwMTkzMTYxOTQzMwJfMwQIbGlzdE5hbWUJARBnZXRVc2Vyc0xpc3ROYW1lAQUMbHBBc3NldElkU3RyBAtsaXN0QWN0aW9ucwMJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUIbGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPc3Rha2VkQnlVc2VyS0VZCQBkAgUMc3Rha2VkQnlVc2VyBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDnN0YWtlZFRvdGFsS0VZCQBkAgULc3Rha2VkVG90YWwFBmFtb3VudAkAzAgCCQEVT3BlcmF0aW9uSGlzdG9yeUVudHJ5BQIFc3Rha2UFDnVzZXJBZGRyZXNzU3RyBQxscEFzc2V0SWRTdHIFBmFtb3VudAgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQ1pbnRlZ3JhbFNUQVRFBQtsaXN0QWN0aW9ucwFpAQd1bnN0YWtlAgxscEFzc2V0SWRTdHIGYW1vdW50BAlscEFzc2V0SWQJANkEAQUMbHBBc3NldElkU3RyBA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBAlwb29sQWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUOcG9vbEFkZHJlc3NTdHIJAQxrZXlBZGRvbkFkZHIABQ5wb29sQWRkcmVzc1N0cgQJY2FsbGVyU3RyCQClCAEIBQFpBmNhbGxlcgQEdGVzdAUWbHBTdGFraW5nUG9vbHNDb250cmFjdAMJAAACBQR0ZXN0BQR0ZXN0BA51c2VyQWRkcmVzc1N0cgMDAwkAAAIFCWNhbGxlclN0cgUOcG9vbEFkZHJlc3NTdHIJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUWbHBTdGFraW5nUG9vbHNDb250cmFjdAcGCQAAAgUJY2FsbGVyU3RyBQlwb29sQWRkb24JAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQljYWxsZXJTdHIDCQAAAgUOdXNlckFkZHJlc3NTdHIFDnVzZXJBZGRyZXNzU3RyBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBAtzdGFrZWRUb3RhbAkBCnJlYWRTdGFrZWQBBQ5zdGFrZWRUb3RhbEtFWQQNaW50ZWdyYWxTVEFURQgJARByZWZyZXNoSU5URUdSQUxTBAUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgUOcG9vbEFkZHJlc3NTdHIJAQEtAQUGYW1vdW50Al8yBAhsaXN0TmFtZQkBEGdldFVzZXJzTGlzdE5hbWUBBQxscEFzc2V0SWRTdHIEC2xpc3RBY3Rpb25zAwMJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIJAAACBQZhbW91bnQFDHN0YWtlZEJ5VXNlcgcJARFkZWxldGVOb2RlQWN0aW9ucwIFCGxpc3ROYW1lBQ51c2VyQWRkcmVzc1N0cgUDbmlsBA1jbGFpbWVkQnlVc2VyCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMJARBrZXlDbGFpbWVkQnlVc2VyAgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQLcG9vbEFkZHJlc3MJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgQQd3hUb0NsYWltVXNlck5ldwgJARByZWZyZXNoSU5URUdSQUxTBAUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgULcG9vbEFkZHJlc3MAAAJfMQQQYXZhaWxhYmxlVG9DbGFpbQkAuAICBRB3eFRvQ2xhaW1Vc2VyTmV3BQ1jbGFpbWVkQnlVc2VyBAFyAwkAvwICBRBhdmFpbGFibGVUb0NsYWltBQp6ZXJvQmlnSW50CQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUOdXNlckFkZHJlc3NTdHIFA25pbAUDbmlsBQR1bml0AwkAAAIFAXIFAXIDCQBmAgUGYW1vdW50BQxzdGFrZWRCeVVzZXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFBmFtb3VudAIbIGlzIGdyZWF0ZXIgdGhhbiBhdmFpbGFibGU9CQCkAwEFDHN0YWtlZEJ5VXNlcgIMLiBscEFzc2V0SWQ9BQxscEFzc2V0SWRTdHICEi4gc3Rha2VkQnlVc2VyS0VZPQUPc3Rha2VkQnlVc2VyS0VZCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPc3Rha2VkQnlVc2VyS0VZCQBlAgUMc3Rha2VkQnlVc2VyBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDnN0YWtlZFRvdGFsS0VZCQBlAgULc3Rha2VkVG90YWwFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUJbHBBc3NldElkCQDMCAIJARVPcGVyYXRpb25IaXN0b3J5RW50cnkFAgd1bnN0YWtlBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBQZhbW91bnQIBQFpDXRyYW5zYWN0aW9uSWQFA25pbAUNaW50ZWdyYWxTVEFURQULbGlzdEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHY2xhaW1XeAEMbHBBc3NldElkU3RyBA51c2VyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEBnJlc3VsdAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAkAlAoCBQNuaWwFBnJlc3VsdAFpAQ9jbGFpbVd4SU5URVJOQUwCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDnVzZXJBZGRyZXNzU3RyAiVjbGFpbVd4SU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzBA5wb29sQWRkcmVzc1N0cgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBBBjbGFpbWVkQnlVc2VyS0VZCQEQa2V5Q2xhaW1lZEJ5VXNlcgIFDGxwQXNzZXRJZFN0cgUOdXNlckFkZHJlc3NTdHIED2NsYWltZWRUb3RhbEtFWQkBD2tleUNsYWltZWRUb3RhbAEFDGxwQXNzZXRJZFN0cgQZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQkBGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQCBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBBtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkJARtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQCBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBA1jbGFpbWVkQnlVc2VyCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMFEGNsYWltZWRCeVVzZXJLRVkEFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQJARlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAgUEdGhpcwUZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQQYY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMFG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQQMY2xhaW1lZFRvdGFsCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMFD2NsYWltZWRUb3RhbEtFWQQNJHQwMjMzNjcyMzQ3OQkBEHJlZnJlc2hJTlRFR1JBTFMEBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBQ5wb29sQWRkcmVzc1N0cgAABBB3eFRvQ2xhaW1Vc2VyTmV3CAUNJHQwMjMzNjcyMzQ3OQJfMQQNaW50ZWdyYWxTVEFURQgFDSR0MDIzMzY3MjM0NzkCXzIEBWRlYnVnCAUNJHQwMjMzNjcyMzQ3OQJfMwQQYXZhaWxhYmxlVG9DbGFpbQkAmAMBCQDMCAIJALgCAgUQd3hUb0NsYWltVXNlck5ldwUNY2xhaW1lZEJ5VXNlcgkAzAgCBQp6ZXJvQmlnSW50BQNuaWwDCQDAAgIFCnplcm9CaWdJbnQFEGF2YWlsYWJsZVRvQ2xhaW0JAAIBAhBub3RoaW5nIHRvIGNsYWltBBJ3eEFtb3VudEJvb3N0VG90YWwJAJYDAQkAzAgCCQEFYXNJbnQBCQCRAwIJAQlhc0FueUxpc3QBCQD8BwQFEGJvb3N0aW5nQ29udHJhY3QCDGNsYWltV3hCb29zdAkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUOdXNlckFkZHJlc3NTdHIFA25pbAUDbmlsAAAJAMwIAgAABQNuaWwEDW1pblJld2FyZFBhcnQFEGF2YWlsYWJsZVRvQ2xhaW0ED2Jvb3N0UmV3YXJkUGFydAkAmQMBCQDMCAIJALkCAgUNbWluUmV3YXJkUGFydAkAtgIBAAIJAMwIAgkAtgIBBRJ3eEFtb3VudEJvb3N0VG90YWwFA25pbAQLdG90YWxSZXdhcmQJALcCAgUNbWluUmV3YXJkUGFydAUPYm9vc3RSZXdhcmRQYXJ0BAl3eEFzc2V0SWQJAQxhc0J5dGVWZWN0b3IBCQCRAwIJAQlhc0FueUxpc3QBCQD8BwQFEGVtaXNzaW9uQ29udHJhY3QCBGVtaXQJAMwIAgkAoAMBBQ1taW5SZXdhcmRQYXJ0BQNuaWwFA25pbAAABAllbWl0Qm9vc3QJAQlhc0FueUxpc3QBCQD8BwQFEGVtaXNzaW9uQ29udHJhY3QCBGVtaXQJAMwIAgkAoAMBBQ9ib29zdFJld2FyZFBhcnQFA25pbAUDbmlsAwkAAAIFCWVtaXRCb29zdAUJZW1pdEJvb3N0BBJjbGFpbWVkQnlVc2VyVmFsdWUJALcCAgUNY2xhaW1lZEJ5VXNlcgUQYXZhaWxhYmxlVG9DbGFpbQQeY2xhaW1lZEJ5VXNlck1pblJld2FyZFBsdXNQYXJ0CQC3AgIFFmNsYWltZWRCeVVzZXJNaW5SZXdhcmQFDW1pblJld2FyZFBhcnQEK2NsYWltZWRCeVVzZXJCb29zdFJld2FyZFBsdXNCb29zdFJld2FyZFBhcnQJALcCAgUWY2xhaW1lZEJ5VXNlck1pblJld2FyZAUNbWluUmV3YXJkUGFydAQgY2xhaW1lZFRvdGFsUGx1c0F2YWlsYWJsZVRvQ2xhaW0JALcCAgUWY2xhaW1lZEJ5VXNlck1pblJld2FyZAUNbWluUmV3YXJkUGFydAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGNsYWltZWRCeVVzZXJLRVkJAKYDAQUSY2xhaW1lZEJ5VXNlclZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQIFGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkJAKYDAQUeY2xhaW1lZEJ5VXNlck1pblJld2FyZFBsdXNQYXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIFG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQkApgMBBStjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2NsYWltZWRUb3RhbEtFWQkApgMBBSBjbGFpbWVkVG90YWxQbHVzQXZhaWxhYmxlVG9DbGFpbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwkAoAMBBQ1taW5SZXdhcmRQYXJ0BQl3eEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAKADAQUPYm9vc3RSZXdhcmRQYXJ0BQl3eEFzc2V0SWQJAMwIAgkBFU9wZXJhdGlvbkhpc3RvcnlFbnRyeQUCBWNsYWltBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyCQCgAwEFEGF2YWlsYWJsZVRvQ2xhaW0IBQFpDXRyYW5zYWN0aW9uSWQFA25pbAkAoAMBBQt0b3RhbFJld2FyZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkEC2N1cnJlbnRJdGVyCmxwQXNzZXRJZHMOdXNlckFkZHJlc3NTdHIGcmVzQWNjAwkAAAIFC2N1cnJlbnRJdGVyCQCQAwEFCmxwQXNzZXRJZHMJAJQKAgUDbmlsBQZyZXNBY2MECWxwQXNzZXRJZAkAkQMCBQpscEFzc2V0SWRzBQtjdXJyZW50SXRlcgQEaW5mbwkAtQkCCgABQAkA/AcEBQR0aGlzAg9jbGFpbVd4UkVBRE9OTFkJAMwIAgUJbHBBc3NldElkCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFA1NFUAQJdW5jbGFpbWVkCQCRAwIFBGluZm8AAwQHY2xhaW1lZAkAkQMCBQRpbmZvAAQEA3JlcwkAzQgCBQZyZXNBY2MJALkJAgkAzAgCAgQlZCVkCQDMCAIFCXVuY2xhaW1lZAkAzAgCBQdjbGFpbWVkBQNuaWwFA1NFUAQDaW52CgABQAkA/AcEBQR0aGlzAhtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgkAZAIFC2N1cnJlbnRJdGVyAAEJAMwIAgUKbHBBc3NldElkcwkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQNyZXMFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjbGFpbVd4QnVsa1JFQURPTkxZAgpscEFzc2V0SWRzDnVzZXJBZGRyZXNzU3RyBANyZXMJAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQpscEFzc2V0SWRzCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQNyZXMBaQEPY2xhaW1XeFJFQURPTkxZAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIED3N0YWtlZEJ5VXNlcktFWQkBD2tleVN0YWtlZEJ5VXNlcgIFDnVzZXJBZGRyZXNzU3RyBQxscEFzc2V0SWRTdHIEDnN0YWtlZFRvdGFsS0VZCQEOa2V5U3Rha2VkVG90YWwBBQxscEFzc2V0SWRTdHIEEGNsYWltZWRCeVVzZXJLRVkJARBrZXlDbGFpbWVkQnlVc2VyAgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQMc3Rha2VkQnlVc2VyCQEKcmVhZFN0YWtlZAEFD3N0YWtlZEJ5VXNlcktFWQQLc3Rha2VkVG90YWwJAQpyZWFkU3Rha2VkAQUOc3Rha2VkVG90YWxLRVkEDWNsYWltZWRCeVVzZXIJARlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAgUEdGhpcwUQY2xhaW1lZEJ5VXNlcktFWQQOcG9vbEFkZHJlc3NTdHIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgUPZmFjdG9yeUNvbnRyYWN0CQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBBQ5wb29sQWRkcmVzc1N0cgQSd3hFbWlzc2lvblBlckJsb2NrCQEMZ2V0SW50T3JGYWlsAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEEmVtaXNzaW9uU3RhcnRCbG9jawkBDGdldEludE9yRmFpbAIFEGVtaXNzaW9uQ29udHJhY3QJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAxwYXNzZWRCbG9ja3MDCQBmAgUSZW1pc3Npb25TdGFydEJsb2NrBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUSZW1pc3Npb25TdGFydEJsb2NrBA5wb29sV3hFbWlzc2lvbgkAawMJAGgCBRJ3eEVtaXNzaW9uUGVyQmxvY2sFDHBhc3NlZEJsb2NrcwUKcG9vbFdlaWdodAUOUE9PTFdFSUdIVE1VTFQEDHVzZXJXeFJld2FyZAkAawMFDnBvb2xXeEVtaXNzaW9uBQxzdGFrZWRCeVVzZXIFC3N0YWtlZFRvdGFsBA0kdDAyNzAzMjI3MTQ0CQEQcmVmcmVzaElOVEVHUkFMUwQFDGxwQXNzZXRJZFN0cgUOdXNlckFkZHJlc3NTdHIFDnBvb2xBZGRyZXNzU3RyAAAEEHd4VG9DbGFpbVVzZXJOZXcIBQ0kdDAyNzAzMjI3MTQ0Al8xBA1pbnRlZ3JhbFNUQVRFCAUNJHQwMjcwMzIyNzE0NAJfMgQFZGVidWcIBQ0kdDAyNzAzMjI3MTQ0Al8zBBBhdmFpbGFibGVUb0NsYWltCQCYAwEJAMwIAgkAuAICBRB3eFRvQ2xhaW1Vc2VyTmV3BQ1jbGFpbWVkQnlVc2VyCQDMCAIFCnplcm9CaWdJbnQFA25pbAQOYm9vc3RJbnZSZXN1bHQJAQlhc0FueUxpc3QBCQD8BwQFEGJvb3N0aW5nQ29udHJhY3QCFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQ51c2VyQWRkcmVzc1N0cgUDbmlsBQNuaWwEEnd4QW1vdW50Qm9vc3RUb3RhbAkAlgMBCQDMCAIJAQVhc0ludAEJAJEDAgUOYm9vc3RJbnZSZXN1bHQAAAkAzAgCAAAFA25pbAQKYm9vc3REZWJ1ZwkBCGFzU3RyaW5nAQkAkQMCBQ5ib29zdEludlJlc3VsdAABBA1taW5SZXdhcmRQYXJ0BRBhdmFpbGFibGVUb0NsYWltBA9ib29zdFJld2FyZFBhcnQJAJkDAQkAzAgCCQC5AgIFDW1pblJld2FyZFBhcnQJALYCAQACCQDMCAIJALYCAQUSd3hBbW91bnRCb29zdFRvdGFsBQNuaWwEC3RvdGFsUmV3YXJkCQC3AgIFDW1pblJld2FyZFBhcnQFD2Jvb3N0UmV3YXJkUGFydAkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVzJWQlZCVkJWQlcwkAzAgCBQxscEFzc2V0SWRTdHIJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgkApgMBBQt0b3RhbFJld2FyZAkAzAgCCQCmAwEFDWNsYWltZWRCeVVzZXIJAMwIAgkApgMBBQ1taW5SZXdhcmRQYXJ0CQDMCAIJAKYDAQUPYm9vc3RSZXdhcmRQYXJ0CQDMCAICBHNvb24FA25pbAUDU0VQAWkBFHN0YWtlZEJ5VXNlclJFQURPTkxZAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIEDHN0YWtlZEJ5VXNlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEPa2V5U3Rha2VkQnlVc2VyAgUOdXNlckFkZHJlc3NTdHIFDGxwQXNzZXRJZFN0cgAACQCUCgIFA25pbAUMc3Rha2VkQnlVc2VyAWkBEnVzZXJzTGlzdFRyYXZlcnNhbAEJbHBBc3NldElkBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQIbGlzdE5hbWUJARBnZXRVc2Vyc0xpc3ROYW1lAQUJbHBBc3NldElkBAp1c2VyT3JVbml0CQCiCAEJAQtrZXlOZXh0VXNlcgEFCWxwQXNzZXRJZAQKaGVhZE9yVW5pdAkAoggBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQHJG1hdGNoMAUKdXNlck9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0BAckbWF0Y2gxBQpoZWFkT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgUDbmlsBwMJAAECBQckbWF0Y2gxAgZTdHJpbmcEBGhlYWQFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TmV4dFVzZXIBBQlscEFzc2V0SWQFBGhlYWQFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEC3VzZXJBZGRyZXNzBQckbWF0Y2gwBA1jbGFpbWVkQnlVc2VyCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMJARBrZXlDbGFpbWVkQnlVc2VyAgUJbHBBc3NldElkBQt1c2VyQWRkcmVzcwQLcG9vbEFkZHJlc3MJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQQd3hUb0NsYWltVXNlck5ldwgJARByZWZyZXNoSU5URUdSQUxTBAUJbHBBc3NldElkBQt1c2VyQWRkcmVzcwULcG9vbEFkZHJlc3MAAAJfMQQQYXZhaWxhYmxlVG9DbGFpbQkAuAICBRB3eFRvQ2xhaW1Vc2VyTmV3BQ1jbGFpbWVkQnlVc2VyBAFyAwkAvwICBRBhdmFpbGFibGVUb0NsYWltBQp6ZXJvQmlnSW50CQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQlscEFzc2V0SWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDbmlsBQR1bml0AwkAAAIFAXIFAXIEDm5leHRVc2VyT3JVbml0CQCiCAEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQt1c2VyQWRkcmVzcwQHJG1hdGNoMQUObmV4dFVzZXJPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlOZXh0VXNlcgEFCWxwQXNzZXRJZAUDbmlsBwMJAAECBQckbWF0Y2gxAgZTdHJpbmcECG5leHRVc2VyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleU5leHRVc2VyAQUJbHBBc3NldElkBQhuZXh0VXNlcgUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOb25Nb2RpZnlXZWlnaHQCDGxwQXNzZXRJZFN0cg5wb29sQWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgUPZmFjdG9yeUNvbnRyYWN0CQACAQIScGVybWlzc2lvbnMgZGVuaWVkBA0kdDAyOTY1MjI5NzYyCQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDBQxscEFzc2V0SWRTdHIFDnBvb2xBZGRyZXNzU3RyAAAEEnd4UGVyTHBJbnRlZ3JhbE5ldwgFDSR0MDI5NjUyMjk3NjICXzEEEXBvb2xJbnRlZ3JhbFNUQVRFCAUNJHQwMjk2NTIyOTc2MgJfMgQJcG9vbERFQlVHCAUNJHQwMjk2NTIyOTc2MgJfMwURcG9vbEludGVncmFsU1RBVEUBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXnGtz5d", "height": 2400393, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5gDoQabBG3oRZAkDKXQq23Fz3Rq2xVWvQ7sBd1CRqrZA Next: 58LniHVX6FCStpjmcHjGv5WQttBsKwDJvHqDL4TmVuAq Diff:
OldNewDifferences
260260
261261 let aZ = ai(aj)
262262
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aZ, makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
263+let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
264264
265265 func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
266266
537537 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
538538 let cC = valueOrElse(getString(addressFromStringValue(bx), Y()), bx)
539539 let cy = toString(cl.caller)
540- let as = if (if (if ((cy == bx))
541- then (cl.originCaller != ba)
542- else false)
543- then true
544- else (cy == cC))
545- then toString(cl.originCaller)
546- else cy
547- if ((as == as))
540+ let cD = ba
541+ if ((cD == cD))
548542 then {
549- let bY = ar(as, at)
550- let bz = au(at)
551- let bs = az(bY)
552- let bA = az(bz)
553- let cA = bU(at, as, bx, -(aT))._2
554- let be = bc(at)
555- let cB = if (if (bj(be, as))
556- then (aT == bs)
543+ let as = if (if (if ((cy == bx))
544+ then (cl.originCaller != ba)
557545 else false)
558- then bq(be, as)
559- else nil
560- let cD = D(this, av(at, as))
561- let cE = y(aX, ac(at))
562- let ce = bU(at, as, cE, 0)._1
563- let cF = (ce - cD)
564- let cG = if ((cF > g))
565- then invoke(this, "claimWxINTERNAL", [at, as], nil)
566- else unit
567- if ((cG == cG))
568- then if ((aT > bs))
569- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
570- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
546+ then true
547+ else (cy == cC))
548+ then toString(cl.originCaller)
549+ else cy
550+ if ((as == as))
551+ then {
552+ let bY = ar(as, at)
553+ let bz = au(at)
554+ let bs = az(bY)
555+ let bA = az(bz)
556+ let cA = bU(at, as, bx, -(aT))._2
557+ let be = bc(at)
558+ let cB = if (if (bj(be, as))
559+ then (aT == bs)
560+ else false)
561+ then bq(be, as)
562+ else nil
563+ let cE = D(this, av(at, as))
564+ let cF = y(aX, ac(at))
565+ let ce = bU(at, as, cF, 0)._1
566+ let cG = (ce - cE)
567+ let cH = if ((cG > g))
568+ then invoke(this, "claimWxINTERNAL", [at, as], nil)
569+ else unit
570+ if ((cH == cH))
571+ then if ((aT > bs))
572+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
573+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
574+ else throw("Strict value is not equal to itself.")
575+ }
571576 else throw("Strict value is not equal to itself.")
572577 }
573578 else throw("Strict value is not equal to itself.")
578583 @Callable(cl)
579584 func claimWx (at) = {
580585 let as = toString(cl.caller)
581- let cH = invoke(this, "claimWxINTERNAL", [at, as], nil)
582- $Tuple2(nil, cH)
586+ let cI = invoke(this, "claimWxINTERNAL", [at, as], nil)
587+ $Tuple2(nil, cI)
583588 }
584589
585590
591596 then {
592597 let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
593598 let bx = y(aX, ac(at))
594- let cI = av(at, as)
595- let cJ = ay(at)
596- let cK = aw(at, as)
597- let cL = ax(at, as)
598- let cD = D(this, cI)
599- let cM = D(this, cK)
599+ let cJ = av(at, as)
600+ let cK = ay(at)
601+ let cL = aw(at, as)
602+ let cM = ax(at, as)
603+ let cE = D(this, cJ)
600604 let cN = D(this, cL)
601- let cO = D(this, cJ)
602- let cP = bU(at, as, bx, 0)
603- let ce = cP._1
604- let cA = cP._2
605- let bT = cP._3
606- let cF = max([(ce - cD), g])
607- if ((g >= cF))
605+ let cO = D(this, cM)
606+ let cP = D(this, cK)
607+ let cQ = bU(at, as, bx, 0)
608+ let ce = cQ._1
609+ let cA = cQ._2
610+ let bT = cQ._3
611+ let cG = max([(ce - cE), g])
612+ if ((g >= cG))
608613 then throw("nothing to claim")
609614 else {
610- let cQ = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
611- let cR = cF
612- let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
613- let cT = (cR + cS)
614- let cU = t(l(invoke(aY, "emit", [toInt(cR)], nil))[0])
615- let cV = l(invoke(aY, "emit", [toInt(cS)], nil))
616- if ((cV == cV))
615+ let cR = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
616+ let cS = cG
617+ let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
618+ let cU = (cS + cT)
619+ let cV = t(l(invoke(aY, "emit", [toInt(cS)], nil))[0])
620+ let cW = l(invoke(aY, "emit", [toInt(cT)], nil))
621+ if ((cW == cW))
617622 then {
618- let cW = (cD + cF)
619- let cX = (cM + cR)
620- let cY = (cM + cR)
621- let cZ = (cM + cR)
622- $Tuple2([StringEntry(cI, toString(cW)), StringEntry(cK, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cJ, toString(cZ)), ScriptTransfer(aD, toInt(cR), cU), ScriptTransfer(aD, toInt(cS), cU), aU("claim", as, at, toInt(cF), cl.transactionId)], toInt(cT))
623+ let cX = (cE + cG)
624+ let cY = (cN + cS)
625+ let cZ = (cN + cS)
626+ let da = (cN + cS)
627+ $Tuple2([StringEntry(cJ, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cM, toString(cZ)), StringEntry(cK, toString(da)), ScriptTransfer(aD, toInt(cS), cV), ScriptTransfer(aD, toInt(cT), cV), aU("claim", as, at, toInt(cG), cl.transactionId)], toInt(cU))
623628 }
624629 else throw("Strict value is not equal to itself.")
625630 }
630635
631636
632637 @Callable(cl)
633-func claimWxBulkInternalREADONLY (da,db,as,dc) = if ((da == size(db)))
634- then $Tuple2(nil, dc)
638+func claimWxBulkInternalREADONLY (db,dc,as,dd) = if ((db == size(dc)))
639+ then $Tuple2(nil, dd)
635640 else {
636- let aB = db[da]
637- let dd = split({
638- let de = invoke(this, "claimWxREADONLY", [aB, as], nil)
639- if ($isInstanceOf(de, "String"))
640- then de
641- else throw(($getType(de) + " couldn't be cast to String"))
641+ let aB = dc[db]
642+ let de = split({
643+ let df = invoke(this, "claimWxREADONLY", [aB, as], nil)
644+ if ($isInstanceOf(df, "String"))
645+ then df
646+ else throw(($getType(df) + " couldn't be cast to String"))
642647 }, e)
643- let df = dd[3]
644- let dg = dd[4]
645- let dh = (dc :+ makeString(["%d%d", df, dg], e))
646- let di = {
647- let de = invoke(this, "claimWxBulkInternalREADONLY", [(da + 1), db, as, dh], nil)
648- if ($isInstanceOf(de, "List[Any]"))
649- then de
650- else throw(($getType(de) + " couldn't be cast to List[Any]"))
648+ let dg = de[3]
649+ let dh = de[4]
650+ let di = (dd :+ makeString(["%d%d", dg, dh], e))
651+ let dj = {
652+ let df = invoke(this, "claimWxBulkInternalREADONLY", [(db + 1), dc, as, di], nil)
653+ if ($isInstanceOf(df, "List[Any]"))
654+ then df
655+ else throw(($getType(df) + " couldn't be cast to List[Any]"))
651656 }
652- if ((di == di))
653- then $Tuple2(nil, di)
657+ if ((dj == dj))
658+ then $Tuple2(nil, dj)
654659 else throw("Strict value is not equal to itself.")
655660 }
656661
657662
658663
659664 @Callable(cl)
660-func claimWxBulkREADONLY (db,as) = {
661- let dh = invoke(this, "claimWxBulkInternalREADONLY", [0, db, as, nil], nil)
662- $Tuple2(nil, dh)
665+func claimWxBulkREADONLY (dc,as) = {
666+ let di = invoke(this, "claimWxBulkInternalREADONLY", [0, dc, as, nil], nil)
667+ $Tuple2(nil, di)
663668 }
664669
665670
668673 func claimWxREADONLY (at,as) = {
669674 let bY = ar(as, at)
670675 let bz = au(at)
671- let cI = av(at, as)
676+ let cJ = av(at, as)
672677 let bs = az(bY)
673678 let bA = az(bz)
674- let cD = D(this, cI)
679+ let cE = D(this, cJ)
675680 let bx = y(aX, ac(at))
676681 let bC = getIntegerValue(aX, ad(bx))
677- let dj = C(aY, am())
682+ let dk = C(aY, am())
678683 let bD = C(aY, ao())
679- let dk = if ((bD > height))
684+ let dl = if ((bD > height))
680685 then 0
681686 else (height - bD)
682- let dl = fraction((dj * dk), bC, f)
683- let dm = fraction(dl, bs, bA)
684- let dn = bU(at, as, bx, 0)
685- let ce = dn._1
686- let cA = dn._2
687- let bT = dn._3
688- let cF = max([(ce - cD), g])
689- let do = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
690- let cQ = max([p(do[0]), 0])
691- let dp = r(do[1])
692- let cR = cF
693- let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
694- let cT = (cR + cS)
695- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cT), toString(cD), toString(cR), toString(cS), "soon"], e))
687+ let dm = fraction((dk * dl), bC, f)
688+ let dn = fraction(dm, bs, bA)
689+ let do = bU(at, as, bx, 0)
690+ let ce = do._1
691+ let cA = do._2
692+ let bT = do._3
693+ let cG = max([(ce - cE), g])
694+ let dp = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
695+ let cR = max([p(dp[0]), 0])
696+ let dq = r(dp[1])
697+ let cS = cG
698+ let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
699+ let cU = (cS + cT)
700+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cU), toString(cE), toString(cS), toString(cT), "soon"], e))
696701 }
697702
698703
713718 if ((cp == cp))
714719 then {
715720 let be = bc(aB)
716- let dq = getString(bb(aB))
721+ let dr = getString(bb(aB))
717722 let bk = getString(bd(be))
718- let n = dq
723+ let n = dr
719724 if ($isInstanceOf(n, "Unit"))
720725 then {
721- let dr = bk
722- if ($isInstanceOf(dr, "Unit"))
726+ let ds = bk
727+ if ($isInstanceOf(ds, "Unit"))
723728 then $Tuple2(nil, false)
724- else if ($isInstanceOf(dr, "String"))
729+ else if ($isInstanceOf(ds, "String"))
725730 then {
726- let ds = dr
727- $Tuple2([StringEntry(bb(aB), ds)], true)
731+ let dt = ds
732+ $Tuple2([StringEntry(bb(aB), dt)], true)
728733 }
729734 else throw("Match error")
730735 }
731736 else if ($isInstanceOf(n, "String"))
732737 then {
733738 let aD = n
734- let cD = D(this, av(aB, aD))
735- let cE = y(aX, ac(aB))
736- let ce = bU(aB, aD, cE, 0)._1
737- let cF = (ce - cD)
738- let cG = if ((cF > g))
739+ let cE = D(this, av(aB, aD))
740+ let cF = y(aX, ac(aB))
741+ let ce = bU(aB, aD, cF, 0)._1
742+ let cG = (ce - cE)
743+ let cH = if ((cG > g))
739744 then invoke(this, "claimWxINTERNAL", [aB, aD], nil)
740745 else unit
741- if ((cG == cG))
746+ if ((cH == cH))
742747 then {
743- let dt = getString(bi(be, aD))
744- let dr = dt
745- if ($isInstanceOf(dr, "Unit"))
748+ let du = getString(bi(be, aD))
749+ let ds = du
750+ if ($isInstanceOf(ds, "Unit"))
746751 then $Tuple2([DeleteEntry(bb(aB))], false)
747- else if ($isInstanceOf(dr, "String"))
752+ else if ($isInstanceOf(ds, "String"))
748753 then {
749- let du = dr
750- $Tuple2([StringEntry(bb(aB), du)], true)
754+ let dv = ds
755+ $Tuple2([StringEntry(bb(aB), dv)], true)
751756 }
752757 else throw("Match error")
753758 }
764769 func onModifyWeight (at,bx) = if ((cl.caller != aX))
765770 then throw("permissions denied")
766771 else {
767- let dv = bw(at, bx, 0)
768- let bu = dv._1
769- let bW = dv._2
770- let bX = dv._3
772+ let dw = bw(at, bx, 0)
773+ let bu = dw._1
774+ let bW = dw._2
775+ let bX = dw._3
771776 bW
772777 }
773778
774779
775-@Verifier(dw)
776-func dx () = {
777- let dy = {
780+@Verifier(dx)
781+func dy () = {
782+ let dz = {
778783 let n = ch()
779784 if ($isInstanceOf(n, "ByteVector"))
780785 then {
782787 cn
783788 }
784789 else if ($isInstanceOf(n, "Unit"))
785- then dw.senderPublicKey
790+ then dx.senderPublicKey
786791 else throw("Match error")
787792 }
788- sigVerify(dw.bodyBytes, dw.proofs[0], dy)
793+ sigVerify(dx.bodyBytes, dx.proofs[0], dz)
789794 }
790795
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
1616 let g = toBigInt(0)
1717
1818 let h = toBigInt(1)
1919
2020 func i (j) = throw(makeString(["staking.ride:", toString(this), j], " "))
2121
2222
2323 func k (j) = throw(i(j))
2424
2525
2626 func l (m) = {
2727 let n = m
2828 if ($isInstanceOf(n, "List[Any]"))
2929 then {
3030 let o = n
3131 o
3232 }
3333 else throw("fail to cast into List[Any]")
3434 }
3535
3636
3737 func p (m) = {
3838 let n = m
3939 if ($isInstanceOf(n, "Int"))
4040 then {
4141 let q = n
4242 q
4343 }
4444 else throw("fail to cast into Int")
4545 }
4646
4747
4848 func r (m) = {
4949 let n = m
5050 if ($isInstanceOf(n, "String"))
5151 then {
5252 let s = n
5353 s
5454 }
5555 else throw("fail to cast into Int")
5656 }
5757
5858
5959 func t (m) = {
6060 let n = m
6161 if ($isInstanceOf(n, "ByteVector"))
6262 then {
6363 let u = n
6464 u
6565 }
6666 else throw("fail to cast into Int")
6767 }
6868
6969
7070 func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
7171
7272
7373 func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
7474
7575
7676 func z (w,x) = valueOrElse(getInteger(w, x), 0)
7777
7878
7979 func A (w,x,B) = valueOrElse(getInteger(w, x), B)
8080
8181
8282 func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
8383
8484
8585 func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
8686
8787
8888 func E (w,x,B) = {
8989 let n = getString(w, x)
9090 if ($isInstanceOf(n, "String"))
9191 then {
9292 let F = n
9393 value(parseBigInt(F))
9494 }
9595 else if ($isInstanceOf(n, "Unit"))
9696 then B
9797 else throw("Match error")
9898 }
9999
100100
101101 func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
102102
103103
104104 func J (m,K) = toInt(fraction(m, toBigInt(K), d))
105105
106106
107107 func L () = "%s%s__config__factoryAddress"
108108
109109
110110 func M () = "%s__votingEmissionContract"
111111
112112
113113 let N = 1
114114
115115 let O = 2
116116
117117 let P = 3
118118
119119 let Q = 4
120120
121121 let R = 5
122122
123123 let S = 6
124124
125125 let T = 7
126126
127127 func U () = "%s__factoryConfig"
128128
129129
130130 func V () = "%s__managerPublicKey"
131131
132132
133133 func W () = "%s__pendingManagerPublicKey"
134134
135135
136136 func X () = "%s__stablePoolAddonAddr"
137137
138138
139139 func Y () = "%s__addonAddr"
140140
141141
142142 func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
143143
144144
145145 func ab () = "%s__lpTokensList"
146146
147147
148148 func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
149149
150150
151151 func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
152152
153153
154154 func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
155155
156156
157157 func ah (ag) = split(y(ag, U()), e)
158158
159159
160160 func ai (aj) = addressFromStringValue(aj[O])
161161
162162
163163 func ak (aj) = addressFromStringValue(aj[R])
164164
165165
166166 func al (aj) = addressFromStringValue(aj[N])
167167
168168
169169 func am () = "%s%s__ratePerBlock__current"
170170
171171
172172 func an () = "%s%s__ratePerBlockMax__current"
173173
174174
175175 func ao () = "%s%s__emission__startBlock"
176176
177177
178178 func ap () = "%s%s__emission__duration"
179179
180180
181181 func aq () = "%s%s__emission__endBlock"
182182
183183
184184 func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
185185
186186
187187 func au (at) = ("%s%s%s__staked__total__" + at)
188188
189189
190190 func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
191191
192192
193193 func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
194194
195195
196196 func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
197197
198198
199199 func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
200200
201201
202202 func az (x) = valueOrElse(getInteger(this, x), 0)
203203
204204
205205 func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
206206
207207
208208 func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
209209
210210
211211 func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
212212
213213
214214 func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
215215
216216
217217 func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
218218
219219
220220 func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
221221
222222
223223 func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
224224
225225
226226 func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
227227
228228
229229 func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
230230
231231
232232 func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
233233
234234
235235 func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
236236
237237
238238 func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
239239
240240
241241 func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
242242
243243
244244 func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
245245
246246
247247 func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
248248
249249
250250 func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
251251
252252
253253 let aW = v(this, L())
254254
255255 let aX = addressFromStringValue(aW)
256256
257257 let aj = ah(aX)
258258
259259 let aY = ak(aj)
260260
261261 let aZ = ai(aj)
262262
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aZ, makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
263+let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
264264
265265 func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
266266
267267
268268 func bc (aB) = makeString(["users", aB], e)
269269
270270
271271 func bd (be) = makeString(["%s%s%s", be, "head"], e)
272272
273273
274274 func bf (be) = makeString(["%s%s%s", be, "size"], e)
275275
276276
277277 func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
278278
279279
280280 func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
281281
282282
283283 func bj (be,bh) = {
284284 let bk = getString(this, bd(be))
285285 let bl = getString(this, bg(be, bh))
286286 let bm = getString(this, bi(be, bh))
287287 if (if ((bh == valueOrElse(bk, "")))
288288 then true
289289 else (bl != unit))
290290 then true
291291 else (bm != unit)
292292 }
293293
294294
295295 func bn (be,bh) = {
296296 let bk = getString(this, bd(be))
297297 let bo = valueOrElse(getInteger(this, bf(be)), 0)
298298 let bp = if (!(bj(be, bh)))
299299 then true
300300 else throw("Node exists")
301301 if ((bp == bp))
302302 then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303303 then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304304 else nil)) ++ [StringEntry(bd(be), bh)])
305305 else throw("Strict value is not equal to itself.")
306306 }
307307
308308
309309 func bq (be,bh) = {
310310 let bk = getString(this, bd(be))
311311 let bo = valueOrElse(getInteger(this, bf(be)), 0)
312312 let bl = getString(this, bg(be, bh))
313313 let bm = getString(this, bi(be, bh))
314314 ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315315 then (bm != unit)
316316 else false)
317317 then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318318 else if ((bm != unit))
319319 then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320320 else if ((bl != unit))
321321 then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322322 else if ((bh == valueOrElse(bk, "")))
323323 then [DeleteEntry(bd(be))]
324324 else throw(((("invalid node: " + be) + ".") + bh))))
325325 }
326326
327327
328328 func br (bs,bt,bu,bv) = if (if ((bt == g))
329329 then (bs > g)
330330 else false)
331331 then g
332332 else if ((bs == g))
333333 then bu
334334 else if (if ((bt > g))
335335 then (bs > g)
336336 else false)
337337 then value(parseBigInt(v(this, bv)))
338338 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339339
340340
341341 func bw (at,bx,by) = {
342342 let bz = au(at)
343343 let bA = toBigInt(az(bz))
344344 let bB = if ((bA == g))
345345 then h
346346 else bA
347347 let bC = getIntegerValue(aX, ad(bx))
348348 let bD = C(aY, ao())
349349 let bE = 1000
350350 let bF = (C(aY, am()) * bE)
351351 let bG = fraction(bF, bC, (f * 3))
352352 let bH = aI(at)
353353 let bI = aJ(at)
354354 let bJ = aM(at)
355355 let bK = A(this, bI, bD)
356356 let bL = D(this, bH)
357357 let bM = 0
358358 let bN = max([(height - bK), 0])
359359 let bO = if ((bM != 0))
360360 then toBigInt(bM)
361361 else fraction(toBigInt(bG), toBigInt(b), bB)
362362 let bP = (bA + toBigInt(by))
363363 let bQ = if ((bP == g))
364364 then h
365365 else bP
366366 let bu = (bL + (bO * toBigInt(bN)))
367367 let bR = (toBigInt(bG) / bQ)
368368 let bS = height
369369 let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370370 $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
371371 }
372372
373373
374374 func bU (at,as,bx,by) = {
375375 let bV = bw(at, bx, by)
376376 let bu = bV._1
377377 let bW = bV._2
378378 let bX = bV._3
379379 let bE = 1000
380380 let bY = ar(as, at)
381381 let bs = az(bY)
382382 let bZ = aK(at, as)
383383 let ca = aL(at, as)
384384 let bv = aO(at, as)
385385 let cb = D(this, bZ)
386386 let bt = z(this, ca)
387387 let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388388 let cd = (b * bE)
389389 let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390390 let cf = bu
391391 let cg = height
392392 let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393393 $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
394394 }
395395
396396
397397 func ch () = {
398398 let n = getString(V())
399399 if ($isInstanceOf(n, "String"))
400400 then {
401401 let F = n
402402 fromBase58String(F)
403403 }
404404 else if ($isInstanceOf(n, "Unit"))
405405 then unit
406406 else throw("Match error")
407407 }
408408
409409
410410 func ci () = {
411411 let n = getString(W())
412412 if ($isInstanceOf(n, "String"))
413413 then {
414414 let F = n
415415 fromBase58String(F)
416416 }
417417 else if ($isInstanceOf(n, "Unit"))
418418 then unit
419419 else throw("Match error")
420420 }
421421
422422
423423 let cj = throw("Permission denied")
424424
425425 func ck (cl) = if ((cl.caller == this))
426426 then true
427427 else cj
428428
429429
430430 func cm (cl) = {
431431 let n = ch()
432432 if ($isInstanceOf(n, "ByteVector"))
433433 then {
434434 let cn = n
435435 if ((cl.callerPublicKey == cn))
436436 then true
437437 else cj
438438 }
439439 else if ($isInstanceOf(n, "Unit"))
440440 then if ((cl.caller == this))
441441 then true
442442 else cj
443443 else throw("Match error")
444444 }
445445
446446
447447 @Callable(cl)
448448 func constructor (co) = {
449449 let cp = cm(cl)
450450 if ((cp == cp))
451451 then [StringEntry(L(), co)]
452452 else throw("Strict value is not equal to itself.")
453453 }
454454
455455
456456
457457 @Callable(cl)
458458 func constructorV2 (cq) = {
459459 let cr = [cm(cl), if ((addressFromString(cq) != unit))
460460 then true
461461 else "invalid voting emission contract address"]
462462 if ((cr == cr))
463463 then [StringEntry(M(), cq)]
464464 else throw("Strict value is not equal to itself.")
465465 }
466466
467467
468468
469469 @Callable(cl)
470470 func setManager (cs) = {
471471 let cp = cm(cl)
472472 if ((cp == cp))
473473 then {
474474 let ct = fromBase58String(cs)
475475 if ((ct == ct))
476476 then [StringEntry(W(), cs)]
477477 else throw("Strict value is not equal to itself.")
478478 }
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(cl)
485485 func confirmManager () = {
486486 let cu = ci()
487487 let cv = if (isDefined(cu))
488488 then true
489489 else throw("No pending manager")
490490 if ((cv == cv))
491491 then {
492492 let cw = if ((cl.callerPublicKey == value(cu)))
493493 then true
494494 else throw("You are not pending manager")
495495 if ((cw == cw))
496496 then [StringEntry(V(), toBase58String(value(cu))), DeleteEntry(W())]
497497 else throw("Strict value is not equal to itself.")
498498 }
499499 else throw("Strict value is not equal to itself.")
500500 }
501501
502502
503503
504504 @Callable(cl)
505505 func stake () = if ((size(cl.payments) != 1))
506506 then throw("invalid payment - exact one payment must be attached")
507507 else {
508508 let cx = cl.payments[0]
509509 let aB = value(cx.assetId)
510510 let at = toBase58String(aB)
511511 let aT = cx.amount
512512 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
513513 let cy = toString(cl.caller)
514514 let as = if ((cy == bx))
515515 then toString(cl.originCaller)
516516 else cy
517517 let bY = ar(as, at)
518518 let bz = au(at)
519519 let bs = az(bY)
520520 let bA = az(bz)
521521 let cz = bU(at, as, bx, aT)
522522 let ce = cz._1
523523 let cA = cz._2
524524 let bT = cz._3
525525 let be = bc(at)
526526 let cB = if (bj(be, as))
527527 then nil
528528 else bn(be, as)
529529 (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
530530 }
531531
532532
533533
534534 @Callable(cl)
535535 func unstake (at,aT) = {
536536 let aB = fromBase58String(at)
537537 let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
538538 let cC = valueOrElse(getString(addressFromStringValue(bx), Y()), bx)
539539 let cy = toString(cl.caller)
540- let as = if (if (if ((cy == bx))
541- then (cl.originCaller != ba)
542- else false)
543- then true
544- else (cy == cC))
545- then toString(cl.originCaller)
546- else cy
547- if ((as == as))
540+ let cD = ba
541+ if ((cD == cD))
548542 then {
549- let bY = ar(as, at)
550- let bz = au(at)
551- let bs = az(bY)
552- let bA = az(bz)
553- let cA = bU(at, as, bx, -(aT))._2
554- let be = bc(at)
555- let cB = if (if (bj(be, as))
556- then (aT == bs)
543+ let as = if (if (if ((cy == bx))
544+ then (cl.originCaller != ba)
557545 else false)
558- then bq(be, as)
559- else nil
560- let cD = D(this, av(at, as))
561- let cE = y(aX, ac(at))
562- let ce = bU(at, as, cE, 0)._1
563- let cF = (ce - cD)
564- let cG = if ((cF > g))
565- then invoke(this, "claimWxINTERNAL", [at, as], nil)
566- else unit
567- if ((cG == cG))
568- then if ((aT > bs))
569- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
570- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
546+ then true
547+ else (cy == cC))
548+ then toString(cl.originCaller)
549+ else cy
550+ if ((as == as))
551+ then {
552+ let bY = ar(as, at)
553+ let bz = au(at)
554+ let bs = az(bY)
555+ let bA = az(bz)
556+ let cA = bU(at, as, bx, -(aT))._2
557+ let be = bc(at)
558+ let cB = if (if (bj(be, as))
559+ then (aT == bs)
560+ else false)
561+ then bq(be, as)
562+ else nil
563+ let cE = D(this, av(at, as))
564+ let cF = y(aX, ac(at))
565+ let ce = bU(at, as, cF, 0)._1
566+ let cG = (ce - cE)
567+ let cH = if ((cG > g))
568+ then invoke(this, "claimWxINTERNAL", [at, as], nil)
569+ else unit
570+ if ((cH == cH))
571+ then if ((aT > bs))
572+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
573+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cl.caller, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cA) ++ cB)
574+ else throw("Strict value is not equal to itself.")
575+ }
571576 else throw("Strict value is not equal to itself.")
572577 }
573578 else throw("Strict value is not equal to itself.")
574579 }
575580
576581
577582
578583 @Callable(cl)
579584 func claimWx (at) = {
580585 let as = toString(cl.caller)
581- let cH = invoke(this, "claimWxINTERNAL", [at, as], nil)
582- $Tuple2(nil, cH)
586+ let cI = invoke(this, "claimWxINTERNAL", [at, as], nil)
587+ $Tuple2(nil, cI)
583588 }
584589
585590
586591
587592 @Callable(cl)
588593 func claimWxINTERNAL (at,as) = {
589594 let cp = ck(cl)
590595 if ((cp == cp))
591596 then {
592597 let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
593598 let bx = y(aX, ac(at))
594- let cI = av(at, as)
595- let cJ = ay(at)
596- let cK = aw(at, as)
597- let cL = ax(at, as)
598- let cD = D(this, cI)
599- let cM = D(this, cK)
599+ let cJ = av(at, as)
600+ let cK = ay(at)
601+ let cL = aw(at, as)
602+ let cM = ax(at, as)
603+ let cE = D(this, cJ)
600604 let cN = D(this, cL)
601- let cO = D(this, cJ)
602- let cP = bU(at, as, bx, 0)
603- let ce = cP._1
604- let cA = cP._2
605- let bT = cP._3
606- let cF = max([(ce - cD), g])
607- if ((g >= cF))
605+ let cO = D(this, cM)
606+ let cP = D(this, cK)
607+ let cQ = bU(at, as, bx, 0)
608+ let ce = cQ._1
609+ let cA = cQ._2
610+ let bT = cQ._3
611+ let cG = max([(ce - cE), g])
612+ if ((g >= cG))
608613 then throw("nothing to claim")
609614 else {
610- let cQ = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
611- let cR = cF
612- let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
613- let cT = (cR + cS)
614- let cU = t(l(invoke(aY, "emit", [toInt(cR)], nil))[0])
615- let cV = l(invoke(aY, "emit", [toInt(cS)], nil))
616- if ((cV == cV))
615+ let cR = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
616+ let cS = cG
617+ let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
618+ let cU = (cS + cT)
619+ let cV = t(l(invoke(aY, "emit", [toInt(cS)], nil))[0])
620+ let cW = l(invoke(aY, "emit", [toInt(cT)], nil))
621+ if ((cW == cW))
617622 then {
618- let cW = (cD + cF)
619- let cX = (cM + cR)
620- let cY = (cM + cR)
621- let cZ = (cM + cR)
622- $Tuple2([StringEntry(cI, toString(cW)), StringEntry(cK, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cJ, toString(cZ)), ScriptTransfer(aD, toInt(cR), cU), ScriptTransfer(aD, toInt(cS), cU), aU("claim", as, at, toInt(cF), cl.transactionId)], toInt(cT))
623+ let cX = (cE + cG)
624+ let cY = (cN + cS)
625+ let cZ = (cN + cS)
626+ let da = (cN + cS)
627+ $Tuple2([StringEntry(cJ, toString(cX)), StringEntry(cL, toString(cY)), StringEntry(cM, toString(cZ)), StringEntry(cK, toString(da)), ScriptTransfer(aD, toInt(cS), cV), ScriptTransfer(aD, toInt(cT), cV), aU("claim", as, at, toInt(cG), cl.transactionId)], toInt(cU))
623628 }
624629 else throw("Strict value is not equal to itself.")
625630 }
626631 }
627632 else throw("Strict value is not equal to itself.")
628633 }
629634
630635
631636
632637 @Callable(cl)
633-func claimWxBulkInternalREADONLY (da,db,as,dc) = if ((da == size(db)))
634- then $Tuple2(nil, dc)
638+func claimWxBulkInternalREADONLY (db,dc,as,dd) = if ((db == size(dc)))
639+ then $Tuple2(nil, dd)
635640 else {
636- let aB = db[da]
637- let dd = split({
638- let de = invoke(this, "claimWxREADONLY", [aB, as], nil)
639- if ($isInstanceOf(de, "String"))
640- then de
641- else throw(($getType(de) + " couldn't be cast to String"))
641+ let aB = dc[db]
642+ let de = split({
643+ let df = invoke(this, "claimWxREADONLY", [aB, as], nil)
644+ if ($isInstanceOf(df, "String"))
645+ then df
646+ else throw(($getType(df) + " couldn't be cast to String"))
642647 }, e)
643- let df = dd[3]
644- let dg = dd[4]
645- let dh = (dc :+ makeString(["%d%d", df, dg], e))
646- let di = {
647- let de = invoke(this, "claimWxBulkInternalREADONLY", [(da + 1), db, as, dh], nil)
648- if ($isInstanceOf(de, "List[Any]"))
649- then de
650- else throw(($getType(de) + " couldn't be cast to List[Any]"))
648+ let dg = de[3]
649+ let dh = de[4]
650+ let di = (dd :+ makeString(["%d%d", dg, dh], e))
651+ let dj = {
652+ let df = invoke(this, "claimWxBulkInternalREADONLY", [(db + 1), dc, as, di], nil)
653+ if ($isInstanceOf(df, "List[Any]"))
654+ then df
655+ else throw(($getType(df) + " couldn't be cast to List[Any]"))
651656 }
652- if ((di == di))
653- then $Tuple2(nil, di)
657+ if ((dj == dj))
658+ then $Tuple2(nil, dj)
654659 else throw("Strict value is not equal to itself.")
655660 }
656661
657662
658663
659664 @Callable(cl)
660-func claimWxBulkREADONLY (db,as) = {
661- let dh = invoke(this, "claimWxBulkInternalREADONLY", [0, db, as, nil], nil)
662- $Tuple2(nil, dh)
665+func claimWxBulkREADONLY (dc,as) = {
666+ let di = invoke(this, "claimWxBulkInternalREADONLY", [0, dc, as, nil], nil)
667+ $Tuple2(nil, di)
663668 }
664669
665670
666671
667672 @Callable(cl)
668673 func claimWxREADONLY (at,as) = {
669674 let bY = ar(as, at)
670675 let bz = au(at)
671- let cI = av(at, as)
676+ let cJ = av(at, as)
672677 let bs = az(bY)
673678 let bA = az(bz)
674- let cD = D(this, cI)
679+ let cE = D(this, cJ)
675680 let bx = y(aX, ac(at))
676681 let bC = getIntegerValue(aX, ad(bx))
677- let dj = C(aY, am())
682+ let dk = C(aY, am())
678683 let bD = C(aY, ao())
679- let dk = if ((bD > height))
684+ let dl = if ((bD > height))
680685 then 0
681686 else (height - bD)
682- let dl = fraction((dj * dk), bC, f)
683- let dm = fraction(dl, bs, bA)
684- let dn = bU(at, as, bx, 0)
685- let ce = dn._1
686- let cA = dn._2
687- let bT = dn._3
688- let cF = max([(ce - cD), g])
689- let do = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
690- let cQ = max([p(do[0]), 0])
691- let dp = r(do[1])
692- let cR = cF
693- let cS = min([(cR * toBigInt(2)), toBigInt(cQ)])
694- let cT = (cR + cS)
695- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cT), toString(cD), toString(cR), toString(cS), "soon"], e))
687+ let dm = fraction((dk * dl), bC, f)
688+ let dn = fraction(dm, bs, bA)
689+ let do = bU(at, as, bx, 0)
690+ let ce = do._1
691+ let cA = do._2
692+ let bT = do._3
693+ let cG = max([(ce - cE), g])
694+ let dp = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
695+ let cR = max([p(dp[0]), 0])
696+ let dq = r(dp[1])
697+ let cS = cG
698+ let cT = min([(cS * toBigInt(2)), toBigInt(cR)])
699+ let cU = (cS + cT)
700+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cU), toString(cE), toString(cS), toString(cT), "soon"], e))
696701 }
697702
698703
699704
700705 @Callable(cl)
701706 func stakedByUserREADONLY (at,as) = {
702707 let bs = valueOrElse(getInteger(ar(as, at)), 0)
703708 $Tuple2(nil, bs)
704709 }
705710
706711
707712
708713 @Callable(cl)
709714 func usersListTraversal (aB) = {
710715 let cp = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
711716 then true
712717 else cm(cl)
713718 if ((cp == cp))
714719 then {
715720 let be = bc(aB)
716- let dq = getString(bb(aB))
721+ let dr = getString(bb(aB))
717722 let bk = getString(bd(be))
718- let n = dq
723+ let n = dr
719724 if ($isInstanceOf(n, "Unit"))
720725 then {
721- let dr = bk
722- if ($isInstanceOf(dr, "Unit"))
726+ let ds = bk
727+ if ($isInstanceOf(ds, "Unit"))
723728 then $Tuple2(nil, false)
724- else if ($isInstanceOf(dr, "String"))
729+ else if ($isInstanceOf(ds, "String"))
725730 then {
726- let ds = dr
727- $Tuple2([StringEntry(bb(aB), ds)], true)
731+ let dt = ds
732+ $Tuple2([StringEntry(bb(aB), dt)], true)
728733 }
729734 else throw("Match error")
730735 }
731736 else if ($isInstanceOf(n, "String"))
732737 then {
733738 let aD = n
734- let cD = D(this, av(aB, aD))
735- let cE = y(aX, ac(aB))
736- let ce = bU(aB, aD, cE, 0)._1
737- let cF = (ce - cD)
738- let cG = if ((cF > g))
739+ let cE = D(this, av(aB, aD))
740+ let cF = y(aX, ac(aB))
741+ let ce = bU(aB, aD, cF, 0)._1
742+ let cG = (ce - cE)
743+ let cH = if ((cG > g))
739744 then invoke(this, "claimWxINTERNAL", [aB, aD], nil)
740745 else unit
741- if ((cG == cG))
746+ if ((cH == cH))
742747 then {
743- let dt = getString(bi(be, aD))
744- let dr = dt
745- if ($isInstanceOf(dr, "Unit"))
748+ let du = getString(bi(be, aD))
749+ let ds = du
750+ if ($isInstanceOf(ds, "Unit"))
746751 then $Tuple2([DeleteEntry(bb(aB))], false)
747- else if ($isInstanceOf(dr, "String"))
752+ else if ($isInstanceOf(ds, "String"))
748753 then {
749- let du = dr
750- $Tuple2([StringEntry(bb(aB), du)], true)
754+ let dv = ds
755+ $Tuple2([StringEntry(bb(aB), dv)], true)
751756 }
752757 else throw("Match error")
753758 }
754759 else throw("Strict value is not equal to itself.")
755760 }
756761 else throw("Match error")
757762 }
758763 else throw("Strict value is not equal to itself.")
759764 }
760765
761766
762767
763768 @Callable(cl)
764769 func onModifyWeight (at,bx) = if ((cl.caller != aX))
765770 then throw("permissions denied")
766771 else {
767- let dv = bw(at, bx, 0)
768- let bu = dv._1
769- let bW = dv._2
770- let bX = dv._3
772+ let dw = bw(at, bx, 0)
773+ let bu = dw._1
774+ let bW = dw._2
775+ let bX = dw._3
771776 bW
772777 }
773778
774779
775-@Verifier(dw)
776-func dx () = {
777- let dy = {
780+@Verifier(dx)
781+func dy () = {
782+ let dz = {
778783 let n = ch()
779784 if ($isInstanceOf(n, "ByteVector"))
780785 then {
781786 let cn = n
782787 cn
783788 }
784789 else if ($isInstanceOf(n, "Unit"))
785- then dw.senderPublicKey
790+ then dx.senderPublicKey
786791 else throw("Match error")
787792 }
788- sigVerify(dw.bodyBytes, dw.proofs[0], dy)
793+ sigVerify(dx.bodyBytes, dx.proofs[0], dz)
789794 }
790795

github/deemru/w8io/fabc49c 
118.04 ms