tx · 65vHzBik3ccu17ngXQwi6YsLqNmhGPrTNhq8BxRCHt8B

3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK:  -0.14000000 Waves

2022.10.27 17:17 [2290944] smart account 3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK > SELF 0.00000000 Waves

{ "type": 13, "id": "65vHzBik3ccu17ngXQwi6YsLqNmhGPrTNhq8BxRCHt8B", "fee": 14000000, "feeAssetId": null, "timestamp": 1666880262021, "version": 2, "chainId": 84, "sender": "3MsXpzisJAwnzUr7XrEoW1BZo4U6rw4tsYK", "senderPublicKey": "FFdBua5rzzMkZebvsvmN7sAdU7XhFK8QNJ3hiwwxAYRA", "proofs": [ "4XLpSQpR6SFwf5xGKcQoqWV25dCM3dBP8Zt4WmozZPrudQxbzrEQ76LPGaKCrb2Zh8zYub8MsNMWtbHVav8q9ynT", "3A8zkMCHg9b69GkD8UQ4DZstqk4ex3VrFehwYT58bY1Y5rG25ivjnE2e2CjpiNsGkosksgncfKB7arubRnfQKckT" ], "script": "base64:BgJICAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDCAEBEgQKAggIEgQKAggBEgMKAQgSAwoBCBIDCgEYEgMKARgSBAoCCAgSABIAXAAHa0FjdGl2ZQIGYWN0aXZlAAtrQWN0aXZlR2xvYgIUYWN0aXZlX2FsbF9jb250cmFjdHMABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UAGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50Ah1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAh5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAE2tIZWlnaHRQb29sRnJhY3Rpb24CGl9wb29sX3Jld2FyZF91cGRhdGVfaGVpZ2h0ABtrVG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAca1RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwATa1Jld2FyZFVwZGF0ZUhlaWdodAIUcmV3YXJkX3VwZGF0ZV9oZWlnaHQAFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQCFF9zaGFyZV90b2tlbnNfbG9ja2VkABZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAhVfc2hhcmVfdG9rZW5zX2Jsb2NrZWQAGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlAhpfc2hhcmVfdG9rZW5zX2Jsb2NrZWRfdHlwZQAca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAIcX3NoYXJlX3Rva2Vuc19ibG9ja2VkX2hlaWdodAAXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwCFV9zaGFyZV90b2tlbnNfdmlydHVhbAAWa1NoYXJlVG90YWxTaGFyZVRva2VucwIaX3RvdGFsX3NoYXJlX3Rva2Vuc19sb2NrZWQAE2tTaGFyZVRva2Vuc1ZpcnR1YWwCG190b3RhbF9zaGFyZV90b2tlbnNfdmlydHVhbAALa0xvY2tQYXJhbXMCDF9sb2NrX3BhcmFtcwANa0xvY2tXYXZlc0ZlZQIObG9ja193YXZlc19mZWUADmtQb29sQm9vc3RDb2VmAgtfYm9vc3RfY29lZgARa0Zhcm1MYXN0SW50ZXJlc3QCDl9sYXN0X2ludGVyZXN0ABVrRmFybVVzZXJMYXN0SW50ZXJlc3QCDl9sYXN0X2ludGVyZXN0ABJrQm9vc3RMYXN0SW50ZXJlc3QCEF9sYXN0X2ludGVyZXN0X2IAFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QCEl9sYXN0X2ludGVyZXN0X3VfYgAUa0Jvb3N0TFBMYXN0SW50ZXJlc3QCEl9sYXN0X2ludGVyZXN0X2xwYgAYa0Jvb3N0TFBVc2VyTGFzdEludGVyZXN0AhRfbGFzdF9pbnRlcmVzdF91X2xwYgATa0xhc3RJbnRlcmVzdEhlaWdodAIVX2xhc3RfaW50ZXJlc3RfaGVpZ2h0AAdrU1dPUGlkAgdTV09QX2lkAA5rQXZhaWxhYmxlU1dPUAIPX2F2YWlsYWJsZV9TV09QABFrU3dvcFllYXJFbWlzc2lvbgISc3dvcF95ZWFyX2VtaXNzaW9uABBrSGFydmVzdFBvb2xWb3RlAhhfaGFydmVzdF9wb29sX3ZvdGVfZ1NXT1AACWtQb29sVm90ZQIQX3Bvb2xfdm90ZV9nU1dPUAANa1VzZXJQb29sVm90ZQIQX3VzZXJfdm90ZV9nU1dPUAAUa0hhcnZlc3RVc2VyUG9vbFZvdGUCHV9oYXJ2ZXN0X3VzZXJfcG9vbF92b3RlX2dTV09QAAtrQmFzZVBlcmlvZAILYmFzZV9wZXJpb2QADWtQZXJpb2RMZW5ndGgCDXBlcmlvZF9sZW5ndGgADGtTdGFydEhlaWdodAIMc3RhcnRfaGVpZ2h0ABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAANa1NoYXJlTGltaXRGSAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViABBrTW9uZXlCb3hBZGRyZXNzAhFtb25leV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABFrTFBGYXJtaW5nQWRkcmVzcwIKbHBfZmFybWluZwAUa0Zhcm1pbmdUcmVhc3VyZUFkZHICEGZhcm1pbmdfdHJlYXN1cmUABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAOdG90YWxWb3RlU2hhcmUAgMivoCUAC3NjYWxlVmFsdWU4AIDC1y8AEmxvY2tCb29zdENvZWZTY2FsZQDoBwAQZGVmUG9vbEJvb3N0Q29lZgD0AwETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUQa01vbmV5Qm94QWRkcmVzcwANdm90aW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDmtWb3RpbmdBZGRyZXNzAApnb3ZBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQULa0dvdkFkZHJlc3MAEWFkbWluSW52b2tlUHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAQbHBGYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEWtMUEZhcm1pbmdBZGRyZXNzABNmYXJtaW5nVHJlYXN1cmVBZGRyCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUUa0Zhcm1pbmdUcmVhc3VyZUFkZHIACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgACmN1cnJQZXJpb2QJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAAGYWN0aXZlCQERQGV4dHJOYXRpdmUoMTA1MSkCBQR0aGlzBQdrQWN0aXZlAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQULa0FjdGl2ZUdsb2IGABBTd29wWWVhckVtaXNzaW9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBRFrU3dvcFllYXJFbWlzc2lvbgAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrU1dPUGlkARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFE2tGaXJzdEhhcnZlc3RIZWlnaHQAAAEUZ2V0RkhTaGFyZUxpbWl0VG9rZW4BBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRwb29sBQ1rU2hhcmVMaW1pdEZICQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQ1rU2hhcmVMaW1pdEZIARJnZXRUb3RhbFNoYXJlVG9rZW4BBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwEMZ2V0UG9vbFZvdGVkAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgUEcG9vbAUJa1Bvb2xWb3RlAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQlrUG9vbFZvdGUAAAEPZ2V0U2hhcmVBc3NldElkAQRwb29sCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQBDmFjY291bnRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yAQxnZXRBc3NldEluZm8BB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAECHN0cmluZ0lkCQDYBAEFAmlkBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCaWQJAKwCAgkArAICAgZBc3NldCAFCHN0cmluZ0lkAg4gZG9lc24ndCBleGlzdAkAlQoDBQhzdHJpbmdJZAgFBGluZm8EbmFtZQgFBGluZm8IZGVjaW1hbHMDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAJAJUKAwIFV0FWRVMCBVdBVkVTAAgJAAIBAgtNYXRjaCBlcnJvcgEOY2FsY1NjYWxlVmFsdWUCCGFzc2V0SWQxCGFzc2V0SWQyBBBhc3NldElkMURlY2ltYWxzCAkBBXZhbHVlAQkA7AcBBQhhc3NldElkMQhkZWNpbWFscwQQYXNzZXRJZDJEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDIIZGVjaW1hbHMEC3NjYWxlRGlnaXRzCQBkAgkAZQIFEGFzc2V0SWQyRGVjaW1hbHMFEGFzc2V0SWQxRGVjaW1hbHMACAkAbAYACgAABQtzY2FsZURpZ2l0cwAAAAAFBERPV04BEXVzZXJBdmFpbGFibGVTV09QAgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AAAAEKcmV3YXJkSW5mbwEEcG9vbAQadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzBRtrVG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBRtrVG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzBRxrVG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUca1RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQCsAgIJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRprUmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIMIGF0IGFkZHJlc3MgCQClCAEFCmdvdkFkZHJlc3MEEnJld2FyZFVwZGF0ZUhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MFE2tSZXdhcmRVcGRhdGVIZWlnaHQJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBRNrUmV3YXJkVXBkYXRlSGVpZ2h0AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIFBHBvb2wFE2tIZWlnaHRQb29sRnJhY3Rpb24FEnJld2FyZFVwZGF0ZUhlaWdodAQacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIFBHBvb2wFG2tSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkArAICCQCsAgIJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQRcmV3YXJkUG9vbEN1cnJlbnQJAGsDBRp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUOdG90YWxWb3RlU2hhcmUEEnJld2FyZFBvb2xQcmV2aW91cwkAawMFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BRpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwUOdG90YWxWb3RlU2hhcmUDAwkAZgIFEXJld2FyZFBvb2xDdXJyZW50BRp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAYJAGYCBRJyZXdhcmRQb29sUHJldmlvdXMFG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAAgECYnJld2FyZFBvb2xDdXJyZW50ID4gdG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQgb3IgcmV3YXJkUG9vbFByZXZpb3VzID4gdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQCWCgQFEXJld2FyZFBvb2xDdXJyZW50BRJyZXdhcmRVcGRhdGVIZWlnaHQFEnJld2FyZFBvb2xQcmV2aW91cwUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAETZ2V0TGFzdEludGVyZXN0SW5mbwEEcG9vbAQMZmFybUludGVyZXN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAQNYm9vc3RJbnRlcmVzdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QJAKwCAgkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BA9ib29zdExQSW50ZXJlc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0CQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BBJsYXN0SW50ZXJlc3RIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAJYKBAUSbGFzdEludGVyZXN0SGVpZ2h0BQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFD2Jvb3N0TFBJbnRlcmVzdAELY2FsY0Zhcm1Sd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAawMFDmN1clRvdGFsUmV3YXJkBRJsb2NrQm9vc3RDb2VmU2NhbGUJAGQCBQ1wb29sQm9vc3RDb2VmAOgHAQxjYWxjQm9vc3RSd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAaQIJAGsDBQ5jdXJUb3RhbFJld2FyZAUNcG9vbEJvb3N0Q29lZgkAZAIFDXBvb2xCb29zdENvZWYA6AcFEmxvY2tCb29zdENvZWZTY2FsZQEMY2FsY0ludGVyZXN0DARwb29sEmxhc3RJbnRlcmVzdEhlaWdodBJyZXdhcmRVcGRhdGVIZWlnaHQWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAxmYXJtSW50ZXJlc3QNYm9vc3RJbnRlcmVzdAlwb29sVm90ZWQPYm9vc3RMcEludGVyZXN0FWN1cnJlbnRSZXdhcmRQZXJCbG9jaxBzaGFyZVRva2VuTG9ja2VkFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sKc2NhbGVWYWx1ZQMJAAACBRBzaGFyZVRva2VuTG9ja2VkAAAJAJUKAwAAAAAAAAQNJHQwMTA0MDYxMTgwMAMDAwkAZgIFEnJld2FyZFVwZGF0ZUhlaWdodAUGaGVpZ2h0CQAAAgUScmV3YXJkVXBkYXRlSGVpZ2h0BRZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwYDCQBmAgUGaGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAQIhPQIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAXIJAGgCBRZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQBlAgUGaGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQJAJYKBAUBcgUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0BQ9ib29zdExwSW50ZXJlc3QDAwMJAGYCBQZoZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAGYCBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAcEAXIJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAlgoEBQFyBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFD2Jvb3N0THBJbnRlcmVzdAQJcndkQmZyVXBkCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFEnJld2FyZFVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BAdmQWZ0clVwCQBkAgUMZmFybUludGVyZXN0CQBrAwkBC2NhbGNGYXJtUndkAgUEcG9vbAUJcndkQmZyVXBkBQpzY2FsZVZhbHVlBRBzaGFyZVRva2VuTG9ja2VkBAdiQWZ0clVwCQBkAgUNYm9vc3RJbnRlcmVzdAMJAGYCBQlwb29sVm90ZWQAAAkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFCXBvb2xWb3RlZAAABAliTFBBZnRyVXAJAGQCBQxmYXJtSW50ZXJlc3QDAwkAZgIFCXBvb2xWb3RlZAAACQBmAgUQc2hhcmVUb2tlbkxvY2tlZAAABwkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFCXBvb2xWb3RlZAAABAFyCQBoAgUVY3VycmVudFJld2FyZFBlckJsb2NrCQBlAgUGaGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAJYKBAUBcgUHZkFmdHJVcAUHYkFmdHJVcAUJYkxQQWZ0clVwBAZyZXdhcmQIBQ0kdDAxMDQwNjExODAwAl8xBA5mYXJtSW50ckJlZm9yZQgFDSR0MDEwNDA2MTE4MDACXzIED2Jvb3N0SW50ckJlZm9yZQgFDSR0MDEwNDA2MTE4MDACXzMEEWJvb3N0TFBJbnRyQmVmb3JlCAUNJHQwMTA0MDYxMTgwMAJfNAQPbmV3RmFybUludGVyZXN0CQBkAgUOZmFybUludHJCZWZvcmUJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQZyZXdhcmQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEEG5ld0Jvb3N0SW50ZXJlc3QJAGQCBQ9ib29zdEludHJCZWZvcmUDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUGcmV3YXJkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAEEm5ld0Jvb3N0TFBJbnRlcmVzdAkAZAIFEWJvb3N0TFBJbnRyQmVmb3JlAwMJAGYCBQlwb29sVm90ZWQAAAkAZgIFEHNoYXJlVG9rZW5Mb2NrZWQAAAcJAGsDCQBrAwkBDGNhbGNCb29zdFJ3ZAIFBHBvb2wFBnJld2FyZAULc2NhbGVWYWx1ZTgFEHNoYXJlVG9rZW5Mb2NrZWQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAkAlQoDBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QFEm5ld0Jvb3N0TFBJbnRlcmVzdAEJY2xhaW1DYWxjAgRwb29sBHVzZXIECnNjYWxlVmFsdWUJAQ5jYWxjU2NhbGVWYWx1ZQIFBFNXT1AJAQ9nZXRTaGFyZUFzc2V0SWQBBQRwb29sBAlwb29sVm90ZWQJAQxnZXRQb29sVm90ZWQBBQRwb29sBAp1UG9vbFZvdGVkCQEQZ2V0VXNlclBvb2xWb3RlZAIFBHBvb2wFBHVzZXIECnNoYXJlVG9rZW4JARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFCnNoYXJlVG9rZW4EDSR0MDEyNzczMTI4NzEJARNnZXRMYXN0SW50ZXJlc3RJbmZvAQUEcG9vbAQSbGFzdEludGVyZXN0SGVpZ2h0CAUNJHQwMTI3NzMxMjg3MQJfMQQMZmFybUludGVyZXN0CAUNJHQwMTI3NzMxMjg3MQJfMgQNYm9vc3RJbnRlcmVzdAgFDSR0MDEyNzczMTI4NzECXzMED2Jvb3N0TFBJbnRlcmVzdAgFDSR0MDEyNzczMTI4NzECXzQEDSR0MDEyODc2MTI5OTAJAQpyZXdhcmRJbmZvAQUEcG9vbAQVY3VycmVudFJld2FyZFBlckJsb2NrCAUNJHQwMTI4NzYxMjk5MAJfMQQScmV3YXJkVXBkYXRlSGVpZ2h0CAUNJHQwMTI4NzYxMjk5MAJfMgQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyODc2MTI5OTACXzMEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxMjg3NjEyOTkwAl80BA11RmFybUludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0BA51Qm9vc3RJbnRlcmVzdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0BBB1Qm9vc3RMUEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGGtCb29zdExQVXNlckxhc3RJbnRlcmVzdAUPYm9vc3RMUEludGVyZXN0BBJ1U2hhcmVUb2tlbnNTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABBB1U2hhcmVUb2tlbnNWaXJ0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRJ1U2hhcmVUb2tlbnNTdGFrZWQEDSR0MDEzNTU4MTM5NTEJAQxjYWxjSW50ZXJlc3QMBQRwb29sBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0BQlwb29sVm90ZWQFD2Jvb3N0TFBJbnRlcmVzdAUVY3VycmVudFJld2FyZFBlckJsb2NrBRF0b3RhbFNoYXJlVmlydHVhbAUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawUKc2NhbGVWYWx1ZQQPbmV3RmFybUludGVyZXN0CAUNJHQwMTM1NTgxMzk1MQJfMQQQbmV3Qm9vc3RJbnRlcmVzdAgFDSR0MDEzNTU4MTM5NTECXzIEEm5ld0Jvb3N0TFBJbnRlcmVzdAgFDSR0MDEzNTU4MTM5NTECXzMEDGNsYWltRmFybWluZwkAawMFEHVTaGFyZVRva2Vuc1ZpcnQJAGUCBQ9uZXdGYXJtSW50ZXJlc3QFDXVGYXJtSW50ZXJlc3QFCnNjYWxlVmFsdWUEEGNsYWltQm9vc3RpbmdNYXgJAGsDBQp1UG9vbFZvdGVkCQBlAgUQbmV3Qm9vc3RJbnRlcmVzdAUOdUJvb3N0SW50ZXJlc3QFC3NjYWxlVmFsdWU4BA1jbGFpbUJvb3N0aW5nCQBpAgkAawMJAGgCBRB1U2hhcmVUb2tlbnNWaXJ0BQp1UG9vbFZvdGVkCQBlAgUSbmV3Qm9vc3RMUEludGVyZXN0BRB1Qm9vc3RMUEludGVyZXN0BQtzY2FsZVZhbHVlOAULc2NhbGVWYWx1ZTgECnRvVHJlYXN1cnkJAGUCBRBjbGFpbUJvb3N0aW5nTWF4BQ1jbGFpbUJvb3N0aW5nCQCXCgUFD25ld0Zhcm1JbnRlcmVzdAUQbmV3Qm9vc3RJbnRlcmVzdAUSbmV3Qm9vc3RMUEludGVyZXN0CQBkAgUMY2xhaW1GYXJtaW5nBQ1jbGFpbUJvb3N0aW5nBQp0b1RyZWFzdXJ5ARthdmFpbGFibGVDbGFpbUNhbGNBbGxCeVVzZXICBXBvb2xzBHVzZXIKAQ1jYWxjQXZhaWxhYmxlAgNhY2MEcG9vbAQNJHQwMTQ1ODExNDYxMAUDYWNjBAhuZXdQb29scwgFDSR0MDE0NTgxMTQ2MTACXzEEB2Ftb3VudHMIBQ0kdDAxNDU4MTE0NjEwAl8yBA0kdDAxNDYxOTE0Njc4CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQCZmkIBQ0kdDAxNDYxOTE0Njc4Al8xBAJiaQgFDSR0MDE0NjE5MTQ2NzgCXzIEBGJscGkIBQ0kdDAxNDYxOTE0Njc4Al8zBAtjbGFpbUFtb3VudAgFDSR0MDE0NjE5MTQ2NzgCXzQEAnR0CAUNJHQwMTQ2MTkxNDY3OAJfNQQNYXZhaWxhYmxlRnVuZAkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQCUCgIJAM0IAgUIbmV3UG9vbHMFBHVzZXIJAM0IAgUHYW1vdW50cwUNYXZhaWxhYmxlRnVuZAoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDWNhbGNBdmFpbGFibGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDYwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8ARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBHBvb2wEdXNlchV1c2VyU2hhcmVUb2tlbnNTdGFrZWQJcG10QW1vdW50CGxvY2tUeXBlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQED3RvdGFsVm90ZUFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFEGtIYXJ2ZXN0UG9vbFZvdGUAAAQOdXNlclZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUEcG9vbAUQa0hhcnZlc3RQb29sVm90ZQAABBFGSFNoYXJlVG9rZW5MaW1pdAkBFGdldEZIU2hhcmVMaW1pdFRva2VuAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQVRkhTaGFyZVRva2VuVXNlckxpbWl0CQBlAgkAawMFEUZIU2hhcmVUb2tlbkxpbWl0BQ51c2VyVm90ZUFtb3VudAUPdG90YWxWb3RlQW1vdW50BRV1c2VyU2hhcmVUb2tlbnNTdGFrZWQDCQBmAgUIbG9ja1R5cGUAAAkAAgECMllvdSBjYW4ndCBsb2NrIHNoYXJlVG9rZW5zIHRpbGwgZmlyc3QgaGFydmVzdCBlbmQuAwkAAAIFDnVzZXJWb3RlQW1vdW50AAAAAAMJAGcCBQlwbXRBbW91bnQFFUZIU2hhcmVUb2tlblVzZXJMaW1pdAkAZQIFCXBtdEFtb3VudAUVRkhTaGFyZVRva2VuVXNlckxpbWl0AAAAAAENZ2V0TG9ja1BhcmFtcwEEdHlwZQQKbG9ja1BhcmFtcwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCkAwEFBHR5cGUFC2tMb2NrUGFyYW1zCQCsAgICHlRoZXJlIGFyZSBubyBrZXkgZm9yIGxvY2sgdHlwZQkApAMBBQR0eXBlAgFfCQCUCgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpsb2NrUGFyYW1zAAEBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBCGlzQWN0aXZlAAMDBQZhY3RpdmUFCmFjdGl2ZUdsb2IHBQR1bml0CQACAQIfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAELaXNBZG1pbkNhbGwBAWkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQxhZG1pblB1YktleTEJAMwIAgUMYWRtaW5QdWJLZXkyCQDMCAIFDGFkbWluUHViS2V5MwUDbmlsCAUBaQ9jYWxsZXJQdWJsaWNLZXkFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24OAWkBBGluaXQBB2Vhcmx5TFADCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQdrU1dPUGlkCQACAQIYU1dPUCBhbHJlYWR5IGluaXRpYWxpemVkBAppbml0QW1vdW50AICA6YOx3hYECVNXT1Bpc3N1ZQkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGBAZTV09QaWQJALgIAQUJU1dPUGlzc3VlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQDCCAUCBFNXT1ACE1NXT1AgcHJvdG9jb2wgdG9rZW4FCmluaXRBbW91bnQACAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1NXT1BpZAkA2AQBBQZTV09QaWQFA25pbAFpARRpbml0UG9vbFNoYXJlRmFybWluZwEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBEnVwZGF0ZVBvb2xJbnRlcmVzdAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQIhPQIIBQFpBmNhbGxlcgUKZ292QWRkcmVzcwkAAgECJk9ubHkgR292ZXJuYW5jZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAR1c2VyCQClCAEJAKcIAQURYWRtaW5JbnZva2VQdWJLZXkEDSR0MDE3NDEwMTc0ODQJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAxNzQxMDE3NDg0Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMTc0MTAxNzQ4NAJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMTc0MTAxNzQ4NAJfMwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAUDbmlsAWkBD2xvY2tTaGFyZVRva2VucwIEcG9vbAhsb2NrVHlwZQkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQMc2hhcmVBc3NldElkCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQEdXNlcgkApQgBCAUBaQxvcmlnaW5DYWxsZXIECnRvdGFsU2hhcmUJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFCnRvdGFsU2hhcmUEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABA91c2VyTG9ja2VkSGVpZ3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEFHRvdGFsVXNlclNoYXJlVG9rZW5zCQBkAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BA0kdDAxODU5MzE4NjQ1CQENZ2V0TG9ja1BhcmFtcwEFCGxvY2tUeXBlBApsb2NrUGVyaW9kCAUNJHQwMTg1OTMxODY0NQJfMQQIbG9ja0NvZWYIBQ0kdDAxODU5MzE4NjQ1Al8yBAxsb2NrV2F2ZXNGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDHNoYXJlQXNzZXRJZAkAAgECG1dyb25nIHNoYXJldG9rZW4gaW4gcGF5bWVudAMJAGcCAAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQACAQIlUGF5bWVudCBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCGxvY2tUeXBlCQACAQIVbG9ja1R5cGUgbXVzdCBiZSA+PSAwBBVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJARVjYW5Mb2NrSW5GaXJzdEhhcnZlc3QFBQRwb29sBQR1c2VyBRB1c2VyU3Rha2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIbG9ja1R5cGUDCQAAAgUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgEDSR0MDE5MDcyMjA5MTcDCQAAAgUIbG9ja1R5cGUAAAQUdXNlckFtb3VudFZpcnR1YWxOZXcJAGUCCQBkAgURdXNlckFtb3VudFZpcnR1YWwICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAkAZQIJAGQCBRB1c2VyU3Rha2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGUCCQBkAgURdG90YWxTaGFyZVZpcnR1YWwICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkMb3JpZ2luQ2FsbGVyBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsCQBlAgkAZAIFCnRvdGFsU2hhcmUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAAAwMJAGYCAAIJAJADAQgFAWkIcGF5bWVudHMGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFBHVuaXQGCQBmAgUMbG9ja1dhdmVzRmVlCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAcJAAIBCQCsAgIJAKwCAgIrWW91IG5lZWQgdG8gcGF5IGFkZGl0aW9uYWwgd2F2ZXMgY29taXNzaW9uIAkApAMBBQxsb2NrV2F2ZXNGZWUCBVdBVkVTAwkAZgIFD3VzZXJMb2NrZWRIZWlndAkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAkAAgECT1lvdSBjYW5ub3QgbG9jayBzaGFyZXRva2VucyBmb3IgYSBwZXJpb2QgbGVzcyB0aGFuIHdoYXQgeW91IGhhdmUgYWxyZWFkeSBsb2NrZWQEE3VzZXJMb2NrZWRBbW91bnROZXcJAGQCBRB1c2VyTG9ja2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQSdXNlckxvY2tlZEhlaWd0TmV3CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kBBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZAIJAGsDBRN1c2VyTG9ja2VkQW1vdW50TmV3BQhsb2NrQ29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBRB1c2VyU3Rha2VkQW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQFE3VzZXJMb2NrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQFEnVzZXJMb2NrZWRIZWlndE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUFCGxvY2tUeXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3BQNuaWwJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLbG9ja0VudHJpZXMIBQ0kdDAxOTA3MjIwOTE3Al8xBA10b3RhbFNoYXJlTmV3CAUNJHQwMTkwNzIyMDkxNwJfMgMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQxzaGFyZUFzc2V0SWQFDXRvdGFsU2hhcmVOZXcJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEDSR0MDIxMDQyMjExNDEJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyMTA0MjIxMTQxAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMjEwNDIyMTE0MQJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMjEwNDIyMTE0MQJfMwQLY2xhaW1BbW91bnQIBQ0kdDAyMTA0MjIxMTQxAl80BAp0b1RyZWFzdXJlCAUNJHQwMjEwNDIyMTE0MQJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAQEdXBscAMJAAACCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd2ZXJzaW9uAgUzLjAuMAkA/AcEBRBscEZhcm1pbmdBZGRyZXNzAhJ1cGRhdGVVc2VySW50ZXJlc3QJAMwIAgUEcG9vbAkAzAgCBRR0b3RhbFVzZXJTaGFyZVRva2VucwUDbmlsBQNuaWwAAAMJAAACBQR1cGxwBQR1cGxwCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMFDXRvdGFsU2hhcmVOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAULbG9ja0VudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVbG9ja1N0YWtlZFNoYXJlVG9rZW5zAwRwb29sCGxvY2tUeXBlCmxvY2tBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wEBHVzZXIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAp0b3RhbFNoYXJlCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQp0b3RhbFNoYXJlBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQPdXNlckxvY2tlZEhlaWd0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBR0b3RhbFVzZXJTaGFyZVRva2VucwkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQEDSR0MDIzMDM5MjMwOTEJAQ1nZXRMb2NrUGFyYW1zAQUIbG9ja1R5cGUECmxvY2tQZXJpb2QIBQ0kdDAyMzAzOTIzMDkxAl8xBAhsb2NrQ29lZggFDSR0MDIzMDM5MjMwOTECXzIEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQMJAGYCCQEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQUEcG9vbAUGaGVpZ2h0CQACAQIyWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMgdGlsbCBmaXJzdCBoYXJ2ZXN0IGVuZC4DCQBnAgAABQhsb2NrVHlwZQkAAgECFGxvY2tUeXBlIG11c3QgYmUgPiAwAwkAZgIFCmxvY2tBbW91bnQFEHVzZXJTdGFrZWRBbW91bnQJAAIBCQCsAgICGVlvdSBjYW4ndCBsb2NrIG1vcmUgdGhhbiAJAKQDAQUQdXNlclN0YWtlZEFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQxzaGFyZUFzc2V0SWQFCnRvdGFsU2hhcmUJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAAAwMJAGYCAAEJAJADAQgFAWkIcGF5bWVudHMGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQGCQBmAgUMbG9ja1dhdmVzRmVlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAcJAAIBCQCsAgIJAKwCAgIrWW91IG5lZWQgdG8gcGF5IGFkZGl0aW9uYWwgd2F2ZXMgY29taXNzaW9uIAkApAMBBQxsb2NrV2F2ZXNGZWUCBVdBVkVTAwMJAAACBQ91c2VyTG9ja2VkSGVpZ3QAAAkAZwIAAAUKbG9ja0Ftb3VudAcJAAIBAiFsb2NrQW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQpsb2NrQW1vdW50CQACAQIbbG9ja0Ftb3VudCBtdXN0IGJlIHBvc2l0aXZlAwkAZgIFD3VzZXJMb2NrZWRIZWlndAkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAkAAgECT1lvdSBjYW5ub3QgbG9jayBzaGFyZXRva2VucyBmb3IgYSBwZXJpb2QgbGVzcyB0aGFuIHdoYXQgeW91IGhhdmUgYWxyZWFkeSBsb2NrZWQEE3VzZXJMb2NrZWRBbW91bnROZXcJAGQCBRB1c2VyTG9ja2VkQW1vdW50BQpsb2NrQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUKbG9ja0Ftb3VudAQSdXNlckxvY2tlZEhlaWd0TmV3CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kBBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZAIJAGsDBRN1c2VyTG9ja2VkQW1vdW50TmV3BQhsb2NrQ29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBRB1c2VyU3Rha2VkQW1vdW50BA0kdDAyNDM3ODI0NDc3CQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjQzNzgyNDQ3NwJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI0Mzc4MjQ0NzcCXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDI0Mzc4MjQ0NzcCXzMEC2NsYWltQW1vdW50CAUNJHQwMjQzNzgyNDQ3NwJfNAQKdG9UcmVhc3VyZQgFDSR0MDI0Mzc4MjQ0NzcCXzUEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQFE3VzZXJMb2NrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQFEnVzZXJMb2NrZWRIZWlndE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUFCGxvY2tUeXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAUDbmlsAWkBDnVubG9ja1VzZXJMb2NrAgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEDGxvY2tXYXZlc0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQQPdXNlckxvY2tlZEhlaWd0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAkArAICCQCsAgIJAKwCAgkArAICAhFUaGVyZSBpcyBubyBwb29sIAUEcG9vbAIJIG9yIHVzZXIgBQR1c2VyAgl3aXRoIGxvY2sEEXRvdGFsU2hhcmVWaXJ0dWFsCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQDCQBmAgUPdXNlckxvY2tlZEhlaWd0BQZoZWlnaHQJAAIBCQCsAgICIllvdSBjYW4ndCB1bmxvY2sgc2hhcmV0b2tlbnMgdGlsbCAJAKQDAQUPdXNlckxvY2tlZEhlaWd0BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAQNJHQwMjY3MDMyNjgwMgkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI2NzAzMjY4MDICXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyNjcwMzI2ODAyAl8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAyNjcwMzI2ODAyAl8zBAtjbGFpbUFtb3VudAgFDSR0MDI2NzAzMjY4MDICXzQECnRvVHJlYXN1cmUIBQ0kdDAyNjcwMzI2ODAyAl81BBFhdmFpbGFibGVGdW5kc05ldwkAZAIJARF1c2VyQXZhaWxhYmxlU1dPUAIFBHBvb2wFBHVzZXIFC2NsYWltQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFGmtVc2VyU2hhcmVUb2tlbnNMb2NrZWRUeXBlCQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDGxvY2tXYXZlc0ZlZQUEdW5pdAUDbmlsAWkBE3dpdGhkcmF3U2hhcmVUb2tlbnMCBHBvb2wZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQNc2hhcmVUb2tlbnNJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQEFdmFsdWUBCQCmCAEFBHBvb2wCDnNoYXJlX2Fzc2V0X2lkBAR1c2VyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQNJHQwMjgyOTYyODM5NQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI4Mjk2MjgzOTUCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyODI5NjI4Mzk1Al8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAyODI5NjI4Mzk1Al8zBAtjbGFpbUFtb3VudAgFDSR0MDI4Mjk2MjgzOTUCXzQECnRvVHJlYXN1cmUIBQ0kdDAyODI5NjI4Mzk1Al81BBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBN1c2VyU3Rha2VkQW1vdW50TmV3CQBlAgUQdXNlclN0YWtlZEFtb3VudAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAQQdG90YWxTaGFyZUFtb3VudAkBEmdldFRvdGFsU2hhcmVUb2tlbgEFBHBvb2wEEXRvdGFsU2hhcmVWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAUQdG90YWxTaGFyZUFtb3VudAQTdG90YWxTaGFyZUFtb3VudE5ldwkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQBlAgURdG90YWxTaGFyZVZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgURdXNlckFtb3VudFZpcnR1YWwFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQDCQBmAgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgECLFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDXNoYXJlVG9rZW5zSWQFEHRvdGFsU2hhcmVBbW91bnQJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEBHVwbHADCQAAAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUEcG9vbAIHdmVyc2lvbgIFMy4wLjAJAPwHBAUQbHBGYXJtaW5nQWRkcmVzcwISdXBkYXRlVXNlckludGVyZXN0CQDMCAIFBHBvb2wJAMwIAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zBRN0b3RhbFNoYXJlQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFFHRvdGFsU2hhcmVWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUNc2hhcmVUb2tlbnNJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBWNsYWltAQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA1zaGFyZVRva2Vuc0lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBBBzaGFyZVRva2VuTG9ja2VkCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQNJHQwMzEwNTQzMTE1MwkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDMxMDU0MzExNTMCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAzMTA1NDMxMTUzAl8yBA9ib29zdExQaW50ZXJlc3QIBQ0kdDAzMTA1NDMxMTUzAl8zBAtjbGFpbUFtb3VudAgFDSR0MDMxMDU0MzExNTMCXzQECnRvVHJlYXN1cmUIBQ0kdDAzMTA1NDMxMTUzAl81BA1hdmFpbGFibGVGdW5kCQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQDCQAAAgUNYXZhaWxhYmxlRnVuZAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQ1zaGFyZVRva2Vuc0lkBRBzaGFyZVRva2VuTG9ja2VkCQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRRrQm9vc3RMUExhc3RJbnRlcmVzdAUPYm9vc3RMUGludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAAACQDMCAIJAQdSZWlzc3VlAwUEU1dPUAkAZAIFCnRvVHJlYXN1cmUFDWF2YWlsYWJsZUZ1bmQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ1hdmFpbGFibGVGdW5kBQRTV09QBQNuaWwFDWF2YWlsYWJsZUZ1bmQBaQENY2xhaW1BbmRTdGFrZQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQtjbGFpbUFtb3VudAULY2xhaW1BbW91bnQECnN0YWtlVG9Hb3YJAPwHBAUKZ292QWRkcmVzcwITbG9ja1NXT1BGcm9tRmFybWluZwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQRTV09QBQtjbGFpbUFtb3VudAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhjbGFpbUFsbAEFcG9vbHMJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAKAQhjbGFpbUludgIKY2xhaW1Ub3RhbARwb29sBAtjbGFpbUFtb3VudAoAAUAJAPwHBAUEdGhpcwIFY2xhaW0JAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFC2NsYWltQW1vdW50BQtjbGFpbUFtb3VudAkAZAIFCmNsYWltVG90YWwFC2NsYWltQW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBApjbGFpbVRvdGFsCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhjbGFpbUludgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwDCQAAAgUKY2xhaW1Ub3RhbAAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNsYWltVG90YWwFBFNXT1AFA25pbAFpARBjbGFpbUFsbEFuZFN0YWtlAQVwb29scwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAoBCGNsYWltSW52AgpjbGFpbVRvdGFsBHBvb2wEC2NsYWltQW1vdW50CgABQAkA/AcEBQR0aGlzAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50CQBkAgUKY2xhaW1Ub3RhbAULY2xhaW1BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECmNsYWltVG90YWwKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNsYWltSW52AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAMJAAACBQpjbGFpbVRvdGFsAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBApzdGFrZVRvR292CQD8BwQFCmdvdkFkZHJlc3MCE2xvY2tTV09QRnJvbUZhcm1pbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEU1dPUAUKY2xhaW1Ub3RhbAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARd1cGRhdGVVc2VyQm9vc3RJbnRlcmVzdAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBAiE9AggFAWkGY2FsbGVyBQ12b3RpbmdBZGRyZXNzCQACAQIjT25seSB2b2l0aW5nIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EDSR0MDMzNTI5MzM2MjgJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMzUyOTMzNjI4Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMzM1MjkzMzYyOAJfMgQPYm9vc3RMUGludGVyZXN0CAUNJHQwMzM1MjkzMzYyOAJfMwQLY2xhaW1BbW91bnQIBQ0kdDAzMzUyOTMzNjI4Al80BAp0b1RyZWFzdXJlCAUNJHQwMzM1MjkzMzYyOAJfNQQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFGtCb29zdExQTGFzdEludGVyZXN0BQ9ib29zdExQaW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUUa0Jvb3N0TFBMYXN0SW50ZXJlc3QFD2Jvb3N0TFBpbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAFpAQhzaHV0ZG93bgAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDCQEBIQEFBmFjdGl2ZQkAAgEJAKwCAgIiREFwcCBpcyBhbHJlYWR5IHN1c3BlbmRlZC4gQ2F1c2U6IAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQZrQ2F1c2UCGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkCQEHc3VzcGVuZAECD1BhdXNlZCBieSBhZG1pbgFpAQhhY3RpdmF0ZQAJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDBQZhY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQELRGVsZXRlRW50cnkBBQZrQ2F1c2UFA25pbAECdHgBBnZlcmlmeQAEByRtYXRjaDAFAnR4BBJhZG1pblB1YktleTFTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxhZG1pblB1YktleTEAAQAABBJhZG1pblB1YktleTJTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwABBQxhZG1pblB1YktleTIAAQAABBJhZG1pblB1YktleTNTaWduZWQDCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwACBQxhZG1pblB1YktleTMAAQAACQBnAgkAZAIJAGQCBRJhZG1pblB1YktleTFTaWduZWQFEmFkbWluUHViS2V5MlNpZ25lZAUSYWRtaW5QdWJLZXkzU2lnbmVkAAKHqb4m", "height": 2290944, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DoRqnDUm9uxSbGH4GV8J8XcZcTNu7VBLNVAnrAXZBmn7 Next: 3oeHBprB2HvZT3YCJ72dKqmFP56dtkR83BcgQvpsF1nL Diff:
OldNewDifferences
244244
245245 func bg (ax,bh) = {
246246 let bi = valueOrElse(getInteger(this, (ax + s)), Z)
247- ((bh / (bi + 1000)) / Y)
247+ fraction(bh, Y, (bi + 1000))
248248 }
249249
250250
291291 let bs = (bn * (height - aW))
292292 $Tuple4(bs, bu, bv, bw)
293293 }
294- let bs = br._1
295- let bx = br._2
296- let by = br._3
297- let bz = br._4
298- let bA = (bx + fraction(bg(ax, bs), bq, bo))
299- let bB = (by + (if ((bl > 0))
300- then fraction(bj(ax, bs), X, bl)
294+ let bx = br._1
295+ let by = br._2
296+ let bz = br._3
297+ let bA = br._4
298+ let bB = (by + fraction(bg(ax, bx), bq, bo))
299+ let bC = (bz + (if ((bl > 0))
300+ then fraction(bj(ax, bx), X, bl)
301301 else 0))
302- let bC = (bz + (if (if ((bl > 0))
302+ let bD = (bA + (if (if ((bl > 0))
303303 then (bo > 0)
304304 else false)
305- then fraction(fraction(bj(ax, bs), X, bo), X, bl)
305+ then fraction(fraction(bj(ax, bx), X, bo), X, bl)
306306 else 0))
307- $Tuple3(bA, bB, bC)
307+ $Tuple3(bB, bC, bD)
308308 }
309309
310310
311-func bD (ax,aC) = {
311+func bE (ax,aC) = {
312312 let bq = aL(av, aD(ax))
313313 let bl = aA(ax)
314- let bE = aB(ax, aC)
315- let bF = az(ax)
316- let bG = valueOrElse(getInteger(this, (ax + p)), bF)
317- let bH = bb(ax)
318- let bf = bH._1
319- let bc = bH._2
320- let bd = bH._3
321- let be = bH._4
322- let bI = aS(ax)
323- let bn = bI._1
324- let aW = bI._2
325- let bp = bI._3
326- let aX = bI._4
327- let bJ = valueOrElse(getInteger(this, (((ax + "_") + aC) + u)), bc)
328- let bK = valueOrElse(getInteger(this, (((ax + "_") + aC) + w)), bd)
329- let bL = valueOrElse(getInteger(this, (((ax + "_") + aC) + y)), be)
330- let bM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
331- let bN = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), bM)
332- let bO = bk(ax, bf, aW, aX, bc, bd, bl, be, bn, bG, bp, bq)
333- let bA = bO._1
334- let bB = bO._2
335- let bC = bO._3
336- let bP = fraction(bN, (bA - bJ), bq)
337- let bQ = fraction(bE, (bB - bK), X)
338- let bR = (fraction((bN * bE), (bC - bL), X) / X)
339- let bS = (bQ - bR)
340- $Tuple5(bA, bB, bC, (bP + bR), bS)
314+ let bF = aB(ax, aC)
315+ let bG = az(ax)
316+ let bH = valueOrElse(getInteger(this, (ax + p)), bG)
317+ let bI = bb(ax)
318+ let bf = bI._1
319+ let bc = bI._2
320+ let bd = bI._3
321+ let be = bI._4
322+ let bJ = aS(ax)
323+ let bn = bJ._1
324+ let aW = bJ._2
325+ let bp = bJ._3
326+ let aX = bJ._4
327+ let bK = valueOrElse(getInteger(this, (((ax + "_") + aC) + u)), bc)
328+ let bL = valueOrElse(getInteger(this, (((ax + "_") + aC) + w)), bd)
329+ let bM = valueOrElse(getInteger(this, (((ax + "_") + aC) + y)), be)
330+ let bN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
331+ let bO = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), bN)
332+ let bP = bk(ax, bf, aW, aX, bc, bd, bl, be, bn, bH, bp, bq)
333+ let bB = bP._1
334+ let bC = bP._2
335+ let bD = bP._3
336+ let bQ = fraction(bO, (bB - bK), bq)
337+ let bR = fraction(bF, (bC - bL), X)
338+ let bS = (fraction((bO * bF), (bD - bM), X) / X)
339+ let bT = (bR - bS)
340+ $Tuple5(bB, bC, bD, (bQ + bS), bT)
341341 }
342342
343343
344-func bT (bU,aC) = {
345- func bV (bW,ax) = {
346- let bX = bW
347- let bY = bX._1
348- let bZ = bX._2
349- let ca = bD(ax, aC)
350- let cb = ca._1
351- let cc = ca._2
352- let cd = ca._3
353- let ce = ca._4
354- let cf = ca._5
355- let cg = (aR(ax, aC) + ce)
356- $Tuple2((bY :+ aC), (bZ :+ cg))
344+func bU (bV,aC) = {
345+ func bW (bX,ax) = {
346+ let bY = bX
347+ let bZ = bY._1
348+ let ca = bY._2
349+ let cb = bE(ax, aC)
350+ let cc = cb._1
351+ let cd = cb._2
352+ let ce = cb._3
353+ let cf = cb._4
354+ let cg = cb._5
355+ let ch = (aR(ax, aC) + cf)
356+ $Tuple2((bZ :+ aC), (ca :+ ch))
357357 }
358358
359- let ch = bU
360- let ci = size(ch)
361- let cj = $Tuple2(nil, nil)
362- func ck (cl,cm) = if ((cm >= ci))
363- then cl
364- else bV(cl, ch[cm])
359+ let ci = bV
360+ let cj = size(ci)
361+ let ck = $Tuple2(nil, nil)
362+ func cl (cm,cn) = if ((cn >= cj))
363+ then cm
364+ else bW(cm, ci[cn])
365365
366- func cn (cl,cm) = if ((cm >= ci))
367- then cl
366+ func co (cm,cn) = if ((cn >= cj))
367+ then cm
368368 else throw("List size exceeds 60")
369369
370- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
370+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
371371 }
372372
373373
374-func co (ax,aC,cp,cq,cr) = if ((aw(ax) > height))
374+func cp (ax,aC,cq,cr,cs) = if ((aw(ax) > height))
375375 then {
376- let cs = valueOrElse(getInteger(aj, (ax + D)), 0)
377- let ct = valueOrElse(getInteger(aj, (((aC + "_") + ax) + D)), 0)
378- let cu = ay(addressFromStringValue(ax))
379- let cv = (fraction(cu, ct, cs) - cp)
380- if ((cr > 0))
376+ let ct = valueOrElse(getInteger(aj, (ax + D)), 0)
377+ let cu = valueOrElse(getInteger(aj, (((aC + "_") + ax) + D)), 0)
378+ let cv = ay(addressFromStringValue(ax))
379+ let cw = (fraction(cv, cu, ct) - cq)
380+ if ((cs > 0))
381381 then throw("You can't lock shareTokens till first harvest end.")
382- else if ((ct == 0))
382+ else if ((cu == 0))
383383 then 0
384- else if ((cq >= cv))
385- then (cq - cv)
384+ else if ((cr >= cw))
385+ then (cr - cw)
386386 else 0
387387 }
388388 else 0
389389
390390
391-func cw (cx) = {
392- let cy = split(valueOrErrorMessage(getString(this, (toString(cx) + q)), ("There are no key for lock type" + toString(cx))), "_")
393- $Tuple2(parseIntValue(cy[0]), parseIntValue(cy[1]))
391+func cx (cy) = {
392+ let cz = split(valueOrErrorMessage(getString(this, (toString(cy) + q)), ("There are no key for lock type" + toString(cy))), "_")
393+ $Tuple2(parseIntValue(cz[0]), parseIntValue(cz[1]))
394394 }
395395
396396
397-func cz (cA) = [BooleanEntry(a, false), StringEntry(c, cA)]
397+func cA (cB) = [BooleanEntry(a, false), StringEntry(c, cB)]
398398
399399
400-func cB () = if (if (as)
400+func cC () = if (if (as)
401401 then at
402402 else false)
403403 then unit
404404 else throw("DApp is inactive at this moment")
405405
406406
407-func cC (cD) = if (containsElement([af, ag, ah], cD.callerPublicKey))
407+func cD (cE) = if (containsElement([af, ag, ah], cE.callerPublicKey))
408408 then unit
409409 else throw("Only admin can call this function")
410410
411411
412-@Callable(cD)
413-func init (cE) = if (isDefined(getString(this, A)))
412+@Callable(cE)
413+func init (cF) = if (isDefined(getString(this, A)))
414414 then throw("SWOP already initialized")
415415 else {
416- let cF = 100000000000000
417- let cG = Issue("SWOP", "SWOP protocol token", cF, 8, true)
418- let cH = calculateAssetId(cG)
419-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", cF, 8, true), StringEntry(A, toBase58String(cH))]
416+ let cG = 100000000000000
417+ let cH = Issue("SWOP", "SWOP protocol token", cG, 8, true)
418+ let cI = calculateAssetId(cH)
419+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", cG, 8, true), StringEntry(A, toBase58String(cI))]
420420 }
421421
422422
423423
424-@Callable(cD)
425-func initPoolShareFarming (ax) = valueOrElse(cC(cD), [IntegerEntry((ax + o), 0), IntegerEntry((ax + t), 0), IntegerEntry((ax + v), 0), IntegerEntry((ax + x), 0), IntegerEntry((ax + z), height)])
424+@Callable(cE)
425+func initPoolShareFarming (ax) = valueOrElse(cD(cE), [IntegerEntry((ax + o), 0), IntegerEntry((ax + t), 0), IntegerEntry((ax + v), 0), IntegerEntry((ax + x), 0), IntegerEntry((ax + z), height)])
426426
427427
428428
429-@Callable(cD)
430-func updatePoolInterest (ax) = valueOrElse(cB(), if ((cD.caller != ak))
429+@Callable(cE)
430+func updatePoolInterest (ax) = valueOrElse(cC(), if ((cE.caller != ak))
431431 then throw("Only Governance can call this function")
432432 else {
433433 let aC = toString(addressFromPublicKey(al))
434- let cI = bD(ax, aC)
435- let bc = cI._1
436- let bd = cI._2
437- let cJ = cI._3
438-[IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height)]
434+ let cJ = bE(ax, aC)
435+ let bc = cJ._1
436+ let bd = cJ._2
437+ let cK = cJ._3
438+[IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height)]
439439 })
440440
441441
442442
443-@Callable(cD)
444-func lockShareTokens (ax,cr) = valueOrElse(cB(), {
445- let cK = aD(ax)
446- let aC = toString(cD.originCaller)
447- let cL = az(ax)
448- let bG = valueOrElse(getInteger(this, (ax + p)), cL)
449- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
450- let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
451- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
452- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
453- let cQ = ((cM + cO) + cD.payments[0].amount)
454- let cR = cw(cr)
455- let cS = cR._1
456- let cT = cR._2
457- let cU = getIntegerValue(this, r)
458- if ((cD.payments[0].assetId != cK))
443+@Callable(cE)
444+func lockShareTokens (ax,cs) = valueOrElse(cC(), {
445+ let cL = aD(ax)
446+ let aC = toString(cE.originCaller)
447+ let cM = az(ax)
448+ let bH = valueOrElse(getInteger(this, (ax + p)), cM)
449+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
450+ let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
451+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
452+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
453+ let cR = ((cN + cP) + cE.payments[0].amount)
454+ let cS = cx(cs)
455+ let cT = cS._1
456+ let cU = cS._2
457+ let cV = getIntegerValue(this, r)
458+ if ((cE.payments[0].assetId != cL))
459459 then throw("Wrong sharetoken in payment")
460- else if ((0 >= cD.payments[0].amount))
460+ else if ((0 >= cE.payments[0].amount))
461461 then throw("Payment amount must be greater than 0")
462- else if ((0 > cr))
462+ else if ((0 > cs))
463463 then throw("lockType must be >= 0")
464464 else {
465- let cV = co(ax, aC, cM, cD.payments[0].amount, cr)
466- if ((cV == cV))
465+ let cW = cp(ax, aC, cN, cE.payments[0].amount, cs)
466+ if ((cW == cW))
467467 then {
468- let cW = if ((cr == 0))
468+ let cX = if ((cs == 0))
469469 then {
470- let cX = ((cP + cD.payments[0].amount) - cV)
471- $Tuple2([IntegerEntry((((ax + "_") + aC) + j), ((cM + cD.payments[0].amount) - cV)), IntegerEntry((ax + p), ((bG + cD.payments[0].amount) - cV)), ScriptTransfer(cD.originCaller, cV, cD.payments[0].assetId)], ((cL + cD.payments[0].amount) - cV))
470+ let cY = ((cQ + cE.payments[0].amount) - cW)
471+ $Tuple2([IntegerEntry((((ax + "_") + aC) + j), ((cN + cE.payments[0].amount) - cW)), IntegerEntry((ax + p), ((bH + cE.payments[0].amount) - cW)), ScriptTransfer(cE.originCaller, cW, cE.payments[0].assetId)], ((cM + cE.payments[0].amount) - cW))
472472 }
473- else if (if ((cN == 0))
474- then if (if ((2 > size(cD.payments)))
473+ else if (if ((cO == 0))
474+ then if (if ((2 > size(cE.payments)))
475475 then true
476- else (cD.payments[1].assetId != unit))
476+ else (cE.payments[1].assetId != unit))
477477 then true
478- else (cU > cD.payments[1].amount)
478+ else (cV > cE.payments[1].amount)
479479 else false)
480- then throw((("You need to pay additional waves comission " + toString(cU)) + "WAVES"))
481- else if ((cN > (height + cS)))
480+ then throw((("You need to pay additional waves comission " + toString(cV)) + "WAVES"))
481+ else if ((cO > (height + cT)))
482482 then throw("You cannot lock sharetokens for a period less than what you have already locked")
483483 else {
484- let cY = (cO + cD.payments[0].amount)
485- let cZ = (height + cS)
486- let cX = (fraction(cY, cT, Y) + cM)
487- $Tuple2([IntegerEntry((((ax + "_") + aC) + k), cY), IntegerEntry((((ax + "_") + aC) + m), cZ), IntegerEntry((((ax + "_") + aC) + l), cr), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + p), ((bG - cP) + cX))], (cL + cD.payments[0].amount))
484+ let cZ = (cP + cE.payments[0].amount)
485+ let da = (height + cT)
486+ let cY = (fraction(cZ, cU, Y) + cN)
487+ $Tuple2([IntegerEntry((((ax + "_") + aC) + k), cZ), IntegerEntry((((ax + "_") + aC) + m), da), IntegerEntry((((ax + "_") + aC) + l), cs), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + p), ((bH - cQ) + cY))], (cM + cE.payments[0].amount))
488488 }
489- let da = cW._1
490- let db = cW._2
491- if ((aE(cK) > db))
489+ let db = cX._1
490+ let dc = cX._2
491+ if ((aE(cL) > dc))
492492 then throw("Balance of share-token is lower than totalAmount")
493493 else {
494- let dc = bD(ax, aC)
495- let bc = dc._1
496- let bd = dc._2
497- let cJ = dc._3
498- let ce = dc._4
499- let dd = dc._5
500- let de = (aR(ax, aC) + ce)
501- let df = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
502- then invoke(am, "updateUserInterest", [ax, cQ], nil)
494+ let dd = bE(ax, aC)
495+ let bc = dd._1
496+ let bd = dd._2
497+ let cK = dd._3
498+ let cf = dd._4
499+ let de = dd._5
500+ let df = (aR(ax, aC) + cf)
501+ let dg = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
502+ then invoke(am, "updateUserInterest", [ax, cR], nil)
503503 else 0
504- if ((df == df))
505- then ([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((ax + o), db), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)] ++ da)
504+ if ((dg == dg))
505+ then ([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((ax + o), dc), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)] ++ db)
506506 else throw("Strict value is not equal to itself.")
507507 }
508508 }
512512
513513
514514
515-@Callable(cD)
516-func lockStakedShareTokens (ax,cr,dg) = valueOrElse(cB(), {
517- let cK = aD(ax)
518- let aC = toString(cD.originCaller)
519- let cL = az(ax)
520- let bG = valueOrElse(getInteger(this, (ax + p)), cL)
521- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
522- let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
523- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
524- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
525- let cQ = (cM + cO)
526- let dh = cw(cr)
527- let cS = dh._1
528- let cT = dh._2
529- let cU = getIntegerValue(this, r)
515+@Callable(cE)
516+func lockStakedShareTokens (ax,cs,dh) = valueOrElse(cC(), {
517+ let cL = aD(ax)
518+ let aC = toString(cE.originCaller)
519+ let cM = az(ax)
520+ let bH = valueOrElse(getInteger(this, (ax + p)), cM)
521+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
522+ let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
523+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
524+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
525+ let cR = (cN + cP)
526+ let di = cx(cs)
527+ let cT = di._1
528+ let cU = di._2
529+ let cV = getIntegerValue(this, r)
530530 if ((aw(ax) > height))
531531 then throw("You can't lock shareTokens till first harvest end.")
532- else if ((0 >= cr))
532+ else if ((0 >= cs))
533533 then throw("lockType must be > 0")
534- else if ((dg > cM))
535- then throw(("You can't lock more than " + toString(cM)))
536- else if ((aE(cK) > cL))
534+ else if ((dh > cN))
535+ then throw(("You can't lock more than " + toString(cN)))
536+ else if ((aE(cL) > cM))
537537 then throw("Balance of share-token is lower than totalAmount")
538- else if (if ((cN == 0))
539- then if (if ((1 > size(cD.payments)))
538+ else if (if ((cO == 0))
539+ then if (if ((1 > size(cE.payments)))
540540 then true
541- else (cD.payments[0].assetId != unit))
541+ else (cE.payments[0].assetId != unit))
542542 then true
543- else (cU > cD.payments[0].amount)
543+ else (cV > cE.payments[0].amount)
544544 else false)
545- then throw((("You need to pay additional waves comission " + toString(cU)) + "WAVES"))
546- else if (if ((cN == 0))
547- then (0 >= dg)
545+ then throw((("You need to pay additional waves comission " + toString(cV)) + "WAVES"))
546+ else if (if ((cO == 0))
547+ then (0 >= dh)
548548 else false)
549549 then throw("lockAmount must be greater than 0")
550- else if ((0 > dg))
550+ else if ((0 > dh))
551551 then throw("lockAmount must be positive")
552- else if ((cN > (height + cS)))
552+ else if ((cO > (height + cT)))
553553 then throw("You cannot lock sharetokens for a period less than what you have already locked")
554554 else {
555- let cY = (cO + dg)
556- let di = (cM - dg)
557- let cZ = (height + cS)
558- let cX = (fraction(cY, cT, Y) + cM)
559- let dj = bD(ax, aC)
560- let bc = dj._1
561- let bd = dj._2
562- let cJ = dj._3
563- let ce = dj._4
564- let dd = dj._5
565- let de = (aR(ax, aC) + ce)
566-[IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + k), cY), IntegerEntry((((ax + "_") + aC) + m), cZ), IntegerEntry((((ax + "_") + aC) + l), cr), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + p), ((bG - cP) + cX)), IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)]
555+ let cZ = (cP + dh)
556+ let dj = (cN - dh)
557+ let da = (height + cT)
558+ let cY = (fraction(cZ, cU, Y) + cN)
559+ let dk = bE(ax, aC)
560+ let bc = dk._1
561+ let bd = dk._2
562+ let cK = dk._3
563+ let cf = dk._4
564+ let de = dk._5
565+ let df = (aR(ax, aC) + cf)
566+[IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + k), cZ), IntegerEntry((((ax + "_") + aC) + m), da), IntegerEntry((((ax + "_") + aC) + l), cs), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + p), ((bH - cQ) + cY)), IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)]
567567 }
568568 })
569569
570570
571571
572-@Callable(cD)
573-func unlockUserLock (ax,aC) = valueOrElse(cB(), {
574- let cU = getIntegerValue(this, r)
575- let cN = valueOrErrorMessage(getInteger(this, (((ax + "_") + aC) + m)), (((("There is no pool " + ax) + " or user ") + aC) + "with lock"))
576- let bG = getIntegerValue(this, (ax + p))
577- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
578- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
579- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
580- if ((cN > height))
581- then throw(("You can't unlock sharetokens till " + toString(cN)))
572+@Callable(cE)
573+func unlockUserLock (ax,aC) = valueOrElse(cC(), {
574+ let cV = getIntegerValue(this, r)
575+ let cO = valueOrErrorMessage(getInteger(this, (((ax + "_") + aC) + m)), (((("There is no pool " + ax) + " or user ") + aC) + "with lock"))
576+ let bH = getIntegerValue(this, (ax + p))
577+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
578+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
579+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
580+ if ((cO > height))
581+ then throw(("You can't unlock sharetokens till " + toString(cO)))
582582 else {
583- let di = (cM + cO)
584- let dk = bD(ax, aC)
585- let bc = dk._1
586- let bd = dk._2
587- let cJ = dk._3
588- let ce = dk._4
589- let dd = dk._5
590- let de = (aR(ax, aC) + ce)
591-[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + n), di), IntegerEntry((ax + p), ((bG - cP) + di)), DeleteEntry((((ax + "_") + aC) + k)), DeleteEntry((((ax + "_") + aC) + m)), DeleteEntry((((ax + "_") + aC) + l)), Reissue(av, dd, true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, cU, unit)]
583+ let dj = (cN + cP)
584+ let dl = bE(ax, aC)
585+ let bc = dl._1
586+ let bd = dl._2
587+ let cK = dl._3
588+ let cf = dl._4
589+ let de = dl._5
590+ let df = (aR(ax, aC) + cf)
591+[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + n), dj), IntegerEntry((ax + p), ((bH - cQ) + dj)), DeleteEntry((((ax + "_") + aC) + k)), DeleteEntry((((ax + "_") + aC) + m)), DeleteEntry((((ax + "_") + aC) + l)), Reissue(av, de, true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, cV, unit)]
592592 }
593593 })
594594
595595
596596
597-@Callable(cD)
598-func withdrawShareTokens (ax,dl) = valueOrElse(cB(), {
599- let dm = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
600- let aC = toString(cD.originCaller)
601- let dn = bD(ax, aC)
602- let bc = dn._1
603- let bd = dn._2
604- let cJ = dn._3
605- let ce = dn._4
606- let dd = dn._5
607- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
608- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
609- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
610- let di = (cM - dl)
611- let de = (aR(ax, aC) + ce)
612- let do = az(ax)
613- let bG = valueOrElse(getInteger(this, (ax + p)), do)
614- let dp = (do - dl)
615- let dq = (bG - dl)
616- let cX = (cP - dl)
617- if ((dl > cM))
597+@Callable(cE)
598+func withdrawShareTokens (ax,dm) = valueOrElse(cC(), {
599+ let dn = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
600+ let aC = toString(cE.originCaller)
601+ let do = bE(ax, aC)
602+ let bc = do._1
603+ let bd = do._2
604+ let cK = do._3
605+ let cf = do._4
606+ let de = do._5
607+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
608+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
609+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
610+ let dj = (cN - dm)
611+ let df = (aR(ax, aC) + cf)
612+ let dp = az(ax)
613+ let bH = valueOrElse(getInteger(this, (ax + p)), dp)
614+ let dq = (dp - dm)
615+ let dr = (bH - dm)
616+ let cY = (cQ - dm)
617+ if ((dm > cN))
618618 then throw("Withdraw amount more then user locked amount")
619- else if ((aE(dm) > do))
619+ else if ((aE(dn) > dp))
620620 then throw("Balance of share-token is lower than totalAmount")
621621 else {
622- let df = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
623- then invoke(am, "updateUserInterest", [ax, (cM + cO)], nil)
622+ let dg = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
623+ then invoke(am, "updateUserInterest", [ax, (cN + cP)], nil)
624624 else 0
625- if ((df == df))
626- then [IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + o), dp), IntegerEntry((ax + p), dq), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, dl, dm)]
625+ if ((dg == dg))
626+ then [IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + o), dq), IntegerEntry((ax + p), dr), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, dm, dn)]
627627 else throw("Strict value is not equal to itself.")
628628 }
629629 })
630630
631631
632632
633-@Callable(cD)
634-func claim (ax) = valueOrElse(cB(), {
635- let dm = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
636- let aC = toString(cD.caller)
633+@Callable(cE)
634+func claim (ax) = valueOrElse(cC(), {
635+ let dn = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
636+ let aC = toString(cE.caller)
637637 let bo = az(ax)
638- let dr = bD(ax, aC)
639- let bc = dr._1
640- let bd = dr._2
641- let cJ = dr._3
642- let ce = dr._4
643- let dd = dr._5
644- let cg = (aR(ax, aC) + ce)
645- if ((cg == 0))
638+ let ds = bE(ax, aC)
639+ let bc = ds._1
640+ let bd = ds._2
641+ let cK = ds._3
642+ let cf = ds._4
643+ let de = ds._5
644+ let ch = (aR(ax, aC) + cf)
645+ if ((ch == 0))
646646 then throw("You have 0 available SWOP")
647- else if ((aE(dm) > bo))
647+ else if ((aE(dn) > bo))
648648 then throw("Balance of share-token is lower than totalAmount")
649- else $Tuple2([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), 0), Reissue(av, (dd + cg), true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, cg, av)], cg)
649+ else $Tuple2([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), 0), Reissue(av, (de + ch), true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, ch, av)], ch)
650650 })
651651
652652
653653
654-@Callable(cD)
655-func claimAndStake (ax) = valueOrElse(cB(), {
656- let ce = {
657- let ds = invoke(this, "claim", [ax], nil)
658- if ($isInstanceOf(ds, "Int"))
659- then ds
660- else throw(($getType(ds) + " couldn't be cast to Int"))
654+@Callable(cE)
655+func claimAndStake (ax) = valueOrElse(cC(), {
656+ let cf = {
657+ let dt = invoke(this, "claim", [ax], nil)
658+ if ($isInstanceOf(dt, "Int"))
659+ then dt
660+ else throw(($getType(dt) + " couldn't be cast to Int"))
661661 }
662- if ((ce == ce))
662+ if ((cf == cf))
663663 then {
664- let dt = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, ce)])
665- if ((dt == dt))
664+ let du = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, cf)])
665+ if ((du == du))
666666 then nil
667667 else throw("Strict value is not equal to itself.")
668668 }
671671
672672
673673
674-@Callable(cD)
675-func claimAll (bU) = valueOrElse(cB(), {
676- func du (dv,ax) = {
677- let ce = {
678- let ds = invoke(this, "claim", [ax], nil)
679- if ($isInstanceOf(ds, "Int"))
680- then ds
681- else throw(($getType(ds) + " couldn't be cast to Int"))
674+@Callable(cE)
675+func claimAll (bV) = valueOrElse(cC(), {
676+ func dv (dw,ax) = {
677+ let cf = {
678+ let dt = invoke(this, "claim", [ax], nil)
679+ if ($isInstanceOf(dt, "Int"))
680+ then dt
681+ else throw(($getType(dt) + " couldn't be cast to Int"))
682682 }
683- if ((ce == ce))
684- then (dv + ce)
683+ if ((cf == cf))
684+ then (dw + cf)
685685 else throw("Strict value is not equal to itself.")
686686 }
687687
688- let dv = {
689- let ch = bU
690- let ci = size(ch)
691- let cj = 0
692- func ck (cl,cm) = if ((cm >= ci))
693- then cl
694- else du(cl, ch[cm])
688+ let dw = {
689+ let ci = bV
690+ let cj = size(ci)
691+ let ck = 0
692+ func cl (cm,cn) = if ((cn >= cj))
693+ then cm
694+ else dv(cm, ci[cn])
695695
696- func cn (cl,cm) = if ((cm >= ci))
697- then cl
696+ func co (cm,cn) = if ((cn >= cj))
697+ then cm
698698 else throw("List size exceeds 60")
699699
700- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
700+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
701701 }
702- if ((dv == 0))
702+ if ((dw == 0))
703703 then throw("You have 0 available SWOP")
704- else [ScriptTransfer(cD.caller, dv, av)]
704+ else [ScriptTransfer(cE.caller, dw, av)]
705705 })
706706
707707
708708
709-@Callable(cD)
710-func claimAllAndStake (bU) = valueOrElse(cB(), {
711- func du (dv,ax) = {
712- let ce = {
713- let ds = invoke(this, "claim", [ax], nil)
714- if ($isInstanceOf(ds, "Int"))
715- then ds
716- else throw(($getType(ds) + " couldn't be cast to Int"))
709+@Callable(cE)
710+func claimAllAndStake (bV) = valueOrElse(cC(), {
711+ func dv (dw,ax) = {
712+ let cf = {
713+ let dt = invoke(this, "claim", [ax], nil)
714+ if ($isInstanceOf(dt, "Int"))
715+ then dt
716+ else throw(($getType(dt) + " couldn't be cast to Int"))
717717 }
718- if ((ce == ce))
719- then (dv + ce)
718+ if ((cf == cf))
719+ then (dw + cf)
720720 else throw("Strict value is not equal to itself.")
721721 }
722722
723- let dv = {
724- let ch = bU
725- let ci = size(ch)
726- let cj = 0
727- func ck (cl,cm) = if ((cm >= ci))
728- then cl
729- else du(cl, ch[cm])
723+ let dw = {
724+ let ci = bV
725+ let cj = size(ci)
726+ let ck = 0
727+ func cl (cm,cn) = if ((cn >= cj))
728+ then cm
729+ else dv(cm, ci[cn])
730730
731- func cn (cl,cm) = if ((cm >= ci))
732- then cl
731+ func co (cm,cn) = if ((cn >= cj))
732+ then cm
733733 else throw("List size exceeds 60")
734734
735- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
735+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
736736 }
737- if ((dv == 0))
737+ if ((dw == 0))
738738 then throw("You have 0 available SWOP")
739739 else {
740- let dt = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, dv)])
741- if ((dt == dt))
740+ let du = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, dw)])
741+ if ((du == du))
742742 then nil
743743 else throw("Strict value is not equal to itself.")
744744 }
746746
747747
748748
749-@Callable(cD)
750-func updateUserBoostInterest (ax,aC) = valueOrElse(cB(), if ((cD.caller != aj))
749+@Callable(cE)
750+func updateUserBoostInterest (ax,aC) = valueOrElse(cC(), if ((cE.caller != aj))
751751 then throw("Only voiting can call this function")
752752 else {
753- let dw = bD(ax, aC)
754- let bc = dw._1
755- let bd = dw._2
756- let cJ = dw._3
757- let ce = dw._4
758- let dd = dw._5
759- let de = (aR(ax, aC) + ce)
760-[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)]
753+ let dx = bE(ax, aC)
754+ let bc = dx._1
755+ let bd = dx._2
756+ let cK = dx._3
757+ let cf = dx._4
758+ let de = dx._5
759+ let df = (aR(ax, aC) + cf)
760+[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)]
761761 })
762762
763763
764764
765-@Callable(cD)
766-func shutdown () = valueOrElse(cC(cD), if (!(as))
765+@Callable(cE)
766+func shutdown () = valueOrElse(cD(cE), if (!(as))
767767 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
768- else cz("Paused by admin"))
768+ else cA("Paused by admin"))
769769
770770
771771
772-@Callable(cD)
773-func activate () = valueOrElse(cC(cD), if (as)
772+@Callable(cE)
773+func activate () = valueOrElse(cD(cE), if (as)
774774 then throw("DApp is already active")
775775 else [BooleanEntry(a, true), DeleteEntry(c)])
776776
777777
778-@Verifier(dx)
779-func dy () = {
780- let ac = dx
781- let dz = if (sigVerify(dx.bodyBytes, dx.proofs[0], af))
778+@Verifier(dy)
779+func dz () = {
780+ let ac = dy
781+ let dA = if (sigVerify(dy.bodyBytes, dy.proofs[0], af))
782782 then 1
783783 else 0
784- let dA = if (sigVerify(dx.bodyBytes, dx.proofs[1], ag))
784+ let dB = if (sigVerify(dy.bodyBytes, dy.proofs[1], ag))
785785 then 1
786786 else 0
787- let dB = if (sigVerify(dx.bodyBytes, dx.proofs[2], ah))
787+ let dC = if (sigVerify(dy.bodyBytes, dy.proofs[2], ah))
788788 then 1
789789 else 0
790- (((dz + dA) + dB) >= 2)
790+ (((dA + dB) + dC) >= 2)
791791 }
792792
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "active"
55
66 let b = "active_all_contracts"
77
88 let c = "shutdown_cause"
99
1010 let d = "_current_pool_fraction_reward"
1111
1212 let e = "_previous_pool_fraction_reward"
1313
1414 let f = "_pool_reward_update_height"
1515
1616 let g = "total_reward_per_block_current"
1717
1818 let h = "total_reward_per_block_previous"
1919
2020 let i = "reward_update_height"
2121
2222 let j = "_share_tokens_locked"
2323
2424 let k = "_share_tokens_blocked"
2525
2626 let l = "_share_tokens_blocked_type"
2727
2828 let m = "_share_tokens_blocked_height"
2929
3030 let n = "_share_tokens_virtual"
3131
3232 let o = "_total_share_tokens_locked"
3333
3434 let p = "_total_share_tokens_virtual"
3535
3636 let q = "_lock_params"
3737
3838 let r = "lock_waves_fee"
3939
4040 let s = "_boost_coef"
4141
4242 let t = "_last_interest"
4343
4444 let u = "_last_interest"
4545
4646 let v = "_last_interest_b"
4747
4848 let w = "_last_interest_u_b"
4949
5050 let x = "_last_interest_lpb"
5151
5252 let y = "_last_interest_u_lpb"
5353
5454 let z = "_last_interest_height"
5555
5656 let A = "SWOP_id"
5757
5858 let B = "_available_SWOP"
5959
6060 let C = "swop_year_emission"
6161
6262 let D = "_harvest_pool_vote_gSWOP"
6363
6464 let E = "_pool_vote_gSWOP"
6565
6666 let F = "_user_vote_gSWOP"
6767
6868 let G = "_harvest_user_pool_vote_gSWOP"
6969
7070 let H = "base_period"
7171
7272 let I = "period_length"
7373
7474 let J = "start_height"
7575
7676 let K = "first_harvest_height"
7777
7878 let L = "share_limit_on_first_harvest"
7979
8080 let M = "admin_pub_1"
8181
8282 let N = "admin_pub_2"
8383
8484 let O = "admin_pub_3"
8585
8686 let P = "admin_invoke_pub"
8787
8888 let Q = "money_box_address"
8989
9090 let R = "voting_address"
9191
9292 let S = "governance_address"
9393
9494 let T = "lp_farming"
9595
9696 let U = "farming_treasure"
9797
9898 let V = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
9999
100100 let W = 10000000000
101101
102102 let X = 100000000
103103
104104 let Y = 1000
105105
106106 let Z = 500
107107
108108 func aa (ab) = {
109109 let ac = getString(V, ab)
110110 if ($isInstanceOf(ac, "String"))
111111 then {
112112 let ad = ac
113113 fromBase58String(ad)
114114 }
115115 else {
116116 let ae = ac
117117 throw((ab + "is empty"))
118118 }
119119 }
120120
121121
122122 let af = aa(M)
123123
124124 let ag = aa(N)
125125
126126 let ah = aa(O)
127127
128128 let ai = Address(aa(Q))
129129
130130 let aj = Address(aa(R))
131131
132132 let ak = Address(aa(S))
133133
134134 let al = aa(P)
135135
136136 let am = Address(aa(T))
137137
138138 let an = Address(aa(U))
139139
140140 let ao = valueOrErrorMessage(getInteger(aj, H), "Empty kBasePeriod")
141141
142142 let ap = valueOrErrorMessage(getInteger(aj, J), "Empty kStartHeight")
143143
144144 let aq = valueOrErrorMessage(getInteger(aj, I), "Empty kPeriodLength")
145145
146146 let ar = (ao + ((height - ap) / aq))
147147
148148 let as = getBooleanValue(this, a)
149149
150150 let at = valueOrElse(getBoolean(V, b), true)
151151
152152 let au = getIntegerValue(this, C)
153153
154154 let av = fromBase58String(getStringValue(this, A))
155155
156156 func aw (ax) = valueOrElse(getInteger(Address(fromBase58String(ax)), K), 0)
157157
158158
159159 func ay (ax) = valueOrErrorMessage(getInteger(ax, L), ("No data on the key: " + L))
160160
161161
162162 func az (ax) = valueOrErrorMessage(getInteger(this, (ax + o)), (("No data on the key: " + ax) + o))
163163
164164
165165 func aA (ax) = valueOrElse(getInteger(aj, (ax + E)), 0)
166166
167167
168168 func aB (ax,aC) = valueOrElse(getInteger(aj, (((aC + "_") + ax) + E)), 0)
169169
170170
171171 func aD (ax) = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
172172
173173
174174 func aE (aF) = {
175175 let ac = aF
176176 if ($isInstanceOf(ac, "ByteVector"))
177177 then {
178178 let aG = ac
179179 assetBalance(this, aG)
180180 }
181181 else if ($isInstanceOf(ac, "Unit"))
182182 then {
183183 let aH = ac
184184 wavesBalance(this).available
185185 }
186186 else throw("Match error")
187187 }
188188
189189
190190 func aI (aF) = {
191191 let ac = aF
192192 if ($isInstanceOf(ac, "ByteVector"))
193193 then {
194194 let aG = ac
195195 let aJ = toBase58String(aG)
196196 let aK = valueOrErrorMessage(assetInfo(aG), (("Asset " + aJ) + " doesn't exist"))
197197 $Tuple3(aJ, aK.name, aK.decimals)
198198 }
199199 else if ($isInstanceOf(ac, "Unit"))
200200 then {
201201 let aH = ac
202202 $Tuple3("WAVES", "WAVES", 8)
203203 }
204204 else throw("Match error")
205205 }
206206
207207
208208 func aL (aM,aN) = {
209209 let aO = value(assetInfo(aM)).decimals
210210 let aP = value(assetInfo(aN)).decimals
211211 let aQ = ((aP - aO) + 8)
212212 pow(10, 0, aQ, 0, 0, DOWN)
213213 }
214214
215215
216216 func aR (ax,aC) = valueOrElse(getInteger(this, (((ax + "_") + aC) + B)), 0)
217217
218218
219219 func aS (ax) = {
220220 let aT = valueOrErrorMessage(getInteger(ak, g), ((("No data on the key: " + g) + " at address ") + toString(ak)))
221221 let aU = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
222222 let aV = valueOrErrorMessage(getInteger(ak, (ax + d)), (((("No data on the key: " + ax) + d) + " at address ") + toString(ak)))
223223 let aW = valueOrErrorMessage(getInteger(ak, i), ((("No data on the key: " + i) + " at address ") + toString(ak)))
224224 let aX = valueOrElse(getInteger(ak, (ax + f)), aW)
225225 let aY = valueOrErrorMessage(getInteger(ak, (ax + e)), (((("No data on the key: " + ax) + e) + " at address ") + toString(ak)))
226226 let aZ = fraction(aT, aV, W)
227227 let ba = fraction(aT, aY, W)
228228 if (if ((aZ > aT))
229229 then true
230230 else (ba > aU))
231231 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
232232 else $Tuple4(aZ, aW, ba, aX)
233233 }
234234
235235
236236 func bb (ax) = {
237237 let bc = valueOrErrorMessage(getInteger(this, (ax + t)), (("No data on the key: " + ax) + t))
238238 let bd = valueOrErrorMessage(getInteger(this, (ax + t)), (("No data on the key: " + ax) + v))
239239 let be = valueOrErrorMessage(getInteger(this, (ax + t)), (("No data on the key: " + ax) + x))
240240 let bf = valueOrElse(getInteger(this, (ax + z)), height)
241241 $Tuple4(bf, bc, bd, be)
242242 }
243243
244244
245245 func bg (ax,bh) = {
246246 let bi = valueOrElse(getInteger(this, (ax + s)), Z)
247- ((bh / (bi + 1000)) / Y)
247+ fraction(bh, Y, (bi + 1000))
248248 }
249249
250250
251251 func bj (ax,bh) = {
252252 let bi = valueOrElse(getInteger(this, (ax + s)), Z)
253253 (fraction(bh, bi, (bi + 1000)) / Y)
254254 }
255255
256256
257257 func bk (ax,bf,aW,aX,bc,bd,bl,bm,bn,bo,bp,bq) = if ((bo == 0))
258258 then $Tuple3(0, 0, 0)
259259 else {
260260 let br = if (if (if ((aW > height))
261261 then (aW == aX)
262262 else false)
263263 then true
264264 else if ((height > aW))
265265 then (aW != aX)
266266 else false)
267267 then {
268268 let bs = (bp * (height - bf))
269269 $Tuple4(bs, bc, bd, bm)
270270 }
271271 else if (if (if ((height > aW))
272272 then (aW == aX)
273273 else false)
274274 then (bf > aW)
275275 else false)
276276 then {
277277 let bs = (bn * (height - bf))
278278 $Tuple4(bs, bc, bd, bm)
279279 }
280280 else {
281281 let bt = (bp * (aW - bf))
282282 let bu = (bc + fraction(bg(ax, bt), bq, bo))
283283 let bv = (bd + (if ((bl > 0))
284284 then fraction(bj(ax, bt), bq, bl)
285285 else 0))
286286 let bw = (bc + (if (if ((bl > 0))
287287 then (bo > 0)
288288 else false)
289289 then fraction(bj(ax, bt), bq, bl)
290290 else 0))
291291 let bs = (bn * (height - aW))
292292 $Tuple4(bs, bu, bv, bw)
293293 }
294- let bs = br._1
295- let bx = br._2
296- let by = br._3
297- let bz = br._4
298- let bA = (bx + fraction(bg(ax, bs), bq, bo))
299- let bB = (by + (if ((bl > 0))
300- then fraction(bj(ax, bs), X, bl)
294+ let bx = br._1
295+ let by = br._2
296+ let bz = br._3
297+ let bA = br._4
298+ let bB = (by + fraction(bg(ax, bx), bq, bo))
299+ let bC = (bz + (if ((bl > 0))
300+ then fraction(bj(ax, bx), X, bl)
301301 else 0))
302- let bC = (bz + (if (if ((bl > 0))
302+ let bD = (bA + (if (if ((bl > 0))
303303 then (bo > 0)
304304 else false)
305- then fraction(fraction(bj(ax, bs), X, bo), X, bl)
305+ then fraction(fraction(bj(ax, bx), X, bo), X, bl)
306306 else 0))
307- $Tuple3(bA, bB, bC)
307+ $Tuple3(bB, bC, bD)
308308 }
309309
310310
311-func bD (ax,aC) = {
311+func bE (ax,aC) = {
312312 let bq = aL(av, aD(ax))
313313 let bl = aA(ax)
314- let bE = aB(ax, aC)
315- let bF = az(ax)
316- let bG = valueOrElse(getInteger(this, (ax + p)), bF)
317- let bH = bb(ax)
318- let bf = bH._1
319- let bc = bH._2
320- let bd = bH._3
321- let be = bH._4
322- let bI = aS(ax)
323- let bn = bI._1
324- let aW = bI._2
325- let bp = bI._3
326- let aX = bI._4
327- let bJ = valueOrElse(getInteger(this, (((ax + "_") + aC) + u)), bc)
328- let bK = valueOrElse(getInteger(this, (((ax + "_") + aC) + w)), bd)
329- let bL = valueOrElse(getInteger(this, (((ax + "_") + aC) + y)), be)
330- let bM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
331- let bN = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), bM)
332- let bO = bk(ax, bf, aW, aX, bc, bd, bl, be, bn, bG, bp, bq)
333- let bA = bO._1
334- let bB = bO._2
335- let bC = bO._3
336- let bP = fraction(bN, (bA - bJ), bq)
337- let bQ = fraction(bE, (bB - bK), X)
338- let bR = (fraction((bN * bE), (bC - bL), X) / X)
339- let bS = (bQ - bR)
340- $Tuple5(bA, bB, bC, (bP + bR), bS)
314+ let bF = aB(ax, aC)
315+ let bG = az(ax)
316+ let bH = valueOrElse(getInteger(this, (ax + p)), bG)
317+ let bI = bb(ax)
318+ let bf = bI._1
319+ let bc = bI._2
320+ let bd = bI._3
321+ let be = bI._4
322+ let bJ = aS(ax)
323+ let bn = bJ._1
324+ let aW = bJ._2
325+ let bp = bJ._3
326+ let aX = bJ._4
327+ let bK = valueOrElse(getInteger(this, (((ax + "_") + aC) + u)), bc)
328+ let bL = valueOrElse(getInteger(this, (((ax + "_") + aC) + w)), bd)
329+ let bM = valueOrElse(getInteger(this, (((ax + "_") + aC) + y)), be)
330+ let bN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
331+ let bO = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), bN)
332+ let bP = bk(ax, bf, aW, aX, bc, bd, bl, be, bn, bH, bp, bq)
333+ let bB = bP._1
334+ let bC = bP._2
335+ let bD = bP._3
336+ let bQ = fraction(bO, (bB - bK), bq)
337+ let bR = fraction(bF, (bC - bL), X)
338+ let bS = (fraction((bO * bF), (bD - bM), X) / X)
339+ let bT = (bR - bS)
340+ $Tuple5(bB, bC, bD, (bQ + bS), bT)
341341 }
342342
343343
344-func bT (bU,aC) = {
345- func bV (bW,ax) = {
346- let bX = bW
347- let bY = bX._1
348- let bZ = bX._2
349- let ca = bD(ax, aC)
350- let cb = ca._1
351- let cc = ca._2
352- let cd = ca._3
353- let ce = ca._4
354- let cf = ca._5
355- let cg = (aR(ax, aC) + ce)
356- $Tuple2((bY :+ aC), (bZ :+ cg))
344+func bU (bV,aC) = {
345+ func bW (bX,ax) = {
346+ let bY = bX
347+ let bZ = bY._1
348+ let ca = bY._2
349+ let cb = bE(ax, aC)
350+ let cc = cb._1
351+ let cd = cb._2
352+ let ce = cb._3
353+ let cf = cb._4
354+ let cg = cb._5
355+ let ch = (aR(ax, aC) + cf)
356+ $Tuple2((bZ :+ aC), (ca :+ ch))
357357 }
358358
359- let ch = bU
360- let ci = size(ch)
361- let cj = $Tuple2(nil, nil)
362- func ck (cl,cm) = if ((cm >= ci))
363- then cl
364- else bV(cl, ch[cm])
359+ let ci = bV
360+ let cj = size(ci)
361+ let ck = $Tuple2(nil, nil)
362+ func cl (cm,cn) = if ((cn >= cj))
363+ then cm
364+ else bW(cm, ci[cn])
365365
366- func cn (cl,cm) = if ((cm >= ci))
367- then cl
366+ func co (cm,cn) = if ((cn >= cj))
367+ then cm
368368 else throw("List size exceeds 60")
369369
370- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
370+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
371371 }
372372
373373
374-func co (ax,aC,cp,cq,cr) = if ((aw(ax) > height))
374+func cp (ax,aC,cq,cr,cs) = if ((aw(ax) > height))
375375 then {
376- let cs = valueOrElse(getInteger(aj, (ax + D)), 0)
377- let ct = valueOrElse(getInteger(aj, (((aC + "_") + ax) + D)), 0)
378- let cu = ay(addressFromStringValue(ax))
379- let cv = (fraction(cu, ct, cs) - cp)
380- if ((cr > 0))
376+ let ct = valueOrElse(getInteger(aj, (ax + D)), 0)
377+ let cu = valueOrElse(getInteger(aj, (((aC + "_") + ax) + D)), 0)
378+ let cv = ay(addressFromStringValue(ax))
379+ let cw = (fraction(cv, cu, ct) - cq)
380+ if ((cs > 0))
381381 then throw("You can't lock shareTokens till first harvest end.")
382- else if ((ct == 0))
382+ else if ((cu == 0))
383383 then 0
384- else if ((cq >= cv))
385- then (cq - cv)
384+ else if ((cr >= cw))
385+ then (cr - cw)
386386 else 0
387387 }
388388 else 0
389389
390390
391-func cw (cx) = {
392- let cy = split(valueOrErrorMessage(getString(this, (toString(cx) + q)), ("There are no key for lock type" + toString(cx))), "_")
393- $Tuple2(parseIntValue(cy[0]), parseIntValue(cy[1]))
391+func cx (cy) = {
392+ let cz = split(valueOrErrorMessage(getString(this, (toString(cy) + q)), ("There are no key for lock type" + toString(cy))), "_")
393+ $Tuple2(parseIntValue(cz[0]), parseIntValue(cz[1]))
394394 }
395395
396396
397-func cz (cA) = [BooleanEntry(a, false), StringEntry(c, cA)]
397+func cA (cB) = [BooleanEntry(a, false), StringEntry(c, cB)]
398398
399399
400-func cB () = if (if (as)
400+func cC () = if (if (as)
401401 then at
402402 else false)
403403 then unit
404404 else throw("DApp is inactive at this moment")
405405
406406
407-func cC (cD) = if (containsElement([af, ag, ah], cD.callerPublicKey))
407+func cD (cE) = if (containsElement([af, ag, ah], cE.callerPublicKey))
408408 then unit
409409 else throw("Only admin can call this function")
410410
411411
412-@Callable(cD)
413-func init (cE) = if (isDefined(getString(this, A)))
412+@Callable(cE)
413+func init (cF) = if (isDefined(getString(this, A)))
414414 then throw("SWOP already initialized")
415415 else {
416- let cF = 100000000000000
417- let cG = Issue("SWOP", "SWOP protocol token", cF, 8, true)
418- let cH = calculateAssetId(cG)
419-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", cF, 8, true), StringEntry(A, toBase58String(cH))]
416+ let cG = 100000000000000
417+ let cH = Issue("SWOP", "SWOP protocol token", cG, 8, true)
418+ let cI = calculateAssetId(cH)
419+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", cG, 8, true), StringEntry(A, toBase58String(cI))]
420420 }
421421
422422
423423
424-@Callable(cD)
425-func initPoolShareFarming (ax) = valueOrElse(cC(cD), [IntegerEntry((ax + o), 0), IntegerEntry((ax + t), 0), IntegerEntry((ax + v), 0), IntegerEntry((ax + x), 0), IntegerEntry((ax + z), height)])
424+@Callable(cE)
425+func initPoolShareFarming (ax) = valueOrElse(cD(cE), [IntegerEntry((ax + o), 0), IntegerEntry((ax + t), 0), IntegerEntry((ax + v), 0), IntegerEntry((ax + x), 0), IntegerEntry((ax + z), height)])
426426
427427
428428
429-@Callable(cD)
430-func updatePoolInterest (ax) = valueOrElse(cB(), if ((cD.caller != ak))
429+@Callable(cE)
430+func updatePoolInterest (ax) = valueOrElse(cC(), if ((cE.caller != ak))
431431 then throw("Only Governance can call this function")
432432 else {
433433 let aC = toString(addressFromPublicKey(al))
434- let cI = bD(ax, aC)
435- let bc = cI._1
436- let bd = cI._2
437- let cJ = cI._3
438-[IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height)]
434+ let cJ = bE(ax, aC)
435+ let bc = cJ._1
436+ let bd = cJ._2
437+ let cK = cJ._3
438+[IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height)]
439439 })
440440
441441
442442
443-@Callable(cD)
444-func lockShareTokens (ax,cr) = valueOrElse(cB(), {
445- let cK = aD(ax)
446- let aC = toString(cD.originCaller)
447- let cL = az(ax)
448- let bG = valueOrElse(getInteger(this, (ax + p)), cL)
449- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
450- let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
451- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
452- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
453- let cQ = ((cM + cO) + cD.payments[0].amount)
454- let cR = cw(cr)
455- let cS = cR._1
456- let cT = cR._2
457- let cU = getIntegerValue(this, r)
458- if ((cD.payments[0].assetId != cK))
443+@Callable(cE)
444+func lockShareTokens (ax,cs) = valueOrElse(cC(), {
445+ let cL = aD(ax)
446+ let aC = toString(cE.originCaller)
447+ let cM = az(ax)
448+ let bH = valueOrElse(getInteger(this, (ax + p)), cM)
449+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
450+ let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
451+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
452+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
453+ let cR = ((cN + cP) + cE.payments[0].amount)
454+ let cS = cx(cs)
455+ let cT = cS._1
456+ let cU = cS._2
457+ let cV = getIntegerValue(this, r)
458+ if ((cE.payments[0].assetId != cL))
459459 then throw("Wrong sharetoken in payment")
460- else if ((0 >= cD.payments[0].amount))
460+ else if ((0 >= cE.payments[0].amount))
461461 then throw("Payment amount must be greater than 0")
462- else if ((0 > cr))
462+ else if ((0 > cs))
463463 then throw("lockType must be >= 0")
464464 else {
465- let cV = co(ax, aC, cM, cD.payments[0].amount, cr)
466- if ((cV == cV))
465+ let cW = cp(ax, aC, cN, cE.payments[0].amount, cs)
466+ if ((cW == cW))
467467 then {
468- let cW = if ((cr == 0))
468+ let cX = if ((cs == 0))
469469 then {
470- let cX = ((cP + cD.payments[0].amount) - cV)
471- $Tuple2([IntegerEntry((((ax + "_") + aC) + j), ((cM + cD.payments[0].amount) - cV)), IntegerEntry((ax + p), ((bG + cD.payments[0].amount) - cV)), ScriptTransfer(cD.originCaller, cV, cD.payments[0].assetId)], ((cL + cD.payments[0].amount) - cV))
470+ let cY = ((cQ + cE.payments[0].amount) - cW)
471+ $Tuple2([IntegerEntry((((ax + "_") + aC) + j), ((cN + cE.payments[0].amount) - cW)), IntegerEntry((ax + p), ((bH + cE.payments[0].amount) - cW)), ScriptTransfer(cE.originCaller, cW, cE.payments[0].assetId)], ((cM + cE.payments[0].amount) - cW))
472472 }
473- else if (if ((cN == 0))
474- then if (if ((2 > size(cD.payments)))
473+ else if (if ((cO == 0))
474+ then if (if ((2 > size(cE.payments)))
475475 then true
476- else (cD.payments[1].assetId != unit))
476+ else (cE.payments[1].assetId != unit))
477477 then true
478- else (cU > cD.payments[1].amount)
478+ else (cV > cE.payments[1].amount)
479479 else false)
480- then throw((("You need to pay additional waves comission " + toString(cU)) + "WAVES"))
481- else if ((cN > (height + cS)))
480+ then throw((("You need to pay additional waves comission " + toString(cV)) + "WAVES"))
481+ else if ((cO > (height + cT)))
482482 then throw("You cannot lock sharetokens for a period less than what you have already locked")
483483 else {
484- let cY = (cO + cD.payments[0].amount)
485- let cZ = (height + cS)
486- let cX = (fraction(cY, cT, Y) + cM)
487- $Tuple2([IntegerEntry((((ax + "_") + aC) + k), cY), IntegerEntry((((ax + "_") + aC) + m), cZ), IntegerEntry((((ax + "_") + aC) + l), cr), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + p), ((bG - cP) + cX))], (cL + cD.payments[0].amount))
484+ let cZ = (cP + cE.payments[0].amount)
485+ let da = (height + cT)
486+ let cY = (fraction(cZ, cU, Y) + cN)
487+ $Tuple2([IntegerEntry((((ax + "_") + aC) + k), cZ), IntegerEntry((((ax + "_") + aC) + m), da), IntegerEntry((((ax + "_") + aC) + l), cs), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + p), ((bH - cQ) + cY))], (cM + cE.payments[0].amount))
488488 }
489- let da = cW._1
490- let db = cW._2
491- if ((aE(cK) > db))
489+ let db = cX._1
490+ let dc = cX._2
491+ if ((aE(cL) > dc))
492492 then throw("Balance of share-token is lower than totalAmount")
493493 else {
494- let dc = bD(ax, aC)
495- let bc = dc._1
496- let bd = dc._2
497- let cJ = dc._3
498- let ce = dc._4
499- let dd = dc._5
500- let de = (aR(ax, aC) + ce)
501- let df = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
502- then invoke(am, "updateUserInterest", [ax, cQ], nil)
494+ let dd = bE(ax, aC)
495+ let bc = dd._1
496+ let bd = dd._2
497+ let cK = dd._3
498+ let cf = dd._4
499+ let de = dd._5
500+ let df = (aR(ax, aC) + cf)
501+ let dg = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
502+ then invoke(am, "updateUserInterest", [ax, cR], nil)
503503 else 0
504- if ((df == df))
505- then ([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((ax + o), db), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)] ++ da)
504+ if ((dg == dg))
505+ then ([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((ax + o), dc), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)] ++ db)
506506 else throw("Strict value is not equal to itself.")
507507 }
508508 }
509509 else throw("Strict value is not equal to itself.")
510510 }
511511 })
512512
513513
514514
515-@Callable(cD)
516-func lockStakedShareTokens (ax,cr,dg) = valueOrElse(cB(), {
517- let cK = aD(ax)
518- let aC = toString(cD.originCaller)
519- let cL = az(ax)
520- let bG = valueOrElse(getInteger(this, (ax + p)), cL)
521- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
522- let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
523- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
524- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
525- let cQ = (cM + cO)
526- let dh = cw(cr)
527- let cS = dh._1
528- let cT = dh._2
529- let cU = getIntegerValue(this, r)
515+@Callable(cE)
516+func lockStakedShareTokens (ax,cs,dh) = valueOrElse(cC(), {
517+ let cL = aD(ax)
518+ let aC = toString(cE.originCaller)
519+ let cM = az(ax)
520+ let bH = valueOrElse(getInteger(this, (ax + p)), cM)
521+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
522+ let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + m)), 0)
523+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
524+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
525+ let cR = (cN + cP)
526+ let di = cx(cs)
527+ let cT = di._1
528+ let cU = di._2
529+ let cV = getIntegerValue(this, r)
530530 if ((aw(ax) > height))
531531 then throw("You can't lock shareTokens till first harvest end.")
532- else if ((0 >= cr))
532+ else if ((0 >= cs))
533533 then throw("lockType must be > 0")
534- else if ((dg > cM))
535- then throw(("You can't lock more than " + toString(cM)))
536- else if ((aE(cK) > cL))
534+ else if ((dh > cN))
535+ then throw(("You can't lock more than " + toString(cN)))
536+ else if ((aE(cL) > cM))
537537 then throw("Balance of share-token is lower than totalAmount")
538- else if (if ((cN == 0))
539- then if (if ((1 > size(cD.payments)))
538+ else if (if ((cO == 0))
539+ then if (if ((1 > size(cE.payments)))
540540 then true
541- else (cD.payments[0].assetId != unit))
541+ else (cE.payments[0].assetId != unit))
542542 then true
543- else (cU > cD.payments[0].amount)
543+ else (cV > cE.payments[0].amount)
544544 else false)
545- then throw((("You need to pay additional waves comission " + toString(cU)) + "WAVES"))
546- else if (if ((cN == 0))
547- then (0 >= dg)
545+ then throw((("You need to pay additional waves comission " + toString(cV)) + "WAVES"))
546+ else if (if ((cO == 0))
547+ then (0 >= dh)
548548 else false)
549549 then throw("lockAmount must be greater than 0")
550- else if ((0 > dg))
550+ else if ((0 > dh))
551551 then throw("lockAmount must be positive")
552- else if ((cN > (height + cS)))
552+ else if ((cO > (height + cT)))
553553 then throw("You cannot lock sharetokens for a period less than what you have already locked")
554554 else {
555- let cY = (cO + dg)
556- let di = (cM - dg)
557- let cZ = (height + cS)
558- let cX = (fraction(cY, cT, Y) + cM)
559- let dj = bD(ax, aC)
560- let bc = dj._1
561- let bd = dj._2
562- let cJ = dj._3
563- let ce = dj._4
564- let dd = dj._5
565- let de = (aR(ax, aC) + ce)
566-[IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + k), cY), IntegerEntry((((ax + "_") + aC) + m), cZ), IntegerEntry((((ax + "_") + aC) + l), cr), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + p), ((bG - cP) + cX)), IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)]
555+ let cZ = (cP + dh)
556+ let dj = (cN - dh)
557+ let da = (height + cT)
558+ let cY = (fraction(cZ, cU, Y) + cN)
559+ let dk = bE(ax, aC)
560+ let bc = dk._1
561+ let bd = dk._2
562+ let cK = dk._3
563+ let cf = dk._4
564+ let de = dk._5
565+ let df = (aR(ax, aC) + cf)
566+[IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + k), cZ), IntegerEntry((((ax + "_") + aC) + m), da), IntegerEntry((((ax + "_") + aC) + l), cs), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + p), ((bH - cQ) + cY)), IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)]
567567 }
568568 })
569569
570570
571571
572-@Callable(cD)
573-func unlockUserLock (ax,aC) = valueOrElse(cB(), {
574- let cU = getIntegerValue(this, r)
575- let cN = valueOrErrorMessage(getInteger(this, (((ax + "_") + aC) + m)), (((("There is no pool " + ax) + " or user ") + aC) + "with lock"))
576- let bG = getIntegerValue(this, (ax + p))
577- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
578- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
579- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
580- if ((cN > height))
581- then throw(("You can't unlock sharetokens till " + toString(cN)))
572+@Callable(cE)
573+func unlockUserLock (ax,aC) = valueOrElse(cC(), {
574+ let cV = getIntegerValue(this, r)
575+ let cO = valueOrErrorMessage(getInteger(this, (((ax + "_") + aC) + m)), (((("There is no pool " + ax) + " or user ") + aC) + "with lock"))
576+ let bH = getIntegerValue(this, (ax + p))
577+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
578+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
579+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
580+ if ((cO > height))
581+ then throw(("You can't unlock sharetokens till " + toString(cO)))
582582 else {
583- let di = (cM + cO)
584- let dk = bD(ax, aC)
585- let bc = dk._1
586- let bd = dk._2
587- let cJ = dk._3
588- let ce = dk._4
589- let dd = dk._5
590- let de = (aR(ax, aC) + ce)
591-[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + n), di), IntegerEntry((ax + p), ((bG - cP) + di)), DeleteEntry((((ax + "_") + aC) + k)), DeleteEntry((((ax + "_") + aC) + m)), DeleteEntry((((ax + "_") + aC) + l)), Reissue(av, dd, true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, cU, unit)]
583+ let dj = (cN + cP)
584+ let dl = bE(ax, aC)
585+ let bc = dl._1
586+ let bd = dl._2
587+ let cK = dl._3
588+ let cf = dl._4
589+ let de = dl._5
590+ let df = (aR(ax, aC) + cf)
591+[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + n), dj), IntegerEntry((ax + p), ((bH - cQ) + dj)), DeleteEntry((((ax + "_") + aC) + k)), DeleteEntry((((ax + "_") + aC) + m)), DeleteEntry((((ax + "_") + aC) + l)), Reissue(av, de, true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, cV, unit)]
592592 }
593593 })
594594
595595
596596
597-@Callable(cD)
598-func withdrawShareTokens (ax,dl) = valueOrElse(cB(), {
599- let dm = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
600- let aC = toString(cD.originCaller)
601- let dn = bD(ax, aC)
602- let bc = dn._1
603- let bd = dn._2
604- let cJ = dn._3
605- let ce = dn._4
606- let dd = dn._5
607- let cM = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
608- let cO = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
609- let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cM)
610- let di = (cM - dl)
611- let de = (aR(ax, aC) + ce)
612- let do = az(ax)
613- let bG = valueOrElse(getInteger(this, (ax + p)), do)
614- let dp = (do - dl)
615- let dq = (bG - dl)
616- let cX = (cP - dl)
617- if ((dl > cM))
597+@Callable(cE)
598+func withdrawShareTokens (ax,dm) = valueOrElse(cC(), {
599+ let dn = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
600+ let aC = toString(cE.originCaller)
601+ let do = bE(ax, aC)
602+ let bc = do._1
603+ let bd = do._2
604+ let cK = do._3
605+ let cf = do._4
606+ let de = do._5
607+ let cN = valueOrElse(getInteger(this, (((ax + "_") + aC) + j)), 0)
608+ let cP = valueOrElse(getInteger(this, (((ax + "_") + aC) + k)), 0)
609+ let cQ = valueOrElse(getInteger(this, (((ax + "_") + aC) + n)), cN)
610+ let dj = (cN - dm)
611+ let df = (aR(ax, aC) + cf)
612+ let dp = az(ax)
613+ let bH = valueOrElse(getInteger(this, (ax + p)), dp)
614+ let dq = (dp - dm)
615+ let dr = (bH - dm)
616+ let cY = (cQ - dm)
617+ if ((dm > cN))
618618 then throw("Withdraw amount more then user locked amount")
619- else if ((aE(dm) > do))
619+ else if ((aE(dn) > dp))
620620 then throw("Balance of share-token is lower than totalAmount")
621621 else {
622- let df = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
623- then invoke(am, "updateUserInterest", [ax, (cM + cO)], nil)
622+ let dg = if ((getString(Address(fromBase58String(ax)), "version") == "3.0.0"))
623+ then invoke(am, "updateUserInterest", [ax, (cN + cP)], nil)
624624 else 0
625- if ((df == df))
626- then [IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), di), IntegerEntry((((ax + "_") + aC) + n), cX), IntegerEntry((ax + o), dp), IntegerEntry((ax + p), dq), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, dl, dm)]
625+ if ((dg == dg))
626+ then [IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + j), dj), IntegerEntry((((ax + "_") + aC) + n), cY), IntegerEntry((ax + o), dq), IntegerEntry((ax + p), dr), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, dm, dn)]
627627 else throw("Strict value is not equal to itself.")
628628 }
629629 })
630630
631631
632632
633-@Callable(cD)
634-func claim (ax) = valueOrElse(cB(), {
635- let dm = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
636- let aC = toString(cD.caller)
633+@Callable(cE)
634+func claim (ax) = valueOrElse(cC(), {
635+ let dn = fromBase58String(getStringValue(value(addressFromString(ax)), "share_asset_id"))
636+ let aC = toString(cE.caller)
637637 let bo = az(ax)
638- let dr = bD(ax, aC)
639- let bc = dr._1
640- let bd = dr._2
641- let cJ = dr._3
642- let ce = dr._4
643- let dd = dr._5
644- let cg = (aR(ax, aC) + ce)
645- if ((cg == 0))
638+ let ds = bE(ax, aC)
639+ let bc = ds._1
640+ let bd = ds._2
641+ let cK = ds._3
642+ let cf = ds._4
643+ let de = ds._5
644+ let ch = (aR(ax, aC) + cf)
645+ if ((ch == 0))
646646 then throw("You have 0 available SWOP")
647- else if ((aE(dm) > bo))
647+ else if ((aE(dn) > bo))
648648 then throw("Balance of share-token is lower than totalAmount")
649- else $Tuple2([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), 0), Reissue(av, (dd + cg), true), ScriptTransfer(an, dd, av), ScriptTransfer(cD.caller, cg, av)], cg)
649+ else $Tuple2([IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), 0), Reissue(av, (de + ch), true), ScriptTransfer(an, de, av), ScriptTransfer(cE.caller, ch, av)], ch)
650650 })
651651
652652
653653
654-@Callable(cD)
655-func claimAndStake (ax) = valueOrElse(cB(), {
656- let ce = {
657- let ds = invoke(this, "claim", [ax], nil)
658- if ($isInstanceOf(ds, "Int"))
659- then ds
660- else throw(($getType(ds) + " couldn't be cast to Int"))
654+@Callable(cE)
655+func claimAndStake (ax) = valueOrElse(cC(), {
656+ let cf = {
657+ let dt = invoke(this, "claim", [ax], nil)
658+ if ($isInstanceOf(dt, "Int"))
659+ then dt
660+ else throw(($getType(dt) + " couldn't be cast to Int"))
661661 }
662- if ((ce == ce))
662+ if ((cf == cf))
663663 then {
664- let dt = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, ce)])
665- if ((dt == dt))
664+ let du = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, cf)])
665+ if ((du == du))
666666 then nil
667667 else throw("Strict value is not equal to itself.")
668668 }
669669 else throw("Strict value is not equal to itself.")
670670 })
671671
672672
673673
674-@Callable(cD)
675-func claimAll (bU) = valueOrElse(cB(), {
676- func du (dv,ax) = {
677- let ce = {
678- let ds = invoke(this, "claim", [ax], nil)
679- if ($isInstanceOf(ds, "Int"))
680- then ds
681- else throw(($getType(ds) + " couldn't be cast to Int"))
674+@Callable(cE)
675+func claimAll (bV) = valueOrElse(cC(), {
676+ func dv (dw,ax) = {
677+ let cf = {
678+ let dt = invoke(this, "claim", [ax], nil)
679+ if ($isInstanceOf(dt, "Int"))
680+ then dt
681+ else throw(($getType(dt) + " couldn't be cast to Int"))
682682 }
683- if ((ce == ce))
684- then (dv + ce)
683+ if ((cf == cf))
684+ then (dw + cf)
685685 else throw("Strict value is not equal to itself.")
686686 }
687687
688- let dv = {
689- let ch = bU
690- let ci = size(ch)
691- let cj = 0
692- func ck (cl,cm) = if ((cm >= ci))
693- then cl
694- else du(cl, ch[cm])
688+ let dw = {
689+ let ci = bV
690+ let cj = size(ci)
691+ let ck = 0
692+ func cl (cm,cn) = if ((cn >= cj))
693+ then cm
694+ else dv(cm, ci[cn])
695695
696- func cn (cl,cm) = if ((cm >= ci))
697- then cl
696+ func co (cm,cn) = if ((cn >= cj))
697+ then cm
698698 else throw("List size exceeds 60")
699699
700- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
700+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
701701 }
702- if ((dv == 0))
702+ if ((dw == 0))
703703 then throw("You have 0 available SWOP")
704- else [ScriptTransfer(cD.caller, dv, av)]
704+ else [ScriptTransfer(cE.caller, dw, av)]
705705 })
706706
707707
708708
709-@Callable(cD)
710-func claimAllAndStake (bU) = valueOrElse(cB(), {
711- func du (dv,ax) = {
712- let ce = {
713- let ds = invoke(this, "claim", [ax], nil)
714- if ($isInstanceOf(ds, "Int"))
715- then ds
716- else throw(($getType(ds) + " couldn't be cast to Int"))
709+@Callable(cE)
710+func claimAllAndStake (bV) = valueOrElse(cC(), {
711+ func dv (dw,ax) = {
712+ let cf = {
713+ let dt = invoke(this, "claim", [ax], nil)
714+ if ($isInstanceOf(dt, "Int"))
715+ then dt
716+ else throw(($getType(dt) + " couldn't be cast to Int"))
717717 }
718- if ((ce == ce))
719- then (dv + ce)
718+ if ((cf == cf))
719+ then (dw + cf)
720720 else throw("Strict value is not equal to itself.")
721721 }
722722
723- let dv = {
724- let ch = bU
725- let ci = size(ch)
726- let cj = 0
727- func ck (cl,cm) = if ((cm >= ci))
728- then cl
729- else du(cl, ch[cm])
723+ let dw = {
724+ let ci = bV
725+ let cj = size(ci)
726+ let ck = 0
727+ func cl (cm,cn) = if ((cn >= cj))
728+ then cm
729+ else dv(cm, ci[cn])
730730
731- func cn (cl,cm) = if ((cm >= ci))
732- then cl
731+ func co (cm,cn) = if ((cn >= cj))
732+ then cm
733733 else throw("List size exceeds 60")
734734
735- cn(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(ck(cj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
735+ co(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(cl(ck, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60)
736736 }
737- if ((dv == 0))
737+ if ((dw == 0))
738738 then throw("You have 0 available SWOP")
739739 else {
740- let dt = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, dv)])
741- if ((dt == dt))
740+ let du = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(av, dw)])
741+ if ((du == du))
742742 then nil
743743 else throw("Strict value is not equal to itself.")
744744 }
745745 })
746746
747747
748748
749-@Callable(cD)
750-func updateUserBoostInterest (ax,aC) = valueOrElse(cB(), if ((cD.caller != aj))
749+@Callable(cE)
750+func updateUserBoostInterest (ax,aC) = valueOrElse(cC(), if ((cE.caller != aj))
751751 then throw("Only voiting can call this function")
752752 else {
753- let dw = bD(ax, aC)
754- let bc = dw._1
755- let bd = dw._2
756- let cJ = dw._3
757- let ce = dw._4
758- let dd = dw._5
759- let de = (aR(ax, aC) + ce)
760-[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cJ), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cJ), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), de), Reissue(av, dd, true), ScriptTransfer(an, dd, av)]
753+ let dx = bE(ax, aC)
754+ let bc = dx._1
755+ let bd = dx._2
756+ let cK = dx._3
757+ let cf = dx._4
758+ let de = dx._5
759+ let df = (aR(ax, aC) + cf)
760+[IntegerEntry((((ax + "_") + aC) + u), bc), IntegerEntry((((ax + "_") + aC) + w), bd), IntegerEntry((((ax + "_") + aC) + x), cK), IntegerEntry((ax + t), bc), IntegerEntry((ax + v), bd), IntegerEntry((ax + x), cK), IntegerEntry((ax + z), height), IntegerEntry((((ax + "_") + aC) + B), df), Reissue(av, de, true), ScriptTransfer(an, de, av)]
761761 })
762762
763763
764764
765-@Callable(cD)
766-func shutdown () = valueOrElse(cC(cD), if (!(as))
765+@Callable(cE)
766+func shutdown () = valueOrElse(cD(cE), if (!(as))
767767 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
768- else cz("Paused by admin"))
768+ else cA("Paused by admin"))
769769
770770
771771
772-@Callable(cD)
773-func activate () = valueOrElse(cC(cD), if (as)
772+@Callable(cE)
773+func activate () = valueOrElse(cD(cE), if (as)
774774 then throw("DApp is already active")
775775 else [BooleanEntry(a, true), DeleteEntry(c)])
776776
777777
778-@Verifier(dx)
779-func dy () = {
780- let ac = dx
781- let dz = if (sigVerify(dx.bodyBytes, dx.proofs[0], af))
778+@Verifier(dy)
779+func dz () = {
780+ let ac = dy
781+ let dA = if (sigVerify(dy.bodyBytes, dy.proofs[0], af))
782782 then 1
783783 else 0
784- let dA = if (sigVerify(dx.bodyBytes, dx.proofs[1], ag))
784+ let dB = if (sigVerify(dy.bodyBytes, dy.proofs[1], ag))
785785 then 1
786786 else 0
787- let dB = if (sigVerify(dx.bodyBytes, dx.proofs[2], ah))
787+ let dC = if (sigVerify(dy.bodyBytes, dy.proofs[2], ah))
788788 then 1
789789 else 0
790- (((dz + dA) + dB) >= 2)
790+ (((dA + dB) + dC) >= 2)
791791 }
792792

github/deemru/w8io/169f3d6 
304.81 ms