tx · 7PtKSiaQ2zQvqbfNPJT2B3oDv3uaR76rG3B7NL1CZxRe

3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw:  -0.04000000 Waves

2023.02.13 15:09 [3513423] smart account 3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw > SELF 0.00000000 Waves

{ "type": 13, "id": "7PtKSiaQ2zQvqbfNPJT2B3oDv3uaR76rG3B7NL1CZxRe", "fee": 4000000, "feeAssetId": null, "timestamp": 1676289945784, "version": 2, "chainId": 87, "sender": "3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw", "senderPublicKey": "B3jG1KiAb24bgwe28D9JKKkg9mtpiGTeEAYmQPrtHwQQ", "proofs": [ "", "5YaSYizL5HkFMb6TFSa6Ji4MKsVi1PBd11WHs57j4MGKbnqBCjGAPUCEPMHFkPukSLUYantCwAvcBL3eVi5AfvDM", "4jbL5ZPoztRhozUvrectUkf3AmoWidgeiimnLxuMueiMpLGBsM73BQZu5Atj2MuUiYxQ9ucfh1deuVGC7asP914s" ], "script": "base64:BgJiCAISAwoBCBIDCgEIEgMKAQgSBAoCCAESBQoDAggBEgUKAwgBARIECgIICBIECgIICBIECgIIARIFCgMCCAESAwoBCBIECgIIAhIDCgEIEgMKARgSAwoBGBIECgIICBIAEgBgAAdrQWN0aXZlAgZhY3RpdmUAC2tBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAPa0RlcHJlY2F0ZWRQb29sAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQAaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQCHV9jdXJyZW50X3Bvb2xfZnJhY3Rpb25fcmV3YXJkABtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAATa0hlaWdodFBvb2xGcmFjdGlvbgIaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAE2tSZXdhcmRVcGRhdGVIZWlnaHQCFHJld2FyZF91cGRhdGVfaGVpZ2h0ABZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAhRfc2hhcmVfdG9rZW5zX2xvY2tlZAAWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAIVX3NoYXJlX3Rva2Vuc19ibG9ja2VkABprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQIaX3NoYXJlX3Rva2Vuc19ibG9ja2VkX3R5cGUAHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQCHF9zaGFyZV90b2tlbnNfYmxvY2tlZF9oZWlnaHQAF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsAhVfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMCGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkABNrU2hhcmVUb2tlbnNWaXJ0dWFsAhtfdG90YWxfc2hhcmVfdG9rZW5zX3ZpcnR1YWwAC2tMb2NrUGFyYW1zAgxfbG9ja19wYXJhbXMADWtMb2NrV2F2ZXNGZWUCDmxvY2tfd2F2ZXNfZmVlAA5rUG9vbEJvb3N0Q29lZgILX2Jvb3N0X2NvZWYAEWtGYXJtTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAAVa0Zhcm1Vc2VyTGFzdEludGVyZXN0Ag5fbGFzdF9pbnRlcmVzdAASa0Jvb3N0TGFzdEludGVyZXN0AhBfbGFzdF9pbnRlcmVzdF9iABZrQm9vc3RVc2VyTGFzdEludGVyZXN0AhJfbGFzdF9pbnRlcmVzdF91X2IAE2tMYXN0SW50ZXJlc3RIZWlnaHQCFV9sYXN0X2ludGVyZXN0X2hlaWdodAAHa1NXT1BpZAIHU1dPUF9pZAAOa0F2YWlsYWJsZVNXT1ACD19hdmFpbGFibGVfU1dPUAAQa0hhcnZlc3RQb29sVm90ZQIYX2hhcnZlc3RfcG9vbF92b3RlX2dTV09QAAlrUG9vbFZvdGUCEF9wb29sX3ZvdGVfZ1NXT1AADWtVc2VyUG9vbFZvdGUCEF91c2VyX3ZvdGVfZ1NXT1AACmtQb29sU3RydWMCC19wb29sX3N0cnVjAA5rVXNlclBvb2xTdHJ1YwIQX3VzZXJfcG9vbF9zdHJ1YwAUa0hhcnZlc3RVc2VyUG9vbFZvdGUCHV9oYXJ2ZXN0X3VzZXJfcG9vbF92b3RlX2dTV09QABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AhRmaXJzdF9oYXJ2ZXN0X2hlaWdodAANa1NoYXJlTGltaXRGSAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAATa1N0cmF0QkZhcm1JbnRlcmVzdAIWX3N0cmF0X2JfZmFybV9pbnRlcmVzdAANa0NwbW1Db250cmFjdAINY3BtbV9jb250cmFjdAANa0FkbWluUHViS2V5MQILYWRtaW5fcHViXzEADWtBZG1pblB1YktleTICC2FkbWluX3B1Yl8yAA1rQWRtaW5QdWJLZXkzAgthZG1pbl9wdWJfMwASa0FkbWluSW52b2tlUHViS2V5AhBhZG1pbl9pbnZva2VfcHViABBrTW9uZXlCb3hBZGRyZXNzAhFtb25leV9ib3hfYWRkcmVzcwAOa1ZvdGluZ0FkZHJlc3MCDnZvdGluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABFrTFBGYXJtaW5nQWRkcmVzcwIKbHBfZmFybWluZwAUa0Zhcm1pbmdUcmVhc3VyZUFkZHICEGZhcm1pbmdfdHJlYXN1cmUABm9yYWNsZQkBB0FkZHJlc3MBARoBV4r/CGiaNbpAzWF08hI33qY38Po4zugeOAAOdG90YWxWb3RlU2hhcmUAgMivoCUAC3NjYWxlVmFsdWU4AIDC1y8AEmxvY2tCb29zdENvZWZTY2FsZQDoBwAQZGVmUG9vbEJvb3N0Q29lZgD0AwAOc3RhcnRFbWlzc2lvbkgA0Ni1AQAQc3dvcFllYXJFbWlzc2lvbgCAgOmDsd4WAA1ibG9ja3NQZXJZZWFyAPqPIAETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUQa01vbmV5Qm94QWRkcmVzcwANdm90aW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDmtWb3RpbmdBZGRyZXNzAApnb3ZBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQULa0dvdkFkZHJlc3MAEWFkbWluSW52b2tlUHViS2V5CQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEmtBZG1pbkludm9rZVB1YktleQAQbHBGYXJtaW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFEWtMUEZhcm1pbmdBZGRyZXNzABNmYXJtaW5nVHJlYXN1cmVBZGRyCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUUa0Zhcm1pbmdUcmVhc3VyZUFkZHIADGNwbW1Db250cmFjdAkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtDcG1tQ29udHJhY3QABmFjdGl2ZQkBEUBleHRyTmF0aXZlKDEwNTEpAgUEdGhpcwUHa0FjdGl2ZQAKYWN0aXZlR2xvYgkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUFC2tBY3RpdmVHbG9iBgAEU1dPUAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQdrU1dPUGlkARZnZXRSZXdhcmRzUGVyQmxvY2tJbmZvAAQPZW1pc3Npb25QZXJpb2RzCQBpAgkAZQIFBmhlaWdodAUOc3RhcnRFbWlzc2lvbkgFDWJsb2Nrc1BlclllYXIKAQxjYWxjRW1pc3Npb24CA2FjYwFpBAskdDA0NzQ2NDc4MwUDYWNjBAtjdXJFbWlzc2lvbggFCyR0MDQ3NDY0NzgzAl8xBAxwcmV2RW1pc3Npb24IBQskdDA0NzQ2NDc4MwJfMgMJAGYCBQ9lbWlzc2lvblBlcmlvZHMFAWkJAJQKAgkAawMFC2N1ckVtaXNzaW9uAEsAZAULY3VyRW1pc3Npb24JAJQKAgULY3VyRW1pc3Npb24FDHByZXZFbWlzc2lvbgQLJHQwNDk0MTUxMDcKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATBQNuaWwKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFEHN3b3BZZWFyRW1pc3Npb24FEHN3b3BZZWFyRW1pc3Npb24KAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDGNhbGNFbWlzc2lvbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAtjdXJFbWlzc2lvbggFCyR0MDQ5NDE1MTA3Al8xBAxwcmV2RW1pc3Npb24IBQskdDA0OTQxNTEwNwJfMgkAlQoDCQBpAgULY3VyRW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGkCBQxwcmV2RW1pc3Npb24FDWJsb2Nrc1BlclllYXIJAGQCBQ5zdGFydEVtaXNzaW9uSAkAaAIFDWJsb2Nrc1BlclllYXIFD2VtaXNzaW9uUGVyaW9kcwEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AAABFGdldEZIU2hhcmVMaW1pdFRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEcG9vbAUNa1NoYXJlTGltaXRGSAkArAICAhRObyBkYXRhIG9uIHRoZSBrZXk6IAUNa1NoYXJlTGltaXRGSAESZ2V0VG90YWxTaGFyZVRva2VuAQRwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMBDGdldFBvb2xWb3RlZAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCWtQb29sVm90ZQkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ12b3RpbmdBZGRyZXNzCQCsAgIFBHBvb2wFCmtQb29sU3RydWMCAAIBXwAAAAABEGdldFVzZXJQb29sVm90ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQ12b3RpbmdBZGRyZXNzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQRwb29sBQ1rVXNlclBvb2xWb3RlCQELdmFsdWVPckVsc2UCCQC2CQEJAJEDAgkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFDmtVc2VyUG9vbFN0cnVjAgACAV8AAAAAAQ9nZXRTaGFyZUFzc2V0SWQBBHBvb2wJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNTY2FsZVZhbHVlAghhc3NldElkMQhhc3NldElkMgQQYXNzZXRJZDFEZWNpbWFscwgJAQV2YWx1ZQEJAOwHAQUIYXNzZXRJZDEIZGVjaW1hbHMEEGFzc2V0SWQyRGVjaW1hbHMICQEFdmFsdWUBCQDsBwEFCGFzc2V0SWQyCGRlY2ltYWxzBAtzY2FsZURpZ2l0cwkAZAIJAGUCBRBhc3NldElkMkRlY2ltYWxzBRBhc3NldElkMURlY2ltYWxzAAgJAGwGAAoAAAULc2NhbGVEaWdpdHMAAAAABQRET1dOARF1c2VyQXZhaWxhYmxlU1dPUAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAABCnJld2FyZEluZm8BBHBvb2wECyR0MDY5MjI3MDM3CQEWZ2V0UmV3YXJkc1BlckJsb2NrSW5mbwAEGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CAULJHQwNjkyMjcwMzcCXzEEG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwgFCyR0MDY5MjI3MDM3Al8yBBhsYXN0RW1pc3Npb25VcGRhdGVIZWlnaHQIBQskdDA2OTIyNzAzNwJfMwQZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUaa1Jld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAKwCAgkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFGmtSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgwgYXQgYWRkcmVzcyAJAKUIAQUKZ292QWRkcmVzcwQScmV3YXJkVXBkYXRlSGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwUTa1Jld2FyZFVwZGF0ZUhlaWdodAkArAICCQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFE2tSZXdhcmRVcGRhdGVIZWlnaHQCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUTa0hlaWdodFBvb2xGcmFjdGlvbgUScmV3YXJkVXBkYXRlSGVpZ2h0BBpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgUEcG9vbAUba1Jld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFE5vIGRhdGEgb24gdGhlIGtleTogBQRwb29sBRtrUmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCDCBhdCBhZGRyZXNzIAkApQgBBQpnb3ZBZGRyZXNzBBFyZXdhcmRQb29sQ3VycmVudAkAawMFGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQScmV3YXJkUG9vbFByZXZpb3VzCQBrAwUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQFGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQ50b3RhbFZvdGVTaGFyZQQVcmV3YXJkUG9vbFByZXZDdXJyZW50CQBrAwUbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzBRlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQ50b3RhbFZvdGVTaGFyZQQWcmV3YXJkUG9vbFByZXZQcmV2aW91cwkAawMFG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwUacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFDnRvdGFsVm90ZVNoYXJlAwMJAGYCBRFyZXdhcmRQb29sQ3VycmVudAUadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQGCQBmAgUScmV3YXJkUG9vbFByZXZpb3VzBRt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAIBAmJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAmQoHBRFyZXdhcmRQb29sQ3VycmVudAUScmV3YXJkVXBkYXRlSGVpZ2h0BRJyZXdhcmRQb29sUHJldmlvdXMFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFGGxhc3RFbWlzc2lvblVwZGF0ZUhlaWdodAUVcmV3YXJkUG9vbFByZXZDdXJyZW50BRZyZXdhcmRQb29sUHJldlByZXZpb3VzARNnZXRMYXN0SW50ZXJlc3RJbmZvAQRwb29sBAxmYXJtSW50ZXJlc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0CQCsAgIJAKwCAgIUTm8gZGF0YSBvbiB0aGUga2V5OiAFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BA1ib29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0AAAEEmxhc3RJbnRlcmVzdEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAlQoDBRJsYXN0SW50ZXJlc3RIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAELY2FsY0Zhcm1Sd2QCBHBvb2wOY3VyVG90YWxSZXdhcmQEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgkAawMFDmN1clRvdGFsUmV3YXJkBRJsb2NrQm9vc3RDb2VmU2NhbGUJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNCb29zdFJ3ZAIEcG9vbA5jdXJUb3RhbFJld2FyZAQNcG9vbEJvb3N0Q29lZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQm9vc3RDb2VmBRBkZWZQb29sQm9vc3RDb2VmCQBrAwUOY3VyVG90YWxSZXdhcmQFDXBvb2xCb29zdENvZWYJAGQCBQ1wb29sQm9vc3RDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUBDGNhbGNJbnRlcmVzdAwEcG9vbBJsYXN0SW50ZXJlc3RIZWlnaHQScmV3YXJkVXBkYXRlSGVpZ2h0FnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQMZmFybUludGVyZXN0DWJvb3N0SW50ZXJlc3QJcG9vbFZvdGVkFWN1cnJlbnRSZXdhcmRQZXJCbG9jaxBzaGFyZVRva2VuTG9ja2VkFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sKc2NhbGVWYWx1ZQh0b0hlaWdodAQNJHQwMTAwNTExMTIzNgMDAwkAZgIFEnJld2FyZFVwZGF0ZUhlaWdodAUIdG9IZWlnaHQJAAACBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBgMJAGYCBQh0b0hlaWdodAUScmV3YXJkVXBkYXRlSGVpZ2h0CQECIT0CBRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAFyCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJsYXN0SW50ZXJlc3RIZWlnaHQJAJUKAwUBcgUMZmFybUludGVyZXN0BQ1ib29zdEludGVyZXN0AwMDCQBmAgUIdG9IZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAkAAAIFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAGYCBRJsYXN0SW50ZXJlc3RIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAcEAXIJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQh0b0hlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0CQCVCgMFAXIFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAQJcndkQmZyVXBkCQBoAgUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAZQIFEnJld2FyZFVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BAZmQmZyVXAJAGQCBQxmYXJtSW50ZXJlc3QJAGsDCQELY2FsY0Zhcm1Sd2QCBQRwb29sBQlyd2RCZnJVcGQFCnNjYWxlVmFsdWUFEHNoYXJlVG9rZW5Mb2NrZWQEBmJCZnJVcAkAZAIFDWJvb3N0SW50ZXJlc3QDCQBmAgUJcG9vbFZvdGVkAAAJAGsDCQEMY2FsY0Jvb3N0UndkAgUEcG9vbAUJcndkQmZyVXBkBQtzY2FsZVZhbHVlOAUJcG9vbFZvdGVkAAAEA3J3ZAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFCHRvSGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQJAJUKAwUDcndkBQZmQmZyVXAFBmJCZnJVcAQGcmV3YXJkCAUNJHQwMTAwNTExMTIzNgJfMQQOZmFybUludHJCZWZvcmUIBQ0kdDAxMDA1MTExMjM2Al8yBA9ib29zdEludHJCZWZvcmUIBQ0kdDAxMDA1MTExMjM2Al8zBA9uZXdGYXJtSW50ZXJlc3QJAGQCBQ5mYXJtSW50ckJlZm9yZQkAawMJAQtjYWxjRmFybVJ3ZAIFBHBvb2wFBnJld2FyZAUKc2NhbGVWYWx1ZQUQc2hhcmVUb2tlbkxvY2tlZAQQbmV3Qm9vc3RJbnRlcmVzdAkAZAIFD2Jvb3N0SW50ckJlZm9yZQMJAGYCBQlwb29sVm90ZWQAAAkAawMJAQxjYWxjQm9vc3RSd2QCBQRwb29sBQZyZXdhcmQFC3NjYWxlVmFsdWU4BQlwb29sVm90ZWQAAAkAlAoCBQ9uZXdGYXJtSW50ZXJlc3QFEG5ld0Jvb3N0SW50ZXJlc3QBCWNsYWltQ2FsYwIEcG9vbAR1c2VyBApzY2FsZVZhbHVlCQEOY2FsY1NjYWxlVmFsdWUCBQRTV09QCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQJcG9vbFZvdGVkCQEMZ2V0UG9vbFZvdGVkAQUEcG9vbAQKdVBvb2xWb3RlZAkBEGdldFVzZXJQb29sVm90ZWQCBQRwb29sBQR1c2VyBApzaGFyZVRva2VuCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQpzaGFyZVRva2VuBBJzdHJhdEJGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU3RyYXRCRmFybUludGVyZXN0AAAEDSR0MDEyMDc0MTIxNTUJARNnZXRMYXN0SW50ZXJlc3RJbmZvAQUEcG9vbAQSbGFzdEludGVyZXN0SGVpZ2h0CAUNJHQwMTIwNzQxMjE1NQJfMQQMZmFybUludGVyZXN0CAUNJHQwMTIwNzQxMjE1NQJfMgQNYm9vc3RJbnRlcmVzdAgFDSR0MDEyMDc0MTIxNTUCXzMEDSR0MDEyMTYwMTI0MTcJAQpyZXdhcmRJbmZvAQUEcG9vbAQVY3VycmVudFJld2FyZFBlckJsb2NrCAUNJHQwMTIxNjAxMjQxNwJfMQQScmV3YXJkVXBkYXRlSGVpZ2h0CAUNJHQwMTIxNjAxMjQxNwJfMgQWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyMTYwMTI0MTcCXzMEFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQ0kdDAxMjE2MDEyNDE3Al80BBRlbWlzc2lvblVwZGF0ZUhlaWdodAgFDSR0MDEyMTYwMTI0MTcCXzUEGXByZXZDdXJyZW50UmV3YXJkUGVyQmxvY2sIBQ0kdDAxMjE2MDEyNDE3Al82BBpwcmV2UHJldmlvdXNSZXdhcmRQZXJCbG9jawgFDSR0MDEyMTYwMTI0MTcCXzcEDXVGYXJtSW50ZXJlc3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QEDnVCb29zdEludGVyZXN0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QDAwkAZgIFEnN0cmF0QkZhcm1JbnRlcmVzdAUNdUZhcm1JbnRlcmVzdAkAZgIFCnVQb29sVm90ZWQAAAcAAAUNYm9vc3RJbnRlcmVzdAQSdVNoYXJlVG9rZW5zU3Rha2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQQdVNoYXJlVG9rZW5zVmlydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUSdVNoYXJlVG9rZW5zU3Rha2VkAwkAAAIFEXRvdGFsU2hhcmVWaXJ0dWFsAAAECnRvVHJlYXN1cnkDCQBmAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAZAIJAGgCBRlwcmV2Q3VycmVudFJld2FyZFBlckJsb2NrCQBlAgUUZW1pc3Npb25VcGRhdGVIZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAaAIFFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAZQIFBmhlaWdodAUUZW1pc3Npb25VcGRhdGVIZWlnaHQJAGgCBRVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAGUCBQZoZWlnaHQFEmxhc3RJbnRlcmVzdEhlaWdodAkAlgoEBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QAAAUKdG9UcmVhc3VyeQQNJHQwMTMzNzUxNDUxMgMJAGYCBRRlbWlzc2lvblVwZGF0ZUhlaWdodAUSbGFzdEludGVyZXN0SGVpZ2h0BA0kdDAxMzc4ODE0MzQ3CQEMY2FsY0ludGVyZXN0DAUEcG9vbAUSbGFzdEludGVyZXN0SGVpZ2h0BRJyZXdhcmRVcGRhdGVIZWlnaHQFFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFDGZhcm1JbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAUJcG9vbFZvdGVkBRlwcmV2Q3VycmVudFJld2FyZFBlckJsb2NrBRF0b3RhbFNoYXJlVmlydHVhbAUacHJldlByZXZpb3VzUmV3YXJkUGVyQmxvY2sFCnNjYWxlVmFsdWUFFGVtaXNzaW9uVXBkYXRlSGVpZ2h0BBNwcmV2TmV3RmFybUludGVyZXN0CAUNJHQwMTM3ODgxNDM0NwJfMQQUcHJldk5ld0Jvb3N0SW50ZXJlc3QIBQ0kdDAxMzc4ODE0MzQ3Al8yCQCVCgMFE3ByZXZOZXdGYXJtSW50ZXJlc3QFFHByZXZOZXdCb29zdEludGVyZXN0BRRlbWlzc2lvblVwZGF0ZUhlaWdodAkAlQoDBQxmYXJtSW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QFEmxhc3RJbnRlcmVzdEhlaWdodAQQcHJldkZhcm1JbnRlcmVzdAgFDSR0MDEzMzc1MTQ1MTICXzEEEXByZXZCb29zdEludGVyZXN0CAUNJHQwMTMzNzUxNDUxMgJfMgQITElIZWlnaHQIBQ0kdDAxMzM3NTE0NTEyAl8zBA0kdDAxNDUyMTE0OTQ0CQEMY2FsY0ludGVyZXN0DAUEcG9vbAUITElIZWlnaHQFEnJld2FyZFVwZGF0ZUhlaWdodAUWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAUQcHJldkZhcm1JbnRlcmVzdAURcHJldkJvb3N0SW50ZXJlc3QFCXBvb2xWb3RlZAUVY3VycmVudFJld2FyZFBlckJsb2NrBRF0b3RhbFNoYXJlVmlydHVhbAUWcHJldmlvdXNSZXdhcmRQZXJCbG9jawUKc2NhbGVWYWx1ZQUGaGVpZ2h0BA9uZXdGYXJtSW50ZXJlc3QIBQ0kdDAxNDUyMTE0OTQ0Al8xBBBuZXdCb29zdEludGVyZXN0CAUNJHQwMTQ1MjExNDk0NAJfMgQHZmFybVJ3ZAkAawMFEHVTaGFyZVRva2Vuc1ZpcnQJAGUCBQ9uZXdGYXJtSW50ZXJlc3QFDXVGYXJtSW50ZXJlc3QFCnNjYWxlVmFsdWUEDXBvb2xCb29zdENvZWYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbEJvb3N0Q29lZgUQZGVmUG9vbEJvb3N0Q29lZgQLYm9vc3RSd2RNYXgJAGsDCQBrAwUQdVNoYXJlVG9rZW5zVmlydAkAZQIFD25ld0Zhcm1JbnRlcmVzdAkAlgMBCQDMCAIFDXVGYXJtSW50ZXJlc3QJAMwIAgUSc3RyYXRCRmFybUludGVyZXN0BQNuaWwFCnNjYWxlVmFsdWUFDXBvb2xCb29zdENvZWYFEmxvY2tCb29zdENvZWZTY2FsZQQLY3VyQm9vc3RSd2QJAGsDCQBlAgUQbmV3Qm9vc3RJbnRlcmVzdAUOdUJvb3N0SW50ZXJlc3QFCnVQb29sVm90ZWQFC3NjYWxlVmFsdWU4BAhib29zdFJ3ZAkAlwMBCQDMCAIFC2Jvb3N0UndkTWF4CQDMCAIFC2N1ckJvb3N0UndkBQNuaWwECnRvVHJlYXN1cnkJAGUCBQtib29zdFJ3ZE1heAUIYm9vc3RSd2QDCQBmAgAABQp0b1RyZWFzdXJ5CQACAQIOdG9UcmVhc3VyeSA8IDAJAJYKBAUPbmV3RmFybUludGVyZXN0BRBuZXdCb29zdEludGVyZXN0CQBkAgUHZmFybVJ3ZAUIYm9vc3RSd2QFCnRvVHJlYXN1cnkBG2F2YWlsYWJsZUNsYWltQ2FsY0FsbEJ5VXNlcgIFcG9vbHMEdXNlcgoBDWNhbGNBdmFpbGFibGUCA2FjYwRwb29sBA0kdDAxNTgxMzE1ODQyBQNhY2MECG5ld1Bvb2xzCAUNJHQwMTU4MTMxNTg0MgJfMQQHYW1vdW50cwgFDSR0MDE1ODEzMTU4NDICXzIEDSR0MDE1ODUxMTU5MDQJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAJmaQgFDSR0MDE1ODUxMTU5MDQCXzEEAmJpCAUNJHQwMTU4NTExNTkwNAJfMgQLY2xhaW1BbW91bnQIBQ0kdDAxNTg1MTE1OTA0Al8zBAJ0dAgFDSR0MDE1ODUxMTU5MDQCXzQEDWF2YWlsYWJsZUZ1bmQJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAlAoCCQDNCAIFCG5ld1Bvb2xzBQRwb29sCQDNCAIFB2Ftb3VudHMFDWF2YWlsYWJsZUZ1bmQKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1jYWxjQXZhaWxhYmxlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAEVY2FuTG9ja0luRmlyc3RIYXJ2ZXN0BQRwb29sBHVzZXIVdXNlclNoYXJlVG9rZW5zU3Rha2VkCXBtdEFtb3VudAhsb2NrVHlwZQMJAGYCCQEVZ2V0SGVpZ2h0Rmlyc3RIYXJ2ZXN0AQUEcG9vbAUGaGVpZ2h0BA90b3RhbFZvdGVBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNdm90aW5nQWRkcmVzcwkArAICBQRwb29sBRBrSGFydmVzdFBvb2xWb3RlAAAEDnVzZXJWb3RlQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MJAKwCAgkArAICCQCsAgIFBHVzZXICAV8FBHBvb2wFFGtIYXJ2ZXN0VXNlclBvb2xWb3RlAAAEEUZIU2hhcmVUb2tlbkxpbWl0CQEUZ2V0RkhTaGFyZUxpbWl0VG9rZW4BCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBBVGSFNoYXJlVG9rZW5Vc2VyTGltaXQJAGUCCQBrAwURRkhTaGFyZVRva2VuTGltaXQFDnVzZXJWb3RlQW1vdW50BQ90b3RhbFZvdGVBbW91bnQFFXVzZXJTaGFyZVRva2Vuc1N0YWtlZAMJAGYCBQhsb2NrVHlwZQAACQACAQIyWW91IGNhbid0IGxvY2sgc2hhcmVUb2tlbnMgdGlsbCBmaXJzdCBoYXJ2ZXN0IGVuZC4DCQAAAgUOdXNlclZvdGVBbW91bnQAAAAAAwkAZwIFCXBtdEFtb3VudAUVRkhTaGFyZVRva2VuVXNlckxpbWl0CQBlAgUJcG10QW1vdW50BRVGSFNoYXJlVG9rZW5Vc2VyTGltaXQAAAAAAQ1nZXRMb2NrUGFyYW1zAQR0eXBlBApsb2NrUGFyYW1zCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKQDAQUEdHlwZQULa0xvY2tQYXJhbXMJAKwCAgIeVGhlcmUgYXJlIG5vIGtleSBmb3IgbG9jayB0eXBlCQCkAwEFBHR5cGUCAV8JAJQKAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmxvY2tQYXJhbXMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmxvY2tQYXJhbXMAAQEHc3VzcGVuZAEFY2F1c2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUHCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmtDYXVzZQUFY2F1c2UFA25pbAEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNQb29sQ2FsbAIBaQRwb29sAwMJAAACCQClCAEIBQFpBmNhbGxlcgUEcG9vbAYJAAACCAUBaQZjYWxsZXIFDGNwbW1Db250cmFjdAUEdW5pdAkAAgECIE9ubHkgcG9vbCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uARFnZXREZXByZWNhdGVkUG9vbAEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUJAKwCAgUPa0RlcHJlY2F0ZWRQb29sBQRwb29sBwEQaXNEZXByZWNhdGVkUG9vbAEEcG9vbAMJAQEhAQkBEWdldERlcHJlY2F0ZWRQb29sAQUEcG9vbAUEdW5pdAkAAgECL1Bvb2wgaXMgZGVwcmVjYXRlZC4gT25seSB1bmxvY2sgYWN0aW9uIGFsbG93ZWQuAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BE2NhbGNMb2NrU2hhcmVUb2tlbnMEAWkGY2FsbGVyBHBvb2wIbG9ja1R5cGUEDHNoYXJlQXNzZXRJZAkBD2dldFNoYXJlQXNzZXRJZAEFBHBvb2wEBHVzZXIJAKUIAQUGY2FsbGVyBAp0b3RhbFNoYXJlCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQRdG90YWxTaGFyZVZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBQp0b3RhbFNoYXJlBBB1c2VyU3Rha2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQAAAQPdXNlckxvY2tlZEhlaWd0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQAAAQQdXNlckxvY2tlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkAAAEEXVzZXJBbW91bnRWaXJ0dWFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRB1c2VyU3Rha2VkQW1vdW50BBR0b3RhbFVzZXJTaGFyZVRva2VucwkAZAIJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQNJHQwMTg5NTMxOTAwNQkBDWdldExvY2tQYXJhbXMBBQhsb2NrVHlwZQQKbG9ja1BlcmlvZAgFDSR0MDE4OTUzMTkwMDUCXzEECGxvY2tDb2VmCAUNJHQwMTg5NTMxOTAwNQJfMgQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxzaGFyZUFzc2V0SWQJAAIBAhtXcm9uZyBzaGFyZXRva2VuIGluIHBheW1lbnQDCQBnAgAACAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAAgECJVBheW1lbnQgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgAABQhsb2NrVHlwZQkAAgECFWxvY2tUeXBlIG11c3QgYmUgPj0gMAQVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQEVY2FuTG9ja0luRmlyc3RIYXJ2ZXN0BQUEcG9vbAUEdXNlcgUQdXNlclN0YWtlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFCGxvY2tUeXBlAwkAAAIFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZIBA0kdDAxOTQzMjIxMzY2AwkAAAIFCGxvY2tUeXBlAAAEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBlAgkAZAIFEXVzZXJBbW91bnRWaXJ0dWFsCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUVc2hhcmVUb2tlbnNDaGFuZ2VPbkZICQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNTdGFrZWQJAGUCCQBkAgUQdXNlclN0YWtlZEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFFXNoYXJlVG9rZW5zQ2hhbmdlT25GSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwJAGUCCQBkAgURdG90YWxTaGFyZVZpcnR1YWwICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDbmlsCQBlAgkAZAIFCnRvdGFsU2hhcmUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BRVzaGFyZVRva2Vuc0NoYW5nZU9uRkgDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAAAwMJAGYCAAIJAJADAQgFAWkIcGF5bWVudHMGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwABB2Fzc2V0SWQFBHVuaXQGCQBmAgUMbG9ja1dhdmVzRmVlCAkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAcJAAIBCQCsAgIJAKwCAgIrWW91IG5lZWQgdG8gcGF5IGFkZGl0aW9uYWwgd2F2ZXMgY29taXNzaW9uIAkApAMBBQxsb2NrV2F2ZXNGZWUCBVdBVkVTAwkAZgIFD3VzZXJMb2NrZWRIZWlndAkAZAIFBmhlaWdodAUKbG9ja1BlcmlvZAkAAgECT1lvdSBjYW5ub3QgbG9jayBzaGFyZXRva2VucyBmb3IgYSBwZXJpb2QgbGVzcyB0aGFuIHdoYXQgeW91IGhhdmUgYWxyZWFkeSBsb2NrZWQEE3VzZXJMb2NrZWRBbW91bnROZXcJAGQCBRB1c2VyTG9ja2VkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQSdXNlckxvY2tlZEhlaWd0TmV3CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kBBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZAIJAGsDBRN1c2VyTG9ja2VkQW1vdW50TmV3BQhsb2NrQ29lZgUSbG9ja0Jvb3N0Q29lZlNjYWxlBRB1c2VyU3Rha2VkQW1vdW50CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQFE3VzZXJMb2NrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQFEnVzZXJMb2NrZWRIZWlndE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUFCGxvY2tUeXBlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFFHVzZXJBbW91bnRWaXJ0dWFsTmV3BQNuaWwJAGQCBQp0b3RhbFNoYXJlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLbG9ja0VudHJpZXMIBQ0kdDAxOTQzMjIxMzY2Al8xBA10b3RhbFNoYXJlTmV3CAUNJHQwMTk0MzIyMTM2NgJfMgMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQxzaGFyZUFzc2V0SWQFDXRvdGFsU2hhcmVOZXcJAAIBAjBCYWxhbmNlIG9mIHNoYXJlLXRva2VuIGlzIGxvd2VyIHRoYW4gdG90YWxBbW91bnQEDSR0MDIxNDkxMjE1NzMJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyMTQ5MTIxNTczAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMjE0OTEyMTU3MwJfMgQLY2xhaW1BbW91bnQIBQ0kdDAyMTQ5MTIxNTczAl8zBAp0b1RyZWFzdXJlCAUNJHQwMjE0OTEyMTU3MwJfNAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAQEdXBscAMJAAACCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd2ZXJzaW9uAgUzLjAuMAkA/AcEBRBscEZhcm1pbmdBZGRyZXNzAhJ1cGRhdGVVc2VySW50ZXJlc3QJAMwIAgUEdXNlcgkAzAgCBQRwb29sCQDMCAIFFHRvdGFsVXNlclNoYXJlVG9rZW5zBQNuaWwFA25pbAAAAwkAAAIFBHVwbHAFBHVwbHAJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFFmtTaGFyZVRvdGFsU2hhcmVUb2tlbnMFDXRvdGFsU2hhcmVOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQEHUmVpc3N1ZQMFBFNXT1AFCnRvVHJlYXN1cmUGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFE2Zhcm1pbmdUcmVhc3VyZUFkZHIFCnRvVHJlYXN1cmUFBFNXT1AFA25pbAULbG9ja0VudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAFpBmNhbGxlcgRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEA2ludgMJARFnZXREZXByZWNhdGVkUG9vbAEFBHBvb2wJAPwHBAUEdGhpcwIYdW5sb2NrVXNlckxvY2tEZXByZWNhdGVkCQDMCAIFBHBvb2wJAMwIAgkApQgBBQZjYWxsZXIFA25pbAUDbmlsAAADCQAAAgUDaW52BQNpbnYEDXNoYXJlVG9rZW5zSWQJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBBXZhbHVlAQkApggBBQRwb29sAg5zaGFyZV9hc3NldF9pZAQEdXNlcgkApQgBBQZjYWxsZXIEDSR0MDIyODcwMjI5NTIJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAyMjg3MDIyOTUyAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMjI4NzAyMjk1MgJfMgQLY2xhaW1BbW91bnQIBQ0kdDAyMjg3MDIyOTUyAl8zBAp0b1RyZWFzdXJlCAUNJHQwMjI4NzAyMjk1MgJfNAQQdXNlclN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkAAAEEHVzZXJMb2NrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAAABBF1c2VyQW1vdW50VmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUQdXNlclN0YWtlZEFtb3VudAQTdXNlclN0YWtlZEFtb3VudE5ldwkAZQIFEHVzZXJTdGFrZWRBbW91bnQFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQEEHRvdGFsU2hhcmVBbW91bnQJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFEHRvdGFsU2hhcmVBbW91bnQEE3RvdGFsU2hhcmVBbW91bnROZXcJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BBR0b3RhbFNoYXJlVmlydHVhbE5ldwkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BBR1c2VyQW1vdW50VmlydHVhbE5ldwkAZQIFEXVzZXJBbW91bnRWaXJ0dWFsBRlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AwkAZgIFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFEHVzZXJTdGFrZWRBbW91bnQJAAIBAixXaXRoZHJhdyBhbW91bnQgbW9yZSB0aGVuIHVzZXIgbG9ja2VkIGFtb3VudAMJAGYCCQEOYWNjb3VudEJhbGFuY2UBBQ1zaGFyZVRva2Vuc0lkBRB0b3RhbFNoYXJlQW1vdW50CQACAQIwQmFsYW5jZSBvZiBzaGFyZS10b2tlbiBpcyBsb3dlciB0aGFuIHRvdGFsQW1vdW50BAR1cGxwAwkAAAIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3ZlcnNpb24CBTMuMC4wCQD8BwQFEGxwRmFybWluZ0FkZHJlc3MCEnVwZGF0ZVVzZXJJbnRlcmVzdAkAzAgCBQR1c2VyCQDMCAIFBHBvb2wJAMwIAgkAZAIFEHVzZXJTdGFrZWRBbW91bnQFEHVzZXJMb2NrZWRBbW91bnQFA25pbAUDbmlsAAADCQAAAgUEdXBscAUEdXBscAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zU3Rha2VkBRN1c2VyU3Rha2VkQW1vdW50TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRdrVXNlclNoYXJlVG9rZW5zVmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUWa1NoYXJlVG90YWxTaGFyZVRva2VucwUTdG90YWxTaGFyZUFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsBRR0b3RhbFNoYXJlVmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFDXNoYXJlVG9rZW5zSWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEJY2FsY0NsYWltAwFpBHBvb2wGY2FsbGVyBA1zaGFyZVRva2Vuc0lkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQV2YWx1ZQEJAKYIAQUEcG9vbAIOc2hhcmVfYXNzZXRfaWQEBHVzZXIJAKUIAQUGY2FsbGVyBBBzaGFyZVRva2VuTG9ja2VkCQESZ2V0VG90YWxTaGFyZVRva2VuAQUEcG9vbAQNJHQwMjU0NjMyNTU0NQkBCWNsYWltQ2FsYwIFBHBvb2wFBHVzZXIEDGZhcm1JbnRlcmVzdAgFDSR0MDI1NDYzMjU1NDUCXzEEDWJvb3N0SW50ZXJlc3QIBQ0kdDAyNTQ2MzI1NTQ1Al8yBAtjbGFpbUFtb3VudAgFDSR0MDI1NDYzMjU1NDUCXzMECnRvVHJlYXN1cmUIBQ0kdDAyNTQ2MzI1NTQ1Al80BA1hdmFpbGFibGVGdW5kCQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQDCQBmAgkBDmFjY291bnRCYWxhbmNlAQUNc2hhcmVUb2tlbnNJZAUQc2hhcmVUb2tlbkxvY2tlZAkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAQGdVRyYW5zAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUNYXZhaWxhYmxlRnVuZAUEU1dPUAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRVrRmFybVVzZXJMYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa0Jvb3N0VXNlckxhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrRmFybUxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEmtCb29zdExhc3RJbnRlcmVzdAUNYm9vc3RJbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QAAAJAMwIAgkBB1JlaXNzdWUDBQRTV09QCQBkAgUKdG9UcmVhc3VyZQUNYXZhaWxhYmxlRnVuZAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAUDbmlsBQZ1VHJhbnMFDWF2YWlsYWJsZUZ1bmQBEnVubG9ja1VzZXJMb2NrQ2FsYwMBaQRwb29sBHVzZXIEEXRvdGFsU2hhcmVWaXJ0dWFsCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEE3VzZXJTdGFrZWRBbW91bnROZXcJAGQCBRB1c2VyU3Rha2VkQW1vdW50BRB1c2VyTG9ja2VkQW1vdW50BA0kdDAyNjk0ODI3MDMwCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjY5NDgyNzAzMAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI2OTQ4MjcwMzACXzIEC2NsYWltQW1vdW50CAUNJHQwMjY5NDgyNzAzMAJfMwQKdG9UcmVhc3VyZQgFDSR0MDI2OTQ4MjcwMzACXzQEEWF2YWlsYWJsZUZ1bmRzTmV3CQBkAgkBEXVzZXJBdmFpbGFibGVTV09QAgUEcG9vbAUEdXNlcgULY2xhaW1BbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1NoYXJlVG9rZW5zVmlydHVhbAkAZAIJAGUCBRF0b3RhbFNoYXJlVmlydHVhbAURdXNlckFtb3VudFZpcnR1YWwFE3VzZXJTdGFrZWRBbW91bnROZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFDmtBdmFpbGFibGVTV09QBRFhdmFpbGFibGVGdW5kc05ldwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrVXNlclNoYXJlVG9rZW5zTG9ja2VkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUaa1VzZXJTaGFyZVRva2Vuc0xvY2tlZFR5cGUJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwSAWkBBGluaXQBB2Vhcmx5TFADCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQdrU1dPUGlkCQACAQIYU1dPUCBhbHJlYWR5IGluaXRpYWxpemVkBAppbml0QW1vdW50AICA6YOx3hYECVNXT1Bpc3N1ZQkAwggFAgRTV09QAhNTV09QIHByb3RvY29sIHRva2VuBQppbml0QW1vdW50AAgGBAZTV09QaWQJALgIAQUJU1dPUGlzc3VlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBgkAzAgCCQDCCAUCBFNXT1ACE1NXT1AgcHJvdG9jb2wgdG9rZW4FCmluaXRBbW91bnQACAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUHa1NXT1BpZAkA2AQBBQZTV09QaWQFA25pbAFpARRpbml0UG9vbFNoYXJlRmFybWluZwEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRZrU2hhcmVUb3RhbFNoYXJlVG9rZW5zAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrTGFzdEludGVyZXN0SGVpZ2h0BQZoZWlnaHQFA25pbAFpARJ1cGRhdGVQb29sSW50ZXJlc3QBBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQADCQECIT0CCAUBaQZjYWxsZXIFCmdvdkFkZHJlc3MJAAIBAiZPbmx5IEdvdmVybmFuY2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgQEdXNlcgkApQgBCQCnCAEFEWFkbWluSW52b2tlUHViS2V5BA0kdDAyOTE5NjI5MjcwCQEJY2xhaW1DYWxjAgUEcG9vbAUEdXNlcgQMZmFybUludGVyZXN0CAUNJHQwMjkxOTYyOTI3MAJfMQQNYm9vc3RJbnRlcmVzdAgFDSR0MDI5MTk2MjkyNzACXzIED2Jvb3N0TFBpbnRlcmVzdAgFDSR0MDI5MTk2MjkyNzACXzMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0BQNuaWwBaQEPbG9ja1NoYXJlVG9rZW5zAgRwb29sCGxvY2tUeXBlCQELdmFsdWVPckVsc2UCCQEQaXNEZXByZWNhdGVkUG9vbAEFBHBvb2wJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQgFAWkGY2FsbGVyBQRwb29sBQhsb2NrVHlwZQFpARdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAMLY2FsbGVyQnl0ZXMEcG9vbAhsb2NrVHlwZQkBC3ZhbHVlT3JFbHNlAgkBEGlzRGVwcmVjYXRlZFBvb2wBBQRwb29sCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQELdmFsdWVPckVsc2UCCQEKaXNQb29sQ2FsbAIFAWkFBHBvb2wJARNjYWxjTG9ja1NoYXJlVG9rZW5zBAUBaQkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwUEcG9vbAUIbG9ja1R5cGUBaQEVbG9ja1N0YWtlZFNoYXJlVG9rZW5zAwRwb29sCGxvY2tUeXBlCmxvY2tBbW91bnQJAQt2YWx1ZU9yRWxzZQIJARBpc0RlcHJlY2F0ZWRQb29sAQUEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQMc2hhcmVBc3NldElkCQEPZ2V0U2hhcmVBc3NldElkAQUEcG9vbAQEdXNlcgkApQgBCAUBaQZjYWxsZXIECnRvdGFsU2hhcmUJARJnZXRUb3RhbFNoYXJlVG9rZW4BBQRwb29sBBF0b3RhbFNoYXJlVmlydHVhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tTaGFyZVRva2Vuc1ZpcnR1YWwFCnRvdGFsU2hhcmUEEHVzZXJTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAAABA91c2VyTG9ja2VkSGVpZ3QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAAABBB1c2VyTG9ja2VkQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtVc2VyU2hhcmVUb2tlbnNMb2NrZWQAAAQRdXNlckFtb3VudFZpcnR1YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUXa1VzZXJTaGFyZVRva2Vuc1ZpcnR1YWwFEHVzZXJTdGFrZWRBbW91bnQEFHRvdGFsVXNlclNoYXJlVG9rZW5zCQBkAgUQdXNlclN0YWtlZEFtb3VudAUQdXNlckxvY2tlZEFtb3VudAQNJHQwMzA4OTkzMDk1MQkBDWdldExvY2tQYXJhbXMBBQhsb2NrVHlwZQQKbG9ja1BlcmlvZAgFDSR0MDMwODk5MzA5NTECXzEECGxvY2tDb2VmCAUNJHQwMzA4OTkzMDk1MQJfMgQMbG9ja1dhdmVzRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1rTG9ja1dhdmVzRmVlAwkAZgIJARVnZXRIZWlnaHRGaXJzdEhhcnZlc3QBBQRwb29sBQZoZWlnaHQJAAIBAjJZb3UgY2FuJ3QgbG9jayBzaGFyZVRva2VucyB0aWxsIGZpcnN0IGhhcnZlc3QgZW5kLgMJAGcCAAAFCGxvY2tUeXBlCQACAQIUbG9ja1R5cGUgbXVzdCBiZSA+IDADCQBmAgUKbG9ja0Ftb3VudAUQdXNlclN0YWtlZEFtb3VudAkAAgEJAKwCAgIZWW91IGNhbid0IGxvY2sgbW9yZSB0aGFuIAkApAMBBRB1c2VyU3Rha2VkQW1vdW50AwkAZgIJAQ5hY2NvdW50QmFsYW5jZQEFDHNoYXJlQXNzZXRJZAUKdG90YWxTaGFyZQkAAgECMEJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgbG93ZXIgdGhhbiB0b3RhbEFtb3VudAMDCQAAAgUPdXNlckxvY2tlZEhlaWd0AAADAwkAZgIAAQkAkAMBCAUBaQhwYXltZW50cwYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAYJAGYCBQxsb2NrV2F2ZXNGZWUICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BwkAAgEJAKwCAgkArAICAitZb3UgbmVlZCB0byBwYXkgYWRkaXRpb25hbCB3YXZlcyBjb21pc3Npb24gCQCkAwEFDGxvY2tXYXZlc0ZlZQIFV0FWRVMDAwkAAAIFD3VzZXJMb2NrZWRIZWlndAAACQBnAgAABQpsb2NrQW1vdW50BwkAAgECIWxvY2tBbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCAAAFCmxvY2tBbW91bnQJAAIBAhtsb2NrQW1vdW50IG11c3QgYmUgcG9zaXRpdmUDCQBmAgUPdXNlckxvY2tlZEhlaWd0CQBkAgUGaGVpZ2h0BQpsb2NrUGVyaW9kCQACAQJPWW91IGNhbm5vdCBsb2NrIHNoYXJldG9rZW5zIGZvciBhIHBlcmlvZCBsZXNzIHRoYW4gd2hhdCB5b3UgaGF2ZSBhbHJlYWR5IGxvY2tlZAQTdXNlckxvY2tlZEFtb3VudE5ldwkAZAIFEHVzZXJMb2NrZWRBbW91bnQFCmxvY2tBbW91bnQEE3VzZXJTdGFrZWRBbW91bnROZXcJAGUCBRB1c2VyU3Rha2VkQW1vdW50BQpsb2NrQW1vdW50BBJ1c2VyTG9ja2VkSGVpZ3ROZXcJAGQCBQZoZWlnaHQFCmxvY2tQZXJpb2QEFHVzZXJBbW91bnRWaXJ0dWFsTmV3CQBkAgkAawMFE3VzZXJMb2NrZWRBbW91bnROZXcFCGxvY2tDb2VmBRJsb2NrQm9vc3RDb2VmU2NhbGUFE3VzZXJTdGFrZWRBbW91bnROZXcEDSR0MDMyMjk3MzIzNzkJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzMjI5NzMyMzc5Al8xBA1ib29zdEludGVyZXN0CAUNJHQwMzIyOTczMjM3OQJfMgQLY2xhaW1BbW91bnQIBQ0kdDAzMjI5NzMyMzc5Al8zBAp0b1RyZWFzdXJlCAUNJHQwMzIyOTczMjM3OQJfNAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc1N0YWtlZAUTdXNlclN0YWtlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUWa1VzZXJTaGFyZVRva2Vuc0xvY2tlZAUTdXNlckxvY2tlZEFtb3VudE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUca1VzZXJTaGFyZVRva2Vuc0xvY2tlZEhlaWdodAUSdXNlckxvY2tlZEhlaWd0TmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRprVXNlclNoYXJlVG9rZW5zTG9ja2VkVHlwZQUIbG9ja1R5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFF2tVc2VyU2hhcmVUb2tlbnNWaXJ0dWFsBRR1c2VyQW1vdW50VmlydHVhbE5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRNrU2hhcmVUb2tlbnNWaXJ0dWFsCQBkAgkAZQIFEXRvdGFsU2hhcmVWaXJ0dWFsBRF1c2VyQW1vdW50VmlydHVhbAUUdXNlckFtb3VudFZpcnR1YWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFWtGYXJtVXNlckxhc3RJbnRlcmVzdAUMZmFybUludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRZrQm9vc3RVc2VyTGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtGYXJtTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUSa0Jvb3N0TGFzdEludGVyZXN0BQ1ib29zdEludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tMYXN0SW50ZXJlc3RIZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUOa0F2YWlsYWJsZVNXT1AFEWF2YWlsYWJsZUZ1bmRzTmV3CQDMCAIJAQdSZWlzc3VlAwUEU1dPUAUKdG9UcmVhc3VyZQYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmFybWluZ1RyZWFzdXJlQWRkcgUKdG9UcmVhc3VyZQUEU1dPUAUDbmlsAWkBDnVubG9ja1VzZXJMb2NrAgRwb29sBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAED3VzZXJMb2NrZWRIZWlndAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFHGtVc2VyU2hhcmVUb2tlbnNMb2NrZWRIZWlnaHQJAKwCAgkArAICCQCsAgIJAKwCAgIRVGhlcmUgaXMgbm8gcG9vbCAFBHBvb2wCCSBvciB1c2VyIAUEdXNlcgIJd2l0aCBsb2NrAwkAZgIFD3VzZXJMb2NrZWRIZWlndAUGaGVpZ2h0CQACAQkArAICAiJZb3UgY2FuJ3QgdW5sb2NrIHNoYXJldG9rZW5zIHRpbGwgCQCkAwEFD3VzZXJMb2NrZWRIZWlndAkAzggCCQESdW5sb2NrVXNlckxvY2tDYWxjAwUBaQUEcG9vbAUEdXNlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMFDWtMb2NrV2F2ZXNGZWUFBHVuaXQFA25pbAFpARh1bmxvY2tVc2VyTG9ja0RlcHJlY2F0ZWQCBHBvb2wEdXNlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpAwkBASEBCQERZ2V0RGVwcmVjYXRlZFBvb2wBBQRwb29sCQACAQIXUG9vbCBtdXN0IGJlIGRlcHJlY2F0ZWQDCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBRxrVXNlclNoYXJlVG9rZW5zTG9ja2VkSGVpZ2h0CQDOCAIJARJ1bmxvY2tVc2VyTG9ja0NhbGMDBQFpBQRwb29sBQR1c2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwUNa0xvY2tXYXZlc0ZlZQUEdW5pdAUDbmlsBQNuaWwBaQETd2l0aGRyYXdTaGFyZVRva2VucwIEcG9vbBlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50CQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACQEXY2FsY1dpdGhkcmF3U2hhcmVUb2tlbnMEBQFpCAUBaQZjYWxsZXIFBHBvb2wFGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQBaQEbd2l0aGRyYXdTaGFyZVRva2Vuc0Zyb21Qb29sAwtjYWxsZXJCeXRlcwRwb29sGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAJAQt2YWx1ZU9yRWxzZQIJAQppc1Bvb2xDYWxsAgUBaQUEcG9vbAkBF2NhbGNXaXRoZHJhd1NoYXJlVG9rZW5zBAUBaQkBB0FkZHJlc3MBBQtjYWxsZXJCeXRlcwUEcG9vbAUZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAFpAQVjbGFpbQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQBcgkBCWNhbGNDbGFpbQMFAWkFBHBvb2wIBQFpBmNhbGxlcgMJAAACCAUBcgJfMgAACQACAQIZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAUBcgFpAQ1jbGFpbUludGVybmFsAgRwb29sBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAkBC3ZhbHVlT3JFbHNlAgkBCmlzU2VsZkNhbGwBBQFpCQEJY2FsY0NsYWltAwUBaQUEcG9vbAkBB0FkZHJlc3MBBQZjYWxsZXIBaQENY2xhaW1BbmRTdGFrZQEEcG9vbAkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50AwkAAAIFC2NsYWltQW1vdW50AAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBApzdGFrZVRvR292CQD8BwQFCmdvdkFkZHJlc3MCE2xvY2tTV09QRnJvbUZhcm1pbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEU1dPUAULY2xhaW1BbW91bnQFA25pbAMJAAACBQpzdGFrZVRvR292BQpzdGFrZVRvR292BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIY2xhaW1BbGwBBXBvb2xzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACgEIY2xhaW1JbnYCCmNsYWltVG90YWwEcG9vbAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50CQBkAgUKY2xhaW1Ub3RhbAULY2xhaW1BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECmNsYWltVG90YWwKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNsYWltSW52AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAMJAAACBQpjbGFpbVRvdGFsAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUKY2xhaW1Ub3RhbAUEU1dPUAUDbmlsAWkBEGNsYWltQWxsQW5kU3Rha2UBBXBvb2xzCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUACgEIY2xhaW1JbnYCCmNsYWltVG90YWwEcG9vbAQLY2xhaW1BbW91bnQKAAFACQD8BwQFBHRoaXMCDWNsYWltSW50ZXJuYWwJAMwIAgUEcG9vbAkAzAgCCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQDCQAAAgULY2xhaW1BbW91bnQFC2NsYWltQW1vdW50CQBkAgUKY2xhaW1Ub3RhbAULY2xhaW1BbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4ECmNsYWltVG90YWwKAAIkbAUFcG9vbHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNsYWltSW52AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA2MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAMJAAACBQpjbGFpbVRvdGFsAAAJAAIBAhlZb3UgaGF2ZSAwIGF2YWlsYWJsZSBTV09QBApzdGFrZVRvR292CQD8BwQFCmdvdkFkZHJlc3MCE2xvY2tTV09QRnJvbUZhcm1pbmcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEU1dPUAUKY2xhaW1Ub3RhbAUDbmlsAwkAAAIFCnN0YWtlVG9Hb3YFCnN0YWtlVG9Hb3YFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARd1cGRhdGVVc2VyQm9vc3RJbnRlcmVzdAIEcG9vbAR1c2VyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUAAwkBAiE9AggFAWkGY2FsbGVyBQ12b3RpbmdBZGRyZXNzCQACAQIjT25seSB2b2l0aW5nIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EDSR0MDM3MTI4MzcyMTAJAQljbGFpbUNhbGMCBQRwb29sBQR1c2VyBAxmYXJtSW50ZXJlc3QIBQ0kdDAzNzEyODM3MjEwAl8xBA1ib29zdEludGVyZXN0CAUNJHQwMzcxMjgzNzIxMAJfMgQLY2xhaW1BbW91bnQIBQ0kdDAzNzEyODM3MjEwAl8zBAp0b1RyZWFzdXJlCAUNJHQwMzcxMjgzNzIxMAJfNAQRYXZhaWxhYmxlRnVuZHNOZXcJAGQCCQERdXNlckF2YWlsYWJsZVNXT1ACBQRwb29sBQR1c2VyBQtjbGFpbUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgUVa0Zhcm1Vc2VyTGFzdEludGVyZXN0BQxmYXJtSW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXIFFmtCb29zdFVzZXJMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAURa0Zhcm1MYXN0SW50ZXJlc3QFDGZhcm1JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRJrQm9vc3RMYXN0SW50ZXJlc3QFDWJvb3N0SW50ZXJlc3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa0xhc3RJbnRlcmVzdEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyBQ5rQXZhaWxhYmxlU1dPUAURYXZhaWxhYmxlRnVuZHNOZXcJAMwIAgkBB1JlaXNzdWUDBQRTV09QBQp0b1RyZWFzdXJlBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmYXJtaW5nVHJlYXN1cmVBZGRyBQp0b1RyZWFzdXJlBQRTV09QBQNuaWwBaQEIc2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwkBASEBBQZhY3RpdmUJAAIBCQCsAgICIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa0NhdXNlAhp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAkBB3N1c3BlbmQBAg9QYXVzZWQgYnkgYWRtaW4BaQEIYWN0aXZhdGUACQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwUGYWN0aXZlCQACAQIWREFwcCBpcyBhbHJlYWR5IGFjdGl2ZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUGa0NhdXNlBQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACqdeVXg==", "height": 3513423, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4wFZR8eisJpTh8CmikypBA8VNo3Fr9sYaGs3U2eerd9u Next: AUQbLFpXQ616chpogKqx7ajwcUqfERKeujfpDDMRaVyU Diff:
OldNewDifferences
55
66 let b = "active_all_contracts"
77
8-let c = "shutdown_cause"
8+let c = "deprecated_"
99
10-let d = "_current_pool_fraction_reward"
10+let d = "shutdown_cause"
1111
12-let e = "_previous_pool_fraction_reward"
12+let e = "_current_pool_fraction_reward"
1313
14-let f = "_pool_reward_update_height"
14+let f = "_previous_pool_fraction_reward"
1515
16-let g = "reward_update_height"
16+let g = "_pool_reward_update_height"
1717
18-let h = "_share_tokens_locked"
18+let h = "reward_update_height"
1919
20-let i = "_share_tokens_blocked"
20+let i = "_share_tokens_locked"
2121
22-let j = "_share_tokens_blocked_type"
22+let j = "_share_tokens_blocked"
2323
24-let k = "_share_tokens_blocked_height"
24+let k = "_share_tokens_blocked_type"
2525
26-let l = "_share_tokens_virtual"
26+let l = "_share_tokens_blocked_height"
2727
28-let m = "_total_share_tokens_locked"
28+let m = "_share_tokens_virtual"
2929
30-let n = "_total_share_tokens_virtual"
30+let n = "_total_share_tokens_locked"
3131
32-let o = "_lock_params"
32+let o = "_total_share_tokens_virtual"
3333
34-let p = "lock_waves_fee"
34+let p = "_lock_params"
3535
36-let q = "_boost_coef"
36+let q = "lock_waves_fee"
3737
38-let r = "_last_interest"
38+let r = "_boost_coef"
3939
4040 let s = "_last_interest"
4141
42-let t = "_last_interest_b"
42+let t = "_last_interest"
4343
44-let u = "_last_interest_u_b"
44+let u = "_last_interest_b"
4545
46-let v = "_last_interest_height"
46+let v = "_last_interest_u_b"
4747
48-let w = "SWOP_id"
48+let w = "_last_interest_height"
4949
50-let x = "_available_SWOP"
50+let x = "SWOP_id"
5151
52-let y = "_harvest_pool_vote_gSWOP"
52+let y = "_available_SWOP"
5353
54-let z = "_pool_vote_gSWOP"
54+let z = "_harvest_pool_vote_gSWOP"
5555
56-let A = "_user_vote_gSWOP"
56+let A = "_pool_vote_gSWOP"
5757
58-let B = "_pool_struc"
58+let B = "_user_vote_gSWOP"
5959
60-let C = "_user_pool_struc"
60+let C = "_pool_struc"
6161
62-let D = "_harvest_user_pool_vote_gSWOP"
62+let D = "_user_pool_struc"
6363
64-let E = "first_harvest_height"
64+let E = "_harvest_user_pool_vote_gSWOP"
6565
66-let F = "share_limit_on_first_harvest"
66+let F = "first_harvest_height"
6767
68-let G = "_strat_b_farm_interest"
68+let G = "share_limit_on_first_harvest"
6969
70-let H = "cpmm_contract"
70+let H = "_strat_b_farm_interest"
7171
72-let I = "admin_pub_1"
72+let I = "cpmm_contract"
7373
74-let J = "admin_pub_2"
74+let J = "admin_pub_1"
7575
76-let K = "admin_pub_3"
76+let K = "admin_pub_2"
7777
78-let L = "admin_invoke_pub"
78+let L = "admin_pub_3"
7979
80-let M = "money_box_address"
80+let M = "admin_invoke_pub"
8181
82-let N = "voting_address"
82+let N = "money_box_address"
8383
84-let O = "governance_address"
84+let O = "voting_address"
8585
86-let P = "lp_farming"
86+let P = "governance_address"
8787
88-let Q = "farming_treasure"
88+let Q = "lp_farming"
8989
90-let R = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
90+let R = "farming_treasure"
9191
92-let S = 10000000000
92+let S = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
9393
94-let T = 100000000
94+let T = 10000000000
9595
96-let U = 1000
96+let U = 100000000
9797
98-let V = 500
98+let V = 1000
9999
100-let W = 2976848
100+let W = 500
101101
102-let X = 100000000000000
102+let X = 2976848
103103
104-let Y = 526330
104+let Y = 100000000000000
105105
106-func Z (aa) = {
107- let ab = getString(R, aa)
108- if ($isInstanceOf(ab, "String"))
106+let Z = 526330
107+
108+func aa (ab) = {
109+ let ac = getString(S, ab)
110+ if ($isInstanceOf(ac, "String"))
109111 then {
110- let ac = ab
111- fromBase58String(ac)
112+ let ad = ac
113+ fromBase58String(ad)
112114 }
113115 else {
114- let ad = ab
115- throw((aa + "is empty"))
116+ let ae = ac
117+ throw((ab + "is empty"))
116118 }
117119 }
118120
119121
120-let ae = Z(I)
122+let af = aa(J)
121123
122-let af = Z(J)
124+let ag = aa(K)
123125
124-let ag = Z(K)
126+let ah = aa(L)
125127
126-let ah = Address(Z(M))
128+let ai = Address(aa(N))
127129
128-let ai = Address(Z(N))
130+let aj = Address(aa(O))
129131
130-let aj = Address(Z(O))
132+let ak = Address(aa(P))
131133
132-let ak = Z(L)
134+let al = aa(M)
133135
134-let al = Address(Z(P))
136+let am = Address(aa(Q))
135137
136-let am = Address(Z(Q))
138+let an = Address(aa(R))
137139
138-let an = Address(Z(H))
140+let ao = Address(aa(I))
139141
140-let ao = getBooleanValue(this, a)
142+let ap = getBooleanValue(this, a)
141143
142-let ap = valueOrElse(getBoolean(R, b), true)
144+let aq = valueOrElse(getBoolean(S, b), true)
143145
144-let aq = fromBase58String(getStringValue(this, w))
146+let ar = fromBase58String(getStringValue(this, x))
145147
146-func ar () = {
147- let as = ((height - W) / Y)
148- func at (au,av) = {
149- let aw = au
150- let ax = aw._1
151- let ay = aw._2
152- if ((as > av))
153- then $Tuple2(fraction(ax, 75, 100), ax)
154- else $Tuple2(ax, ay)
148+func as () = {
149+ let at = ((height - X) / Z)
150+ func au (av,aw) = {
151+ let ax = av
152+ let ay = ax._1
153+ let az = ax._2
154+ if ((at > aw))
155+ then $Tuple2(fraction(ay, 75, 100), ay)
156+ else $Tuple2(ay, az)
155157 }
156158
157- let az = {
158- let aA = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
159- let aB = size(aA)
160- let aC = $Tuple2(X, X)
161- func aD (aE,aF) = if ((aF >= aB))
162- then aE
163- else at(aE, aA[aF])
159+ let aA = {
160+ let aB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
161+ let aC = size(aB)
162+ let aD = $Tuple2(Y, Y)
163+ func aE (aF,aG) = if ((aG >= aC))
164+ then aF
165+ else au(aF, aB[aG])
164166
165- func aG (aE,aF) = if ((aF >= aB))
166- then aE
167+ func aH (aF,aG) = if ((aG >= aC))
168+ then aF
167169 else throw("List size exceeds 20")
168170
169- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
171+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
170172 }
171- let ax = az._1
172- let ay = az._2
173- $Tuple3((ax / Y), (ay / Y), (W + (Y * as)))
173+ let ay = aA._1
174+ let az = aA._2
175+ $Tuple3((ay / Z), (az / Z), (X + (Z * at)))
174176 }
175177
176178
177-func aH (aI) = valueOrElse(getInteger(Address(fromBase58String(aI)), E), 0)
179+func aI (aJ) = valueOrElse(getInteger(Address(fromBase58String(aJ)), F), 0)
178180
179181
180-func aJ (aI) = valueOrErrorMessage(getInteger(aI, F), ("No data on the key: " + F))
182+func aK (aJ) = valueOrErrorMessage(getInteger(aJ, G), ("No data on the key: " + G))
181183
182184
183-func aK (aI) = valueOrErrorMessage(getInteger(this, (aI + m)), (("No data on the key: " + aI) + m))
185+func aL (aJ) = valueOrErrorMessage(getInteger(this, (aJ + n)), (("No data on the key: " + aJ) + n))
184186
185187
186-func aL (aI) = valueOrElse(getInteger(ai, (aI + z)), valueOrElse(parseInt(split(valueOrElse(getString(ai, (aI + B)), ""), "_")[0]), 0))
188+func aM (aJ) = valueOrElse(getInteger(aj, (aJ + A)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (aJ + C)), ""), "_")[0]), 0))
187189
188190
189-func aM (aI,aN) = valueOrElse(getInteger(ai, (((aN + "_") + aI) + A)), valueOrElse(parseInt(split(valueOrElse(getString(ai, (((aN + "_") + aI) + C)), ""), "_")[0]), 0))
191+func aN (aJ,aO) = valueOrElse(getInteger(aj, (((aO + "_") + aJ) + B)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((aO + "_") + aJ) + D)), ""), "_")[0]), 0))
190192
191193
192-func aO (aI) = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
194+func aP (aJ) = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
193195
194196
195-func aP (aQ) = {
196- let ab = aQ
197- if ($isInstanceOf(ab, "ByteVector"))
197+func aQ (aR) = {
198+ let ac = aR
199+ if ($isInstanceOf(ac, "ByteVector"))
198200 then {
199- let aR = ab
200- assetBalance(this, aR)
201+ let aS = ac
202+ assetBalance(this, aS)
201203 }
202- else if ($isInstanceOf(ab, "Unit"))
204+ else if ($isInstanceOf(ac, "Unit"))
203205 then {
204- let aS = ab
206+ let aT = ac
205207 wavesBalance(this).available
206208 }
207209 else throw("Match error")
208210 }
209211
210212
211-func aT (aU,aV) = {
212- let aW = value(assetInfo(aU)).decimals
213+func aU (aV,aW) = {
213214 let aX = value(assetInfo(aV)).decimals
214- let aY = ((aX - aW) + 8)
215- pow(10, 0, aY, 0, 0, DOWN)
215+ let aY = value(assetInfo(aW)).decimals
216+ let aZ = ((aY - aX) + 8)
217+ pow(10, 0, aZ, 0, 0, DOWN)
216218 }
217219
218220
219-func aZ (aI,aN) = valueOrElse(getInteger(this, (((aI + "_") + aN) + x)), 0)
221+func ba (aJ,aO) = valueOrElse(getInteger(this, (((aJ + "_") + aO) + y)), 0)
220222
221223
222-func ba (aI) = {
223- let bb = ar()
224- let bc = bb._1
225- let bd = bb._2
226- let be = bb._3
227- let bf = valueOrErrorMessage(getInteger(aj, (aI + d)), (((("No data on the key: " + aI) + d) + " at address ") + toString(aj)))
228- let bg = valueOrErrorMessage(getInteger(aj, g), ((("No data on the key: " + g) + " at address ") + toString(aj)))
229- let bh = valueOrElse(getInteger(aj, (aI + f)), bg)
230- let bi = valueOrErrorMessage(getInteger(aj, (aI + e)), (((("No data on the key: " + aI) + e) + " at address ") + toString(aj)))
231- let bj = fraction(bc, bf, S)
232- let bk = fraction(bc, bi, S)
233- let bl = fraction(bd, bf, S)
234- let bm = fraction(bd, bi, S)
235- if (if ((bj > bc))
224+func bb (aJ) = {
225+ let bc = as()
226+ let bd = bc._1
227+ let be = bc._2
228+ let bf = bc._3
229+ let bg = valueOrErrorMessage(getInteger(ak, (aJ + e)), (((("No data on the key: " + aJ) + e) + " at address ") + toString(ak)))
230+ let bh = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
231+ let bi = valueOrElse(getInteger(ak, (aJ + g)), bh)
232+ let bj = valueOrErrorMessage(getInteger(ak, (aJ + f)), (((("No data on the key: " + aJ) + f) + " at address ") + toString(ak)))
233+ let bk = fraction(bd, bg, T)
234+ let bl = fraction(bd, bj, T)
235+ let bm = fraction(be, bg, T)
236+ let bn = fraction(be, bj, T)
237+ if (if ((bk > bd))
236238 then true
237- else (bk > bd))
239+ else (bl > be))
238240 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
239- else $Tuple7(bj, bg, bk, bh, be, bl, bm)
241+ else $Tuple7(bk, bh, bl, bi, bf, bm, bn)
240242 }
241243
242244
243-func bn (aI) = {
244- let bo = valueOrErrorMessage(getInteger(this, (aI + r)), (("No data on the key: " + aI) + r))
245- let bp = valueOrElse(getInteger(this, (aI + t)), 0)
246- let bq = valueOrElse(getInteger(this, (aI + v)), height)
247- $Tuple3(bq, bo, bp)
245+func bo (aJ) = {
246+ let bp = valueOrErrorMessage(getInteger(this, (aJ + s)), (("No data on the key: " + aJ) + s))
247+ let bq = valueOrElse(getInteger(this, (aJ + u)), 0)
248+ let br = valueOrElse(getInteger(this, (aJ + w)), height)
249+ $Tuple3(br, bp, bq)
248250 }
249251
250252
251-func br (aI,bs) = {
252- let bt = valueOrElse(getInteger(this, (aI + q)), V)
253- fraction(bs, U, (bt + U))
253+func bs (aJ,bt) = {
254+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
255+ fraction(bt, V, (bu + V))
254256 }
255257
256258
257-func bu (aI,bs) = {
258- let bt = valueOrElse(getInteger(this, (aI + q)), V)
259- fraction(bs, bt, (bt + U))
259+func bv (aJ,bt) = {
260+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
261+ fraction(bt, bu, (bu + V))
260262 }
261263
262264
263-func bv (aI,bq,bg,bh,bo,bp,bw,bx,by,bz,bA,bB) = {
264- let bC = if (if (if ((bg > bB))
265- then (bg == bh)
265+func bw (aJ,br,bh,bi,bp,bq,bx,by,bz,bA,bB,bC) = {
266+ let bD = if (if (if ((bh > bC))
267+ then (bh == bi)
266268 else false)
267269 then true
268- else if ((bB > bg))
269- then (bg != bh)
270+ else if ((bC > bh))
271+ then (bh != bi)
270272 else false)
271273 then {
272- let bD = (bz * (bB - bq))
273- $Tuple3(bD, bo, bp)
274+ let bE = (bA * (bC - br))
275+ $Tuple3(bE, bp, bq)
274276 }
275- else if (if (if ((bB > bg))
276- then (bg == bh)
277+ else if (if (if ((bC > bh))
278+ then (bh == bi)
277279 else false)
278- then (bq > bg)
280+ then (br > bh)
279281 else false)
280282 then {
281- let bD = (bx * (bB - bq))
282- $Tuple3(bD, bo, bp)
283+ let bE = (by * (bC - br))
284+ $Tuple3(bE, bp, bq)
283285 }
284286 else {
285- let bE = (bz * (bg - bq))
286- let bF = (bo + fraction(br(aI, bE), bA, by))
287- let bG = (bp + (if ((bw > 0))
288- then fraction(bu(aI, bE), T, bw)
287+ let bF = (bA * (bh - br))
288+ let bG = (bp + fraction(bs(aJ, bF), bB, bz))
289+ let bH = (bq + (if ((bx > 0))
290+ then fraction(bv(aJ, bF), U, bx)
289291 else 0))
290- let bH = (bx * (bB - bg))
291- $Tuple3(bH, bF, bG)
292+ let bI = (by * (bC - bh))
293+ $Tuple3(bI, bG, bH)
292294 }
293- let bI = bC._1
294- let bJ = bC._2
295- let bK = bC._3
296- let bL = (bJ + fraction(br(aI, bI), bA, by))
297- let bM = (bK + (if ((bw > 0))
298- then fraction(bu(aI, bI), T, bw)
295+ let bJ = bD._1
296+ let bK = bD._2
297+ let bL = bD._3
298+ let bM = (bK + fraction(bs(aJ, bJ), bB, bz))
299+ let bN = (bL + (if ((bx > 0))
300+ then fraction(bv(aJ, bJ), U, bx)
299301 else 0))
300- $Tuple2(bL, bM)
302+ $Tuple2(bM, bN)
301303 }
302304
303305
304-func bN (aI,aN) = {
305- let bA = aT(aq, aO(aI))
306- let bw = aL(aI)
307- let bO = aM(aI, aN)
308- let bP = aK(aI)
309- let bQ = valueOrElse(getInteger(this, (aI + n)), bP)
310- let bR = valueOrElse(getInteger(this, (aI + G)), 0)
311- let bS = bn(aI)
312- let bq = bS._1
313- let bo = bS._2
314- let bp = bS._3
315- let bT = ba(aI)
316- let bx = bT._1
317- let bg = bT._2
318- let bz = bT._3
319- let bh = bT._4
320- let bU = bT._5
321- let bV = bT._6
322- let bW = bT._7
323- let bX = valueOrElse(getInteger(this, (((aI + "_") + aN) + s)), bo)
324- let bY = valueOrElse(getInteger(this, (((aI + "_") + aN) + u)), if (if ((bR > bX))
325- then (bO > 0)
306+func bO (aJ,aO) = {
307+ let bB = aU(ar, aP(aJ))
308+ let bx = aM(aJ)
309+ let bP = aN(aJ, aO)
310+ let bQ = aL(aJ)
311+ let bR = valueOrElse(getInteger(this, (aJ + o)), bQ)
312+ let bS = valueOrElse(getInteger(this, (aJ + H)), 0)
313+ let bT = bo(aJ)
314+ let br = bT._1
315+ let bp = bT._2
316+ let bq = bT._3
317+ let bU = bb(aJ)
318+ let by = bU._1
319+ let bh = bU._2
320+ let bA = bU._3
321+ let bi = bU._4
322+ let bV = bU._5
323+ let bW = bU._6
324+ let bX = bU._7
325+ let bY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + t)), bp)
326+ let bZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + v)), if (if ((bS > bY))
327+ then (bP > 0)
326328 else false)
327329 then 0
328- else bp)
329- let bZ = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
330- let ca = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), bZ)
331- if ((bQ == 0))
330+ else bq)
331+ let ca = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
332+ let cb = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), ca)
333+ if ((bR == 0))
332334 then {
333- let cb = if ((bU > bq))
334- then ((bV * (bU - bq)) + (bx * (height - bU)))
335- else (bx * (height - bq))
336- $Tuple4(bo, bp, 0, cb)
335+ let cc = if ((bV > br))
336+ then ((bW * (bV - br)) + (by * (height - bV)))
337+ else (by * (height - br))
338+ $Tuple4(bp, bq, 0, cc)
337339 }
338340 else {
339- let cc = if ((bU > bq))
341+ let cd = if ((bV > br))
340342 then {
341- let cd = bv(aI, bq, bg, bh, bo, bp, bw, bV, bQ, bW, bA, bU)
342- let ce = cd._1
343- let cf = cd._2
344- $Tuple3(ce, cf, bU)
343+ let ce = bw(aJ, br, bh, bi, bp, bq, bx, bW, bR, bX, bB, bV)
344+ let cf = ce._1
345+ let cg = ce._2
346+ $Tuple3(cf, cg, bV)
345347 }
346- else $Tuple3(bo, bp, bq)
347- let cg = cc._1
348- let ch = cc._2
349- let ci = cc._3
350- let cj = bv(aI, ci, bg, bh, cg, ch, bw, bx, bQ, bz, bA, height)
351- let bL = cj._1
352- let bM = cj._2
353- let ck = fraction(ca, (bL - bX), bA)
354- let bt = valueOrElse(getInteger(this, (aI + q)), V)
355- let cl = fraction(fraction(ca, (bL - max([bX, bR])), bA), bt, U)
356- let cm = fraction((bM - bY), bO, T)
357- let cn = min([cl, cm])
358- let cb = (cl - cn)
359- if ((0 > cb))
348+ else $Tuple3(bp, bq, br)
349+ let ch = cd._1
350+ let ci = cd._2
351+ let cj = cd._3
352+ let ck = bw(aJ, cj, bh, bi, ch, ci, bx, by, bR, bA, bB, height)
353+ let bM = ck._1
354+ let bN = ck._2
355+ let cl = fraction(cb, (bM - bY), bB)
356+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
357+ let cm = fraction(fraction(cb, (bM - max([bY, bS])), bB), bu, V)
358+ let cn = fraction((bN - bZ), bP, U)
359+ let co = min([cm, cn])
360+ let cc = (cm - co)
361+ if ((0 > cc))
360362 then throw("toTreasury < 0")
361- else $Tuple4(bL, bM, (ck + cn), cb)
363+ else $Tuple4(bM, bN, (cl + co), cc)
362364 }
363365 }
364366
365367
366-func co (cp,aN) = {
367- func cq (au,aI) = {
368- let cr = au
369- let cs = cr._1
370- let ct = cr._2
371- let cu = bN(aI, aN)
372- let cv = cu._1
373- let cw = cu._2
374- let cx = cu._3
375- let cy = cu._4
376- let cz = (aZ(aI, aN) + cx)
377- $Tuple2((cs :+ aI), (ct :+ cz))
368+func cp (cq,aO) = {
369+ func cr (av,aJ) = {
370+ let cs = av
371+ let ct = cs._1
372+ let cu = cs._2
373+ let cv = bO(aJ, aO)
374+ let cw = cv._1
375+ let cx = cv._2
376+ let cy = cv._3
377+ let cz = cv._4
378+ let cA = (ba(aJ, aO) + cy)
379+ $Tuple2((ct :+ aJ), (cu :+ cA))
378380 }
379381
380- let aA = cp
381- let aB = size(aA)
382- let aC = $Tuple2(nil, nil)
383- func aD (aE,aF) = if ((aF >= aB))
384- then aE
385- else cq(aE, aA[aF])
382+ let aB = cq
383+ let aC = size(aB)
384+ let aD = $Tuple2(nil, nil)
385+ func aE (aF,aG) = if ((aG >= aC))
386+ then aF
387+ else cr(aF, aB[aG])
386388
387- func aG (aE,aF) = if ((aF >= aB))
388- then aE
389+ func aH (aF,aG) = if ((aG >= aC))
390+ then aF
389391 else throw("List size exceeds 60")
390392
391- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
393+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
392394 }
393395
394396
395-func cA (aI,aN,cB,cC,cD) = if ((aH(aI) > height))
397+func cB (aJ,aO,cC,cD,cE) = if ((aI(aJ) > height))
396398 then {
397- let cE = valueOrElse(getInteger(ai, (aI + y)), 0)
398- let cF = valueOrElse(getInteger(ai, (((aN + "_") + aI) + D)), 0)
399- let cG = aJ(addressFromStringValue(aI))
400- let cH = (fraction(cG, cF, cE) - cB)
401- if ((cD > 0))
399+ let cF = valueOrElse(getInteger(aj, (aJ + z)), 0)
400+ let cG = valueOrElse(getInteger(aj, (((aO + "_") + aJ) + E)), 0)
401+ let cH = aK(addressFromStringValue(aJ))
402+ let cI = (fraction(cH, cG, cF) - cC)
403+ if ((cE > 0))
402404 then throw("You can't lock shareTokens till first harvest end.")
403- else if ((cF == 0))
405+ else if ((cG == 0))
404406 then 0
405- else if ((cC >= cH))
406- then (cC - cH)
407+ else if ((cD >= cI))
408+ then (cD - cI)
407409 else 0
408410 }
409411 else 0
410412
411413
412-func cI (cJ) = {
413- let cK = split(valueOrErrorMessage(getString(this, (toString(cJ) + o)), ("There are no key for lock type" + toString(cJ))), "_")
414- $Tuple2(parseIntValue(cK[0]), parseIntValue(cK[1]))
414+func cJ (cK) = {
415+ let cL = split(valueOrErrorMessage(getString(this, (toString(cK) + p)), ("There are no key for lock type" + toString(cK))), "_")
416+ $Tuple2(parseIntValue(cL[0]), parseIntValue(cL[1]))
415417 }
416418
417419
418-func cL (cM) = [BooleanEntry(a, false), StringEntry(c, cM)]
420+func cM (cN) = [BooleanEntry(a, false), StringEntry(d, cN)]
419421
420422
421-func cN () = if (if (ao)
422- then ap
423+func cO () = if (if (ap)
424+ then aq
423425 else false)
424426 then unit
425427 else throw("DApp is inactive at this moment")
426428
427429
428-func cO (av) = if (containsElement([ae, af, ag], av.callerPublicKey))
430+func cP (aw) = if (containsElement([af, ag, ah], aw.callerPublicKey))
429431 then unit
430432 else throw("Only admin can call this function")
431433
432434
433-func cP (av,aI) = if (if ((toString(av.caller) == aI))
435+func cQ (aw,aJ) = if (if ((toString(aw.caller) == aJ))
434436 then true
435- else (av.caller == an))
437+ else (aw.caller == ao))
436438 then unit
437439 else throw("Only pool can call this function")
438440
439441
440-func cQ (av) = if ((av.caller == this))
442+func cR (aJ) = valueOrElse(getBoolean(S, (c + aJ)), false)
443+
444+
445+func cS (aJ) = if (!(cR(aJ)))
446+ then unit
447+ else throw("Pool is deprecated. Only unlock action allowed.")
448+
449+
450+func cT (aw) = if ((aw.caller == this))
441451 then unit
442452 else throw("Only contract itself can call this function")
443453
444454
445-func cR (av,cS,aI,cD) = {
446- let cT = aO(aI)
447- let aN = toString(cS)
448- let cU = aK(aI)
449- let bQ = valueOrElse(getInteger(this, (aI + n)), cU)
450- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
451- let cW = valueOrElse(getInteger(this, (((aI + "_") + aN) + k)), 0)
452- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
453- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
454- let cZ = ((cV + cX) + av.payments[0].amount)
455- let da = cI(cD)
456- let db = da._1
457- let dc = da._2
458- let dd = getIntegerValue(this, p)
459- if ((av.payments[0].assetId != cT))
455+func cU (aw,cV,aJ,cE) = {
456+ let cW = aP(aJ)
457+ let aO = toString(cV)
458+ let cX = aL(aJ)
459+ let bR = valueOrElse(getInteger(this, (aJ + o)), cX)
460+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
461+ let cZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + l)), 0)
462+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
463+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
464+ let dc = ((cY + da) + aw.payments[0].amount)
465+ let dd = cJ(cE)
466+ let de = dd._1
467+ let df = dd._2
468+ let dg = getIntegerValue(this, q)
469+ if ((aw.payments[0].assetId != cW))
460470 then throw("Wrong sharetoken in payment")
461- else if ((0 >= av.payments[0].amount))
471+ else if ((0 >= aw.payments[0].amount))
462472 then throw("Payment amount must be greater than 0")
463- else if ((0 > cD))
473+ else if ((0 > cE))
464474 then throw("lockType must be >= 0")
465475 else {
466- let de = cA(aI, aN, cV, av.payments[0].amount, cD)
467- if ((de == de))
476+ let dh = cB(aJ, aO, cY, aw.payments[0].amount, cE)
477+ if ((dh == dh))
468478 then {
469- let df = if ((cD == 0))
479+ let di = if ((cE == 0))
470480 then {
471- let dg = ((cY + av.payments[0].amount) - de)
472- $Tuple2([IntegerEntry((((aI + "_") + aN) + h), ((cV + av.payments[0].amount) - de)), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ + av.payments[0].amount) - de)), ScriptTransfer(cS, de, av.payments[0].assetId)], ((cU + av.payments[0].amount) - de))
481+ let dj = ((db + aw.payments[0].amount) - dh)
482+ $Tuple2([IntegerEntry((((aJ + "_") + aO) + i), ((cY + aw.payments[0].amount) - dh)), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR + aw.payments[0].amount) - dh)), ScriptTransfer(cV, dh, aw.payments[0].assetId)], ((cX + aw.payments[0].amount) - dh))
473483 }
474- else if (if ((cW == 0))
475- then if (if ((2 > size(av.payments)))
484+ else if (if ((cZ == 0))
485+ then if (if ((2 > size(aw.payments)))
476486 then true
477- else (av.payments[1].assetId != unit))
487+ else (aw.payments[1].assetId != unit))
478488 then true
479- else (dd > av.payments[1].amount)
489+ else (dg > aw.payments[1].amount)
480490 else false)
481- then throw((("You need to pay additional waves comission " + toString(dd)) + "WAVES"))
482- else if ((cW > (height + db)))
491+ then throw((("You need to pay additional waves comission " + toString(dg)) + "WAVES"))
492+ else if ((cZ > (height + de)))
483493 then throw("You cannot lock sharetokens for a period less than what you have already locked")
484494 else {
485- let dh = (cX + av.payments[0].amount)
486- let di = (height + db)
487- let dg = (fraction(dh, dc, U) + cV)
488- $Tuple2([IntegerEntry((((aI + "_") + aN) + i), dh), IntegerEntry((((aI + "_") + aN) + k), di), IntegerEntry((((aI + "_") + aN) + j), cD), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ - cY) + dg))], (cU + av.payments[0].amount))
495+ let dk = (da + aw.payments[0].amount)
496+ let dl = (height + de)
497+ let dj = (fraction(dk, df, V) + cY)
498+ $Tuple2([IntegerEntry((((aJ + "_") + aO) + j), dk), IntegerEntry((((aJ + "_") + aO) + l), dl), IntegerEntry((((aJ + "_") + aO) + k), cE), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR - db) + dj))], (cX + aw.payments[0].amount))
489499 }
490- let dj = df._1
491- let dk = df._2
492- if ((aP(cT) > dk))
500+ let dm = di._1
501+ let dn = di._2
502+ if ((aQ(cW) > dn))
493503 then throw("Balance of share-token is lower than totalAmount")
494504 else {
495- let dl = bN(aI, aN)
496- let bo = dl._1
497- let bp = dl._2
498- let cx = dl._3
499- let dm = dl._4
500- let dn = (aZ(aI, aN) + cx)
501- let do = if ((getString(Address(fromBase58String(aI)), "version") == "3.0.0"))
502- then invoke(al, "updateUserInterest", [aN, aI, cZ], nil)
505+ let do = bO(aJ, aO)
506+ let bp = do._1
507+ let bq = do._2
508+ let cy = do._3
509+ let dp = do._4
510+ let dq = (ba(aJ, aO) + cy)
511+ let dr = if ((getString(Address(fromBase58String(aJ)), "version") == "3.0.0"))
512+ then invoke(am, "updateUserInterest", [aO, aJ, dc], nil)
503513 else 0
504- if ((do == do))
505- then ([IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((aI + m), dk), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)] ++ dj)
514+ if ((dr == dr))
515+ then ([IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((aJ + n), dn), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)] ++ dm)
506516 else throw("Strict value is not equal to itself.")
507517 }
508518 }
511521 }
512522
513523
514-func dp (av,cS,aI,dq) = valueOrElse(cN(), {
515- let dr = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
516- let aN = toString(cS)
517- let ds = bN(aI, aN)
518- let bo = ds._1
519- let bp = ds._2
520- let cx = ds._3
521- let dm = ds._4
522- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
523- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
524- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
525- let dt = (cV - dq)
526- let dn = (aZ(aI, aN) + cx)
527- let du = aK(aI)
528- let bQ = valueOrElse(getInteger(this, (aI + n)), du)
529- let dv = (du - dq)
530- let dw = (bQ - dq)
531- let dg = (cY - dq)
532- if ((dq > cV))
533- then throw("Withdraw amount more then user locked amount")
534- else if ((aP(dr) > du))
535- then throw("Balance of share-token is lower than totalAmount")
536- else {
537- let do = if ((getString(Address(fromBase58String(aI)), "version") == "3.0.0"))
538- then invoke(al, "updateUserInterest", [aN, aI, (cV + cX)], nil)
539- else 0
540- if ((do == do))
541- then [IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + m), dv), IntegerEntry((aI + n), dw), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq), ScriptTransfer(av.caller, dq, dr)]
542- else throw("Strict value is not equal to itself.")
543- }
544- })
524+func ds (aw,cV,aJ,dt) = {
525+ let du = if (cR(aJ))
526+ then invoke(this, "unlockUserLockDeprecated", [aJ, toString(cV)], nil)
527+ else 0
528+ if ((du == du))
529+ then {
530+ let dv = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
531+ let aO = toString(cV)
532+ let dw = bO(aJ, aO)
533+ let bp = dw._1
534+ let bq = dw._2
535+ let cy = dw._3
536+ let dp = dw._4
537+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
538+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
539+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
540+ let dx = (cY - dt)
541+ let dq = (ba(aJ, aO) + cy)
542+ let dy = aL(aJ)
543+ let bR = valueOrElse(getInteger(this, (aJ + o)), dy)
544+ let dz = (dy - dt)
545+ let dA = (bR - dt)
546+ let dj = (db - dt)
547+ if ((dt > cY))
548+ then throw("Withdraw amount more then user locked amount")
549+ else if ((aQ(dv) > dy))
550+ then throw("Balance of share-token is lower than totalAmount")
551+ else {
552+ let dr = if ((getString(Address(fromBase58String(aJ)), "version") == "3.0.0"))
553+ then invoke(am, "updateUserInterest", [aO, aJ, (cY + da)], nil)
554+ else 0
555+ if ((dr == dr))
556+ then [IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + n), dz), IntegerEntry((aJ + o), dA), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar), ScriptTransfer(aw.caller, dt, dv)]
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ }
560+ else throw("Strict value is not equal to itself.")
561+ }
545562
546563
547-func dx (av,aI,cS) = {
548- let dr = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
549- let aN = toString(cS)
550- let by = aK(aI)
551- let dy = bN(aI, aN)
552- let bo = dy._1
553- let bp = dy._2
554- let cx = dy._3
555- let dm = dy._4
556- let cz = (aZ(aI, aN) + cx)
557- if ((aP(dr) > by))
564+func dB (aw,aJ,cV) = {
565+ let dv = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
566+ let aO = toString(cV)
567+ let bz = aL(aJ)
568+ let dC = bO(aJ, aO)
569+ let bp = dC._1
570+ let bq = dC._2
571+ let cy = dC._3
572+ let dp = dC._4
573+ let cA = (ba(aJ, aO) + cy)
574+ if ((aQ(dv) > bz))
558575 then throw("Balance of share-token is lower than totalAmount")
559576 else {
560- let dz = if ((av.caller != this))
561- then [ScriptTransfer(av.caller, cz, aq)]
577+ let dD = if ((aw.caller != this))
578+ then [ScriptTransfer(aw.caller, cA, ar)]
562579 else nil
563- $Tuple2(([IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), 0), Reissue(aq, (dm + cz), true), ScriptTransfer(am, dm, aq)] ++ dz), cz)
580+ $Tuple2(([IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), 0), Reissue(ar, (dp + cA), true), ScriptTransfer(an, dp, ar)] ++ dD), cA)
564581 }
565582 }
566583
567584
568-@Callable(av)
569-func init (dA) = if (isDefined(getString(this, w)))
585+func dE (aw,aJ,aO) = {
586+ let bR = getIntegerValue(this, (aJ + o))
587+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
588+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
589+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
590+ let dx = (cY + da)
591+ let dF = bO(aJ, aO)
592+ let bp = dF._1
593+ let bq = dF._2
594+ let cy = dF._3
595+ let dp = dF._4
596+ let dq = (ba(aJ, aO) + cy)
597+[IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + m), dx), IntegerEntry((aJ + o), ((bR - db) + dx)), IntegerEntry((((aJ + "_") + aO) + y), dq), DeleteEntry((((aJ + "_") + aO) + j)), DeleteEntry((((aJ + "_") + aO) + l)), DeleteEntry((((aJ + "_") + aO) + k)), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
598+ }
599+
600+
601+@Callable(aw)
602+func init (dG) = if (isDefined(getString(this, x)))
570603 then throw("SWOP already initialized")
571604 else {
572- let dB = 100000000000000
573- let dC = Issue("SWOP", "SWOP protocol token", dB, 8, true)
574- let dD = calculateAssetId(dC)
575-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dB, 8, true), StringEntry(w, toBase58String(dD))]
605+ let dH = 100000000000000
606+ let dI = Issue("SWOP", "SWOP protocol token", dH, 8, true)
607+ let dJ = calculateAssetId(dI)
608+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dH, 8, true), StringEntry(x, toBase58String(dJ))]
576609 }
577610
578611
579612
580-@Callable(av)
581-func initPoolShareFarming (aI) = valueOrElse(cO(av), [IntegerEntry((aI + m), 0), IntegerEntry((aI + r), 0), IntegerEntry((aI + t), 0), IntegerEntry((aI + v), height)])
613+@Callable(aw)
614+func initPoolShareFarming (aJ) = valueOrElse(cP(aw), [IntegerEntry((aJ + n), 0), IntegerEntry((aJ + s), 0), IntegerEntry((aJ + u), 0), IntegerEntry((aJ + w), height)])
582615
583616
584617
585-@Callable(av)
586-func updatePoolInterest (aI) = valueOrElse(cN(), if ((av.caller != aj))
618+@Callable(aw)
619+func updatePoolInterest (aJ) = valueOrElse(cO(), if ((aw.caller != ak))
587620 then throw("Only Governance can call this function")
588621 else {
589- let aN = toString(addressFromPublicKey(ak))
590- let dE = bN(aI, aN)
591- let bo = dE._1
592- let bp = dE._2
593- let dF = dE._3
594-[IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height)]
622+ let aO = toString(addressFromPublicKey(al))
623+ let dK = bO(aJ, aO)
624+ let bp = dK._1
625+ let bq = dK._2
626+ let dL = dK._3
627+[IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height)]
595628 })
596629
597630
598631
599-@Callable(av)
600-func lockShareTokens (aI,cD) = valueOrElse(cN(), cR(av, av.caller, aI, cD))
632+@Callable(aw)
633+func lockShareTokens (aJ,cE) = valueOrElse(cS(aJ), valueOrElse(cO(), cU(aw, aw.caller, aJ, cE)))
601634
602635
603636
604-@Callable(av)
605-func lockShareTokensFromPool (dG,aI,cD) = valueOrElse(cN(), valueOrElse(cP(av, aI), cR(av, Address(dG), aI, cD)))
637+@Callable(aw)
638+func lockShareTokensFromPool (dM,aJ,cE) = valueOrElse(cS(aJ), valueOrElse(cO(), valueOrElse(cQ(aw, aJ), cU(aw, Address(dM), aJ, cE))))
606639
607640
608641
609-@Callable(av)
610-func lockStakedShareTokens (aI,cD,dH) = valueOrElse(cN(), {
611- let cT = aO(aI)
612- let aN = toString(av.caller)
613- let cU = aK(aI)
614- let bQ = valueOrElse(getInteger(this, (aI + n)), cU)
615- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
616- let cW = valueOrElse(getInteger(this, (((aI + "_") + aN) + k)), 0)
617- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
618- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
619- let cZ = (cV + cX)
620- let dI = cI(cD)
621- let db = dI._1
622- let dc = dI._2
623- let dd = getIntegerValue(this, p)
624- if ((aH(aI) > height))
642+@Callable(aw)
643+func lockStakedShareTokens (aJ,cE,dN) = valueOrElse(cS(aJ), valueOrElse(cO(), {
644+ let cW = aP(aJ)
645+ let aO = toString(aw.caller)
646+ let cX = aL(aJ)
647+ let bR = valueOrElse(getInteger(this, (aJ + o)), cX)
648+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
649+ let cZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + l)), 0)
650+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
651+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
652+ let dc = (cY + da)
653+ let dO = cJ(cE)
654+ let de = dO._1
655+ let df = dO._2
656+ let dg = getIntegerValue(this, q)
657+ if ((aI(aJ) > height))
625658 then throw("You can't lock shareTokens till first harvest end.")
626- else if ((0 >= cD))
659+ else if ((0 >= cE))
627660 then throw("lockType must be > 0")
628- else if ((dH > cV))
629- then throw(("You can't lock more than " + toString(cV)))
630- else if ((aP(cT) > cU))
661+ else if ((dN > cY))
662+ then throw(("You can't lock more than " + toString(cY)))
663+ else if ((aQ(cW) > cX))
631664 then throw("Balance of share-token is lower than totalAmount")
632- else if (if ((cW == 0))
633- then if (if ((1 > size(av.payments)))
665+ else if (if ((cZ == 0))
666+ then if (if ((1 > size(aw.payments)))
634667 then true
635- else (av.payments[0].assetId != unit))
668+ else (aw.payments[0].assetId != unit))
636669 then true
637- else (dd > av.payments[0].amount)
670+ else (dg > aw.payments[0].amount)
638671 else false)
639- then throw((("You need to pay additional waves comission " + toString(dd)) + "WAVES"))
640- else if (if ((cW == 0))
641- then (0 >= dH)
672+ then throw((("You need to pay additional waves comission " + toString(dg)) + "WAVES"))
673+ else if (if ((cZ == 0))
674+ then (0 >= dN)
642675 else false)
643676 then throw("lockAmount must be greater than 0")
644- else if ((0 > dH))
677+ else if ((0 > dN))
645678 then throw("lockAmount must be positive")
646- else if ((cW > (height + db)))
679+ else if ((cZ > (height + de)))
647680 then throw("You cannot lock sharetokens for a period less than what you have already locked")
648681 else {
649- let dh = (cX + dH)
650- let dt = (cV - dH)
651- let di = (height + db)
652- let dg = (fraction(dh, dc, U) + dt)
653- let dJ = bN(aI, aN)
654- let bo = dJ._1
655- let bp = dJ._2
656- let cx = dJ._3
657- let dm = dJ._4
658- let dn = (aZ(aI, aN) + cx)
659-[IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + i), dh), IntegerEntry((((aI + "_") + aN) + k), di), IntegerEntry((((aI + "_") + aN) + j), cD), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ - cY) + dg)), IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)]
682+ let dk = (da + dN)
683+ let dx = (cY - dN)
684+ let dl = (height + de)
685+ let dj = (fraction(dk, df, V) + dx)
686+ let dP = bO(aJ, aO)
687+ let bp = dP._1
688+ let bq = dP._2
689+ let cy = dP._3
690+ let dp = dP._4
691+ let dq = (ba(aJ, aO) + cy)
692+[IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + j), dk), IntegerEntry((((aJ + "_") + aO) + l), dl), IntegerEntry((((aJ + "_") + aO) + k), cE), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR - db) + dj)), IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
660693 }
694+ }))
695+
696+
697+
698+@Callable(aw)
699+func unlockUserLock (aJ,aO) = valueOrElse(cO(), {
700+ let cZ = valueOrErrorMessage(getInteger(this, (((aJ + "_") + aO) + l)), (((("There is no pool " + aJ) + " or user ") + aO) + "with lock"))
701+ if ((cZ > height))
702+ then throw(("You can't unlock sharetokens till " + toString(cZ)))
703+ else (dE(aw, aJ, aO) ++ [ScriptTransfer(aw.caller, getIntegerValue(this, q), unit)])
661704 })
662705
663706
664707
665-@Callable(av)
666-func unlockUserLock (aI,aN) = valueOrElse(cN(), {
667- let dd = getIntegerValue(this, p)
668- let cW = valueOrErrorMessage(getInteger(this, (((aI + "_") + aN) + k)), (((("There is no pool " + aI) + " or user ") + aN) + "with lock"))
669- let bQ = getIntegerValue(this, (aI + n))
670- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
671- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
672- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
673- if ((cW > height))
674- then throw(("You can't unlock sharetokens till " + toString(cW)))
675- else {
676- let dt = (cV + cX)
677- let dK = bN(aI, aN)
678- let bo = dK._1
679- let bp = dK._2
680- let cx = dK._3
681- let dm = dK._4
682- let dn = (aZ(aI, aN) + cx)
683-[IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + l), dt), IntegerEntry((aI + n), ((bQ - cY) + dt)), IntegerEntry((((aI + "_") + aN) + x), dn), DeleteEntry((((aI + "_") + aN) + i)), DeleteEntry((((aI + "_") + aN) + k)), DeleteEntry((((aI + "_") + aN) + j)), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq), ScriptTransfer(av.caller, dd, unit)]
684- }
708+@Callable(aw)
709+func unlockUserLockDeprecated (aJ,aO) = valueOrElse(cO(), valueOrElse(cT(aw), if (!(cR(aJ)))
710+ then throw("Pool must be deprecated")
711+ else if (isDefined(getInteger(this, (((aJ + "_") + aO) + l))))
712+ then (dE(aw, aJ, aO) ++ [ScriptTransfer(ai, getIntegerValue(this, q), unit)])
713+ else nil))
714+
715+
716+
717+@Callable(aw)
718+func withdrawShareTokens (aJ,dt) = valueOrElse(cO(), ds(aw, aw.caller, aJ, dt))
719+
720+
721+
722+@Callable(aw)
723+func withdrawShareTokensFromPool (dM,aJ,dt) = valueOrElse(cO(), valueOrElse(cQ(aw, aJ), ds(aw, Address(dM), aJ, dt)))
724+
725+
726+
727+@Callable(aw)
728+func claim (aJ) = valueOrElse(cO(), {
729+ let bE = dB(aw, aJ, aw.caller)
730+ if ((bE._2 == 0))
731+ then throw("You have 0 available SWOP")
732+ else bE
685733 })
686734
687735
688736
689-@Callable(av)
690-func withdrawShareTokens (aI,dq) = valueOrElse(cN(), dp(av, av.caller, aI, dq))
737+@Callable(aw)
738+func claimInternal (aJ,cV) = valueOrElse(cO(), valueOrElse(cT(aw), dB(aw, aJ, Address(cV))))
691739
692740
693741
694-@Callable(av)
695-func withdrawShareTokensFromPool (dG,aI,dq) = valueOrElse(cN(), valueOrElse(cP(av, aI), dp(av, Address(dG), aI, dq)))
696-
697-
698-
699-@Callable(av)
700-func claim (aI) = valueOrElse(cN(), {
701- let bD = dx(av, aI, av.caller)
702- if ((bD._2 == 0))
703- then throw("You have 0 available SWOP")
704- else bD
705- })
706-
707-
708-
709-@Callable(av)
710-func claimInternal (aI,cS) = valueOrElse(cN(), valueOrElse(cQ(av), dx(av, aI, Address(cS))))
711-
712-
713-
714-@Callable(av)
715-func claimAndStake (aI) = valueOrElse(cN(), {
716- let cx = {
717- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
718- if ($isInstanceOf(dL, "Int"))
719- then dL
720- else throw(($getType(dL) + " couldn't be cast to Int"))
742+@Callable(aw)
743+func claimAndStake (aJ) = valueOrElse(cO(), {
744+ let cy = {
745+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
746+ if ($isInstanceOf(dQ, "Int"))
747+ then dQ
748+ else throw(($getType(dQ) + " couldn't be cast to Int"))
721749 }
722- if ((cx == cx))
723- then if ((cx == 0))
750+ if ((cy == cy))
751+ then if ((cy == 0))
724752 then throw("You have 0 available SWOP")
725753 else {
726- let dM = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(aq, cx)])
727- if ((dM == dM))
754+ let dR = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, cy)])
755+ if ((dR == dR))
728756 then nil
729757 else throw("Strict value is not equal to itself.")
730758 }
733761
734762
735763
736-@Callable(av)
737-func claimAll (cp) = valueOrElse(cN(), {
738- func dN (dO,aI) = {
739- let cx = {
740- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
741- if ($isInstanceOf(dL, "Int"))
742- then dL
743- else throw(($getType(dL) + " couldn't be cast to Int"))
764+@Callable(aw)
765+func claimAll (cq) = valueOrElse(cO(), {
766+ func dS (dT,aJ) = {
767+ let cy = {
768+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
769+ if ($isInstanceOf(dQ, "Int"))
770+ then dQ
771+ else throw(($getType(dQ) + " couldn't be cast to Int"))
744772 }
745- if ((cx == cx))
746- then (dO + cx)
773+ if ((cy == cy))
774+ then (dT + cy)
747775 else throw("Strict value is not equal to itself.")
748776 }
749777
750- let dO = {
751- let aA = cp
752- let aB = size(aA)
753- let aC = 0
754- func aD (aE,aF) = if ((aF >= aB))
755- then aE
756- else dN(aE, aA[aF])
778+ let dT = {
779+ let aB = cq
780+ let aC = size(aB)
781+ let aD = 0
782+ func aE (aF,aG) = if ((aG >= aC))
783+ then aF
784+ else dS(aF, aB[aG])
757785
758- func aG (aE,aF) = if ((aF >= aB))
759- then aE
786+ func aH (aF,aG) = if ((aG >= aC))
787+ then aF
760788 else throw("List size exceeds 60")
761789
762- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
790+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
763791 }
764- if ((dO == 0))
792+ if ((dT == 0))
765793 then throw("You have 0 available SWOP")
766- else [ScriptTransfer(av.caller, dO, aq)]
794+ else [ScriptTransfer(aw.caller, dT, ar)]
767795 })
768796
769797
770798
771-@Callable(av)
772-func claimAllAndStake (cp) = valueOrElse(cN(), {
773- func dN (dO,aI) = {
774- let cx = {
775- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
776- if ($isInstanceOf(dL, "Int"))
777- then dL
778- else throw(($getType(dL) + " couldn't be cast to Int"))
799+@Callable(aw)
800+func claimAllAndStake (cq) = valueOrElse(cO(), {
801+ func dS (dT,aJ) = {
802+ let cy = {
803+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
804+ if ($isInstanceOf(dQ, "Int"))
805+ then dQ
806+ else throw(($getType(dQ) + " couldn't be cast to Int"))
779807 }
780- if ((cx == cx))
781- then (dO + cx)
808+ if ((cy == cy))
809+ then (dT + cy)
782810 else throw("Strict value is not equal to itself.")
783811 }
784812
785- let dO = {
786- let aA = cp
787- let aB = size(aA)
788- let aC = 0
789- func aD (aE,aF) = if ((aF >= aB))
790- then aE
791- else dN(aE, aA[aF])
813+ let dT = {
814+ let aB = cq
815+ let aC = size(aB)
816+ let aD = 0
817+ func aE (aF,aG) = if ((aG >= aC))
818+ then aF
819+ else dS(aF, aB[aG])
792820
793- func aG (aE,aF) = if ((aF >= aB))
794- then aE
821+ func aH (aF,aG) = if ((aG >= aC))
822+ then aF
795823 else throw("List size exceeds 60")
796824
797- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
825+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
798826 }
799- if ((dO == 0))
827+ if ((dT == 0))
800828 then throw("You have 0 available SWOP")
801829 else {
802- let dM = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(aq, dO)])
803- if ((dM == dM))
830+ let dR = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dT)])
831+ if ((dR == dR))
804832 then nil
805833 else throw("Strict value is not equal to itself.")
806834 }
808836
809837
810838
811-@Callable(av)
812-func updateUserBoostInterest (aI,aN) = valueOrElse(cN(), if ((av.caller != ai))
839+@Callable(aw)
840+func updateUserBoostInterest (aJ,aO) = valueOrElse(cO(), if ((aw.caller != aj))
813841 then throw("Only voiting can call this function")
814842 else {
815- let dP = bN(aI, aN)
816- let bo = dP._1
817- let bp = dP._2
818- let cx = dP._3
819- let dm = dP._4
820- let dn = (aZ(aI, aN) + cx)
821-[IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)]
843+ let dU = bO(aJ, aO)
844+ let bp = dU._1
845+ let bq = dU._2
846+ let cy = dU._3
847+ let dp = dU._4
848+ let dq = (ba(aJ, aO) + cy)
849+[IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
822850 })
823851
824852
825853
826-@Callable(av)
827-func shutdown () = valueOrElse(cO(av), if (!(ao))
828- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
829- else cL("Paused by admin"))
854+@Callable(aw)
855+func shutdown () = valueOrElse(cP(aw), if (!(ap))
856+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, d), "the cause wasn't specified")))
857+ else cM("Paused by admin"))
830858
831859
832860
833-@Callable(av)
834-func activate () = valueOrElse(cO(av), if (ao)
861+@Callable(aw)
862+func activate () = valueOrElse(cP(aw), if (ap)
835863 then throw("DApp is already active")
836- else [BooleanEntry(a, true), DeleteEntry(c)])
864+ else [BooleanEntry(a, true), DeleteEntry(d)])
837865
838866
839-@Verifier(dQ)
840-func dR () = {
841- let ab = dQ
842- let dS = if (sigVerify(dQ.bodyBytes, dQ.proofs[0], ae))
867+@Verifier(dV)
868+func dW () = {
869+ let ac = dV
870+ let dX = if (sigVerify(dV.bodyBytes, dV.proofs[0], af))
843871 then 1
844872 else 0
845- let dT = if (sigVerify(dQ.bodyBytes, dQ.proofs[1], af))
873+ let dY = if (sigVerify(dV.bodyBytes, dV.proofs[1], ag))
846874 then 1
847875 else 0
848- let dU = if (sigVerify(dQ.bodyBytes, dQ.proofs[2], ag))
876+ let dZ = if (sigVerify(dV.bodyBytes, dV.proofs[2], ah))
849877 then 1
850878 else 0
851- (((dS + dT) + dU) >= 2)
879+ (((dX + dY) + dZ) >= 2)
852880 }
853881
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
8-let c = "shutdown_cause"
8+let c = "deprecated_"
99
10-let d = "_current_pool_fraction_reward"
10+let d = "shutdown_cause"
1111
12-let e = "_previous_pool_fraction_reward"
12+let e = "_current_pool_fraction_reward"
1313
14-let f = "_pool_reward_update_height"
14+let f = "_previous_pool_fraction_reward"
1515
16-let g = "reward_update_height"
16+let g = "_pool_reward_update_height"
1717
18-let h = "_share_tokens_locked"
18+let h = "reward_update_height"
1919
20-let i = "_share_tokens_blocked"
20+let i = "_share_tokens_locked"
2121
22-let j = "_share_tokens_blocked_type"
22+let j = "_share_tokens_blocked"
2323
24-let k = "_share_tokens_blocked_height"
24+let k = "_share_tokens_blocked_type"
2525
26-let l = "_share_tokens_virtual"
26+let l = "_share_tokens_blocked_height"
2727
28-let m = "_total_share_tokens_locked"
28+let m = "_share_tokens_virtual"
2929
30-let n = "_total_share_tokens_virtual"
30+let n = "_total_share_tokens_locked"
3131
32-let o = "_lock_params"
32+let o = "_total_share_tokens_virtual"
3333
34-let p = "lock_waves_fee"
34+let p = "_lock_params"
3535
36-let q = "_boost_coef"
36+let q = "lock_waves_fee"
3737
38-let r = "_last_interest"
38+let r = "_boost_coef"
3939
4040 let s = "_last_interest"
4141
42-let t = "_last_interest_b"
42+let t = "_last_interest"
4343
44-let u = "_last_interest_u_b"
44+let u = "_last_interest_b"
4545
46-let v = "_last_interest_height"
46+let v = "_last_interest_u_b"
4747
48-let w = "SWOP_id"
48+let w = "_last_interest_height"
4949
50-let x = "_available_SWOP"
50+let x = "SWOP_id"
5151
52-let y = "_harvest_pool_vote_gSWOP"
52+let y = "_available_SWOP"
5353
54-let z = "_pool_vote_gSWOP"
54+let z = "_harvest_pool_vote_gSWOP"
5555
56-let A = "_user_vote_gSWOP"
56+let A = "_pool_vote_gSWOP"
5757
58-let B = "_pool_struc"
58+let B = "_user_vote_gSWOP"
5959
60-let C = "_user_pool_struc"
60+let C = "_pool_struc"
6161
62-let D = "_harvest_user_pool_vote_gSWOP"
62+let D = "_user_pool_struc"
6363
64-let E = "first_harvest_height"
64+let E = "_harvest_user_pool_vote_gSWOP"
6565
66-let F = "share_limit_on_first_harvest"
66+let F = "first_harvest_height"
6767
68-let G = "_strat_b_farm_interest"
68+let G = "share_limit_on_first_harvest"
6969
70-let H = "cpmm_contract"
70+let H = "_strat_b_farm_interest"
7171
72-let I = "admin_pub_1"
72+let I = "cpmm_contract"
7373
74-let J = "admin_pub_2"
74+let J = "admin_pub_1"
7575
76-let K = "admin_pub_3"
76+let K = "admin_pub_2"
7777
78-let L = "admin_invoke_pub"
78+let L = "admin_pub_3"
7979
80-let M = "money_box_address"
80+let M = "admin_invoke_pub"
8181
82-let N = "voting_address"
82+let N = "money_box_address"
8383
84-let O = "governance_address"
84+let O = "voting_address"
8585
86-let P = "lp_farming"
86+let P = "governance_address"
8787
88-let Q = "farming_treasure"
88+let Q = "lp_farming"
8989
90-let R = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
90+let R = "farming_treasure"
9191
92-let S = 10000000000
92+let S = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
9393
94-let T = 100000000
94+let T = 10000000000
9595
96-let U = 1000
96+let U = 100000000
9797
98-let V = 500
98+let V = 1000
9999
100-let W = 2976848
100+let W = 500
101101
102-let X = 100000000000000
102+let X = 2976848
103103
104-let Y = 526330
104+let Y = 100000000000000
105105
106-func Z (aa) = {
107- let ab = getString(R, aa)
108- if ($isInstanceOf(ab, "String"))
106+let Z = 526330
107+
108+func aa (ab) = {
109+ let ac = getString(S, ab)
110+ if ($isInstanceOf(ac, "String"))
109111 then {
110- let ac = ab
111- fromBase58String(ac)
112+ let ad = ac
113+ fromBase58String(ad)
112114 }
113115 else {
114- let ad = ab
115- throw((aa + "is empty"))
116+ let ae = ac
117+ throw((ab + "is empty"))
116118 }
117119 }
118120
119121
120-let ae = Z(I)
122+let af = aa(J)
121123
122-let af = Z(J)
124+let ag = aa(K)
123125
124-let ag = Z(K)
126+let ah = aa(L)
125127
126-let ah = Address(Z(M))
128+let ai = Address(aa(N))
127129
128-let ai = Address(Z(N))
130+let aj = Address(aa(O))
129131
130-let aj = Address(Z(O))
132+let ak = Address(aa(P))
131133
132-let ak = Z(L)
134+let al = aa(M)
133135
134-let al = Address(Z(P))
136+let am = Address(aa(Q))
135137
136-let am = Address(Z(Q))
138+let an = Address(aa(R))
137139
138-let an = Address(Z(H))
140+let ao = Address(aa(I))
139141
140-let ao = getBooleanValue(this, a)
142+let ap = getBooleanValue(this, a)
141143
142-let ap = valueOrElse(getBoolean(R, b), true)
144+let aq = valueOrElse(getBoolean(S, b), true)
143145
144-let aq = fromBase58String(getStringValue(this, w))
146+let ar = fromBase58String(getStringValue(this, x))
145147
146-func ar () = {
147- let as = ((height - W) / Y)
148- func at (au,av) = {
149- let aw = au
150- let ax = aw._1
151- let ay = aw._2
152- if ((as > av))
153- then $Tuple2(fraction(ax, 75, 100), ax)
154- else $Tuple2(ax, ay)
148+func as () = {
149+ let at = ((height - X) / Z)
150+ func au (av,aw) = {
151+ let ax = av
152+ let ay = ax._1
153+ let az = ax._2
154+ if ((at > aw))
155+ then $Tuple2(fraction(ay, 75, 100), ay)
156+ else $Tuple2(ay, az)
155157 }
156158
157- let az = {
158- let aA = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
159- let aB = size(aA)
160- let aC = $Tuple2(X, X)
161- func aD (aE,aF) = if ((aF >= aB))
162- then aE
163- else at(aE, aA[aF])
159+ let aA = {
160+ let aB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
161+ let aC = size(aB)
162+ let aD = $Tuple2(Y, Y)
163+ func aE (aF,aG) = if ((aG >= aC))
164+ then aF
165+ else au(aF, aB[aG])
164166
165- func aG (aE,aF) = if ((aF >= aB))
166- then aE
167+ func aH (aF,aG) = if ((aG >= aC))
168+ then aF
167169 else throw("List size exceeds 20")
168170
169- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
171+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
170172 }
171- let ax = az._1
172- let ay = az._2
173- $Tuple3((ax / Y), (ay / Y), (W + (Y * as)))
173+ let ay = aA._1
174+ let az = aA._2
175+ $Tuple3((ay / Z), (az / Z), (X + (Z * at)))
174176 }
175177
176178
177-func aH (aI) = valueOrElse(getInteger(Address(fromBase58String(aI)), E), 0)
179+func aI (aJ) = valueOrElse(getInteger(Address(fromBase58String(aJ)), F), 0)
178180
179181
180-func aJ (aI) = valueOrErrorMessage(getInteger(aI, F), ("No data on the key: " + F))
182+func aK (aJ) = valueOrErrorMessage(getInteger(aJ, G), ("No data on the key: " + G))
181183
182184
183-func aK (aI) = valueOrErrorMessage(getInteger(this, (aI + m)), (("No data on the key: " + aI) + m))
185+func aL (aJ) = valueOrErrorMessage(getInteger(this, (aJ + n)), (("No data on the key: " + aJ) + n))
184186
185187
186-func aL (aI) = valueOrElse(getInteger(ai, (aI + z)), valueOrElse(parseInt(split(valueOrElse(getString(ai, (aI + B)), ""), "_")[0]), 0))
188+func aM (aJ) = valueOrElse(getInteger(aj, (aJ + A)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (aJ + C)), ""), "_")[0]), 0))
187189
188190
189-func aM (aI,aN) = valueOrElse(getInteger(ai, (((aN + "_") + aI) + A)), valueOrElse(parseInt(split(valueOrElse(getString(ai, (((aN + "_") + aI) + C)), ""), "_")[0]), 0))
191+func aN (aJ,aO) = valueOrElse(getInteger(aj, (((aO + "_") + aJ) + B)), valueOrElse(parseInt(split(valueOrElse(getString(aj, (((aO + "_") + aJ) + D)), ""), "_")[0]), 0))
190192
191193
192-func aO (aI) = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
194+func aP (aJ) = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
193195
194196
195-func aP (aQ) = {
196- let ab = aQ
197- if ($isInstanceOf(ab, "ByteVector"))
197+func aQ (aR) = {
198+ let ac = aR
199+ if ($isInstanceOf(ac, "ByteVector"))
198200 then {
199- let aR = ab
200- assetBalance(this, aR)
201+ let aS = ac
202+ assetBalance(this, aS)
201203 }
202- else if ($isInstanceOf(ab, "Unit"))
204+ else if ($isInstanceOf(ac, "Unit"))
203205 then {
204- let aS = ab
206+ let aT = ac
205207 wavesBalance(this).available
206208 }
207209 else throw("Match error")
208210 }
209211
210212
211-func aT (aU,aV) = {
212- let aW = value(assetInfo(aU)).decimals
213+func aU (aV,aW) = {
213214 let aX = value(assetInfo(aV)).decimals
214- let aY = ((aX - aW) + 8)
215- pow(10, 0, aY, 0, 0, DOWN)
215+ let aY = value(assetInfo(aW)).decimals
216+ let aZ = ((aY - aX) + 8)
217+ pow(10, 0, aZ, 0, 0, DOWN)
216218 }
217219
218220
219-func aZ (aI,aN) = valueOrElse(getInteger(this, (((aI + "_") + aN) + x)), 0)
221+func ba (aJ,aO) = valueOrElse(getInteger(this, (((aJ + "_") + aO) + y)), 0)
220222
221223
222-func ba (aI) = {
223- let bb = ar()
224- let bc = bb._1
225- let bd = bb._2
226- let be = bb._3
227- let bf = valueOrErrorMessage(getInteger(aj, (aI + d)), (((("No data on the key: " + aI) + d) + " at address ") + toString(aj)))
228- let bg = valueOrErrorMessage(getInteger(aj, g), ((("No data on the key: " + g) + " at address ") + toString(aj)))
229- let bh = valueOrElse(getInteger(aj, (aI + f)), bg)
230- let bi = valueOrErrorMessage(getInteger(aj, (aI + e)), (((("No data on the key: " + aI) + e) + " at address ") + toString(aj)))
231- let bj = fraction(bc, bf, S)
232- let bk = fraction(bc, bi, S)
233- let bl = fraction(bd, bf, S)
234- let bm = fraction(bd, bi, S)
235- if (if ((bj > bc))
224+func bb (aJ) = {
225+ let bc = as()
226+ let bd = bc._1
227+ let be = bc._2
228+ let bf = bc._3
229+ let bg = valueOrErrorMessage(getInteger(ak, (aJ + e)), (((("No data on the key: " + aJ) + e) + " at address ") + toString(ak)))
230+ let bh = valueOrErrorMessage(getInteger(ak, h), ((("No data on the key: " + h) + " at address ") + toString(ak)))
231+ let bi = valueOrElse(getInteger(ak, (aJ + g)), bh)
232+ let bj = valueOrErrorMessage(getInteger(ak, (aJ + f)), (((("No data on the key: " + aJ) + f) + " at address ") + toString(ak)))
233+ let bk = fraction(bd, bg, T)
234+ let bl = fraction(bd, bj, T)
235+ let bm = fraction(be, bg, T)
236+ let bn = fraction(be, bj, T)
237+ if (if ((bk > bd))
236238 then true
237- else (bk > bd))
239+ else (bl > be))
238240 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
239- else $Tuple7(bj, bg, bk, bh, be, bl, bm)
241+ else $Tuple7(bk, bh, bl, bi, bf, bm, bn)
240242 }
241243
242244
243-func bn (aI) = {
244- let bo = valueOrErrorMessage(getInteger(this, (aI + r)), (("No data on the key: " + aI) + r))
245- let bp = valueOrElse(getInteger(this, (aI + t)), 0)
246- let bq = valueOrElse(getInteger(this, (aI + v)), height)
247- $Tuple3(bq, bo, bp)
245+func bo (aJ) = {
246+ let bp = valueOrErrorMessage(getInteger(this, (aJ + s)), (("No data on the key: " + aJ) + s))
247+ let bq = valueOrElse(getInteger(this, (aJ + u)), 0)
248+ let br = valueOrElse(getInteger(this, (aJ + w)), height)
249+ $Tuple3(br, bp, bq)
248250 }
249251
250252
251-func br (aI,bs) = {
252- let bt = valueOrElse(getInteger(this, (aI + q)), V)
253- fraction(bs, U, (bt + U))
253+func bs (aJ,bt) = {
254+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
255+ fraction(bt, V, (bu + V))
254256 }
255257
256258
257-func bu (aI,bs) = {
258- let bt = valueOrElse(getInteger(this, (aI + q)), V)
259- fraction(bs, bt, (bt + U))
259+func bv (aJ,bt) = {
260+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
261+ fraction(bt, bu, (bu + V))
260262 }
261263
262264
263-func bv (aI,bq,bg,bh,bo,bp,bw,bx,by,bz,bA,bB) = {
264- let bC = if (if (if ((bg > bB))
265- then (bg == bh)
265+func bw (aJ,br,bh,bi,bp,bq,bx,by,bz,bA,bB,bC) = {
266+ let bD = if (if (if ((bh > bC))
267+ then (bh == bi)
266268 else false)
267269 then true
268- else if ((bB > bg))
269- then (bg != bh)
270+ else if ((bC > bh))
271+ then (bh != bi)
270272 else false)
271273 then {
272- let bD = (bz * (bB - bq))
273- $Tuple3(bD, bo, bp)
274+ let bE = (bA * (bC - br))
275+ $Tuple3(bE, bp, bq)
274276 }
275- else if (if (if ((bB > bg))
276- then (bg == bh)
277+ else if (if (if ((bC > bh))
278+ then (bh == bi)
277279 else false)
278- then (bq > bg)
280+ then (br > bh)
279281 else false)
280282 then {
281- let bD = (bx * (bB - bq))
282- $Tuple3(bD, bo, bp)
283+ let bE = (by * (bC - br))
284+ $Tuple3(bE, bp, bq)
283285 }
284286 else {
285- let bE = (bz * (bg - bq))
286- let bF = (bo + fraction(br(aI, bE), bA, by))
287- let bG = (bp + (if ((bw > 0))
288- then fraction(bu(aI, bE), T, bw)
287+ let bF = (bA * (bh - br))
288+ let bG = (bp + fraction(bs(aJ, bF), bB, bz))
289+ let bH = (bq + (if ((bx > 0))
290+ then fraction(bv(aJ, bF), U, bx)
289291 else 0))
290- let bH = (bx * (bB - bg))
291- $Tuple3(bH, bF, bG)
292+ let bI = (by * (bC - bh))
293+ $Tuple3(bI, bG, bH)
292294 }
293- let bI = bC._1
294- let bJ = bC._2
295- let bK = bC._3
296- let bL = (bJ + fraction(br(aI, bI), bA, by))
297- let bM = (bK + (if ((bw > 0))
298- then fraction(bu(aI, bI), T, bw)
295+ let bJ = bD._1
296+ let bK = bD._2
297+ let bL = bD._3
298+ let bM = (bK + fraction(bs(aJ, bJ), bB, bz))
299+ let bN = (bL + (if ((bx > 0))
300+ then fraction(bv(aJ, bJ), U, bx)
299301 else 0))
300- $Tuple2(bL, bM)
302+ $Tuple2(bM, bN)
301303 }
302304
303305
304-func bN (aI,aN) = {
305- let bA = aT(aq, aO(aI))
306- let bw = aL(aI)
307- let bO = aM(aI, aN)
308- let bP = aK(aI)
309- let bQ = valueOrElse(getInteger(this, (aI + n)), bP)
310- let bR = valueOrElse(getInteger(this, (aI + G)), 0)
311- let bS = bn(aI)
312- let bq = bS._1
313- let bo = bS._2
314- let bp = bS._3
315- let bT = ba(aI)
316- let bx = bT._1
317- let bg = bT._2
318- let bz = bT._3
319- let bh = bT._4
320- let bU = bT._5
321- let bV = bT._6
322- let bW = bT._7
323- let bX = valueOrElse(getInteger(this, (((aI + "_") + aN) + s)), bo)
324- let bY = valueOrElse(getInteger(this, (((aI + "_") + aN) + u)), if (if ((bR > bX))
325- then (bO > 0)
306+func bO (aJ,aO) = {
307+ let bB = aU(ar, aP(aJ))
308+ let bx = aM(aJ)
309+ let bP = aN(aJ, aO)
310+ let bQ = aL(aJ)
311+ let bR = valueOrElse(getInteger(this, (aJ + o)), bQ)
312+ let bS = valueOrElse(getInteger(this, (aJ + H)), 0)
313+ let bT = bo(aJ)
314+ let br = bT._1
315+ let bp = bT._2
316+ let bq = bT._3
317+ let bU = bb(aJ)
318+ let by = bU._1
319+ let bh = bU._2
320+ let bA = bU._3
321+ let bi = bU._4
322+ let bV = bU._5
323+ let bW = bU._6
324+ let bX = bU._7
325+ let bY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + t)), bp)
326+ let bZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + v)), if (if ((bS > bY))
327+ then (bP > 0)
326328 else false)
327329 then 0
328- else bp)
329- let bZ = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
330- let ca = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), bZ)
331- if ((bQ == 0))
330+ else bq)
331+ let ca = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
332+ let cb = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), ca)
333+ if ((bR == 0))
332334 then {
333- let cb = if ((bU > bq))
334- then ((bV * (bU - bq)) + (bx * (height - bU)))
335- else (bx * (height - bq))
336- $Tuple4(bo, bp, 0, cb)
335+ let cc = if ((bV > br))
336+ then ((bW * (bV - br)) + (by * (height - bV)))
337+ else (by * (height - br))
338+ $Tuple4(bp, bq, 0, cc)
337339 }
338340 else {
339- let cc = if ((bU > bq))
341+ let cd = if ((bV > br))
340342 then {
341- let cd = bv(aI, bq, bg, bh, bo, bp, bw, bV, bQ, bW, bA, bU)
342- let ce = cd._1
343- let cf = cd._2
344- $Tuple3(ce, cf, bU)
343+ let ce = bw(aJ, br, bh, bi, bp, bq, bx, bW, bR, bX, bB, bV)
344+ let cf = ce._1
345+ let cg = ce._2
346+ $Tuple3(cf, cg, bV)
345347 }
346- else $Tuple3(bo, bp, bq)
347- let cg = cc._1
348- let ch = cc._2
349- let ci = cc._3
350- let cj = bv(aI, ci, bg, bh, cg, ch, bw, bx, bQ, bz, bA, height)
351- let bL = cj._1
352- let bM = cj._2
353- let ck = fraction(ca, (bL - bX), bA)
354- let bt = valueOrElse(getInteger(this, (aI + q)), V)
355- let cl = fraction(fraction(ca, (bL - max([bX, bR])), bA), bt, U)
356- let cm = fraction((bM - bY), bO, T)
357- let cn = min([cl, cm])
358- let cb = (cl - cn)
359- if ((0 > cb))
348+ else $Tuple3(bp, bq, br)
349+ let ch = cd._1
350+ let ci = cd._2
351+ let cj = cd._3
352+ let ck = bw(aJ, cj, bh, bi, ch, ci, bx, by, bR, bA, bB, height)
353+ let bM = ck._1
354+ let bN = ck._2
355+ let cl = fraction(cb, (bM - bY), bB)
356+ let bu = valueOrElse(getInteger(this, (aJ + r)), W)
357+ let cm = fraction(fraction(cb, (bM - max([bY, bS])), bB), bu, V)
358+ let cn = fraction((bN - bZ), bP, U)
359+ let co = min([cm, cn])
360+ let cc = (cm - co)
361+ if ((0 > cc))
360362 then throw("toTreasury < 0")
361- else $Tuple4(bL, bM, (ck + cn), cb)
363+ else $Tuple4(bM, bN, (cl + co), cc)
362364 }
363365 }
364366
365367
366-func co (cp,aN) = {
367- func cq (au,aI) = {
368- let cr = au
369- let cs = cr._1
370- let ct = cr._2
371- let cu = bN(aI, aN)
372- let cv = cu._1
373- let cw = cu._2
374- let cx = cu._3
375- let cy = cu._4
376- let cz = (aZ(aI, aN) + cx)
377- $Tuple2((cs :+ aI), (ct :+ cz))
368+func cp (cq,aO) = {
369+ func cr (av,aJ) = {
370+ let cs = av
371+ let ct = cs._1
372+ let cu = cs._2
373+ let cv = bO(aJ, aO)
374+ let cw = cv._1
375+ let cx = cv._2
376+ let cy = cv._3
377+ let cz = cv._4
378+ let cA = (ba(aJ, aO) + cy)
379+ $Tuple2((ct :+ aJ), (cu :+ cA))
378380 }
379381
380- let aA = cp
381- let aB = size(aA)
382- let aC = $Tuple2(nil, nil)
383- func aD (aE,aF) = if ((aF >= aB))
384- then aE
385- else cq(aE, aA[aF])
382+ let aB = cq
383+ let aC = size(aB)
384+ let aD = $Tuple2(nil, nil)
385+ func aE (aF,aG) = if ((aG >= aC))
386+ then aF
387+ else cr(aF, aB[aG])
386388
387- func aG (aE,aF) = if ((aF >= aB))
388- then aE
389+ func aH (aF,aG) = if ((aG >= aC))
390+ then aF
389391 else throw("List size exceeds 60")
390392
391- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
393+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
392394 }
393395
394396
395-func cA (aI,aN,cB,cC,cD) = if ((aH(aI) > height))
397+func cB (aJ,aO,cC,cD,cE) = if ((aI(aJ) > height))
396398 then {
397- let cE = valueOrElse(getInteger(ai, (aI + y)), 0)
398- let cF = valueOrElse(getInteger(ai, (((aN + "_") + aI) + D)), 0)
399- let cG = aJ(addressFromStringValue(aI))
400- let cH = (fraction(cG, cF, cE) - cB)
401- if ((cD > 0))
399+ let cF = valueOrElse(getInteger(aj, (aJ + z)), 0)
400+ let cG = valueOrElse(getInteger(aj, (((aO + "_") + aJ) + E)), 0)
401+ let cH = aK(addressFromStringValue(aJ))
402+ let cI = (fraction(cH, cG, cF) - cC)
403+ if ((cE > 0))
402404 then throw("You can't lock shareTokens till first harvest end.")
403- else if ((cF == 0))
405+ else if ((cG == 0))
404406 then 0
405- else if ((cC >= cH))
406- then (cC - cH)
407+ else if ((cD >= cI))
408+ then (cD - cI)
407409 else 0
408410 }
409411 else 0
410412
411413
412-func cI (cJ) = {
413- let cK = split(valueOrErrorMessage(getString(this, (toString(cJ) + o)), ("There are no key for lock type" + toString(cJ))), "_")
414- $Tuple2(parseIntValue(cK[0]), parseIntValue(cK[1]))
414+func cJ (cK) = {
415+ let cL = split(valueOrErrorMessage(getString(this, (toString(cK) + p)), ("There are no key for lock type" + toString(cK))), "_")
416+ $Tuple2(parseIntValue(cL[0]), parseIntValue(cL[1]))
415417 }
416418
417419
418-func cL (cM) = [BooleanEntry(a, false), StringEntry(c, cM)]
420+func cM (cN) = [BooleanEntry(a, false), StringEntry(d, cN)]
419421
420422
421-func cN () = if (if (ao)
422- then ap
423+func cO () = if (if (ap)
424+ then aq
423425 else false)
424426 then unit
425427 else throw("DApp is inactive at this moment")
426428
427429
428-func cO (av) = if (containsElement([ae, af, ag], av.callerPublicKey))
430+func cP (aw) = if (containsElement([af, ag, ah], aw.callerPublicKey))
429431 then unit
430432 else throw("Only admin can call this function")
431433
432434
433-func cP (av,aI) = if (if ((toString(av.caller) == aI))
435+func cQ (aw,aJ) = if (if ((toString(aw.caller) == aJ))
434436 then true
435- else (av.caller == an))
437+ else (aw.caller == ao))
436438 then unit
437439 else throw("Only pool can call this function")
438440
439441
440-func cQ (av) = if ((av.caller == this))
442+func cR (aJ) = valueOrElse(getBoolean(S, (c + aJ)), false)
443+
444+
445+func cS (aJ) = if (!(cR(aJ)))
446+ then unit
447+ else throw("Pool is deprecated. Only unlock action allowed.")
448+
449+
450+func cT (aw) = if ((aw.caller == this))
441451 then unit
442452 else throw("Only contract itself can call this function")
443453
444454
445-func cR (av,cS,aI,cD) = {
446- let cT = aO(aI)
447- let aN = toString(cS)
448- let cU = aK(aI)
449- let bQ = valueOrElse(getInteger(this, (aI + n)), cU)
450- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
451- let cW = valueOrElse(getInteger(this, (((aI + "_") + aN) + k)), 0)
452- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
453- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
454- let cZ = ((cV + cX) + av.payments[0].amount)
455- let da = cI(cD)
456- let db = da._1
457- let dc = da._2
458- let dd = getIntegerValue(this, p)
459- if ((av.payments[0].assetId != cT))
455+func cU (aw,cV,aJ,cE) = {
456+ let cW = aP(aJ)
457+ let aO = toString(cV)
458+ let cX = aL(aJ)
459+ let bR = valueOrElse(getInteger(this, (aJ + o)), cX)
460+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
461+ let cZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + l)), 0)
462+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
463+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
464+ let dc = ((cY + da) + aw.payments[0].amount)
465+ let dd = cJ(cE)
466+ let de = dd._1
467+ let df = dd._2
468+ let dg = getIntegerValue(this, q)
469+ if ((aw.payments[0].assetId != cW))
460470 then throw("Wrong sharetoken in payment")
461- else if ((0 >= av.payments[0].amount))
471+ else if ((0 >= aw.payments[0].amount))
462472 then throw("Payment amount must be greater than 0")
463- else if ((0 > cD))
473+ else if ((0 > cE))
464474 then throw("lockType must be >= 0")
465475 else {
466- let de = cA(aI, aN, cV, av.payments[0].amount, cD)
467- if ((de == de))
476+ let dh = cB(aJ, aO, cY, aw.payments[0].amount, cE)
477+ if ((dh == dh))
468478 then {
469- let df = if ((cD == 0))
479+ let di = if ((cE == 0))
470480 then {
471- let dg = ((cY + av.payments[0].amount) - de)
472- $Tuple2([IntegerEntry((((aI + "_") + aN) + h), ((cV + av.payments[0].amount) - de)), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ + av.payments[0].amount) - de)), ScriptTransfer(cS, de, av.payments[0].assetId)], ((cU + av.payments[0].amount) - de))
481+ let dj = ((db + aw.payments[0].amount) - dh)
482+ $Tuple2([IntegerEntry((((aJ + "_") + aO) + i), ((cY + aw.payments[0].amount) - dh)), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR + aw.payments[0].amount) - dh)), ScriptTransfer(cV, dh, aw.payments[0].assetId)], ((cX + aw.payments[0].amount) - dh))
473483 }
474- else if (if ((cW == 0))
475- then if (if ((2 > size(av.payments)))
484+ else if (if ((cZ == 0))
485+ then if (if ((2 > size(aw.payments)))
476486 then true
477- else (av.payments[1].assetId != unit))
487+ else (aw.payments[1].assetId != unit))
478488 then true
479- else (dd > av.payments[1].amount)
489+ else (dg > aw.payments[1].amount)
480490 else false)
481- then throw((("You need to pay additional waves comission " + toString(dd)) + "WAVES"))
482- else if ((cW > (height + db)))
491+ then throw((("You need to pay additional waves comission " + toString(dg)) + "WAVES"))
492+ else if ((cZ > (height + de)))
483493 then throw("You cannot lock sharetokens for a period less than what you have already locked")
484494 else {
485- let dh = (cX + av.payments[0].amount)
486- let di = (height + db)
487- let dg = (fraction(dh, dc, U) + cV)
488- $Tuple2([IntegerEntry((((aI + "_") + aN) + i), dh), IntegerEntry((((aI + "_") + aN) + k), di), IntegerEntry((((aI + "_") + aN) + j), cD), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ - cY) + dg))], (cU + av.payments[0].amount))
495+ let dk = (da + aw.payments[0].amount)
496+ let dl = (height + de)
497+ let dj = (fraction(dk, df, V) + cY)
498+ $Tuple2([IntegerEntry((((aJ + "_") + aO) + j), dk), IntegerEntry((((aJ + "_") + aO) + l), dl), IntegerEntry((((aJ + "_") + aO) + k), cE), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR - db) + dj))], (cX + aw.payments[0].amount))
489499 }
490- let dj = df._1
491- let dk = df._2
492- if ((aP(cT) > dk))
500+ let dm = di._1
501+ let dn = di._2
502+ if ((aQ(cW) > dn))
493503 then throw("Balance of share-token is lower than totalAmount")
494504 else {
495- let dl = bN(aI, aN)
496- let bo = dl._1
497- let bp = dl._2
498- let cx = dl._3
499- let dm = dl._4
500- let dn = (aZ(aI, aN) + cx)
501- let do = if ((getString(Address(fromBase58String(aI)), "version") == "3.0.0"))
502- then invoke(al, "updateUserInterest", [aN, aI, cZ], nil)
505+ let do = bO(aJ, aO)
506+ let bp = do._1
507+ let bq = do._2
508+ let cy = do._3
509+ let dp = do._4
510+ let dq = (ba(aJ, aO) + cy)
511+ let dr = if ((getString(Address(fromBase58String(aJ)), "version") == "3.0.0"))
512+ then invoke(am, "updateUserInterest", [aO, aJ, dc], nil)
503513 else 0
504- if ((do == do))
505- then ([IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((aI + m), dk), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)] ++ dj)
514+ if ((dr == dr))
515+ then ([IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((aJ + n), dn), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)] ++ dm)
506516 else throw("Strict value is not equal to itself.")
507517 }
508518 }
509519 else throw("Strict value is not equal to itself.")
510520 }
511521 }
512522
513523
514-func dp (av,cS,aI,dq) = valueOrElse(cN(), {
515- let dr = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
516- let aN = toString(cS)
517- let ds = bN(aI, aN)
518- let bo = ds._1
519- let bp = ds._2
520- let cx = ds._3
521- let dm = ds._4
522- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
523- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
524- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
525- let dt = (cV - dq)
526- let dn = (aZ(aI, aN) + cx)
527- let du = aK(aI)
528- let bQ = valueOrElse(getInteger(this, (aI + n)), du)
529- let dv = (du - dq)
530- let dw = (bQ - dq)
531- let dg = (cY - dq)
532- if ((dq > cV))
533- then throw("Withdraw amount more then user locked amount")
534- else if ((aP(dr) > du))
535- then throw("Balance of share-token is lower than totalAmount")
536- else {
537- let do = if ((getString(Address(fromBase58String(aI)), "version") == "3.0.0"))
538- then invoke(al, "updateUserInterest", [aN, aI, (cV + cX)], nil)
539- else 0
540- if ((do == do))
541- then [IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + m), dv), IntegerEntry((aI + n), dw), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq), ScriptTransfer(av.caller, dq, dr)]
542- else throw("Strict value is not equal to itself.")
543- }
544- })
524+func ds (aw,cV,aJ,dt) = {
525+ let du = if (cR(aJ))
526+ then invoke(this, "unlockUserLockDeprecated", [aJ, toString(cV)], nil)
527+ else 0
528+ if ((du == du))
529+ then {
530+ let dv = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
531+ let aO = toString(cV)
532+ let dw = bO(aJ, aO)
533+ let bp = dw._1
534+ let bq = dw._2
535+ let cy = dw._3
536+ let dp = dw._4
537+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
538+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
539+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
540+ let dx = (cY - dt)
541+ let dq = (ba(aJ, aO) + cy)
542+ let dy = aL(aJ)
543+ let bR = valueOrElse(getInteger(this, (aJ + o)), dy)
544+ let dz = (dy - dt)
545+ let dA = (bR - dt)
546+ let dj = (db - dt)
547+ if ((dt > cY))
548+ then throw("Withdraw amount more then user locked amount")
549+ else if ((aQ(dv) > dy))
550+ then throw("Balance of share-token is lower than totalAmount")
551+ else {
552+ let dr = if ((getString(Address(fromBase58String(aJ)), "version") == "3.0.0"))
553+ then invoke(am, "updateUserInterest", [aO, aJ, (cY + da)], nil)
554+ else 0
555+ if ((dr == dr))
556+ then [IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + n), dz), IntegerEntry((aJ + o), dA), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar), ScriptTransfer(aw.caller, dt, dv)]
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ }
560+ else throw("Strict value is not equal to itself.")
561+ }
545562
546563
547-func dx (av,aI,cS) = {
548- let dr = fromBase58String(getStringValue(value(addressFromString(aI)), "share_asset_id"))
549- let aN = toString(cS)
550- let by = aK(aI)
551- let dy = bN(aI, aN)
552- let bo = dy._1
553- let bp = dy._2
554- let cx = dy._3
555- let dm = dy._4
556- let cz = (aZ(aI, aN) + cx)
557- if ((aP(dr) > by))
564+func dB (aw,aJ,cV) = {
565+ let dv = fromBase58String(getStringValue(value(addressFromString(aJ)), "share_asset_id"))
566+ let aO = toString(cV)
567+ let bz = aL(aJ)
568+ let dC = bO(aJ, aO)
569+ let bp = dC._1
570+ let bq = dC._2
571+ let cy = dC._3
572+ let dp = dC._4
573+ let cA = (ba(aJ, aO) + cy)
574+ if ((aQ(dv) > bz))
558575 then throw("Balance of share-token is lower than totalAmount")
559576 else {
560- let dz = if ((av.caller != this))
561- then [ScriptTransfer(av.caller, cz, aq)]
577+ let dD = if ((aw.caller != this))
578+ then [ScriptTransfer(aw.caller, cA, ar)]
562579 else nil
563- $Tuple2(([IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), 0), Reissue(aq, (dm + cz), true), ScriptTransfer(am, dm, aq)] ++ dz), cz)
580+ $Tuple2(([IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), 0), Reissue(ar, (dp + cA), true), ScriptTransfer(an, dp, ar)] ++ dD), cA)
564581 }
565582 }
566583
567584
568-@Callable(av)
569-func init (dA) = if (isDefined(getString(this, w)))
585+func dE (aw,aJ,aO) = {
586+ let bR = getIntegerValue(this, (aJ + o))
587+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
588+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
589+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
590+ let dx = (cY + da)
591+ let dF = bO(aJ, aO)
592+ let bp = dF._1
593+ let bq = dF._2
594+ let cy = dF._3
595+ let dp = dF._4
596+ let dq = (ba(aJ, aO) + cy)
597+[IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + m), dx), IntegerEntry((aJ + o), ((bR - db) + dx)), IntegerEntry((((aJ + "_") + aO) + y), dq), DeleteEntry((((aJ + "_") + aO) + j)), DeleteEntry((((aJ + "_") + aO) + l)), DeleteEntry((((aJ + "_") + aO) + k)), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
598+ }
599+
600+
601+@Callable(aw)
602+func init (dG) = if (isDefined(getString(this, x)))
570603 then throw("SWOP already initialized")
571604 else {
572- let dB = 100000000000000
573- let dC = Issue("SWOP", "SWOP protocol token", dB, 8, true)
574- let dD = calculateAssetId(dC)
575-[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dB, 8, true), StringEntry(w, toBase58String(dD))]
605+ let dH = 100000000000000
606+ let dI = Issue("SWOP", "SWOP protocol token", dH, 8, true)
607+ let dJ = calculateAssetId(dI)
608+[BooleanEntry(a, true), Issue("SWOP", "SWOP protocol token", dH, 8, true), StringEntry(x, toBase58String(dJ))]
576609 }
577610
578611
579612
580-@Callable(av)
581-func initPoolShareFarming (aI) = valueOrElse(cO(av), [IntegerEntry((aI + m), 0), IntegerEntry((aI + r), 0), IntegerEntry((aI + t), 0), IntegerEntry((aI + v), height)])
613+@Callable(aw)
614+func initPoolShareFarming (aJ) = valueOrElse(cP(aw), [IntegerEntry((aJ + n), 0), IntegerEntry((aJ + s), 0), IntegerEntry((aJ + u), 0), IntegerEntry((aJ + w), height)])
582615
583616
584617
585-@Callable(av)
586-func updatePoolInterest (aI) = valueOrElse(cN(), if ((av.caller != aj))
618+@Callable(aw)
619+func updatePoolInterest (aJ) = valueOrElse(cO(), if ((aw.caller != ak))
587620 then throw("Only Governance can call this function")
588621 else {
589- let aN = toString(addressFromPublicKey(ak))
590- let dE = bN(aI, aN)
591- let bo = dE._1
592- let bp = dE._2
593- let dF = dE._3
594-[IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height)]
622+ let aO = toString(addressFromPublicKey(al))
623+ let dK = bO(aJ, aO)
624+ let bp = dK._1
625+ let bq = dK._2
626+ let dL = dK._3
627+[IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height)]
595628 })
596629
597630
598631
599-@Callable(av)
600-func lockShareTokens (aI,cD) = valueOrElse(cN(), cR(av, av.caller, aI, cD))
632+@Callable(aw)
633+func lockShareTokens (aJ,cE) = valueOrElse(cS(aJ), valueOrElse(cO(), cU(aw, aw.caller, aJ, cE)))
601634
602635
603636
604-@Callable(av)
605-func lockShareTokensFromPool (dG,aI,cD) = valueOrElse(cN(), valueOrElse(cP(av, aI), cR(av, Address(dG), aI, cD)))
637+@Callable(aw)
638+func lockShareTokensFromPool (dM,aJ,cE) = valueOrElse(cS(aJ), valueOrElse(cO(), valueOrElse(cQ(aw, aJ), cU(aw, Address(dM), aJ, cE))))
606639
607640
608641
609-@Callable(av)
610-func lockStakedShareTokens (aI,cD,dH) = valueOrElse(cN(), {
611- let cT = aO(aI)
612- let aN = toString(av.caller)
613- let cU = aK(aI)
614- let bQ = valueOrElse(getInteger(this, (aI + n)), cU)
615- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
616- let cW = valueOrElse(getInteger(this, (((aI + "_") + aN) + k)), 0)
617- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
618- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
619- let cZ = (cV + cX)
620- let dI = cI(cD)
621- let db = dI._1
622- let dc = dI._2
623- let dd = getIntegerValue(this, p)
624- if ((aH(aI) > height))
642+@Callable(aw)
643+func lockStakedShareTokens (aJ,cE,dN) = valueOrElse(cS(aJ), valueOrElse(cO(), {
644+ let cW = aP(aJ)
645+ let aO = toString(aw.caller)
646+ let cX = aL(aJ)
647+ let bR = valueOrElse(getInteger(this, (aJ + o)), cX)
648+ let cY = valueOrElse(getInteger(this, (((aJ + "_") + aO) + i)), 0)
649+ let cZ = valueOrElse(getInteger(this, (((aJ + "_") + aO) + l)), 0)
650+ let da = valueOrElse(getInteger(this, (((aJ + "_") + aO) + j)), 0)
651+ let db = valueOrElse(getInteger(this, (((aJ + "_") + aO) + m)), cY)
652+ let dc = (cY + da)
653+ let dO = cJ(cE)
654+ let de = dO._1
655+ let df = dO._2
656+ let dg = getIntegerValue(this, q)
657+ if ((aI(aJ) > height))
625658 then throw("You can't lock shareTokens till first harvest end.")
626- else if ((0 >= cD))
659+ else if ((0 >= cE))
627660 then throw("lockType must be > 0")
628- else if ((dH > cV))
629- then throw(("You can't lock more than " + toString(cV)))
630- else if ((aP(cT) > cU))
661+ else if ((dN > cY))
662+ then throw(("You can't lock more than " + toString(cY)))
663+ else if ((aQ(cW) > cX))
631664 then throw("Balance of share-token is lower than totalAmount")
632- else if (if ((cW == 0))
633- then if (if ((1 > size(av.payments)))
665+ else if (if ((cZ == 0))
666+ then if (if ((1 > size(aw.payments)))
634667 then true
635- else (av.payments[0].assetId != unit))
668+ else (aw.payments[0].assetId != unit))
636669 then true
637- else (dd > av.payments[0].amount)
670+ else (dg > aw.payments[0].amount)
638671 else false)
639- then throw((("You need to pay additional waves comission " + toString(dd)) + "WAVES"))
640- else if (if ((cW == 0))
641- then (0 >= dH)
672+ then throw((("You need to pay additional waves comission " + toString(dg)) + "WAVES"))
673+ else if (if ((cZ == 0))
674+ then (0 >= dN)
642675 else false)
643676 then throw("lockAmount must be greater than 0")
644- else if ((0 > dH))
677+ else if ((0 > dN))
645678 then throw("lockAmount must be positive")
646- else if ((cW > (height + db)))
679+ else if ((cZ > (height + de)))
647680 then throw("You cannot lock sharetokens for a period less than what you have already locked")
648681 else {
649- let dh = (cX + dH)
650- let dt = (cV - dH)
651- let di = (height + db)
652- let dg = (fraction(dh, dc, U) + dt)
653- let dJ = bN(aI, aN)
654- let bo = dJ._1
655- let bp = dJ._2
656- let cx = dJ._3
657- let dm = dJ._4
658- let dn = (aZ(aI, aN) + cx)
659-[IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + i), dh), IntegerEntry((((aI + "_") + aN) + k), di), IntegerEntry((((aI + "_") + aN) + j), cD), IntegerEntry((((aI + "_") + aN) + l), dg), IntegerEntry((aI + n), ((bQ - cY) + dg)), IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)]
682+ let dk = (da + dN)
683+ let dx = (cY - dN)
684+ let dl = (height + de)
685+ let dj = (fraction(dk, df, V) + dx)
686+ let dP = bO(aJ, aO)
687+ let bp = dP._1
688+ let bq = dP._2
689+ let cy = dP._3
690+ let dp = dP._4
691+ let dq = (ba(aJ, aO) + cy)
692+[IntegerEntry((((aJ + "_") + aO) + i), dx), IntegerEntry((((aJ + "_") + aO) + j), dk), IntegerEntry((((aJ + "_") + aO) + l), dl), IntegerEntry((((aJ + "_") + aO) + k), cE), IntegerEntry((((aJ + "_") + aO) + m), dj), IntegerEntry((aJ + o), ((bR - db) + dj)), IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
660693 }
694+ }))
695+
696+
697+
698+@Callable(aw)
699+func unlockUserLock (aJ,aO) = valueOrElse(cO(), {
700+ let cZ = valueOrErrorMessage(getInteger(this, (((aJ + "_") + aO) + l)), (((("There is no pool " + aJ) + " or user ") + aO) + "with lock"))
701+ if ((cZ > height))
702+ then throw(("You can't unlock sharetokens till " + toString(cZ)))
703+ else (dE(aw, aJ, aO) ++ [ScriptTransfer(aw.caller, getIntegerValue(this, q), unit)])
661704 })
662705
663706
664707
665-@Callable(av)
666-func unlockUserLock (aI,aN) = valueOrElse(cN(), {
667- let dd = getIntegerValue(this, p)
668- let cW = valueOrErrorMessage(getInteger(this, (((aI + "_") + aN) + k)), (((("There is no pool " + aI) + " or user ") + aN) + "with lock"))
669- let bQ = getIntegerValue(this, (aI + n))
670- let cV = valueOrElse(getInteger(this, (((aI + "_") + aN) + h)), 0)
671- let cX = valueOrElse(getInteger(this, (((aI + "_") + aN) + i)), 0)
672- let cY = valueOrElse(getInteger(this, (((aI + "_") + aN) + l)), cV)
673- if ((cW > height))
674- then throw(("You can't unlock sharetokens till " + toString(cW)))
675- else {
676- let dt = (cV + cX)
677- let dK = bN(aI, aN)
678- let bo = dK._1
679- let bp = dK._2
680- let cx = dK._3
681- let dm = dK._4
682- let dn = (aZ(aI, aN) + cx)
683-[IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + h), dt), IntegerEntry((((aI + "_") + aN) + l), dt), IntegerEntry((aI + n), ((bQ - cY) + dt)), IntegerEntry((((aI + "_") + aN) + x), dn), DeleteEntry((((aI + "_") + aN) + i)), DeleteEntry((((aI + "_") + aN) + k)), DeleteEntry((((aI + "_") + aN) + j)), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq), ScriptTransfer(av.caller, dd, unit)]
684- }
708+@Callable(aw)
709+func unlockUserLockDeprecated (aJ,aO) = valueOrElse(cO(), valueOrElse(cT(aw), if (!(cR(aJ)))
710+ then throw("Pool must be deprecated")
711+ else if (isDefined(getInteger(this, (((aJ + "_") + aO) + l))))
712+ then (dE(aw, aJ, aO) ++ [ScriptTransfer(ai, getIntegerValue(this, q), unit)])
713+ else nil))
714+
715+
716+
717+@Callable(aw)
718+func withdrawShareTokens (aJ,dt) = valueOrElse(cO(), ds(aw, aw.caller, aJ, dt))
719+
720+
721+
722+@Callable(aw)
723+func withdrawShareTokensFromPool (dM,aJ,dt) = valueOrElse(cO(), valueOrElse(cQ(aw, aJ), ds(aw, Address(dM), aJ, dt)))
724+
725+
726+
727+@Callable(aw)
728+func claim (aJ) = valueOrElse(cO(), {
729+ let bE = dB(aw, aJ, aw.caller)
730+ if ((bE._2 == 0))
731+ then throw("You have 0 available SWOP")
732+ else bE
685733 })
686734
687735
688736
689-@Callable(av)
690-func withdrawShareTokens (aI,dq) = valueOrElse(cN(), dp(av, av.caller, aI, dq))
737+@Callable(aw)
738+func claimInternal (aJ,cV) = valueOrElse(cO(), valueOrElse(cT(aw), dB(aw, aJ, Address(cV))))
691739
692740
693741
694-@Callable(av)
695-func withdrawShareTokensFromPool (dG,aI,dq) = valueOrElse(cN(), valueOrElse(cP(av, aI), dp(av, Address(dG), aI, dq)))
696-
697-
698-
699-@Callable(av)
700-func claim (aI) = valueOrElse(cN(), {
701- let bD = dx(av, aI, av.caller)
702- if ((bD._2 == 0))
703- then throw("You have 0 available SWOP")
704- else bD
705- })
706-
707-
708-
709-@Callable(av)
710-func claimInternal (aI,cS) = valueOrElse(cN(), valueOrElse(cQ(av), dx(av, aI, Address(cS))))
711-
712-
713-
714-@Callable(av)
715-func claimAndStake (aI) = valueOrElse(cN(), {
716- let cx = {
717- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
718- if ($isInstanceOf(dL, "Int"))
719- then dL
720- else throw(($getType(dL) + " couldn't be cast to Int"))
742+@Callable(aw)
743+func claimAndStake (aJ) = valueOrElse(cO(), {
744+ let cy = {
745+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
746+ if ($isInstanceOf(dQ, "Int"))
747+ then dQ
748+ else throw(($getType(dQ) + " couldn't be cast to Int"))
721749 }
722- if ((cx == cx))
723- then if ((cx == 0))
750+ if ((cy == cy))
751+ then if ((cy == 0))
724752 then throw("You have 0 available SWOP")
725753 else {
726- let dM = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(aq, cx)])
727- if ((dM == dM))
754+ let dR = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, cy)])
755+ if ((dR == dR))
728756 then nil
729757 else throw("Strict value is not equal to itself.")
730758 }
731759 else throw("Strict value is not equal to itself.")
732760 })
733761
734762
735763
736-@Callable(av)
737-func claimAll (cp) = valueOrElse(cN(), {
738- func dN (dO,aI) = {
739- let cx = {
740- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
741- if ($isInstanceOf(dL, "Int"))
742- then dL
743- else throw(($getType(dL) + " couldn't be cast to Int"))
764+@Callable(aw)
765+func claimAll (cq) = valueOrElse(cO(), {
766+ func dS (dT,aJ) = {
767+ let cy = {
768+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
769+ if ($isInstanceOf(dQ, "Int"))
770+ then dQ
771+ else throw(($getType(dQ) + " couldn't be cast to Int"))
744772 }
745- if ((cx == cx))
746- then (dO + cx)
773+ if ((cy == cy))
774+ then (dT + cy)
747775 else throw("Strict value is not equal to itself.")
748776 }
749777
750- let dO = {
751- let aA = cp
752- let aB = size(aA)
753- let aC = 0
754- func aD (aE,aF) = if ((aF >= aB))
755- then aE
756- else dN(aE, aA[aF])
778+ let dT = {
779+ let aB = cq
780+ let aC = size(aB)
781+ let aD = 0
782+ func aE (aF,aG) = if ((aG >= aC))
783+ then aF
784+ else dS(aF, aB[aG])
757785
758- func aG (aE,aF) = if ((aF >= aB))
759- then aE
786+ func aH (aF,aG) = if ((aG >= aC))
787+ then aF
760788 else throw("List size exceeds 60")
761789
762- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
790+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
763791 }
764- if ((dO == 0))
792+ if ((dT == 0))
765793 then throw("You have 0 available SWOP")
766- else [ScriptTransfer(av.caller, dO, aq)]
794+ else [ScriptTransfer(aw.caller, dT, ar)]
767795 })
768796
769797
770798
771-@Callable(av)
772-func claimAllAndStake (cp) = valueOrElse(cN(), {
773- func dN (dO,aI) = {
774- let cx = {
775- let dL = invoke(this, "claimInternal", [aI, av.caller.bytes], nil)
776- if ($isInstanceOf(dL, "Int"))
777- then dL
778- else throw(($getType(dL) + " couldn't be cast to Int"))
799+@Callable(aw)
800+func claimAllAndStake (cq) = valueOrElse(cO(), {
801+ func dS (dT,aJ) = {
802+ let cy = {
803+ let dQ = invoke(this, "claimInternal", [aJ, aw.caller.bytes], nil)
804+ if ($isInstanceOf(dQ, "Int"))
805+ then dQ
806+ else throw(($getType(dQ) + " couldn't be cast to Int"))
779807 }
780- if ((cx == cx))
781- then (dO + cx)
808+ if ((cy == cy))
809+ then (dT + cy)
782810 else throw("Strict value is not equal to itself.")
783811 }
784812
785- let dO = {
786- let aA = cp
787- let aB = size(aA)
788- let aC = 0
789- func aD (aE,aF) = if ((aF >= aB))
790- then aE
791- else dN(aE, aA[aF])
813+ let dT = {
814+ let aB = cq
815+ let aC = size(aB)
816+ let aD = 0
817+ func aE (aF,aG) = if ((aG >= aC))
818+ then aF
819+ else dS(aF, aB[aG])
792820
793- func aG (aE,aF) = if ((aF >= aB))
794- then aE
821+ func aH (aF,aG) = if ((aG >= aC))
822+ then aF
795823 else throw("List size exceeds 60")
796824
797- aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 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)
825+ aH(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aE(aD, 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)
798826 }
799- if ((dO == 0))
827+ if ((dT == 0))
800828 then throw("You have 0 available SWOP")
801829 else {
802- let dM = invoke(aj, "lockSWOPFromFarming", nil, [AttachedPayment(aq, dO)])
803- if ((dM == dM))
830+ let dR = invoke(ak, "lockSWOPFromFarming", nil, [AttachedPayment(ar, dT)])
831+ if ((dR == dR))
804832 then nil
805833 else throw("Strict value is not equal to itself.")
806834 }
807835 })
808836
809837
810838
811-@Callable(av)
812-func updateUserBoostInterest (aI,aN) = valueOrElse(cN(), if ((av.caller != ai))
839+@Callable(aw)
840+func updateUserBoostInterest (aJ,aO) = valueOrElse(cO(), if ((aw.caller != aj))
813841 then throw("Only voiting can call this function")
814842 else {
815- let dP = bN(aI, aN)
816- let bo = dP._1
817- let bp = dP._2
818- let cx = dP._3
819- let dm = dP._4
820- let dn = (aZ(aI, aN) + cx)
821-[IntegerEntry((((aI + "_") + aN) + s), bo), IntegerEntry((((aI + "_") + aN) + u), bp), IntegerEntry((aI + r), bo), IntegerEntry((aI + t), bp), IntegerEntry((aI + v), height), IntegerEntry((((aI + "_") + aN) + x), dn), Reissue(aq, dm, true), ScriptTransfer(am, dm, aq)]
843+ let dU = bO(aJ, aO)
844+ let bp = dU._1
845+ let bq = dU._2
846+ let cy = dU._3
847+ let dp = dU._4
848+ let dq = (ba(aJ, aO) + cy)
849+[IntegerEntry((((aJ + "_") + aO) + t), bp), IntegerEntry((((aJ + "_") + aO) + v), bq), IntegerEntry((aJ + s), bp), IntegerEntry((aJ + u), bq), IntegerEntry((aJ + w), height), IntegerEntry((((aJ + "_") + aO) + y), dq), Reissue(ar, dp, true), ScriptTransfer(an, dp, ar)]
822850 })
823851
824852
825853
826-@Callable(av)
827-func shutdown () = valueOrElse(cO(av), if (!(ao))
828- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, c), "the cause wasn't specified")))
829- else cL("Paused by admin"))
854+@Callable(aw)
855+func shutdown () = valueOrElse(cP(aw), if (!(ap))
856+ then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, d), "the cause wasn't specified")))
857+ else cM("Paused by admin"))
830858
831859
832860
833-@Callable(av)
834-func activate () = valueOrElse(cO(av), if (ao)
861+@Callable(aw)
862+func activate () = valueOrElse(cP(aw), if (ap)
835863 then throw("DApp is already active")
836- else [BooleanEntry(a, true), DeleteEntry(c)])
864+ else [BooleanEntry(a, true), DeleteEntry(d)])
837865
838866
839-@Verifier(dQ)
840-func dR () = {
841- let ab = dQ
842- let dS = if (sigVerify(dQ.bodyBytes, dQ.proofs[0], ae))
867+@Verifier(dV)
868+func dW () = {
869+ let ac = dV
870+ let dX = if (sigVerify(dV.bodyBytes, dV.proofs[0], af))
843871 then 1
844872 else 0
845- let dT = if (sigVerify(dQ.bodyBytes, dQ.proofs[1], af))
873+ let dY = if (sigVerify(dV.bodyBytes, dV.proofs[1], ag))
846874 then 1
847875 else 0
848- let dU = if (sigVerify(dQ.bodyBytes, dQ.proofs[2], ag))
876+ let dZ = if (sigVerify(dV.bodyBytes, dV.proofs[2], ah))
849877 then 1
850878 else 0
851- (((dS + dT) + dU) >= 2)
879+ (((dX + dY) + dZ) >= 2)
852880 }
853881

github/deemru/w8io/3ef1775 
341.34 ms