tx · DaQaMBzCwiyn3dnFbjgMcMdvoA1SXrVASieXhTycjm3w

3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5:  -0.03900000 Waves

2023.03.17 17:08 [2494094] smart account 3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5 > SELF 0.00000000 Waves

{ "type": 13, "id": "DaQaMBzCwiyn3dnFbjgMcMdvoA1SXrVASieXhTycjm3w", "fee": 3900000, "feeAssetId": null, "timestamp": 1679062186466, "version": 2, "chainId": 84, "sender": "3MzqQ3HKdkHmJmk9mDhAeAMxmK5D2ztdAe5", "senderPublicKey": "FEnkfXnQZkk1FmjhH6QZqyK2taN6ngnZBexevKxouLUM", "proofs": [ "3s9MSVDADAr7RTA4KMQMx4zdxzqQ9K2yoh35JiKWpi5gYMFcJudoAyJ79jB6iCteJNy4uW4uixxaV9hcrrqX3k7s", "2dkrzeucU7oMJqVrVGuVn2A55PiHAEva8oiD3AzbusvvjuEPevo6RXCVVgH9r4GLRUacWQHeqVzV23oTeSoDxJHh" ], "script": "base64:BgJKCAISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERISBgoEAhgREhIGCgQCGBESEgYKBAIYERJQAAd2ZXJzaW9uAgUxLjAuMAAIa1ZlcnNpb24CB3ZlcnNpb24AB2tBY3RpdmUCBmFjdGl2ZQALa0RlcHJlY2F0ZWQCC2RlcHJlY2F0ZWRfAAlrQXNzZXRJZEECCkFfYXNzZXRfaWQACWtBc3NldElkQgIKQl9hc3NldF9pZAAJa0JhbGFuY2VBAg9BX2Fzc2V0X2JhbGFuY2UACWtCYWxhbmNlQgIPQl9hc3NldF9iYWxhbmNlAA1rQmFsYW5jZUluaXRBAgxBX2Fzc2V0X2luaXQADWtCYWxhbmNlSW5pdEICDEJfYXNzZXRfaW5pdAANa1NoYXJlQXNzZXRJZAIOc2hhcmVfYXNzZXRfaWQAEWtTaGFyZUFzc2V0U3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkABGtGZWUCCmNvbW1pc3Npb24ABmtDYXVzZQIOc2h1dGRvd25fY2F1c2UADWtGaXJzdEhhcnZlc3QCDWZpcnN0X2hhcnZlc3QAE2tGaXJzdEhhcnZlc3RIZWlnaHQCFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAtrU2hhcmVMaW1pdAIcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAALa0Jhc2VQZXJpb2QCC2Jhc2VfcGVyaW9kAA1rUGVyaW9kTGVuZ3RoAg1wZXJpb2RfbGVuZ3RoAAxrU3RhcnRIZWlnaHQCDHN0YXJ0X2hlaWdodAAMa1VTRE5BZGRyZXNzAhhzdGFraW5nX3VzZG5uc2J0X2FkZHJlc3MADGtFVVJOQWRkcmVzcwIUc3Rha2luZ19ldXJuX2FkZHJlc3MADmtMZWFzaW5nQW1vdW50Ag5sZWFzaW5nX2Ftb3VudAAMa1VTRE5Bc3NldElkAg11c2RuX2Fzc2V0X2lkAAxrRVVSTkFzc2V0SWQCDWV1cm5fYXNzZXRfaWQADmtTdGFraW5nQXNzZXRzAg5zdGFraW5nX2Fzc2V0cwANa09yYWNsZUFjdGl2ZQIUYWN0aXZlX2FsbF9jb250cmFjdHMACmtEaXNjb3VudHMCCWRpc2NvdW50cwAPa0Rpc2NvdW50VmFsdWVzAg9kaXNjb3VudF92YWx1ZXMAD2tVc2VyR1N3b3BJbkdvdgINX0dTd29wX2Ftb3VudAAOa1VzZXJTd29wSW5Hb3YCDF9TV09QX2Ftb3VudAALa09yYWNsZVBvb2wCBXBvb2xfAA1rQWRtaW5QdWJLZXkxAgthZG1pbl9wdWJfMQANa0FkbWluUHViS2V5MgILYWRtaW5fcHViXzIADWtBZG1pblB1YktleTMCC2FkbWluX3B1Yl8zABJrQWRtaW5JbnZva2VQdWJLZXkCEGFkbWluX2ludm9rZV9wdWIAEGtNb25leUJveEFkZHJlc3MCEW1vbmV5X2JveF9hZGRyZXNzAA9rVGVhbUJveEFkZHJlc3MCEHRlYW1fYm94X2FkZHJlc3MADmtWb3RpbmdBZGRyZXNzAg52b3RpbmdfYWRkcmVzcwALa0dvdkFkZHJlc3MCEmdvdmVybmFuY2VfYWRkcmVzcwAPa0Zhcm1pbmdBZGRyZXNzAg9mYXJtaW5nX2FkZHJlc3MABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEDa2V5BAckbWF0Y2gwCQCdCAIFBm9yYWNsZQUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQGc3RyaW5nBQckbWF0Y2gwCQDZBAEFBnN0cmluZwQHbm90aGluZwUHJG1hdGNoMAkAAgEJAKwCAgUDa2V5AghpcyBlbXB0eQAMYWRtaW5QdWJLZXkxCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTEADGFkbWluUHViS2V5MgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkyAAxhZG1pblB1YktleTMJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MwARYWRtaW5JbnZva2VQdWJLZXkJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUSa0FkbWluSW52b2tlUHViS2V5AA9tb25leUJveEFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBRBrTW9uZXlCb3hBZGRyZXNzAA50ZWFtQm94QWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFD2tUZWFtQm94QWRkcmVzcwANdm90aW5nQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDmtWb3RpbmdBZGRyZXNzAApnb3ZBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQULa0dvdkFkZHJlc3MADmZhcm1pbmdBZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUPa0Zhcm1pbmdBZGRyZXNzAARVU0ROCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQXNzZXRJZAAERVVSTgkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRVVSTkFzc2V0SWQADXN0YWtpbmdBc3NldHMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBm9yYWNsZQUOa1N0YWtpbmdBc3NldHMAEnN0YWtpbmdVU0ROQWRkcmVzcwkBB0FkZHJlc3MBCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDGtVU0ROQWRkcmVzcwASc3Rha2luZ0VVUk5BZGRyZXNzCQEHQWRkcmVzcwEJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUMa0VVUk5BZGRyZXNzAApiYXNlUGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNdm90aW5nQWRkcmVzcwULa0Jhc2VQZXJpb2QCEUVtcHR5IGtCYXNlUGVyaW9kAAtzdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFDXZvdGluZ0FkZHJlc3MFDGtTdGFydEhlaWdodAISRW1wdHkga1N0YXJ0SGVpZ2h0AAxwZXJpb2RMZW5ndGgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ12b3RpbmdBZGRyZXNzBQ1rUGVyaW9kTGVuZ3RoAhNFbXB0eSBrUGVyaW9kTGVuZ3RoABVmaXJzdEhhcnZlc3RFbmRQZXJpb2QJAGQCCQBkAgUKYmFzZVBlcmlvZAkAaQIJAGUCBQZoZWlnaHQFC3N0YXJ0SGVpZ2h0BQxwZXJpb2RMZW5ndGgAAwAGYWN0aXZlCQERQGV4dHJOYXRpdmUoMTA1MSkCBQZvcmFjbGUFDWtPcmFjbGVBY3RpdmUACWZlZVNjYWxlNgDAhD0ABnNjYWxlOACAwtcvAAdzY2FsZTE2CQC2AgEAgICE/qbe4REBDmFjY291bnRCYWxhbmNlAgdhc3NldElkBHBvb2wEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEcG9vbAUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHBvb2wJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDHN0YWtlZEFtb3VudAIHYXNzZXRJZARwb29sBBZzdGFrZWRBbW91bnRDYWxjdWxhdGVkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEA2FJZAUHJG1hdGNoMAMJAAACBQNhSWQFBFVTRE4JAJoIAgUSc3Rha2luZ1VTRE5BZGRyZXNzCQCsAgIJAKwCAgkArAICAgxycGRfYmFsYW5jZV8JANgEAQUDYUlkAgFfCQClCAEFBHBvb2wDCQAAAgUDYUlkBQRFVVJOCQCaCAIFEnN0YWtpbmdFVVJOQWRkcmVzcwkArAICCQCsAgIJAKwCAgIYJXMlcyVzX19zdGFraW5nQmFsYW5jZV9fCQDYBAEFA2FJZAICX18JAKUIAQUEcG9vbAAAAwkAAQIFByRtYXRjaDACBFVuaXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEcG9vbAUOa0xlYXNpbmdBbW91bnQAAAkAAgECC01hdGNoIGVycm9yBAckbWF0Y2gwBRZzdGFrZWRBbW91bnRDYWxjdWxhdGVkAwkAAQIFByRtYXRjaDACA0ludAQBaQUHJG1hdGNoMAUBaQAAAQxnZXRBc3NldEluZm8BB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDAwkAAQIFByRtYXRjaDACBlN0cmluZwYJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAQLJHQwNDA3OTQyNTEEByRtYXRjaDEFAmlkAwkAAQIFByRtYXRjaDECCkJ5dGVWZWN0b3IEA2FJZAUHJG1hdGNoMQkAlAoCCQDYBAEFA2FJZAUDYUlkAwkAAQIFByRtYXRjaDECBlN0cmluZwQDYUlkBQckbWF0Y2gxCQCUCgIFA2FJZAkA2QQBBQNhSWQJAAIBAgtNYXRjaCBlcnJvcgQIc3RyaW5nSWQIBQskdDA0MDc5NDI1MQJfMQQHYnl0ZXNJZAgFCyR0MDQwNzk0MjUxAl8yBARpbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUHYnl0ZXNJZAkArAICCQCsAgICBkFzc2V0IAUIc3RyaW5nSWQCDiBkb2Vzbid0IGV4aXN0CQCVCgMFCHN0cmluZ0lkCAUEaW5mbwRuYW1lCAUEaW5mbwhkZWNpbWFscwMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAkAlQoDAgVXQVZFUwIFV0FWRVMACAkAAgECC01hdGNoIGVycm9yAQdzdXNwZW5kAQVjYXVzZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQcJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa0NhdXNlBQVjYXVzZQUDbmlsARRjYWxjdWxhdGVGZWVEaXNjb3VudAEIdXNlckFkZHIECnN3b3BBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEFCHVzZXJBZGRyBQ5rVXNlclN3b3BJbkdvdgAABAtnU3dvcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQpnb3ZBZGRyZXNzCQCsAgIJAKUIAQUIdXNlckFkZHIFD2tVc2VyR1N3b3BJbkdvdgUKc3dvcEFtb3VudAQOZGlzY291bnRWYWx1ZXMJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUGb3JhY2xlBQ9rRGlzY291bnRWYWx1ZXMCASwECWRpc2NvdW50cwkAtQkCCQERQGV4dHJOYXRpdmUoMTA1MykCBQZvcmFjbGUFCmtEaXNjb3VudHMCASwDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAAkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwABBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAAMDCQBnAgULZ1N3b3BBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwABCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAIFC2dTd29wQW1vdW50BwkAZQIFCWZlZVNjYWxlNgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWRpc2NvdW50cwABAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAIJAGYCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAwULZ1N3b3BBbW91bnQHCQBlAgUJZmVlU2NhbGU2CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJZGlzY291bnRzAAIDAwkAZwIFC2dTd29wQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOZGlzY291bnRWYWx1ZXMAAwkAZgIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5kaXNjb3VudFZhbHVlcwAEBQtnU3dvcEFtb3VudAcJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMAAwMJAGcCBQtnU3dvcEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDmRpc2NvdW50VmFsdWVzAAQJAGUCBQlmZWVTY2FsZTYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQlkaXNjb3VudHMABAUJZmVlU2NhbGU2AQ1jYWxjdWxhdGVGZWVzBwlwbXRBbW91bnQSbWluQW1vdW50VG9SZWNlaXZlCXRva2VuRnJvbQd0b2tlblRvA2ZlZQZmZWVHb3YHZmVlVGVhbQQQYW1vdW50V2l0aG91dEZlZQkAawMFB3Rva2VuVG8FCXBtdEFtb3VudAkAZAIFCXBtdEFtb3VudAUJdG9rZW5Gcm9tBA1hbW91bnRXaXRoRmVlCQBrAwUQYW1vdW50V2l0aG91dEZlZQkAZQIFCWZlZVNjYWxlNgUDZmVlBQlmZWVTY2FsZTYEEGdvdmVybmFuY2VSZXdhcmQJAGsDBRBhbW91bnRXaXRob3V0RmVlBQZmZWVHb3YFCWZlZVNjYWxlNgQKdGVhbVJld2FyZAkAawMFEGFtb3VudFdpdGhvdXRGZWUFB2ZlZVRlYW0FCWZlZVNjYWxlNgMJAGYCBRJtaW5BbW91bnRUb1JlY2VpdmUFDWFtb3VudFdpdGhGZWUJAAIBCQCsAgIJAKwCAgkArAICAh1DYWxjdWxhdGVkIGFtb3VudCB0byByZWNlaXZlIAkApAMBBQ1hbW91bnRXaXRoRmVlAiAgaXMgbGVzcyB0aGFuIHNwZWNpZmllZCBtaW5pbXVtIAkApAMBBRJtaW5BbW91bnRUb1JlY2VpdmUJAJYKBAUQYW1vdW50V2l0aG91dEZlZQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAEQY2FsY3VsYXRlVmlydFBheQMJcG10QW1vdW50B2JhbGFuY2UDZmVlBAFGCQBlAgUJZmVlU2NhbGU2BQNmZWUEAWsJAGsDBQNmZWUANwBkBAFhCQBkAgUGc2NhbGU4CQBrAwkAaAIFAUYFAWsFBnNjYWxlOAkAaAIFCWZlZVNjYWxlNgUJZmVlU2NhbGU2BAFiCQBlAgkAZQIJAGQCCQBkAgUHYmFsYW5jZQkAawMFB2JhbGFuY2UFAUYFCWZlZVNjYWxlNgkAawMFCXBtdEFtb3VudAUBRgUJZmVlU2NhbGU2BQlwbXRBbW91bnQJAGsDBQlwbXRBbW91bnQJAGgCBQFGBQFrCQBoAgUJZmVlU2NhbGU2BQlmZWVTY2FsZTYEAWMJALkCAgkAvgIBCQC2AgEFB2JhbGFuY2UJALYCAQUJcG10QW1vdW50BAFECQC4AgIJALkCAgkAtgIBBQFiCQC2AgEFAWIJALwCAwkAuQICCQC2AgEABAUBYwkAtgIBBQFhCQC2AgEFBnNjYWxlOAkAoAMBCQC8AgMJALcCAgkAvgIBCQC2AgEFAWIJAQpzcXJ0QmlnSW50BAUBRAAAAAAFBERPV04JALYCAQUGc2NhbGU4CQC2AgEJAGgCAAIFAWEBEXBhcnNlUGF5bWVudEFzc2V0AQdhc3NldElkAwkAAAIFB2Fzc2V0SWQBAAUEdW5pdAUHYXNzZXRJZAERc3VzcGVuZFN1c3BpY2lvdXMGD2FjY291bnRCYWxhbmNlQQ9hY2NvdW50QmFsYW5jZUIIYmFsYW5jZUEIYmFsYW5jZUIIYXNzZXRJZEEIYXNzZXRJZEIJAQdzdXNwZW5kAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIjU3VzcGljaW91cyBzdGF0ZS4gQWN0dWFsIGJhbGFuY2VzOiAJAKQDAQUPYWNjb3VudEJhbGFuY2VBAgEgBQhhc3NldElkQQICLCAJAKQDAQUPYWNjb3VudEJhbGFuY2VCAgEgBQhhc3NldElkQgIJLiBTdGF0ZTogCQCkAwEFCGJhbGFuY2VBAgEgBQhhc3NldElkQQICLCAJAKQDAQUIYmFsYW5jZUICASAFCGFzc2V0SWRCAQhpc0FjdGl2ZQADBQZhY3RpdmUFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQxpc09yYWNsZVBvb2wBC3Bvb2xBZGRyZXNzAwkBCWlzRGVmaW5lZAEJAJ0IAgUGb3JhY2xlCQCsAgIFC2tPcmFjbGVQb29sBQtwb29sQWRkcmVzcwUEdW5pdAkAAgECG0RBcHAgaXMgbm90IHJlZ2lzdGVyZWQgcG9vbAEMaXNEZXByaWNhdGVkAQtwb29sQWRkcmVzcwMJAQEhAQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQZvcmFjbGUJAKwCAgULa0RlcHJlY2F0ZWQFC3Bvb2xBZGRyZXNzBwUEdW5pdAkAAgECMVBvb2wgaXMgZGVwcmVjYXRlZC4gT25seSB3aXRoZHJhdyBhY3Rpb24gYWxsb3dlZC4BD2dldFBvb2xCYWxhbmNlcwMEcG9vbAhhc3NldElkQQhhc3NldElkQgQIYmFsYW5jZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQQQIYmFsYW5jZUIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFCWtCYWxhbmNlQgQNc3Rha2VkQW1vdW50QQkBDHN0YWtlZEFtb3VudAIFCGFzc2V0SWRBBQRwb29sBA1zdGFrZWRBbW91bnRCCQEMc3Rha2VkQW1vdW50AgUIYXNzZXRJZEIFBHBvb2wED2FjY291bnRCYWxhbmNlQQkAZAIJAQ5hY2NvdW50QmFsYW5jZQIFCGFzc2V0SWRBBQRwb29sBQ1zdGFrZWRBbW91bnRBBA9hY2NvdW50QmFsYW5jZUIJAGQCCQEOYWNjb3VudEJhbGFuY2UCBQhhc3NldElkQgUEcG9vbAUNc3Rha2VkQW1vdW50QgQLc2hhcmVTdXBwbHkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHBvb2wFEWtTaGFyZUFzc2V0U3VwcGx5CQCXCgUFCGJhbGFuY2VBBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUIFC3NoYXJlU3VwcGx5AQ1nZXRQb29sQXNzZXRzAQRwb29sBAtzdHJBc3NldElkQQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAUJa0Fzc2V0SWRBBAtzdHJBc3NldElkQgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEcG9vbAUJa0Fzc2V0SWRCBAhhc3NldElkQQMJAAACBQtzdHJBc3NldElkQQIFV0FWRVMFBHVuaXQJANkEAQULc3RyQXNzZXRJZEEECGFzc2V0SWRCAwkAAAIFC3N0ckFzc2V0SWRCAgVXQVZFUwUEdW5pdAkA2QQBBQtzdHJBc3NldElkQgQMc2hhcmVBc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHBvb2wFDWtTaGFyZUFzc2V0SWQJAJcKBQULc3RyQXNzZXRJZEEFC3N0ckFzc2V0SWRCBQhhc3NldElkQQUIYXNzZXRJZEIFDHNoYXJlQXNzZXRJZAEMZ2V0RmVlUGFyYW1zAgRwb29sBmNhbGxlcgQLZmVlRGlzY291bnQJARRjYWxjdWxhdGVGZWVEaXNjb3VudAEFBmNhbGxlcgQDZmVlCQBuBAkBEUBleHRyTmF0aXZlKDEwNTApAgUEcG9vbAUEa0ZlZQULZmVlRGlzY291bnQFCWZlZVNjYWxlNgUHQ0VJTElORwQGZ292RmVlCQBrAwUDZmVlACMAZAQHdGVhbUZlZQkAawMFA2ZlZQAKAGQJAJUKAwUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUJAWkBBGluaXQEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMECyR0MDk1NjQ5NjQyCQCUCgIJAJEDAgUIcEFtb3VudHMAAAkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQKcG10QW1vdW50QQgFCyR0MDk1NjQ5NjQyAl8xBAtwbXRBc3NldElkQQgFCyR0MDk1NjQ5NjQyAl8yBAskdDA5NjQ3OTcyNQkAlAoCCQCRAwIFCHBBbW91bnRzAAEJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEECnBtdEFtb3VudEIIBQskdDA5NjQ3OTcyNQJfMQQLcG10QXNzZXRJZEIIBQskdDA5NjQ3OTcyNQJfMgMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQEJaXNEZWZpbmVkAQkAmwgCBQZjYWxsZXIFB2tBY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAIFC3BtdEFzc2V0SWRBBQtwbXRBc3NldElkQgkAAgECGEFzc2V0cyBtdXN0IGJlIGRpZmZlcmVudAQNJHQwMTAxNjAxMDIzNwkBDGdldEFzc2V0SW5mbwEFC3BtdEFzc2V0SWRBBA5wbXRTdHJBc3NldElkQQgFDSR0MDEwMTYwMTAyMzcCXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAxMDE2MDEwMjM3Al8yBAxwbXREZWNpbWFsc0EIBQ0kdDAxMDE2MDEwMjM3Al8zBA0kdDAxMDI0NjEwMzIzCQEMZ2V0QXNzZXRJbmZvAQULcG10QXNzZXRJZEIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMTAyNDYxMDMyMwJfMQQNcG10QXNzZXROYW1lQggFDSR0MDEwMjQ2MTAzMjMCXzIEDHBtdERlY2ltYWxzQggFDSR0MDEwMjQ2MTAzMjMCXzMEDGZpcnN0SGFydmVzdAkAAAIJAJEDAgUEYXJncwAAAgR0cnVlBAlzaGFyZU5hbWUJAKwCAgkArAICCQCsAgICAXMJAK8CAgUNcG10QXNzZXROYW1lQQAHAgFfCQCvAgIFDXBtdEFzc2V0TmFtZUIABwQQc2hhcmVEZXNjcmlwdGlvbgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIlNoYXJlVG9rZW4gb2YgU3dvcEZpIHByb3RvY29sIGZvciAFDXBtdEFzc2V0TmFtZUECBSBhbmQgBQ1wbXRBc3NldE5hbWVCAgwgYXQgYWRkcmVzcyAJAKUIAQUEdGhpcwQNc2hhcmVEZWNpbWFscwkAaQIJAGQCBQxwbXREZWNpbWFsc0EFDHBtdERlY2ltYWxzQgACBARhcmcxCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOBARhcmcyCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOBARhcmczCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOBBJzaGFyZUluaXRpYWxTdXBwbHkJAGsDBQRhcmcxBQRhcmcyBQRhcmczBApzaGFyZUlzc3VlCQDCCAUFCXNoYXJlTmFtZQUQc2hhcmVEZXNjcmlwdGlvbgUSc2hhcmVJbml0aWFsU3VwcGx5BQ1zaGFyZURlY2ltYWxzBgQMc2hhcmVJc3N1ZUlkCQC4CAEFCnNoYXJlSXNzdWUEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgUOcG10U3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgUOcG10U3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIECWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVyc2lvbgUHdmVyc2lvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRBBQ5wbXRTdHJBc3NldElkQQkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEIFDnBtdFN0ckFzc2V0SWRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEFCnBtdEFtb3VudEEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgUKcG10QW1vdW50QgkAzAgCCQEMSW50ZWdlckVudHJ5AgUEa0ZlZQkBEUBleHRyTmF0aXZlKDEwNTApAgUGb3JhY2xlAg1iYXNlX2ZlZV9jcG1tCQDMCAIFCnNoYXJlSXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa1NoYXJlQXNzZXRJZAkA2AQBBQxzaGFyZUlzc3VlSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5BRJzaGFyZUluaXRpYWxTdXBwbHkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBRJzaGFyZUluaXRpYWxTdXBwbHkFDHNoYXJlSXNzdWVJZAUDbmlsAwUMZmlyc3RIYXJ2ZXN0CQCUCgIFA25pbAkAlAoCCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa0ZpcnN0SGFydmVzdAUMZmlyc3RIYXJ2ZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQJAGgCBRVmaXJzdEhhcnZlc3RFbmRQZXJpb2QFDHBlcmlvZExlbmd0aAUDbmlsBQNuaWwJAJQKAgUDbmlsCQCUCgIFCWJhc2VFbnRyeQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEWluaXRXaXRoSW5pdFJhdGlvBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBA0kdDAxMjU0NDEyNzQ0CQCXCgUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAEJAJEDAgUEYXJncwACCQCRAwIFBGFyZ3MAAwkAAAIJAJEDAgUEYXJncwAEAgR0cnVlBAlhbXRBc3NldEEIBQ0kdDAxMjU0NDEyNzQ0Al8xBAlhbXRBc3NldEIIBQ0kdDAxMjU0NDEyNzQ0Al8yBAthc3NldElkQVN0cggFDSR0MDEyNTQ0MTI3NDQCXzMEC2Fzc2V0SWRCU3RyCAUNJHQwMTI1NDQxMjc0NAJfNAQMZmlyc3RIYXJ2ZXN0CAUNJHQwMTI1NDQxMjc0NAJfNQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAUJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQEJaXNEZWZpbmVkAQkAmwgCBQZjYWxsZXIFB2tBY3RpdmUJAAIBAhZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAIFC2Fzc2V0SWRBU3RyBQthc3NldElkQlN0cgkAAgECGEFzc2V0cyBtdXN0IGJlIGRpZmZlcmVudAQNJHQwMTMxNzkxMzI1NgkBDGdldEFzc2V0SW5mbwEFC2Fzc2V0SWRBU3RyBA5wbXRTdHJBc3NldElkQQgFDSR0MDEzMTc5MTMyNTYCXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAxMzE3OTEzMjU2Al8yBAxwbXREZWNpbWFsc0EIBQ0kdDAxMzE3OTEzMjU2Al8zBA0kdDAxMzI2NTEzMzQyCQEMZ2V0QXNzZXRJbmZvAQULYXNzZXRJZEJTdHIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMTMyNjUxMzM0MgJfMQQNcG10QXNzZXROYW1lQggFDSR0MDEzMjY1MTMzNDICXzIEDHBtdERlY2ltYWxzQggFDSR0MDEzMjY1MTMzNDICXzMECXNoYXJlTmFtZQkArAICCQCsAgIJAKwCAgIBcwkArwICBQ1wbXRBc3NldE5hbWVBAAcCAV8JAK8CAgUNcG10QXNzZXROYW1lQgAHBBBzaGFyZURlc2NyaXB0aW9uCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUNcG10QXNzZXROYW1lQQIFIGFuZCAFDXBtdEFzc2V0TmFtZUICDCBhdCBhZGRyZXNzIAkApQgBBQR0aGlzBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIEEnNoYXJlSW5pdGlhbFN1cHBseQAABApzaGFyZUlzc3VlCQDCCAUFCXNoYXJlTmFtZQUQc2hhcmVEZXNjcmlwdGlvbgUSc2hhcmVJbml0aWFsU3VwcGx5BQ1zaGFyZURlY2ltYWxzBgQMc2hhcmVJc3N1ZUlkCQC4CAEFCnNoYXJlSXNzdWUECWJhc2VFbnRyeQkAzAgCCQELU3RyaW5nRW50cnkCBQhrVmVyc2lvbgUHdmVyc2lvbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUHa0FjdGl2ZQYJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa0Fzc2V0SWRBBQ5wbXRTdHJBc3NldElkQQkAzAgCCQELU3RyaW5nRW50cnkCBQlrQXNzZXRJZEIFDnBtdFN0ckFzc2V0SWRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rQmFsYW5jZUluaXRBBQlhbXRBc3NldEEJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtCYWxhbmNlSW5pdEIFCWFtdEFzc2V0QgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRrRmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQZvcmFjbGUCDWJhc2VfZmVlX2NwbW0JAMwIAgUKc2hhcmVJc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQ1rU2hhcmVBc3NldElkCQDYBAEFDHNoYXJlSXNzdWVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkFEnNoYXJlSW5pdGlhbFN1cHBseQUDbmlsAwUMZmlyc3RIYXJ2ZXN0CQCUCgIFA25pbAkAlAoCCQDOCAIFCWJhc2VFbnRyeQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa0ZpcnN0SGFydmVzdAUMZmlyc3RIYXJ2ZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrRmlyc3RIYXJ2ZXN0SGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQJAGgCBRVmaXJzdEhhcnZlc3RFbmRQZXJpb2QFDHBlcmlvZExlbmd0aAUDbmlsBQNuaWwJAJQKAgUDbmlsCQCUCgIFCWJhc2VFbnRyeQUDbmlsAWkBGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUMYWRtaW5QdWJLZXkxCQDMCAIFDGFkbWluUHViS2V5MgkAzAgCBQxhZG1pblB1YktleTMJAMwIAgURYWRtaW5JbnZva2VQdWJLZXkFA25pbAgFAWkVb3JpZ2luQ2FsbGVyUHVibGljS2V5CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUECnNoYXJlTGltaXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAAJAJQKAgUDbmlsCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tTaGFyZUxpbWl0BQpzaGFyZUxpbWl0BQNuaWwFA25pbAFpAQhleGNoYW5nZQQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDE1NzY4MTU4NDQJAJQKAgkAkQMCBQhwQW1vdW50cwAACQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAABAlwbXRBbW91bnQIBQ0kdDAxNTc2ODE1ODQ0Al8xBApwbXRBc3NldElkCAUNJHQwMTU3NjgxNTg0NAJfMgQSbWluQW1vdW50VG9SZWNlaXZlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABA0kdDAxNTkwOTE1OTg1CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAxNTkwOTE1OTg1Al8xBAtzdHJBc3NldElkQggFDSR0MDE1OTA5MTU5ODUCXzIECGFzc2V0SWRBCAUNJHQwMTU5MDkxNTk4NQJfMwQIYXNzZXRJZEIIBQ0kdDAxNTkwOTE1OTg1Al80BA0kdDAxNTk5NDE2MTAwCQEPZ2V0UG9vbEJhbGFuY2VzAwgFAWkGY2FsbGVyBQhhc3NldElkQQUIYXNzZXRJZEIECGJhbGFuY2VBCAUNJHQwMTU5OTQxNjEwMAJfMQQIYmFsYW5jZUIIBQ0kdDAxNTk5NDE2MTAwAl8yBA9hY2NvdW50QmFsYW5jZUEIBQ0kdDAxNTk5NDE2MTAwAl8zBA9hY2NvdW50QmFsYW5jZUIIBQ0kdDAxNTk5NDE2MTAwAl80AwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkAAAIFCGJhbGFuY2VBAAAGCQAAAgUIYmFsYW5jZUIAAAkAAgECIENhbid0IGV4Y2hhbmdlIHdpdGggemVybyBiYWxhbmNlAwkAZwIAAAUSbWluQW1vdW50VG9SZWNlaXZlCQACAQkArAICAjRNaW5pbWFsIGFtb3VudCB0byByZWNlaXZlIG11c3QgYmUgcG9zaXRpdmUuIEFjdHVhbDogCQCkAwEFEm1pbkFtb3VudFRvUmVjZWl2ZQMJAQIhPQIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhc3NldElkQQkAzAgCBQhhc3NldElkQgUDbmlsBQpwbXRBc3NldElkCQACAQkArAICCQCsAgIJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQtzdHJBc3NldElkQQIEIG9yIAULc3RyQXNzZXRJZEIDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDE3MDAwMTcwNjcJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMTcwMDAxNzA2NwJfMQQGZ292RmVlCAUNJHQwMTcwMDAxNzA2NwJfMgQHdGVhbUZlZQgFDSR0MDE3MDAwMTcwNjcCXzMEDSR0MDE3MDgwMTc0MzEDCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAQ1jYWxjdWxhdGVGZWVzBwUJcG10QW1vdW50BRJtaW5BbW91bnRUb1JlY2VpdmUFCGJhbGFuY2VBBQhiYWxhbmNlQgUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUJAQ1jYWxjdWxhdGVGZWVzBwUJcG10QW1vdW50BRJtaW5BbW91bnRUb1JlY2VpdmUFCGJhbGFuY2VCBQhiYWxhbmNlQQUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAxNzA4MDE3NDMxAl8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMTcwODAxNzQzMQJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDE3MDgwMTc0MzECXzMECnRlYW1SZXdhcmQIBQ0kdDAxNzA4MDE3NDMxAl80BA0kdDAxNzQ0NTE3NzgwAwkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQCVCgMJAGQCBQhiYWxhbmNlQQUJcG10QW1vdW50CQBlAgkAZQIJAGUCBQhiYWxhbmNlQgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAUIYXNzZXRJZEIJAJUKAwkAZQIJAGUCCQBlAgUIYmFsYW5jZUEFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQJAGQCBQhiYWxhbmNlQgUJcG10QW1vdW50BQhhc3NldElkQQQLbmV3QmFsYW5jZUEIBQ0kdDAxNzQ0NTE3NzgwAl8xBAtuZXdCYWxhbmNlQggFDSR0MDE3NDQ1MTc3ODACXzIEC2Fzc2V0SWRTZW5kCAUNJHQwMTc0NDUxNzc4MAJfMwQNJHQwMTc3OTQxODA1NAMJAAACBQpwbXRBc3NldElkBQhhc3NldElkQQkAlAoCBQlwbXRBbW91bnQJAGQCCQBkAgUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAlAoCCQBkAgkAZAIFDWFtb3VudFdpdGhGZWUFEGdvdmVybmFuY2VSZXdhcmQFCnRlYW1SZXdhcmQFCXBtdEFtb3VudAQMc3Rha2VBbW91bnRBCAUNJHQwMTc3OTQxODA1NAJfMQQMc3Rha2VBbW91bnRCCAUNJHQwMTc3OTQxODA1NAJfMgQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRBCQDMCAIFDHN0YWtlQW1vdW50QQkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgkAAAIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCCQDMCAIFDHN0YWtlQW1vdW50QgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBBQtuZXdCYWxhbmNlQQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCBQtuZXdCYWxhbmNlQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFDWFtb3VudFdpdGhGZWUFC2Fzc2V0SWRTZW5kCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUQZ292ZXJuYW5jZVJld2FyZAULYXNzZXRJZFNlbmQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUOdGVhbUJveEFkZHJlc3MFCnRlYW1SZXdhcmQFC2Fzc2V0SWRTZW5kBQNuaWwJAMwIAgUNYW1vdW50V2l0aEZlZQkAzAgCBQthc3NldElkU2VuZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFnJlcGxlbmlzaFdpdGhUd29Ub2tlbnMEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQxpc0RlcHJpY2F0ZWQBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAQGY2FsbGVyCQEHQWRkcmVzcwEFC2NhbGxlckJ5dGVzBAtwbXRBc3NldElkQQkBEXBhcnNlUGF5bWVudEFzc2V0AQkAkQMCBQlwQXNzZXRJZHMAAAQLcG10QXNzZXRJZEIJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAEEDHN0YWtlRmFybWluZwkAAAIJAJEDAgUEYXJncwAAAgR0cnVlBAhsb2NrVHlwZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQQNJHQwMTkzNjkxOTQ1OQkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMTkzNjkxOTQ1OQJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAxOTM2OTE5NDU5Al8yBAhhc3NldElkQQgFDSR0MDE5MzY5MTk0NTkCXzMECGFzc2V0SWRCCAUNJHQwMTkzNjkxOTQ1OQJfNAQMc2hhcmVBc3NldElkCAUNJHQwMTkzNjkxOTQ1OQJfNQQNJHQwMTk0NjgxOTU5MgkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDE5NDY4MTk1OTICXzEECGJhbGFuY2VCCAUNJHQwMTk0NjgxOTU5MgJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMTk0NjgxOTU5MgJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMTk0NjgxOTU5MgJfNAQQc2hhcmVBc3NldFN1cHBseQgFDSR0MDE5NDY4MTk1OTICXzUDCQECIT0CCQCQAwEFBGFyZ3MAAgkAAgECD1dyb25nIGFyZ3Mgc2l6ZQMDCQECIT0CCQCQAwEFCHBBbW91bnRzAAIJAQIhPQIJAJADAQUIcEFtb3VudHMAAwcJAAIBAh5Ud28gb3IgdGhyZWUgcGF5bWVudHMgZXhwZWN0ZWQDAwkBAiE9AgULcG10QXNzZXRJZEEFCGFzc2V0SWRBBgkBAiE9AgULcG10QXNzZXRJZEIFCGFzc2V0SWRCCQACAQkArAICCQCsAgIJAKwCAgIlSW5jb3JyZWN0IGFzc2V0cyBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBSBhbmQgBQtzdHJBc3NldElkQgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgkAkQMCBQhwQW1vdW50cwAABQtwbXRBc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAJEDAgUIcEFtb3VudHMAAQULcG10QXNzZXRJZEIFA25pbAMJAAACCQCQAwEFCHBBbW91bnRzAAMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIDCQAAAgkAkQMCBQlwQXNzZXRJZHMAAgEABQR1bml0CQCRAwIFCXBBc3NldElkcwACCQCRAwIFCHBBbW91bnRzAAIFA25pbAkAzggCBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQNJHQwMjA1MjUyMDYwMgkBDGdldEFzc2V0SW5mbwEFC3BtdEFzc2V0SWRBBA5wbXRTdHJBc3NldElkQQgFDSR0MDIwNTI1MjA2MDICXzEEDXBtdEFzc2V0TmFtZUEIBQ0kdDAyMDUyNTIwNjAyAl8yBAxwbXREZWNpbWFsc0EIBQ0kdDAyMDUyNTIwNjAyAl8zBA0kdDAyMDYxNTIwNjkyCQEMZ2V0QXNzZXRJbmZvAQULcG10QXNzZXRJZEIEDnBtdFN0ckFzc2V0SWRCCAUNJHQwMjA2MTUyMDY5MgJfMQQNcG10QXNzZXROYW1lQggFDSR0MDIwNjE1MjA2OTICXzIEDHBtdERlY2ltYWxzQggFDSR0MDIwNjE1MjA2OTICXzMEB2luaXRpYWwJAAACCQBkAgUIYmFsYW5jZUEFCGJhbGFuY2VCAAAEDSR0MDIwNzU5MjE2MTUDBQdpbml0aWFsCQCXCgUJAJEDAgUIcEFtb3VudHMAAAkAkQMCBQhwQW1vdW50cwABAAAFC3BtdEFzc2V0SWRBCQC2AgEAAQQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDBQdzY2FsZTE2CQC2AgEJAJEDAgUIcEFtb3VudHMAAAkAtgIBBQhiYWxhbmNlQQQTcmF0aW9TaGFyZVRva2Vuc0luQgkAvAIDBQdzY2FsZTE2CQC2AgEJAJEDAgUIcEFtb3VudHMAAQkAtgIBBQhiYWxhbmNlQgMJAL8CAgUTcmF0aW9TaGFyZVRva2Vuc0luQgUTcmF0aW9TaGFyZVRva2Vuc0luQQQDcG10CQBrAwkAkQMCBQhwQW1vdW50cwAABQhiYWxhbmNlQgUIYmFsYW5jZUEJAJcKBQkAkQMCBQhwQW1vdW50cwAABQNwbXQJAGUCCQCRAwIFCHBBbW91bnRzAAEFA3BtdAULcG10QXNzZXRJZEIFE3JhdGlvU2hhcmVUb2tlbnNJbkEEA3BtdAkAawMJAJEDAgUIcEFtb3VudHMAAQUIYmFsYW5jZUEFCGJhbGFuY2VCCQCXCgUFA3BtdAkAkQMCBQhwQW1vdW50cwABCQBlAgkAkQMCBQhwQW1vdW50cwAABQNwbXQFC3BtdEFzc2V0SWRBBRNyYXRpb1NoYXJlVG9rZW5zSW5CBApwbXRBbW91bnRBCAUNJHQwMjA3NTkyMTYxNQJfMQQKcG10QW1vdW50QggFDSR0MDIwNzU5MjE2MTUCXzIEBmNoYW5nZQgFDSR0MDIwNzU5MjE2MTUCXzMEDWNoYW5nZUFzc2V0SWQIBQ0kdDAyMDc1OTIxNjE1Al80BA9zaGFyZVRva2VuUmF0aW8IBQ0kdDAyMDc1OTIxNjE1Al81BBVzaGFyZVRva2VuVG9QYXlBbW91bnQDBQdpbml0aWFsBA1zaGFyZURlY2ltYWxzCQBpAgkAZAIFDHBtdERlY2ltYWxzQQUMcG10RGVjaW1hbHNCAAIJAGsDCQBsBgUKcG10QW1vdW50QQUMcG10RGVjaW1hbHNBAAUAAQUMcG10RGVjaW1hbHNBBQRET1dOCQBsBgUKcG10QW1vdW50QgUMcG10RGVjaW1hbHNCAAUAAQUMcG10RGVjaW1hbHNCBQRET1dOCQBsBgAKAAAFDXNoYXJlRGVjaW1hbHMAAAAABQRET1dOCQCgAwEJALwCAwUPc2hhcmVUb2tlblJhdGlvCQC2AgEFEHNoYXJlQXNzZXRTdXBwbHkFB3NjYWxlMTYDCQAAAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAJAAIBAh1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAGYCAAAFBmNoYW5nZQkAAgECCkNoYW5nZSA8IDAEBnN0YWtlMQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEEJAMwIAgUOcG10U3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFDnBtdFN0ckFzc2V0SWRCCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFCnBtdEFtb3VudEIJAMwIAgUOcG10U3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIEDHNoYXJlVG9rZW5TVAMFDHN0YWtlRmFybWluZwQKc3RQYXltZW50cwkAzggCCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsAwkAAAIJAJADAQUIcEFtb3VudHMAAwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgMJAAACCQCRAwIFCXBBc3NldElkcwACAQAFBHVuaXQJAJEDAgUJcEFzc2V0SWRzAAIJAJEDAgUIcEFtb3VudHMAAgUDbmlsBQNuaWwEB3JlaXNzdWUJAPwHBAgFAWkGY2FsbGVyAhFyZWlzc3VlU2hhcmVUb2tlbgkAzAgCBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFA25pbAUDbmlsAwkAAAIFB3JlaXNzdWUFB3JlaXNzdWUEBnN0YWtlMwkA/AcEBQ5mYXJtaW5nQWRkcmVzcwIXbG9ja1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUIbG9ja1R5cGUFA25pbAUKc3RQYXltZW50cwMJAAACBQZzdGFrZTMFBnN0YWtlMwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQdSZWlzc3VlAwUMc2hhcmVBc3NldElkBRVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCBQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrQmFsYW5jZUEJAGQCBQhiYWxhbmNlQQUKcG10QW1vdW50QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBkAgUIYmFsYW5jZUIFCnBtdEFtb3VudEIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgUQc2hhcmVBc3NldFN1cHBseQUVc2hhcmVUb2tlblRvUGF5QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUGY2hhbmdlBQ1jaGFuZ2VBc3NldElkBQNuaWwFDHNoYXJlVG9rZW5TVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFXJlcGxlbmlzaFdpdGhPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMECnBtdEFzc2V0SWQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAAECXBtdEFtb3VudAkAkQMCBQhwQW1vdW50cwAABBB2aXJ0R2V0TWluQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEYXJncwAABAxzdGFrZUZhcm1pbmcJAAACCQCRAwIFBGFyZ3MAAQIEdHJ1ZQQIbG9ja1R5cGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRhcmdzAAIEDSR0MDI0MzcwMjQ0NjAJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDI0MzcwMjQ0NjACXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjQzNzAyNDQ2MAJfMgQIYXNzZXRJZEEIBQ0kdDAyNDM3MDI0NDYwAl8zBAhhc3NldElkQggFDSR0MDI0MzcwMjQ0NjACXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDI0MzcwMjQ0NjACXzUEDSR0MDI0NDY1MjQ1ODkJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyNDQ2NTI0NTg5Al8xBAhiYWxhbmNlQggFDSR0MDI0NDY1MjQ1ODkCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDI0NDY1MjQ1ODkCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDI0NDY1MjQ1ODkCXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAyNDQ2NTI0NTg5Al81BAdpbml0aWFsCQAAAgkAZAIFCGJhbGFuY2VBBQhiYWxhbmNlQgAAAwkBAiE9AgkAkAMBBQRhcmdzAAMJAAIBAg9Xcm9uZyBhcmdzIHNpemUDAwkBAiE9AgkAkAMBBQhwQW1vdW50cwABCQECIT0CCQCQAwEFCHBBbW91bnRzAAIHCQACAQIjVHdvIG9yIG9uZSBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAiE9AgUKcG10QXNzZXRJZAUIYXNzZXRJZEEJAQIhPQIFCnBtdEFzc2V0SWQFCGFzc2V0SWRCBwkAAgEJAKwCAgkArAICCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAULc3RyQXNzZXRJZEECBCBvciAFC3N0ckFzc2V0SWRCAwUHaW5pdGlhbAkAAgECMEZvciBpbml0aWFsIGV4Y2hhbmdlciB5b3UgbmVlZCB0byB1c2UgdHdvIHRva2VucwMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwDCQAAAgkAkAMBBQhwQW1vdW50cwACCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCAwkAAAIJAJEDAgUJcEFzc2V0SWRzAAIBAAUEdW5pdAkAkQMCBQlwQXNzZXRJZHMAAgkAkQMCBQhwQW1vdW50cwACBQNuaWwJAM4IAgUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDSR0MDI1NTAxMjU1NjgJAQxnZXRGZWVQYXJhbXMCCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgQDZmVlCAUNJHQwMjU1MDEyNTU2OAJfMQQGZ292RmVlCAUNJHQwMjU1MDEyNTU2OAJfMgQHdGVhbUZlZQgFDSR0MDI1NTAxMjU1NjgCXzMEDSR0MDI1NTc3Mjc4NDUDCQAAAgUKcG10QXNzZXRJZAUIYXNzZXRJZEEEDXZpcnRQYXlBbW91bnQJARBjYWxjdWxhdGVWaXJ0UGF5AwUJcG10QW1vdW50BQhiYWxhbmNlQQUDZmVlBA0kdDAyNTg0NDI1OTk5CQENY2FsY3VsYXRlRmVlcwcFDXZpcnRQYXlBbW91bnQFEHZpcnRHZXRNaW5BbW91bnQFCGJhbGFuY2VBBQhiYWxhbmNlQgUDZmVlBQZnb3ZGZWUFB3RlYW1GZWUEEGFtb3VudFdpdGhvdXRGZWUIBQ0kdDAyNTg0NDI1OTk5Al8xBA1hbW91bnRXaXRoRmVlCAUNJHQwMjU4NDQyNTk5OQJfMgQQZ292ZXJuYW5jZVJld2FyZAgFDSR0MDI1ODQ0MjU5OTkCXzMEB3RSZXdhcmQIBQ0kdDAyNTg0NDI1OTk5Al80BAxiYWxhbmNlQVZpcnQJAGQCBQhiYWxhbmNlQQUNdmlydFBheUFtb3VudAQMYmFsYW5jZUJWaXJ0CQBlAgkAZQIJAGQCBQhiYWxhbmNlQgUQYW1vdW50V2l0aG91dEZlZQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQLbmV3QmFsYW5jZUEJAGQCBQhiYWxhbmNlQQUJcG10QW1vdW50BAtuZXdCYWxhbmNlQgkAZQIJAGUCBQhiYWxhbmNlQgUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQTcmF0aW9TaGFyZVRva2Vuc0luQQkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUFWaXJ0BBNyYXRpb1NoYXJlVG9rZW5zSW5CCQC8AgMJALYCAQUNYW1vdW50V2l0aEZlZQUHc2NhbGUxNgkAtgIBBQxiYWxhbmNlQlZpcnQEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkAoAMBCQC8AgMJAJkDAQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5BCQDMCAIFE3JhdGlvU2hhcmVUb2tlbnNJbkIFA25pbAkAtgIBBRBzaGFyZUFzc2V0U3VwcGx5BQdzY2FsZTE2CQCaCggFC25ld0JhbGFuY2VBBQtuZXdCYWxhbmNlQgUVc2hhcmVUb2tlblRvUGF5QW1vdW50BRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBQhhc3NldElkQgULc3RyQXNzZXRJZEIFC3N0ckFzc2V0SWRBBA12aXJ0UGF5QW1vdW50CQEQY2FsY3VsYXRlVmlydFBheQMFCXBtdEFtb3VudAUIYmFsYW5jZUIFA2ZlZQQNJHQwMjY5MDEyNzA1NgkBDWNhbGN1bGF0ZUZlZXMHBQ12aXJ0UGF5QW1vdW50BRB2aXJ0R2V0TWluQW1vdW50BQhiYWxhbmNlQgUIYmFsYW5jZUEFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMjY5MDEyNzA1NgJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDI2OTAxMjcwNTYCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAyNjkwMTI3MDU2Al8zBAd0UmV3YXJkCAUNJHQwMjY5MDEyNzA1NgJfNAQMYmFsYW5jZUFWaXJ0CQBlAgkAZQIJAGQCBQhiYWxhbmNlQQUQYW1vdW50V2l0aG91dEZlZQUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAQMYmFsYW5jZUJWaXJ0CQBkAgUIYmFsYW5jZUIFDXZpcnRQYXlBbW91bnQEC25ld0JhbGFuY2VBCQBlAgkAZQIFCGJhbGFuY2VBBRBnb3Zlcm5hbmNlUmV3YXJkBQd0UmV3YXJkBAtuZXdCYWxhbmNlQgkAZAIFCGJhbGFuY2VCBQlwbXRBbW91bnQEE3JhdGlvU2hhcmVUb2tlbnNJbkEJALwCAwkAtgIBBQ1hbW91bnRXaXRoRmVlBQdzY2FsZTE2CQC2AgEFDGJhbGFuY2VBVmlydAQTcmF0aW9TaGFyZVRva2Vuc0luQgkAvAIDCQC2AgEJAGUCBQlwbXRBbW91bnQFDXZpcnRQYXlBbW91bnQFB3NjYWxlMTYJALYCAQUMYmFsYW5jZUJWaXJ0BBVzaGFyZVRva2VuVG9QYXlBbW91bnQJAKADAQkAvAIDCQCZAwEJAMwIAgUTcmF0aW9TaGFyZVRva2Vuc0luQQkAzAgCBRNyYXRpb1NoYXJlVG9rZW5zSW5CBQNuaWwJALYCAQUQc2hhcmVBc3NldFN1cHBseQUHc2NhbGUxNgkAmgoIBQtuZXdCYWxhbmNlQQULbmV3QmFsYW5jZUIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUQZ292ZXJuYW5jZVJld2FyZAUHdFJld2FyZAUIYXNzZXRJZEEFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQLbmV3QmFsYW5jZUEIBQ0kdDAyNTU3NzI3ODQ1Al8xBAtuZXdCYWxhbmNlQggFDSR0MDI1NTc3Mjc4NDUCXzIEFXNoYXJlVG9rZW5Ub1BheUFtb3VudAgFDSR0MDI1NTc3Mjc4NDUCXzMECWdvdlJld2FyZAgFDSR0MDI1NTc3Mjc4NDUCXzQECnRlYW1SZXdhcmQIBQ0kdDAyNTU3NzI3ODQ1Al81BA5nb3ZSZXdhcmRBc3NldAgFDSR0MDI1NTc3Mjc4NDUCXzYEEWdvdlJld2FyZEFzc2V0U3RyCAUNJHQwMjU1NzcyNzg0NQJfNwQNcG10QXNzZXRJZFN0cggFDSR0MDI1NTc3Mjc4NDUCXzgDCQAAAgUVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAJAAIBAh1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwUNcG10QXNzZXRJZFN0cgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBgkAzAgCBQlwbXRBbW91bnQJAMwIAgUNcG10QXNzZXRJZFN0cgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTEFBnN0YWtlMQQGc3Rha2UyAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwURZ292UmV3YXJkQXNzZXRTdHIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIFCWdvdlJld2FyZAUKdGVhbVJld2FyZAkAzAgCBRFnb3ZSZXdhcmRBc3NldFN0cgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgQMc2hhcmVUb2tlblNUAwUMc3Rha2VGYXJtaW5nBApzdFBheW1lbnRzCQDOCAIJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFDHNoYXJlQXNzZXRJZAUVc2hhcmVUb2tlblRvUGF5QW1vdW50BQNuaWwDCQAAAgkAkAMBBQhwQW1vdW50cwACCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCAwkAAAIJAJEDAgUJcEFzc2V0SWRzAAEBAAUEdW5pdAkAkQMCBQlwQXNzZXRJZHMAAQkAkQMCBQhwQW1vdW50cwABBQNuaWwFA25pbAQHcmVpc3N1ZQkA/AcECAUBaQZjYWxsZXICEXJlaXNzdWVTaGFyZVRva2VuCQDMCAIFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUDbmlsBQNuaWwDCQAAAgUHcmVpc3N1ZQUHcmVpc3N1ZQQGc3Rha2UzCQD8BwQFDmZhcm1pbmdBZGRyZXNzAhdsb2NrU2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCBQtjYWxsZXJCeXRlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQhsb2NrVHlwZQUDbmlsBQpzdFBheW1lbnRzAwkAAAIFBnN0YWtlMwUGc3Rha2UzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBB1JlaXNzdWUDBQxzaGFyZUFzc2V0SWQFFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBRVzaGFyZVRva2VuVG9QYXlBbW91bnQFDHNoYXJlQXNzZXRJZAUDbmlsCQCUCgIFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQULbmV3QmFsYW5jZUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgULbmV3QmFsYW5jZUIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBkAgUQc2hhcmVBc3NldFN1cHBseQUVc2hhcmVUb2tlblRvUGF5QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUJZ292UmV3YXJkBQ5nb3ZSZXdhcmRBc3NldAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUOZ292UmV3YXJkQXNzZXQFA25pbAUMc2hhcmVUb2tlblNUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcEC2NhbGxlckJ5dGVzBGFyZ3MIcEFtb3VudHMJcEFzc2V0SWRzCQELdmFsdWVPckVsc2UCCQEMaXNPcmFjbGVQb29sAQkApQgBCAUBaQZjYWxsZXIJAQt2YWx1ZU9yRWxzZQIJAQhpc0FjdGl2ZQAEBHRpbWUIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDSR0MDI5ODUzMjk5NDMJAQ1nZXRQb29sQXNzZXRzAQgFAWkGY2FsbGVyBAtzdHJBc3NldElkQQgFDSR0MDI5ODUzMjk5NDMCXzEEC3N0ckFzc2V0SWRCCAUNJHQwMjk4NTMyOTk0MwJfMgQIYXNzZXRJZEEIBQ0kdDAyOTg1MzI5OTQzAl8zBAhhc3NldElkQggFDSR0MDI5ODUzMjk5NDMCXzQEDHNoYXJlQXNzZXRJZAgFDSR0MDI5ODUzMjk5NDMCXzUEDSR0MDI5OTUyMzAwNzYJAQ9nZXRQb29sQmFsYW5jZXMDCAUBaQZjYWxsZXIFCGFzc2V0SWRBBQhhc3NldElkQgQIYmFsYW5jZUEIBQ0kdDAyOTk1MjMwMDc2Al8xBAhiYWxhbmNlQggFDSR0MDI5OTUyMzAwNzYCXzIED2FjY291bnRCYWxhbmNlQQgFDSR0MDI5OTUyMzAwNzYCXzMED2FjY291bnRCYWxhbmNlQggFDSR0MDI5OTUyMzAwNzYCXzQEEHNoYXJlQXNzZXRTdXBwbHkIBQ0kdDAyOTk1MjMwMDc2Al81BA0kdDAzMDA4NTMwNDY1AwkAAAIJAJADAQUIcEFtb3VudHMAAQQGcEFzc2V0CQERcGFyc2VQYXltZW50QXNzZXQBCQCRAwIFCXBBc3NldElkcwAAAwkBAiE9AgUGcEFzc2V0BQxzaGFyZUFzc2V0SWQJAAIBCQCsAgICJEluY29ycmVjdCBhc3NldCBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAkA2AQBBQxzaGFyZUFzc2V0SWQJAJQKAgkAkQMCBQhwQW1vdW50cwAABQZwQXNzZXQJAJQKAgAABQxzaGFyZUFzc2V0SWQECXBtdEFtb3VudAgFDSR0MDMwMDg1MzA0NjUCXzEECnBtdEFzc2V0SWQIBQ0kdDAzMDA4NTMwNDY1Al8yAwkBAiE9AgkAkAMBBQRhcmdzAAEJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQBmAgkAkAMBBQhwQW1vdW50cwABCQACAQIdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDAwkAZgIFCGJhbGFuY2VBBQ9hY2NvdW50QmFsYW5jZUEGCQBmAgUIYmFsYW5jZUIFD2FjY291bnRCYWxhbmNlQgkAlAoCBQNuaWwJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIFCXBtdEFtb3VudAUKcG10QXNzZXRJZAUDbmlsCQERc3VzcGVuZFN1c3BpY2lvdXMGBQ9hY2NvdW50QmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQgUIYmFsYW5jZUEFCGJhbGFuY2VCBQtzdHJBc3NldElkQQULc3RyQXNzZXRJZEIEDHVubG9ja0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQELdmFsdWVPckVsc2UCCQCRAwIFBGFyZ3MAAAIBMAQGdW5sb2NrAwkAZgIFDHVubG9ja0Ftb3VudAAACQD8BwQFDmZhcm1pbmdBZGRyZXNzAht3aXRoZHJhd1NoYXJlVG9rZW5zRnJvbVBvb2wJAMwIAgULY2FsbGVyQnl0ZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUMdW5sb2NrQW1vdW50BQNuaWwFA25pbAAAAwkAAAIFBnVubG9jawUGdW5sb2NrBA53aXRoZHJhd0Ftb3VudAkAZAIFCXBtdEFtb3VudAUMdW5sb2NrQW1vdW50BAxhbW91bnRUb1BheUEJAGsDBQ53aXRoZHJhd0Ftb3VudAUIYmFsYW5jZUEFEHNoYXJlQXNzZXRTdXBwbHkEDGFtb3VudFRvUGF5QgkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQgUQc2hhcmVBc3NldFN1cHBseQQGc3Rha2UxAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgUMYW1vdW50VG9QYXlBCQDMCAIFC3N0ckFzc2V0SWRBBQNuaWwFA25pbAAAAwkAAAIFBnN0YWtlMQUGc3Rha2UxBAZzdGFrZTIDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkA/AcECAUBaQZjYWxsZXICDHN0YWtlVW5zdGFrZQkAzAgCBwkAzAgCBQxhbW91bnRUb1BheUIJAMwIAgULc3RyQXNzZXRJZEIFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UyBQZzdGFrZTIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFDHVubG9ja0Ftb3VudAUMc2hhcmVBc3NldElkBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VCCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa1NoYXJlQXNzZXRTdXBwbHkJAGUCBRBzaGFyZUFzc2V0U3VwcGx5BQ53aXRoZHJhd0Ftb3VudAkAzAgCCQEEQnVybgIFDHNoYXJlQXNzZXRJZAUOd2l0aGRyYXdBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQxhbW91bnRUb1BheUEFCGFzc2V0SWRBCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUMYW1vdW50VG9QYXlCBQhhc3NldElkQgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQd2l0aGRyYXdPbmVUb2tlbgQLY2FsbGVyQnl0ZXMEYXJncwhwQW1vdW50cwlwQXNzZXRJZHMJAQt2YWx1ZU9yRWxzZQIJAQxpc09yYWNsZVBvb2wBCQClCAEIBQFpBmNhbGxlcgkBC3ZhbHVlT3JFbHNlAgkBDGlzRGVwcmljYXRlZAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABAZjYWxsZXIJAQdBZGRyZXNzAQULY2FsbGVyQnl0ZXMEDXdpdGhkcmF3QXNzZXQDCQAAAgkAkQMCBQRhcmdzAAACAAUEdW5pdAkA2QQBCQCRAwIFBGFyZ3MAAAQNJHQwMzI2ODMzMjc3MwkBDWdldFBvb2xBc3NldHMBCAUBaQZjYWxsZXIEC3N0ckFzc2V0SWRBCAUNJHQwMzI2ODMzMjc3MwJfMQQLc3RyQXNzZXRJZEIIBQ0kdDAzMjY4MzMyNzczAl8yBAhhc3NldElkQQgFDSR0MDMyNjgzMzI3NzMCXzMECGFzc2V0SWRCCAUNJHQwMzI2ODMzMjc3MwJfNAQMc2hhcmVBc3NldElkCAUNJHQwMzI2ODMzMjc3MwJfNQQNJHQwMzI3ODIzMjkwNgkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDMyNzgyMzI5MDYCXzEECGJhbGFuY2VCCAUNJHQwMzI3ODIzMjkwNgJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMzI3ODIzMjkwNgJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMzI3ODIzMjkwNgJfNAQQc2hhcmVBc3NldFN1cHBseQgFDSR0MDMyNzgyMzI5MDYCXzUEDSR0MDMyOTE1MzMyNjcDCQAAAgkAkAMBBQhwQW1vdW50cwABBAZwQXNzZXQJARFwYXJzZVBheW1lbnRBc3NldAEJAJEDAgUJcEFzc2V0SWRzAAADCQECIT0CBQZwQXNzZXQFDHNoYXJlQXNzZXRJZAkAAgEJAKwCAgIkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQDYBAEFDHNoYXJlQXNzZXRJZAkAlAoCCQCRAwIFCHBBbW91bnRzAAAFBnBBc3NldAkAlAoCAAAFDHNoYXJlQXNzZXRJZAQJcG10QW1vdW50CAUNJHQwMzI5MTUzMzI2NwJfMQQKcG10QXNzZXRJZAgFDSR0MDMyOTE1MzMyNjcCXzIED3ZpcnRNaW5Ub1JlY2l2ZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGFyZ3MAAQMJAQIhPQIJAJADAQUEYXJncwADCQACAQIPV3JvbmcgYXJncyBzaXplAwkAZgIJAJADAQUIcEFtb3VudHMAAQkAAgECHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAiE9AgUKcG10QXNzZXRJZAUMc2hhcmVBc3NldElkCQACAQkArAICAiRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJANgEAQUMc2hhcmVBc3NldElkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQhhc3NldElkQQkAzAgCBQhhc3NldElkQgUDbmlsBQ13aXRoZHJhd0Fzc2V0CQACAQIZSW5jb3JyZWN0IHdpdGhkcmF3IGFzc2V0LgMDCQBmAgUIYmFsYW5jZUEFD2FjY291bnRCYWxhbmNlQQYJAGYCBQhiYWxhbmNlQgUPYWNjb3VudEJhbGFuY2VCCQCUCgIFA25pbAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBmNhbGxlcgUJcG10QW1vdW50BQpwbXRBc3NldElkBQNuaWwJARFzdXNwZW5kU3VzcGljaW91cwYFD2FjY291bnRCYWxhbmNlQQUPYWNjb3VudEJhbGFuY2VCBQhiYWxhbmNlQQUIYmFsYW5jZUIFC3N0ckFzc2V0SWRBBQtzdHJBc3NldElkQgQMdW5sb2NrQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAQt2YWx1ZU9yRWxzZQIJAJEDAgUEYXJncwACAgEwBAZ1bmxvY2sDCQBmAgUMdW5sb2NrQW1vdW50AAAJAPwHBAUOZmFybWluZ0FkZHJlc3MCG3dpdGhkcmF3U2hhcmVUb2tlbnNGcm9tUG9vbAkAzAgCBQtjYWxsZXJCeXRlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQx1bmxvY2tBbW91bnQFA25pbAUDbmlsAAADCQAAAgUGdW5sb2NrBQZ1bmxvY2sEDndpdGhkcmF3QW1vdW50CQBkAgUJcG10QW1vdW50BQx1bmxvY2tBbW91bnQEDGFtb3VudFRvUGF5QQkAawMFDndpdGhkcmF3QW1vdW50BQhiYWxhbmNlQQUQc2hhcmVBc3NldFN1cHBseQQMYW1vdW50VG9QYXlCCQBrAwUOd2l0aGRyYXdBbW91bnQFCGJhbGFuY2VCBRBzaGFyZUFzc2V0U3VwcGx5BA0kdDAzNDUzNDM0NjAxCQEMZ2V0RmVlUGFyYW1zAggFAWkGY2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIEA2ZlZQgFDSR0MDM0NTM0MzQ2MDECXzEEBmdvdkZlZQgFDSR0MDM0NTM0MzQ2MDECXzIEB3RlYW1GZWUIBQ0kdDAzNDUzNDM0NjAxAl8zBA0kdDAzNDYxNDM1MDI4AwkAAAIFDXdpdGhkcmF3QXNzZXQFCGFzc2V0SWRBCQENY2FsY3VsYXRlRmVlcwcFDGFtb3VudFRvUGF5QgUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUIFDGFtb3VudFRvUGF5QgkAZQIFCGJhbGFuY2VBBQxhbW91bnRUb1BheUEFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlCQENY2FsY3VsYXRlRmVlcwcFDGFtb3VudFRvUGF5QQUPdmlydE1pblRvUmVjaXZlCQBlAgUIYmFsYW5jZUEFDGFtb3VudFRvUGF5QQkAZQIFCGJhbGFuY2VCBQxhbW91bnRUb1BheUIFA2ZlZQUGZ292RmVlBQd0ZWFtRmVlBBBhbW91bnRXaXRob3V0RmVlCAUNJHQwMzQ2MTQzNTAyOAJfMQQNYW1vdW50V2l0aEZlZQgFDSR0MDM0NjE0MzUwMjgCXzIEEGdvdmVybmFuY2VSZXdhcmQIBQ0kdDAzNDYxNDM1MDI4Al8zBAp0ZWFtUmV3YXJkCAUNJHQwMzQ2MTQzNTAyOAJfNAQNJHQwMzUwNDEzNjM1MQMJAAACBQ13aXRoZHJhd0Fzc2V0BQhhc3NldElkQQQHdW5zdGFrZQMJAQhjb250YWlucwIFDXN0YWtpbmdBc3NldHMFC3N0ckFzc2V0SWRBCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIHCQDMCAIJAGQCCQBkAgkAZAIFDGFtb3VudFRvUGF5QQUNYW1vdW50V2l0aEZlZQUQZ292ZXJuYW5jZVJld2FyZAUKdGVhbVJld2FyZAkAzAgCBQtzdHJBc3NldElkQQUDbmlsBQNuaWwAAAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQCWCgQJAGUCCQBlAgkAZQIJAGUCBQhiYWxhbmNlQQUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQhiYWxhbmNlQgUIYXNzZXRJZEEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyCQBkAgUMYW1vdW50VG9QYXlBBQ1hbW91bnRXaXRoRmVlBQhhc3NldElkQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAd1bnN0YWtlAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEIJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgcJAMwIAgkAZAIJAGQCCQBkAgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkCQDMCAIFC3N0ckFzc2V0SWRCBQNuaWwFA25pbAAAAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAJYKBAUIYmFsYW5jZUEJAGUCCQBlAgkAZQIJAGUCBQhiYWxhbmNlQgUMYW1vdW50VG9QYXlCBQ1hbW91bnRXaXRoRmVlBRBnb3Zlcm5hbmNlUmV3YXJkBQp0ZWFtUmV3YXJkBQhhc3NldElkQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIJAGQCBQxhbW91bnRUb1BheUIFDWFtb3VudFdpdGhGZWUFCGFzc2V0SWRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EC25ld0JhbGFuY2VBCAUNJHQwMzUwNDEzNjM1MQJfMQQLbmV3QmFsYW5jZUIIBQ0kdDAzNTA0MTM2MzUxAl8yBBBnb3ZSZXdhcmRBc3NldElkCAUNJHQwMzUwNDEzNjM1MQJfMwQMdXNlclRyYW5zZmVyCAUNJHQwMzUwNDEzNjM1MQJfNAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUMdW5sb2NrQW1vdW50BQxzaGFyZUFzc2V0SWQFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQQULbmV3QmFsYW5jZUEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgULbmV3QmFsYW5jZUIJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtTaGFyZUFzc2V0U3VwcGx5CQBlAgUQc2hhcmVBc3NldFN1cHBseQUOd2l0aGRyYXdBbW91bnQJAMwIAgkBBEJ1cm4CBQxzaGFyZUFzc2V0SWQFDndpdGhkcmF3QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUQZ292ZXJuYW5jZVJld2FyZAUQZ292UmV3YXJkQXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ50ZWFtQm94QWRkcmVzcwUKdGVhbVJld2FyZAUQZ292UmV3YXJkQXNzZXRJZAUDbmlsBQx1c2VyVHJhbnNmZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBAtjYWxsZXJCeXRlcwRhcmdzCHBBbW91bnRzCXBBc3NldElkcwkBC3ZhbHVlT3JFbHNlAgkBDGlzT3JhY2xlUG9vbAEJAKUIAQgFAWkGY2FsbGVyCQELdmFsdWVPckVsc2UCCQEIaXNBY3RpdmUABA0kdDAzNzExMTM3MTg3CQENZ2V0UG9vbEFzc2V0cwEIBQFpBmNhbGxlcgQLc3RyQXNzZXRJZEEIBQ0kdDAzNzExMTM3MTg3Al8xBAtzdHJBc3NldElkQggFDSR0MDM3MTExMzcxODcCXzIECGFzc2V0SWRBCAUNJHQwMzcxMTEzNzE4NwJfMwQIYXNzZXRJZEIIBQ0kdDAzNzExMTM3MTg3Al80BAVjbGFpbQMDCQAAAgUIYXNzZXRJZEEFBFVTRE4GCQAAAgUIYXNzZXRJZEIFBFVTRE4JAPwHBAgFAWkGY2FsbGVyAhNjbGFpbU5ldHJpbm9SZXdhcmRzBQNuaWwFA25pbAAAAwkAAAIFBWNsYWltBQVjbGFpbQQNJHQwMzczNDczNzQ1MwkBD2dldFBvb2xCYWxhbmNlcwMIBQFpBmNhbGxlcgUIYXNzZXRJZEEFCGFzc2V0SWRCBAhiYWxhbmNlQQgFDSR0MDM3MzQ3Mzc0NTMCXzEECGJhbGFuY2VCCAUNJHQwMzczNDczNzQ1MwJfMgQPYWNjb3VudEJhbGFuY2VBCAUNJHQwMzczNDczNzQ1MwJfMwQPYWNjb3VudEJhbGFuY2VCCAUNJHQwMzczNDczNzQ1MwJfNAQNYW1vdW50RW5yb2xsQQkAZQIFD2FjY291bnRCYWxhbmNlQQUIYmFsYW5jZUEEDWFtb3VudEVucm9sbEIJAGUCBQ9hY2NvdW50QmFsYW5jZUIFCGJhbGFuY2VCAwkBAiE9AgkAkAMBBQRhcmdzAAAJAAIBAg9Xcm9uZyBhcmdzIHNpemUDCQECIT0CBQ9tb25leUJveEFkZHJlc3MIBQFpDG9yaWdpbkNhbGxlcgkAAgECJk9ubHkgdGhlIHdhbGxldCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwMJAGYCAAAFDWFtb3VudEVucm9sbEEGCQBmAgAABQ1hbW91bnRFbnJvbGxCCQEHc3VzcGVuZAECFkVucm9sbCBhbW91bnQgbmVnYXRpdmUDAwkAAAIFDWFtb3VudEVucm9sbEEAAAkAAAIFDWFtb3VudEVucm9sbEIAAAcJAAIBAhBObyBtb25leSB0byB0YWtlBAZzdGFrZTEDAwkBCGNvbnRhaW5zAgUNc3Rha2luZ0Fzc2V0cwULc3RyQXNzZXRJZEEJAGYCBQ1hbW91bnRFbnJvbGxBAAAHCQD8BwQIBQFpBmNhbGxlcgIMc3Rha2VVbnN0YWtlCQDMCAIGCQDMCAIFDWFtb3VudEVucm9sbEEJAMwIAgULc3RyQXNzZXRJZEEFA25pbAUDbmlsAAADCQAAAgUGc3Rha2UxBQZzdGFrZTEEBnN0YWtlMgMDCQEIY29udGFpbnMCBQ1zdGFraW5nQXNzZXRzBQtzdHJBc3NldElkQgkAZgIFDWFtb3VudEVucm9sbEIAAAcJAPwHBAgFAWkGY2FsbGVyAgxzdGFrZVVuc3Rha2UJAMwIAgYJAMwIAgUNYW1vdW50RW5yb2xsQgkAzAgCBQtzdHJBc3NldElkQgUDbmlsBQNuaWwAAAMJAAACBQZzdGFrZTIFBnN0YWtlMgkAlAoCBQNuaWwJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa0JhbGFuY2VBCQBkAgUIYmFsYW5jZUEFDWFtb3VudEVucm9sbEEJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtCYWxhbmNlQgkAZAIFCGJhbGFuY2VCBQ1hbW91bnRFbnJvbGxCBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAEE211bHRpU2lnbmVkQnlBZG1pbnMEEmFkbWluUHViS2V5MVNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFDGFkbWluUHViS2V5MQABAAAEEmFkbWluUHViS2V5MlNpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAEFDGFkbWluUHViS2V5MgABAAAEEmFkbWluUHViS2V5M1NpZ25lZAMJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAIFDGFkbWluUHViS2V5MwABAAAJAGcCCQBkAgkAZAIFEmFkbWluUHViS2V5MVNpZ25lZAUSYWRtaW5QdWJLZXkyU2lnbmVkBRJhZG1pblB1YktleTNTaWduZWQAAgUTbXVsdGlTaWduZWRCeUFkbWluc+dkGas=", "height": 2494094, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9xCTNz47G3NoeyG4DDuYwpafcFdrQzgy7GQYwSwPs6j9 Next: 9jcf6Udfuj74gJqeNQCJLNhypVavEnur9WSqF7T1CT1J Diff:
OldNewDifferences
7575
7676 let K = "money_box_address"
7777
78-let L = "voting_address"
78+let L = "team_box_address"
7979
80-let M = "governance_address"
80+let M = "voting_address"
8181
82-let N = "farming_address"
82+let N = "governance_address"
8383
84-let O = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
84+let O = "farming_address"
8585
86-func P (Q) = {
87- let R = getString(O, Q)
88- if ($isInstanceOf(R, "String"))
86+let P = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
87+
88+func Q (R) = {
89+ let S = getString(P, R)
90+ if ($isInstanceOf(S, "String"))
8991 then {
90- let S = R
91- fromBase58String(S)
92+ let T = S
93+ fromBase58String(T)
9294 }
9395 else {
94- let T = R
95- throw((Q + "is empty"))
96+ let U = S
97+ throw((R + "is empty"))
9698 }
9799 }
98100
99101
100-let U = P(G)
102+let V = Q(G)
101103
102-let V = P(H)
104+let W = Q(H)
103105
104-let W = P(I)
106+let X = Q(I)
105107
106-let X = P(J)
108+let Y = Q(J)
107109
108-let Y = Address(P(K))
110+let Z = Address(Q(K))
109111
110-let Z = Address(P(L))
112+let aa = Address(Q(L))
111113
112-let aa = Address(P(M))
114+let ab = Address(Q(M))
113115
114-let ab = Address(P(N))
116+let ac = Address(Q(N))
115117
116-let ac = P(x)
118+let ad = Address(Q(O))
117119
118-let ad = P(y)
120+let ae = Q(x)
119121
120-let ae = getStringValue(O, z)
122+let af = Q(y)
121123
122-let af = Address(P(u))
124+let ag = getStringValue(P, z)
123125
124-let ag = Address(P(v))
126+let ah = Address(Q(u))
125127
126-let ah = valueOrErrorMessage(getInteger(Z, r), "Empty kBasePeriod")
128+let ai = Address(Q(v))
127129
128-let ai = valueOrErrorMessage(getInteger(Z, t), "Empty kStartHeight")
130+let aj = valueOrErrorMessage(getInteger(ab, r), "Empty kBasePeriod")
129131
130-let aj = valueOrErrorMessage(getInteger(Z, s), "Empty kPeriodLength")
132+let ak = valueOrErrorMessage(getInteger(ab, t), "Empty kStartHeight")
131133
132-let ak = ((ah + ((height - ai) / aj)) + 3)
134+let al = valueOrErrorMessage(getInteger(ab, s), "Empty kPeriodLength")
133135
134-let al = getBooleanValue(O, A)
136+let am = ((aj + ((height - ak) / al)) + 3)
135137
136-let am = 1000000
138+let an = getBooleanValue(P, A)
137139
138-let an = 100000000
140+let ao = 1000000
139141
140-let ao = toBigInt(10000000000000000)
142+let ap = 100000000
141143
142-func ap (aq,ar) = {
143- let R = aq
144- if ($isInstanceOf(R, "ByteVector"))
144+let aq = toBigInt(10000000000000000)
145+
146+func ar (as,at) = {
147+ let S = as
148+ if ($isInstanceOf(S, "ByteVector"))
145149 then {
146- let as = R
147- assetBalance(ar, as)
150+ let au = S
151+ assetBalance(at, au)
148152 }
149- else if ($isInstanceOf(R, "Unit"))
153+ else if ($isInstanceOf(S, "Unit"))
150154 then {
151- let at = R
152- wavesBalance(ar).available
155+ let av = S
156+ wavesBalance(at).available
153157 }
154158 else throw("Match error")
155159 }
156160
157161
158-func au (aq,ar) = {
159- let av = {
160- let R = aq
161- if ($isInstanceOf(R, "ByteVector"))
162+func aw (as,at) = {
163+ let ax = {
164+ let S = as
165+ if ($isInstanceOf(S, "ByteVector"))
162166 then {
163- let aw = R
164- if ((aw == ac))
165- then getInteger(af, ((("rpd_balance_" + toBase58String(aw)) + "_") + toString(ar)))
166- else if ((aw == ad))
167- then getInteger(ag, ((("%s%s%s__stakingBalance__" + toBase58String(aw)) + "__") + toString(ar)))
167+ let ay = S
168+ if ((ay == ae))
169+ then getInteger(ah, ((("rpd_balance_" + toBase58String(ay)) + "_") + toString(at)))
170+ else if ((ay == af))
171+ then getInteger(ai, ((("%s%s%s__stakingBalance__" + toBase58String(ay)) + "__") + toString(at)))
168172 else 0
169173 }
170- else if ($isInstanceOf(R, "Unit"))
171- then valueOrElse(getInteger(ar, w), 0)
174+ else if ($isInstanceOf(S, "Unit"))
175+ then valueOrElse(getInteger(at, w), 0)
172176 else throw("Match error")
173177 }
174- let R = av
175- if ($isInstanceOf(R, "Int"))
178+ let S = ax
179+ if ($isInstanceOf(S, "Int"))
176180 then {
177- let ax = R
178- ax
181+ let az = S
182+ az
179183 }
180184 else 0
181185 }
182186
183187
184-func ay (aq) = {
185- let R = aq
186- if (if ($isInstanceOf(R, "String"))
188+func aA (as) = {
189+ let S = as
190+ if (if ($isInstanceOf(S, "String"))
187191 then true
188- else $isInstanceOf(R, "ByteVector"))
192+ else $isInstanceOf(S, "ByteVector"))
189193 then {
190- let as = R
191- let az = {
192- let aA = as
193- if ($isInstanceOf(aA, "ByteVector"))
194+ let au = S
195+ let aB = {
196+ let aC = au
197+ if ($isInstanceOf(aC, "ByteVector"))
194198 then {
195- let aw = aA
196- $Tuple2(toBase58String(aw), aw)
199+ let ay = aC
200+ $Tuple2(toBase58String(ay), ay)
197201 }
198- else if ($isInstanceOf(aA, "String"))
202+ else if ($isInstanceOf(aC, "String"))
199203 then {
200- let aw = aA
201- $Tuple2(aw, fromBase58String(aw))
204+ let ay = aC
205+ $Tuple2(ay, fromBase58String(ay))
202206 }
203207 else throw("Match error")
204208 }
205- let aB = az._1
206- let aC = az._2
207- let aD = valueOrErrorMessage(assetInfo(aC), (("Asset " + aB) + " doesn't exist"))
208- $Tuple3(aB, aD.name, aD.decimals)
209+ let aD = aB._1
210+ let aE = aB._2
211+ let aF = valueOrErrorMessage(assetInfo(aE), (("Asset " + aD) + " doesn't exist"))
212+ $Tuple3(aD, aF.name, aF.decimals)
209213 }
210- else if ($isInstanceOf(R, "Unit"))
214+ else if ($isInstanceOf(S, "Unit"))
211215 then {
212- let at = R
216+ let av = S
213217 $Tuple3("WAVES", "WAVES", 8)
214218 }
215219 else throw("Match error")
216220 }
217221
218222
219-func aE (aF) = [BooleanEntry(c, false), StringEntry(n, aF)]
223+func aG (aH) = [BooleanEntry(c, false), StringEntry(n, aH)]
220224
221225
222-func aG (aH) = {
223- let aI = valueOrElse(getInteger(aa, (toString(aH) + E)), 0)
224- let aJ = valueOrElse(getInteger(aa, (toString(aH) + D)), aI)
225- let aK = split(getStringValue(O, C), ",")
226- let aL = split(getStringValue(O, B), ",")
227- if (if ((aJ >= parseIntValue(aK[0])))
228- then (parseIntValue(aK[1]) > aJ)
226+func aI (aJ) = {
227+ let aK = valueOrElse(getInteger(ac, (toString(aJ) + E)), 0)
228+ let aL = valueOrElse(getInteger(ac, (toString(aJ) + D)), aK)
229+ let aM = split(getStringValue(P, C), ",")
230+ let aN = split(getStringValue(P, B), ",")
231+ if (if ((aL >= parseIntValue(aM[0])))
232+ then (parseIntValue(aM[1]) > aL)
229233 else false)
230- then (am - parseIntValue(aL[0]))
231- else if (if ((aJ >= parseIntValue(aK[1])))
232- then (parseIntValue(aK[2]) > aJ)
234+ then (ao - parseIntValue(aN[0]))
235+ else if (if ((aL >= parseIntValue(aM[1])))
236+ then (parseIntValue(aM[2]) > aL)
233237 else false)
234- then (am - parseIntValue(aL[1]))
235- else if (if ((aJ >= parseIntValue(aK[2])))
236- then (parseIntValue(aK[3]) > aJ)
238+ then (ao - parseIntValue(aN[1]))
239+ else if (if ((aL >= parseIntValue(aM[2])))
240+ then (parseIntValue(aM[3]) > aL)
237241 else false)
238- then (am - parseIntValue(aL[2]))
239- else if (if ((aJ >= parseIntValue(aK[3])))
240- then (parseIntValue(aK[4]) > aJ)
242+ then (ao - parseIntValue(aN[2]))
243+ else if (if ((aL >= parseIntValue(aM[3])))
244+ then (parseIntValue(aM[4]) > aL)
241245 else false)
242- then (am - parseIntValue(aL[3]))
243- else if ((aJ >= parseIntValue(aK[4])))
244- then (am - parseIntValue(aL[4]))
245- else am
246+ then (ao - parseIntValue(aN[3]))
247+ else if ((aL >= parseIntValue(aM[4])))
248+ then (ao - parseIntValue(aN[4]))
249+ else ao
246250 }
247251
248252
249-func aM (aN,aO,aP,aQ,aR,aS) = {
250- let aT = fraction(aQ, aN, (aN + aP))
251- let aU = fraction(aT, (am - aR), am)
252- let aV = fraction(aT, aS, am)
253- if ((aO > aU))
254- then throw(((("Calculated amount to receive " + toString(aU)) + " is less than specified minimum ") + toString(aO)))
255- else $Tuple3(aT, aU, aV)
253+func aO (aP,aQ,aR,aS,aT,aU,aV) = {
254+ let aW = fraction(aS, aP, (aP + aR))
255+ let aX = fraction(aW, (ao - aT), ao)
256+ let aY = fraction(aW, aU, ao)
257+ let aZ = fraction(aW, aV, ao)
258+ if ((aQ > aX))
259+ then throw(((("Calculated amount to receive " + toString(aX)) + " is less than specified minimum ") + toString(aQ)))
260+ else $Tuple4(aW, aX, aY, aZ)
256261 }
257262
258263
259-func aW (aN,aX,aR) = {
260- let aY = (am - aR)
261- let aZ = fraction(aR, 60, 100)
262- let ba = (an + fraction((aY * aZ), an, (am * am)))
263- let bb = ((((aX + fraction(aX, aY, am)) + fraction(aN, aY, am)) - aN) - fraction(aN, (aY * aZ), (am * am)))
264- let bc = (-(toBigInt(aX)) * toBigInt(aN))
265- let bd = ((toBigInt(bb) * toBigInt(bb)) - fraction((toBigInt(4) * bc), toBigInt(ba), toBigInt(an)))
266- toInt(fraction((-(toBigInt(bb)) + sqrtBigInt(bd, 0, 0, DOWN)), toBigInt(an), toBigInt((2 * ba))))
264+func ba (aP,bb,aT) = {
265+ let bc = (ao - aT)
266+ let bd = fraction(aT, 55, 100)
267+ let be = (ap + fraction((bc * bd), ap, (ao * ao)))
268+ let bf = ((((bb + fraction(bb, bc, ao)) + fraction(aP, bc, ao)) - aP) - fraction(aP, (bc * bd), (ao * ao)))
269+ let bg = (-(toBigInt(bb)) * toBigInt(aP))
270+ let bh = ((toBigInt(bf) * toBigInt(bf)) - fraction((toBigInt(4) * bg), toBigInt(be), toBigInt(ap)))
271+ toInt(fraction((-(toBigInt(bf)) + sqrtBigInt(bh, 0, 0, DOWN)), toBigInt(ap), toBigInt((2 * be))))
267272 }
268273
269274
270-func be (aq) = if ((aq == base58''))
275+func bi (as) = if ((as == base58''))
271276 then unit
272- else aq
277+ else as
273278
274279
275-func bf (bg,bh,bi,bj,bk,bl) = aE(((((((((((((((("Suspicious state. Actual balances: " + toString(bg)) + " ") + bk) + ", ") + toString(bh)) + " ") + bl) + ". State: ") + toString(bi)) + " ") + bk) + ", ") + toString(bj)) + " ") + bl))
280+func bj (bk,bl,bm,bn,bo,bp) = aG(((((((((((((((("Suspicious state. Actual balances: " + toString(bk)) + " ") + bo) + ", ") + toString(bl)) + " ") + bp) + ". State: ") + toString(bm)) + " ") + bo) + ", ") + toString(bn)) + " ") + bp))
276281
277282
278-func bm () = if (al)
283+func bq () = if (an)
279284 then unit
280285 else throw("DApp is inactive at this moment")
281286
282287
283-func bn (bo) = if (isDefined(getString(O, (F + bo))))
288+func br (bs) = if (isDefined(getString(P, (F + bs))))
284289 then unit
285290 else throw("DApp is not registered pool")
286291
287292
288-func bp (bo) = if (!(valueOrElse(getBoolean(O, (d + bo)), false)))
293+func bt (bs) = if (!(valueOrElse(getBoolean(P, (d + bs)), false)))
289294 then unit
290295 else throw("Pool is deprecated. Only withdraw action allowed.")
291296
292297
293-func bq (ar,bk,bl) = {
294- let bi = getIntegerValue(ar, g)
295- let bj = getIntegerValue(ar, h)
296- let br = au(bk, ar)
297- let bs = au(bl, ar)
298- let bg = (ap(bk, ar) + br)
299- let bh = (ap(bl, ar) + bs)
300- let bt = getIntegerValue(ar, l)
301- $Tuple5(bi, bj, bg, bh, bt)
298+func bu (at,bo,bp) = {
299+ let bm = getIntegerValue(at, g)
300+ let bn = getIntegerValue(at, h)
301+ let bv = aw(bo, at)
302+ let bw = aw(bp, at)
303+ let bk = (ar(bo, at) + bv)
304+ let bl = (ar(bp, at) + bw)
305+ let bx = getIntegerValue(at, l)
306+ $Tuple5(bm, bn, bk, bl, bx)
302307 }
303308
304309
305-func bu (ar) = {
306- let bv = getStringValue(ar, e)
307- let bw = getStringValue(ar, f)
308- let bk = if ((bv == "WAVES"))
310+func by (at) = {
311+ let bz = getStringValue(at, e)
312+ let bA = getStringValue(at, f)
313+ let bo = if ((bz == "WAVES"))
309314 then unit
310- else fromBase58String(bv)
311- let bl = if ((bw == "WAVES"))
315+ else fromBase58String(bz)
316+ let bp = if ((bA == "WAVES"))
312317 then unit
313- else fromBase58String(bw)
314- let bx = fromBase58String(getStringValue(ar, k))
315- $Tuple5(bv, bw, bk, bl, bx)
318+ else fromBase58String(bA)
319+ let bB = fromBase58String(getStringValue(at, k))
320+ $Tuple5(bz, bA, bo, bp, bB)
316321 }
317322
318323
319-func by (ar,bz) = {
320- let bA = aG(bz)
321- let aR = fraction(getIntegerValue(ar, m), bA, am, CEILING)
322- let bB = fraction(aR, 40, 100)
323- $Tuple2(aR, bB)
324+func bC (at,bD) = {
325+ let bE = aI(bD)
326+ let aT = fraction(getIntegerValue(at, m), bE, ao, CEILING)
327+ let bF = fraction(aT, 35, 100)
328+ let bG = fraction(aT, 10, 100)
329+ $Tuple3(aT, bF, bG)
324330 }
325331
326332
327-@Callable(ax)
328-func init (bC,bD,bE,bF) = {
329- let bz = Address(bC)
330- let bG = $Tuple2(bE[0], be(bF[0]))
331- let bH = bG._1
332- let bI = bG._2
333- let bJ = $Tuple2(bE[1], be(bF[1]))
334- let bK = bJ._1
335- let bL = bJ._2
336- if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
333+@Callable(az)
334+func init (bH,bI,bJ,bK) = {
335+ let bD = Address(bH)
336+ let bL = $Tuple2(bJ[0], bi(bK[0]))
337+ let bM = bL._1
338+ let bN = bL._2
339+ let bO = $Tuple2(bJ[1], bi(bK[1]))
340+ let bP = bO._1
341+ let bQ = bO._2
342+ if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
337343 then throw("Only admin can call this function")
338- else if ((size(bD) != 1))
344+ else if ((size(bI) != 1))
339345 then throw("Wrong args size")
340- else if (isDefined(getBoolean(bz, c)))
346+ else if (isDefined(getBoolean(bD, c)))
341347 then throw("DApp is already active")
342- else if ((bI == bL))
348+ else if ((bN == bQ))
343349 then throw("Assets must be different")
344350 else {
345- let bM = ay(bI)
346- let bN = bM._1
347- let bO = bM._2
348- let bP = bM._3
349- let bQ = ay(bL)
350- let bR = bQ._1
351- let bS = bQ._2
352- let bT = bQ._3
353- let bU = (bD[0] == "true")
354- let bV = ((("s" + take(bO, 7)) + "_") + take(bS, 7))
355- let bW = ((((("ShareToken of SwopFi protocol for " + bO) + " and ") + bS) + " at address ") + toString(this))
356- let bX = ((bP + bT) / 2)
357- let bY = pow(bH, bP, 5, 1, bP, DOWN)
358- let bZ = pow(bK, bT, 5, 1, bT, DOWN)
359- let ca = pow(10, 0, bX, 0, 0, DOWN)
360- let cb = fraction(bY, bZ, ca)
361- let cc = Issue(bV, bW, cb, bX, true)
362- let cd = calculateAssetId(cc)
363- let ce = if (contains(ae, bN))
364- then invoke(ax.caller, "stakeUnstake", [true, bH, bN], nil)
351+ let bR = aA(bN)
352+ let bS = bR._1
353+ let bT = bR._2
354+ let bU = bR._3
355+ let bV = aA(bQ)
356+ let bW = bV._1
357+ let bX = bV._2
358+ let bY = bV._3
359+ let bZ = (bI[0] == "true")
360+ let ca = ((("s" + take(bT, 7)) + "_") + take(bX, 7))
361+ let cb = ((((("ShareToken of SwopFi protocol for " + bT) + " and ") + bX) + " at address ") + toString(this))
362+ let cc = ((bU + bY) / 2)
363+ let cd = pow(bM, bU, 5, 1, bU, DOWN)
364+ let ce = pow(bP, bY, 5, 1, bY, DOWN)
365+ let cf = pow(10, 0, cc, 0, 0, DOWN)
366+ let cg = fraction(cd, ce, cf)
367+ let ch = Issue(ca, cb, cg, cc, true)
368+ let ci = calculateAssetId(ch)
369+ let cj = if (contains(ag, bS))
370+ then invoke(az.caller, "stakeUnstake", [true, bM, bS], nil)
365371 else 0
366- if ((ce == ce))
372+ if ((cj == cj))
367373 then {
368- let cf = if (contains(ae, bR))
369- then invoke(ax.caller, "stakeUnstake", [true, bK, bR], nil)
374+ let ck = if (contains(ag, bW))
375+ then invoke(az.caller, "stakeUnstake", [true, bP, bW], nil)
370376 else 0
371- if ((cf == cf))
377+ if ((ck == ck))
372378 then {
373- let cg = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bN), StringEntry(f, bR), IntegerEntry(g, bH), IntegerEntry(h, bK), IntegerEntry(m, getIntegerValue(O, "base_fee_cpmm")), cc, StringEntry(k, toBase58String(cd)), IntegerEntry(l, cb), ScriptTransfer(bz, cb, cd)]
374- if (bU)
375- then $Tuple2(nil, $Tuple2((cg ++ [BooleanEntry(o, bU), IntegerEntry(p, (ai + (ak * aj)))]), nil))
376- else $Tuple2(nil, $Tuple2(cg, nil))
379+ let cl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bS), StringEntry(f, bW), IntegerEntry(g, bM), IntegerEntry(h, bP), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), ch, StringEntry(k, toBase58String(ci)), IntegerEntry(l, cg), ScriptTransfer(bD, cg, ci)]
380+ if (bZ)
381+ then $Tuple2(nil, $Tuple2((cl ++ [BooleanEntry(o, bZ), IntegerEntry(p, (ak + (am * al)))]), nil))
382+ else $Tuple2(nil, $Tuple2(cl, nil))
377383 }
378384 else throw("Strict value is not equal to itself.")
379385 }
383389
384390
385391
386-@Callable(ax)
387-func initWithInitRatio (bC,bD,bE,bF) = {
388- let bz = Address(bC)
389- let ch = $Tuple5(parseIntValue(bD[0]), parseIntValue(bD[1]), bD[2], bD[3], (bD[4] == "true"))
390- let ci = ch._1
391- let cj = ch._2
392- let ck = ch._3
393- let cl = ch._4
394- let bU = ch._5
395- if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
392+@Callable(az)
393+func initWithInitRatio (bH,bI,bJ,bK) = {
394+ let bD = Address(bH)
395+ let cm = $Tuple5(parseIntValue(bI[0]), parseIntValue(bI[1]), bI[2], bI[3], (bI[4] == "true"))
396+ let cn = cm._1
397+ let co = cm._2
398+ let cp = cm._3
399+ let cq = cm._4
400+ let bZ = cm._5
401+ if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
396402 then throw("Only admin can call this function")
397- else if ((size(bD) != 5))
403+ else if ((size(bI) != 5))
398404 then throw("Wrong args size")
399- else if (isDefined(getBoolean(bz, c)))
405+ else if (isDefined(getBoolean(bD, c)))
400406 then throw("DApp is already active")
401- else if ((ck == cl))
407+ else if ((cp == cq))
402408 then throw("Assets must be different")
403409 else {
404- let cm = ay(ck)
405- let bN = cm._1
406- let bO = cm._2
407- let bP = cm._3
408- let cn = ay(cl)
409- let bR = cn._1
410- let bS = cn._2
411- let bT = cn._3
412- let bV = ((("s" + take(bO, 7)) + "_") + take(bS, 7))
413- let bW = ((((("ShareToken of SwopFi protocol for " + bO) + " and ") + bS) + " at address ") + toString(this))
414- let bX = ((bP + bT) / 2)
415- let cb = 0
416- let cc = Issue(bV, bW, cb, bX, true)
417- let cd = calculateAssetId(cc)
418- let cg = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bN), StringEntry(f, bR), IntegerEntry(i, ci), IntegerEntry(j, cj), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(O, "base_fee_cpmm")), cc, StringEntry(k, toBase58String(cd)), IntegerEntry(l, cb)]
419- if (bU)
420- then $Tuple2(nil, $Tuple2((cg ++ [BooleanEntry(o, bU), IntegerEntry(p, (ai + (ak * aj)))]), nil))
421- else $Tuple2(nil, $Tuple2(cg, nil))
410+ let cr = aA(cp)
411+ let bS = cr._1
412+ let bT = cr._2
413+ let bU = cr._3
414+ let cs = aA(cq)
415+ let bW = cs._1
416+ let bX = cs._2
417+ let bY = cs._3
418+ let ca = ((("s" + take(bT, 7)) + "_") + take(bX, 7))
419+ let cb = ((((("ShareToken of SwopFi protocol for " + bT) + " and ") + bX) + " at address ") + toString(this))
420+ let cc = ((bU + bY) / 2)
421+ let cg = 0
422+ let ch = Issue(ca, cb, cg, cc, true)
423+ let ci = calculateAssetId(ch)
424+ let cl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bS), StringEntry(f, bW), IntegerEntry(i, cn), IntegerEntry(j, co), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), ch, StringEntry(k, toBase58String(ci)), IntegerEntry(l, cg)]
425+ if (bZ)
426+ then $Tuple2(nil, $Tuple2((cl ++ [BooleanEntry(o, bZ), IntegerEntry(p, (ak + (am * al)))]), nil))
427+ else $Tuple2(nil, $Tuple2(cl, nil))
422428 }
423429 }
424430
425431
426432
427-@Callable(ax)
428-func keepLimitForFirstHarvest (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
433+@Callable(az)
434+func keepLimitForFirstHarvest (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
429435 then throw("Only admin can call this function")
430- else if ((size(bD) != 1))
436+ else if ((size(bI) != 1))
431437 then throw("Wrong args size")
432438 else {
433- let co = parseIntValue(bD[0])
434- $Tuple2(nil, $Tuple2([IntegerEntry(q, co)], nil))
439+ let ct = parseIntValue(bI[0])
440+ $Tuple2(nil, $Tuple2([IntegerEntry(q, ct)], nil))
435441 }))
436442
437443
438444
439-@Callable(ax)
440-func exchange (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
441- let bz = Address(bC)
442- let cp = $Tuple2(bE[0], be(bF[0]))
443- let aN = cp._1
444- let cq = cp._2
445- let aO = parseIntValue(bD[0])
446- let cr = bu(ax.caller)
447- let bv = cr._1
448- let bw = cr._2
449- let bk = cr._3
450- let bl = cr._4
451- let cs = bq(ax.caller, bk, bl)
452- let bi = cs._1
453- let bj = cs._2
454- let bg = cs._3
455- let bh = cs._4
456- if ((size(bD) != 1))
445+@Callable(az)
446+func exchange (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
447+ let bD = Address(bH)
448+ let cu = $Tuple2(bJ[0], bi(bK[0]))
449+ let aP = cu._1
450+ let cv = cu._2
451+ let aQ = parseIntValue(bI[0])
452+ let cw = by(az.caller)
453+ let bz = cw._1
454+ let bA = cw._2
455+ let bo = cw._3
456+ let bp = cw._4
457+ let cx = bu(az.caller, bo, bp)
458+ let bm = cx._1
459+ let bn = cx._2
460+ let bk = cx._3
461+ let bl = cx._4
462+ if ((size(bI) != 1))
457463 then throw("Wrong args size")
458- else if (if ((bi == 0))
464+ else if (if ((bm == 0))
459465 then true
460- else (bj == 0))
466+ else (bn == 0))
461467 then throw("Can't exchange with zero balance")
462- else if ((0 >= aO))
463- then throw(("Minimal amount to receive must be positive. Actual: " + toString(aO)))
464- else if ((size(bE) != 1))
468+ else if ((0 >= aQ))
469+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aQ)))
470+ else if ((size(bJ) != 1))
465471 then throw("One attached payment expected")
466- else if (!(containsElement([bk, bl], cq)))
467- then throw(((("Incorrect asset attached. Expected: " + bv) + " or ") + bw))
468- else if (if ((bi > bg))
472+ else if (!(containsElement([bo, bp], cv)))
473+ then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
474+ else if (if ((bm > bk))
469475 then true
470- else (bj > bh))
471- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
476+ else (bn > bl))
477+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
472478 else {
473- let ct = by(ax.caller, ax.originCaller)
474- let aR = ct._1
475- let bB = ct._2
476- let cu = if ((cq == bk))
477- then aM(aN, aO, bi, bj, aR, bB)
478- else aM(aN, aO, bj, bi, aR, bB)
479- let aT = cu._1
480- let aU = cu._2
481- let aV = cu._3
482- let cv = if ((cq == bk))
483- then $Tuple3((bi + aN), ((bj - aU) - aV), bl)
484- else $Tuple3(((bi - aU) - aV), (bj + aN), bk)
485- let cw = cv._1
486- let cx = cv._2
487- let cy = cv._3
488- let cz = if ((cq == bk))
489- then $Tuple2(aN, (aU + aV))
490- else $Tuple2((aU + aV), aN)
491- let cA = cz._1
492- let cB = cz._2
493- let ce = if (contains(ae, bv))
494- then invoke(ax.caller, "stakeUnstake", [(cq == bk), cA, bv], nil)
479+ let cy = bC(az.caller, az.originCaller)
480+ let aT = cy._1
481+ let bF = cy._2
482+ let bG = cy._3
483+ let cz = if ((cv == bo))
484+ then aO(aP, aQ, bm, bn, aT, bF, bG)
485+ else aO(aP, aQ, bn, bm, aT, bF, bG)
486+ let aW = cz._1
487+ let aX = cz._2
488+ let aY = cz._3
489+ let aZ = cz._4
490+ let cA = if ((cv == bo))
491+ then $Tuple3((bm + aP), (((bn - aX) - aY) - aZ), bp)
492+ else $Tuple3((((bm - aX) - aY) - aZ), (bn + aP), bo)
493+ let cB = cA._1
494+ let cC = cA._2
495+ let cD = cA._3
496+ let cE = if ((cv == bo))
497+ then $Tuple2(aP, ((aX + aY) + aZ))
498+ else $Tuple2(((aX + aY) + aZ), aP)
499+ let cF = cE._1
500+ let cG = cE._2
501+ let cj = if (contains(ag, bz))
502+ then invoke(az.caller, "stakeUnstake", [(cv == bo), cF, bz], nil)
495503 else 0
496- if ((ce == ce))
504+ if ((cj == cj))
497505 then {
498- let cf = if (contains(ae, bw))
499- then invoke(ax.caller, "stakeUnstake", [(cq == bl), cB, bw], nil)
506+ let ck = if (contains(ag, bA))
507+ then invoke(az.caller, "stakeUnstake", [(cv == bp), cG, bA], nil)
500508 else 0
501- if ((cf == cf))
502- then $Tuple2(nil, $Tuple2([IntegerEntry(g, cw), IntegerEntry(h, cx), ScriptTransfer(bz, aU, cy), ScriptTransfer(Y, aV, cy)], [aU, cy]))
509+ if ((ck == ck))
510+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, cB), IntegerEntry(h, cC), ScriptTransfer(bD, aX, cD), ScriptTransfer(Z, aY, cD), ScriptTransfer(aa, aZ, cD)], [aX, cD]))
503511 else throw("Strict value is not equal to itself.")
504512 }
505513 else throw("Strict value is not equal to itself.")
508516
509517
510518
511-@Callable(ax)
512-func replenishWithTwoTokens (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
513- let bz = Address(bC)
514- let bI = be(bF[0])
515- let bL = be(bF[1])
516- let cC = (bD[0] == "true")
517- let cD = parseIntValue(bD[1])
518- let cE = bu(ax.caller)
519- let bv = cE._1
520- let bw = cE._2
521- let bk = cE._3
522- let bl = cE._4
523- let bx = cE._5
524- let cF = bq(ax.caller, bk, bl)
525- let bi = cF._1
526- let bj = cF._2
527- let bg = cF._3
528- let bh = cF._4
529- let cG = cF._5
530- if ((size(bD) != 2))
519+@Callable(az)
520+func replenishWithTwoTokens (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
521+ let bD = Address(bH)
522+ let bN = bi(bK[0])
523+ let bQ = bi(bK[1])
524+ let cH = (bI[0] == "true")
525+ let cI = parseIntValue(bI[1])
526+ let cJ = by(az.caller)
527+ let bz = cJ._1
528+ let bA = cJ._2
529+ let bo = cJ._3
530+ let bp = cJ._4
531+ let bB = cJ._5
532+ let cK = bu(az.caller, bo, bp)
533+ let bm = cK._1
534+ let bn = cK._2
535+ let bk = cK._3
536+ let bl = cK._4
537+ let cL = cK._5
538+ if ((size(bI) != 2))
531539 then throw("Wrong args size")
532- else if (if ((size(bE) != 2))
533- then (size(bE) != 3)
540+ else if (if ((size(bJ) != 2))
541+ then (size(bJ) != 3)
534542 else false)
535543 then throw("Two or three payments expected")
536- else if (if ((bI != bk))
544+ else if (if ((bN != bo))
537545 then true
538- else (bL != bl))
539- then throw(((("Incorrect assets attached. Expected: " + bv) + " and ") + bw))
540- else if (if ((bi > bg))
546+ else (bQ != bp))
547+ then throw(((("Incorrect assets attached. Expected: " + bz) + " and ") + bA))
548+ else if (if ((bm > bk))
541549 then true
542- else (bj > bh))
543- then $Tuple2(nil, ([ScriptTransfer(bz, bE[0], bI), ScriptTransfer(bz, bE[1], bL)] ++ (if ((size(bE) == 3))
544- then [AttachedPayment(if ((bF[2] == base58''))
550+ else (bn > bl))
551+ then $Tuple2(nil, ([ScriptTransfer(bD, bJ[0], bN), ScriptTransfer(bD, bJ[1], bQ)] ++ (if ((size(bJ) == 3))
552+ then [AttachedPayment(if ((bK[2] == base58''))
545553 then unit
546- else bF[2], bE[2])]
547- else (nil ++ bf(bg, bh, bi, bj, bv, bw)))))
554+ else bK[2], bJ[2])]
555+ else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
548556 else {
549- let cH = ay(bI)
550- let bN = cH._1
551- let bO = cH._2
552- let bP = cH._3
553- let cI = ay(bL)
554- let bR = cI._1
555- let bS = cI._2
556- let bT = cI._3
557- let cJ = ((bi + bj) == 0)
558- let cK = if (cJ)
559- then $Tuple5(bE[0], bE[1], 0, bI, toBigInt(1))
557+ let cM = aA(bN)
558+ let bS = cM._1
559+ let bT = cM._2
560+ let bU = cM._3
561+ let cN = aA(bQ)
562+ let bW = cN._1
563+ let bX = cN._2
564+ let bY = cN._3
565+ let cO = ((bm + bn) == 0)
566+ let cP = if (cO)
567+ then $Tuple5(bJ[0], bJ[1], 0, bN, toBigInt(1))
560568 else {
561- let cL = fraction(ao, toBigInt(bE[0]), toBigInt(bi))
562- let cM = fraction(ao, toBigInt(bE[1]), toBigInt(bj))
563- if ((cM > cL))
569+ let cQ = fraction(aq, toBigInt(bJ[0]), toBigInt(bm))
570+ let cR = fraction(aq, toBigInt(bJ[1]), toBigInt(bn))
571+ if ((cR > cQ))
564572 then {
565- let cN = fraction(bE[0], bj, bi)
566- $Tuple5(bE[0], cN, (bE[1] - cN), bL, cL)
573+ let cS = fraction(bJ[0], bn, bm)
574+ $Tuple5(bJ[0], cS, (bJ[1] - cS), bQ, cQ)
567575 }
568576 else {
569- let cN = fraction(bE[1], bi, bj)
570- $Tuple5(cN, bE[1], (bE[0] - cN), bI, cM)
577+ let cS = fraction(bJ[1], bm, bn)
578+ $Tuple5(cS, bJ[1], (bJ[0] - cS), bN, cR)
571579 }
572580 }
573- let bH = cK._1
574- let bK = cK._2
575- let cO = cK._3
576- let cP = cK._4
577- let cQ = cK._5
578- let cR = if (cJ)
581+ let bM = cP._1
582+ let bP = cP._2
583+ let cT = cP._3
584+ let cU = cP._4
585+ let cV = cP._5
586+ let cW = if (cO)
579587 then {
580- let bX = ((bP + bT) / 2)
581- fraction(pow(bH, bP, 5, 1, bP, DOWN), pow(bK, bT, 5, 1, bT, DOWN), pow(10, 0, bX, 0, 0, DOWN))
588+ let cc = ((bU + bY) / 2)
589+ fraction(pow(bM, bU, 5, 1, bU, DOWN), pow(bP, bY, 5, 1, bY, DOWN), pow(10, 0, cc, 0, 0, DOWN))
582590 }
583- else toInt(fraction(cQ, toBigInt(cG), ao))
584- if ((cR == 0))
591+ else toInt(fraction(cV, toBigInt(cL), aq))
592+ if ((cW == 0))
585593 then throw("Too small amount to replenish")
586- else if ((0 > cO))
594+ else if ((0 > cT))
587595 then throw("Change < 0")
588596 else {
589- let ce = if (contains(ae, bN))
590- then invoke(ax.caller, "stakeUnstake", [true, bH, bN], nil)
597+ let cj = if (contains(ag, bS))
598+ then invoke(az.caller, "stakeUnstake", [true, bM, bS], nil)
591599 else 0
592- if ((ce == ce))
600+ if ((cj == cj))
593601 then {
594- let cf = if (contains(ae, bR))
595- then invoke(ax.caller, "stakeUnstake", [true, bK, bR], nil)
602+ let ck = if (contains(ag, bW))
603+ then invoke(az.caller, "stakeUnstake", [true, bP, bW], nil)
596604 else 0
597- if ((cf == cf))
605+ if ((ck == ck))
598606 then {
599- let cS = if (cC)
607+ let cX = if (cH)
600608 then {
601- let cT = ([AttachedPayment(bx, cR)] ++ (if ((size(bE) == 3))
602- then [AttachedPayment(if ((bF[2] == base58''))
609+ let cY = ([AttachedPayment(bB, cW)] ++ (if ((size(bJ) == 3))
610+ then [AttachedPayment(if ((bK[2] == base58''))
603611 then unit
604- else bF[2], bE[2])]
612+ else bK[2], bJ[2])]
605613 else nil))
606- let cU = invoke(ax.caller, "reissueShareToken", [cR], nil)
607- if ((cU == cU))
614+ let cZ = invoke(az.caller, "reissueShareToken", [cW], nil)
615+ if ((cZ == cZ))
608616 then {
609- let cV = invoke(ab, "lockShareTokensFromPool", [bC, toString(ax.caller), cD], cT)
610- if ((cV == cV))
617+ let da = invoke(ad, "lockShareTokensFromPool", [bH, toString(az.caller), cI], cY)
618+ if ((da == da))
611619 then nil
612620 else throw("Strict value is not equal to itself.")
613621 }
614622 else throw("Strict value is not equal to itself.")
615623 }
616- else [Reissue(bx, cR, true), ScriptTransfer(bz, cR, bx)]
617- $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bi + bH)), IntegerEntry(h, (bj + bK)), IntegerEntry(l, (cG + cR)), ScriptTransfer(bz, cO, cP)] ++ cS), nil))
624+ else [Reissue(bB, cW, true), ScriptTransfer(bD, cW, bB)]
625+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bm + bM)), IntegerEntry(h, (bn + bP)), IntegerEntry(l, (cL + cW)), ScriptTransfer(bD, cT, cU)] ++ cX), nil))
618626 }
619627 else throw("Strict value is not equal to itself.")
620628 }
625633
626634
627635
628-@Callable(ax)
629-func replenishWithOneToken (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
630- let bz = Address(bC)
631- let cq = be(bF[0])
632- let aN = bE[0]
633- let cW = parseIntValue(bD[0])
634- let cC = (bD[1] == "true")
635- let cD = parseIntValue(bD[2])
636- let cX = bu(ax.caller)
637- let bv = cX._1
638- let bw = cX._2
639- let bk = cX._3
640- let bl = cX._4
641- let bx = cX._5
642- let cY = bq(ax.caller, bk, bl)
643- let bi = cY._1
644- let bj = cY._2
645- let bg = cY._3
646- let bh = cY._4
647- let cG = cY._5
648- let cJ = ((bi + bj) == 0)
649- if ((size(bD) != 3))
636+@Callable(az)
637+func replenishWithOneToken (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
638+ let bD = Address(bH)
639+ let cv = bi(bK[0])
640+ let aP = bJ[0]
641+ let db = parseIntValue(bI[0])
642+ let cH = (bI[1] == "true")
643+ let cI = parseIntValue(bI[2])
644+ let dc = by(az.caller)
645+ let bz = dc._1
646+ let bA = dc._2
647+ let bo = dc._3
648+ let bp = dc._4
649+ let bB = dc._5
650+ let dd = bu(az.caller, bo, bp)
651+ let bm = dd._1
652+ let bn = dd._2
653+ let bk = dd._3
654+ let bl = dd._4
655+ let cL = dd._5
656+ let cO = ((bm + bn) == 0)
657+ if ((size(bI) != 3))
650658 then throw("Wrong args size")
651- else if (if ((size(bE) != 1))
652- then (size(bE) != 2)
659+ else if (if ((size(bJ) != 1))
660+ then (size(bJ) != 2)
653661 else false)
654662 then throw("Two or one attached assets expected")
655- else if (if ((cq != bk))
656- then (cq != bl)
663+ else if (if ((cv != bo))
664+ then (cv != bp)
657665 else false)
658- then throw(((("Incorrect asset attached. Expected: " + bv) + " or ") + bw))
659- else if (cJ)
666+ then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
667+ else if (cO)
660668 then throw("For initial exchanger you need to use two tokens")
661- else if (if ((bi > bg))
669+ else if (if ((bm > bk))
662670 then true
663- else (bj > bh))
664- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ (if ((size(bE) == 2))
665- then [AttachedPayment(if ((bF[2] == base58''))
671+ else (bn > bl))
672+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ (if ((size(bJ) == 2))
673+ then [AttachedPayment(if ((bK[2] == base58''))
666674 then unit
667- else bF[2], bE[2])]
668- else (nil ++ bf(bg, bh, bi, bj, bv, bw)))))
675+ else bK[2], bJ[2])]
676+ else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
669677 else {
670- let cZ = by(ax.caller, ax.originCaller)
671- let aR = cZ._1
672- let bB = cZ._2
673- let da = if ((cq == bk))
678+ let de = bC(az.caller, az.originCaller)
679+ let aT = de._1
680+ let bF = de._2
681+ let bG = de._3
682+ let df = if ((cv == bo))
674683 then {
675- let db = aW(aN, bi, aR)
676- let dc = aM(db, cW, bi, bj, aR, bB)
677- let aT = dc._1
678- let aU = dc._2
679- let aV = dc._3
680- let dd = (bi + db)
681- let de = ((bj + aT) - aV)
682- let cw = (bi + aN)
683- let cx = (bj - aV)
684- let cL = fraction(toBigInt((aN - db)), ao, toBigInt(dd))
685- let cM = fraction(toBigInt(aU), ao, toBigInt(de))
686- let cR = toInt(fraction(min([cL, cM]), toBigInt(cG), ao))
687- $Tuple7(cw, cx, cR, aV, bl, bw, bv)
684+ let dg = ba(aP, bm, aT)
685+ let dh = aO(dg, db, bm, bn, aT, bF, bG)
686+ let aW = dh._1
687+ let aX = dh._2
688+ let aY = dh._3
689+ let di = dh._4
690+ let dj = (bm + dg)
691+ let dk = (((bn + aW) - aY) - di)
692+ let cB = (bm + aP)
693+ let cC = ((bn - aY) - di)
694+ let cQ = fraction(toBigInt((aP - dg)), aq, toBigInt(dj))
695+ let cR = fraction(toBigInt(aX), aq, toBigInt(dk))
696+ let cW = toInt(fraction(min([cQ, cR]), toBigInt(cL), aq))
697+ $Tuple8(cB, cC, cW, aY, di, bp, bA, bz)
688698 }
689699 else {
690- let db = aW(aN, bj, aR)
691- let df = aM(db, cW, bj, bi, aR, bB)
692- let aT = df._1
693- let aU = df._2
694- let aV = df._3
695- let dd = ((bi + aT) - aV)
696- let de = (bj + db)
697- let cw = (bi - aV)
698- let cx = (bj + aN)
699- let cL = fraction(toBigInt(aU), ao, toBigInt(dd))
700- let cM = fraction(toBigInt((aN - db)), ao, toBigInt(de))
701- let cR = toInt(fraction(min([cL, cM]), toBigInt(cG), ao))
702- $Tuple7(cw, cx, cR, aV, bk, bv, bw)
700+ let dg = ba(aP, bn, aT)
701+ let dl = aO(dg, db, bn, bm, aT, bF, bG)
702+ let aW = dl._1
703+ let aX = dl._2
704+ let aY = dl._3
705+ let di = dl._4
706+ let dj = (((bm + aW) - aY) - di)
707+ let dk = (bn + dg)
708+ let cB = ((bm - aY) - di)
709+ let cC = (bn + aP)
710+ let cQ = fraction(toBigInt(aX), aq, toBigInt(dj))
711+ let cR = fraction(toBigInt((aP - dg)), aq, toBigInt(dk))
712+ let cW = toInt(fraction(min([cQ, cR]), toBigInt(cL), aq))
713+ $Tuple8(cB, cC, cW, aY, di, bo, bz, bA)
703714 }
704- let cw = da._1
705- let cx = da._2
706- let cR = da._3
707- let dg = da._4
708- let dh = da._5
709- let di = da._6
710- let dj = da._7
711- if ((cR == 0))
715+ let cB = df._1
716+ let cC = df._2
717+ let cW = df._3
718+ let dm = df._4
719+ let aZ = df._5
720+ let dn = df._6
721+ let do = df._7
722+ let dp = df._8
723+ if ((cW == 0))
712724 then throw("Too small amount to replenish")
713725 else {
714- let ce = if (contains(ae, dj))
715- then invoke(ax.caller, "stakeUnstake", [true, aN, dj], nil)
726+ let cj = if (contains(ag, dp))
727+ then invoke(az.caller, "stakeUnstake", [true, aP, dp], nil)
716728 else 0
717- if ((ce == ce))
729+ if ((cj == cj))
718730 then {
719- let cf = if (contains(ae, di))
720- then invoke(ax.caller, "stakeUnstake", [false, dg, di], nil)
731+ let ck = if (contains(ag, do))
732+ then invoke(az.caller, "stakeUnstake", [false, (dm + aZ), do], nil)
721733 else 0
722- if ((cf == cf))
734+ if ((ck == ck))
723735 then {
724- let cS = if (cC)
736+ let cX = if (cH)
725737 then {
726- let cT = ([AttachedPayment(bx, cR)] ++ (if ((size(bE) == 2))
727- then [AttachedPayment(if ((bF[1] == base58''))
738+ let cY = ([AttachedPayment(bB, cW)] ++ (if ((size(bJ) == 2))
739+ then [AttachedPayment(if ((bK[1] == base58''))
728740 then unit
729- else bF[1], bE[1])]
741+ else bK[1], bJ[1])]
730742 else nil))
731- let cU = invoke(ax.caller, "reissueShareToken", [cR], nil)
732- if ((cU == cU))
743+ let cZ = invoke(az.caller, "reissueShareToken", [cW], nil)
744+ if ((cZ == cZ))
733745 then {
734- let cV = invoke(ab, "lockShareTokensFromPool", [bC, toString(ax.caller), cD], cT)
735- if ((cV == cV))
746+ let da = invoke(ad, "lockShareTokensFromPool", [bH, toString(az.caller), cI], cY)
747+ if ((da == da))
736748 then nil
737749 else throw("Strict value is not equal to itself.")
738750 }
739751 else throw("Strict value is not equal to itself.")
740752 }
741- else [Reissue(bx, cR, true), ScriptTransfer(bz, cR, bx)]
742- $Tuple2(nil, $Tuple2(([IntegerEntry(g, cw), IntegerEntry(h, cx), IntegerEntry(l, (cG + cR)), ScriptTransfer(Y, dg, dh)] ++ cS), nil))
753+ else [Reissue(bB, cW, true), ScriptTransfer(bD, cW, bB)]
754+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, cB), IntegerEntry(h, cC), IntegerEntry(l, (cL + cW)), ScriptTransfer(Z, dm, dn), ScriptTransfer(aa, aZ, dn)] ++ cX), nil))
743755 }
744756 else throw("Strict value is not equal to itself.")
745757 }
750762
751763
752764
753-@Callable(ax)
754-func withdraw (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), {
755- let dk = lastBlock.timestamp
756- let bz = Address(bC)
757- let dl = bu(ax.caller)
758- let bv = dl._1
759- let bw = dl._2
760- let bk = dl._3
761- let bl = dl._4
762- let bx = dl._5
763- let dm = bq(ax.caller, bk, bl)
764- let bi = dm._1
765- let bj = dm._2
766- let bg = dm._3
767- let bh = dm._4
768- let cG = dm._5
769- let dn = if ((size(bE) == 1))
765+@Callable(az)
766+func withdraw (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
767+ let dq = lastBlock.timestamp
768+ let bD = Address(bH)
769+ let dr = by(az.caller)
770+ let bz = dr._1
771+ let bA = dr._2
772+ let bo = dr._3
773+ let bp = dr._4
774+ let bB = dr._5
775+ let ds = bu(az.caller, bo, bp)
776+ let bm = ds._1
777+ let bn = ds._2
778+ let bk = ds._3
779+ let bl = ds._4
780+ let cL = ds._5
781+ let dt = if ((size(bJ) == 1))
770782 then {
771- let do = be(bF[0])
772- if ((do != bx))
773- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
774- else $Tuple2(bE[0], do)
783+ let du = bi(bK[0])
784+ if ((du != bB))
785+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
786+ else $Tuple2(bJ[0], du)
775787 }
776- else $Tuple2(0, bx)
777- let aN = dn._1
778- let cq = dn._2
779- if ((size(bD) != 1))
788+ else $Tuple2(0, bB)
789+ let aP = dt._1
790+ let cv = dt._2
791+ if ((size(bI) != 1))
780792 then throw("Wrong args size")
781- else if ((size(bE) > 1))
793+ else if ((size(bJ) > 1))
782794 then throw("One attached payment expected")
783- else if (if ((bi > bg))
795+ else if (if ((bm > bk))
784796 then true
785- else (bj > bh))
786- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
797+ else (bn > bl))
798+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
787799 else {
788- let dp = parseIntValue(valueOrElse(bD[0], "0"))
789- let dq = if ((dp > 0))
790- then invoke(ab, "withdrawShareTokensFromPool", [bC, toString(ax.caller), dp], nil)
800+ let dv = parseIntValue(valueOrElse(bI[0], "0"))
801+ let dw = if ((dv > 0))
802+ then invoke(ad, "withdrawShareTokensFromPool", [bH, toString(az.caller), dv], nil)
791803 else 0
792- if ((dq == dq))
804+ if ((dw == dw))
793805 then {
794- let dr = (aN + dp)
795- let ds = fraction(dr, bi, cG)
796- let dt = fraction(dr, bj, cG)
797- let ce = if (contains(ae, bv))
798- then invoke(ax.caller, "stakeUnstake", [false, ds, bv], nil)
806+ let dx = (aP + dv)
807+ let dy = fraction(dx, bm, cL)
808+ let dz = fraction(dx, bn, cL)
809+ let cj = if (contains(ag, bz))
810+ then invoke(az.caller, "stakeUnstake", [false, dy, bz], nil)
799811 else 0
800- if ((ce == ce))
812+ if ((cj == cj))
801813 then {
802- let cf = if (contains(ae, bw))
803- then invoke(ax.caller, "stakeUnstake", [false, dt, bw], nil)
814+ let ck = if (contains(ag, bA))
815+ then invoke(az.caller, "stakeUnstake", [false, dz, bA], nil)
804816 else 0
805- if ((cf == cf))
806- then $Tuple2([ScriptTransfer(ax.caller, dp, bx)], $Tuple2([IntegerEntry(g, (bi - ds)), IntegerEntry(h, (bj - dt)), IntegerEntry(l, (cG - dr)), Burn(bx, dr), ScriptTransfer(bz, ds, bk), ScriptTransfer(bz, dt, bl)], nil))
817+ if ((ck == ck))
818+ then $Tuple2([ScriptTransfer(az.caller, dv, bB)], $Tuple2([IntegerEntry(g, (bm - dy)), IntegerEntry(h, (bn - dz)), IntegerEntry(l, (cL - dx)), Burn(bB, dx), ScriptTransfer(bD, dy, bo), ScriptTransfer(bD, dz, bp)], nil))
807819 else throw("Strict value is not equal to itself.")
808820 }
809821 else throw("Strict value is not equal to itself.")
814826
815827
816828
817-@Callable(ax)
818-func withdrawOneToken (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
819- let bz = Address(bC)
820- let du = if ((bD[0] == ""))
829+@Callable(az)
830+func withdrawOneToken (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
831+ let bD = Address(bH)
832+ let dA = if ((bI[0] == ""))
821833 then unit
822- else fromBase58String(bD[0])
823- let dv = bu(ax.caller)
824- let bv = dv._1
825- let bw = dv._2
826- let bk = dv._3
827- let bl = dv._4
828- let bx = dv._5
829- let dw = bq(ax.caller, bk, bl)
830- let bi = dw._1
831- let bj = dw._2
832- let bg = dw._3
833- let bh = dw._4
834- let cG = dw._5
835- let dx = if ((size(bE) == 1))
834+ else fromBase58String(bI[0])
835+ let dB = by(az.caller)
836+ let bz = dB._1
837+ let bA = dB._2
838+ let bo = dB._3
839+ let bp = dB._4
840+ let bB = dB._5
841+ let dC = bu(az.caller, bo, bp)
842+ let bm = dC._1
843+ let bn = dC._2
844+ let bk = dC._3
845+ let bl = dC._4
846+ let cL = dC._5
847+ let dD = if ((size(bJ) == 1))
836848 then {
837- let do = be(bF[0])
838- if ((do != bx))
839- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
840- else $Tuple2(bE[0], do)
849+ let du = bi(bK[0])
850+ if ((du != bB))
851+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
852+ else $Tuple2(bJ[0], du)
841853 }
842- else $Tuple2(0, bx)
843- let aN = dx._1
844- let cq = dx._2
845- let dy = parseIntValue(bD[1])
846- if ((size(bD) != 3))
854+ else $Tuple2(0, bB)
855+ let aP = dD._1
856+ let cv = dD._2
857+ let dE = parseIntValue(bI[1])
858+ if ((size(bI) != 3))
847859 then throw("Wrong args size")
848- else if ((size(bE) > 1))
860+ else if ((size(bJ) > 1))
849861 then throw("One attached payment expected")
850- else if ((cq != bx))
851- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
852- else if (!(containsElement([bk, bl], du)))
862+ else if ((cv != bB))
863+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
864+ else if (!(containsElement([bo, bp], dA)))
853865 then throw("Incorrect withdraw asset.")
854- else if (if ((bi > bg))
866+ else if (if ((bm > bk))
855867 then true
856- else (bj > bh))
857- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
868+ else (bn > bl))
869+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
858870 else {
859- let dp = parseIntValue(valueOrElse(bD[2], "0"))
860- let dq = if ((dp > 0))
861- then invoke(ab, "withdrawShareTokensFromPool", [bC, toString(ax.caller), dp], nil)
871+ let dv = parseIntValue(valueOrElse(bI[2], "0"))
872+ let dw = if ((dv > 0))
873+ then invoke(ad, "withdrawShareTokensFromPool", [bH, toString(az.caller), dv], nil)
862874 else 0
863- if ((dq == dq))
875+ if ((dw == dw))
864876 then {
865- let dr = (aN + dp)
866- let ds = fraction(dr, bi, cG)
867- let dt = fraction(dr, bj, cG)
868- let dz = by(ax.caller, ax.originCaller)
869- let aR = dz._1
870- let bB = dz._2
871- let dA = if ((du == bk))
872- then aM(dt, dy, (bj - dt), (bi - ds), aR, bB)
873- else aM(ds, dy, (bi - ds), (bj - dt), aR, bB)
874- let aT = dA._1
875- let aU = dA._2
876- let aV = dA._3
877- let dB = if ((du == bk))
877+ let dx = (aP + dv)
878+ let dy = fraction(dx, bm, cL)
879+ let dz = fraction(dx, bn, cL)
880+ let dF = bC(az.caller, az.originCaller)
881+ let aT = dF._1
882+ let bF = dF._2
883+ let bG = dF._3
884+ let dG = if ((dA == bo))
885+ then aO(dz, dE, (bn - dz), (bm - dy), aT, bF, bG)
886+ else aO(dy, dE, (bm - dy), (bn - dz), aT, bF, bG)
887+ let aW = dG._1
888+ let aX = dG._2
889+ let aY = dG._3
890+ let aZ = dG._4
891+ let dH = if ((dA == bo))
878892 then {
879- let dC = if (contains(ae, bv))
880- then invoke(ax.caller, "stakeUnstake", [false, ((ds + aU) + aV), bv], nil)
893+ let dI = if (contains(ag, bz))
894+ then invoke(az.caller, "stakeUnstake", [false, (((dy + aX) + aY) + aZ), bz], nil)
881895 else 0
882- if ((dC == dC))
883- then $Tuple4((((bi - ds) - aU) - aV), bj, bk, [ScriptTransfer(bz, (ds + aU), bk)])
896+ if ((dI == dI))
897+ then $Tuple4(((((bm - dy) - aX) - aY) - aZ), bn, bo, [ScriptTransfer(bD, (dy + aX), bo)])
884898 else throw("Strict value is not equal to itself.")
885899 }
886900 else {
887- let dC = if (contains(ae, bw))
888- then invoke(ax.caller, "stakeUnstake", [false, ((dt + aU) + aV), bw], nil)
901+ let dI = if (contains(ag, bA))
902+ then invoke(az.caller, "stakeUnstake", [false, (((dz + aX) + aY) + aZ), bA], nil)
889903 else 0
890- if ((dC == dC))
891- then $Tuple4(bi, (((bj - dt) - aU) - aV), bl, [ScriptTransfer(bz, (dt + aU), bl)])
904+ if ((dI == dI))
905+ then $Tuple4(bm, ((((bn - dz) - aX) - aY) - aZ), bp, [ScriptTransfer(bD, (dz + aX), bp)])
892906 else throw("Strict value is not equal to itself.")
893907 }
894- let cw = dB._1
895- let cx = dB._2
896- let dD = dB._3
897- let dE = dB._4
898- $Tuple2([ScriptTransfer(ax.caller, dp, bx)], $Tuple2(([IntegerEntry(g, cw), IntegerEntry(h, cx), IntegerEntry(l, (cG - dr)), Burn(bx, dr), ScriptTransfer(Y, aV, dD)] ++ dE), nil))
908+ let cB = dH._1
909+ let cC = dH._2
910+ let dJ = dH._3
911+ let dK = dH._4
912+ $Tuple2([ScriptTransfer(az.caller, dv, bB)], $Tuple2(([IntegerEntry(g, cB), IntegerEntry(h, cC), IntegerEntry(l, (cL - dx)), Burn(bB, dx), ScriptTransfer(Z, aY, dJ), ScriptTransfer(aa, aZ, dJ)] ++ dK), nil))
899913 }
900914 else throw("Strict value is not equal to itself.")
901915 }
903917
904918
905919
906-@Callable(ax)
907-func takeIntoAccountExtraFunds (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), {
908- let dF = bu(ax.caller)
909- let bv = dF._1
910- let bw = dF._2
911- let bk = dF._3
912- let bl = dF._4
913- let dG = if (if ((bk == ac))
920+@Callable(az)
921+func takeIntoAccountExtraFunds (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
922+ let dL = by(az.caller)
923+ let bz = dL._1
924+ let bA = dL._2
925+ let bo = dL._3
926+ let bp = dL._4
927+ let dM = if (if ((bo == ae))
914928 then true
915- else (bl == ac))
916- then invoke(ax.caller, "claimNetrinoRewards", nil, nil)
929+ else (bp == ae))
930+ then invoke(az.caller, "claimNetrinoRewards", nil, nil)
917931 else 0
918- if ((dG == dG))
932+ if ((dM == dM))
919933 then {
920- let dH = bq(ax.caller, bk, bl)
921- let bi = dH._1
922- let bj = dH._2
923- let bg = dH._3
924- let bh = dH._4
925- let dI = (bg - bi)
926- let dJ = (bh - bj)
927- if ((size(bD) != 0))
934+ let dN = bu(az.caller, bo, bp)
935+ let bm = dN._1
936+ let bn = dN._2
937+ let bk = dN._3
938+ let bl = dN._4
939+ let dO = (bk - bm)
940+ let dP = (bl - bn)
941+ if ((size(bI) != 0))
928942 then throw("Wrong args size")
929- else if ((Y != ax.originCaller))
943+ else if ((Z != az.originCaller))
930944 then throw("Only the wallet can call this function")
931- else if (if ((0 > dI))
945+ else if (if ((0 > dO))
932946 then true
933- else (0 > dJ))
934- then aE("Enroll amount negative")
935- else if (if ((dI == 0))
936- then (dJ == 0)
947+ else (0 > dP))
948+ then aG("Enroll amount negative")
949+ else if (if ((dO == 0))
950+ then (dP == 0)
937951 else false)
938952 then throw("No money to take")
939953 else {
940- let ce = if (if (contains(ae, bv))
941- then (dI > 0)
954+ let cj = if (if (contains(ag, bz))
955+ then (dO > 0)
942956 else false)
943- then invoke(ax.caller, "stakeUnstake", [true, dI, bv], nil)
957+ then invoke(az.caller, "stakeUnstake", [true, dO, bz], nil)
944958 else 0
945- if ((ce == ce))
959+ if ((cj == cj))
946960 then {
947- let cf = if (if (contains(ae, bw))
948- then (dJ > 0)
961+ let ck = if (if (contains(ag, bA))
962+ then (dP > 0)
949963 else false)
950- then invoke(ax.caller, "stakeUnstake", [true, dJ, bw], nil)
964+ then invoke(az.caller, "stakeUnstake", [true, dP, bA], nil)
951965 else 0
952- if ((cf == cf))
953- then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bi + dI)), IntegerEntry(h, (bj + dJ))], nil))
966+ if ((ck == ck))
967+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bm + dO)), IntegerEntry(h, (bn + dP))], nil))
954968 else throw("Strict value is not equal to itself.")
955969 }
956970 else throw("Strict value is not equal to itself.")
960974 }))
961975
962976
963-@Verifier(dK)
964-func dL () = {
965- let dM = {
966- let dN = if (sigVerify(dK.bodyBytes, dK.proofs[0], U))
977+@Verifier(dQ)
978+func dR () = {
979+ let dS = {
980+ let dT = if (sigVerify(dQ.bodyBytes, dQ.proofs[0], V))
967981 then 1
968982 else 0
969- let dO = if (sigVerify(dK.bodyBytes, dK.proofs[1], V))
983+ let dU = if (sigVerify(dQ.bodyBytes, dQ.proofs[1], W))
970984 then 1
971985 else 0
972- let dP = if (sigVerify(dK.bodyBytes, dK.proofs[2], W))
986+ let dV = if (sigVerify(dQ.bodyBytes, dQ.proofs[2], X))
973987 then 1
974988 else 0
975- (((dN + dO) + dP) >= 2)
989+ (((dT + dU) + dV) >= 2)
976990 }
977- dM
991+ dS
978992 }
979993
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "deprecated_"
1111
1212 let e = "A_asset_id"
1313
1414 let f = "B_asset_id"
1515
1616 let g = "A_asset_balance"
1717
1818 let h = "B_asset_balance"
1919
2020 let i = "A_asset_init"
2121
2222 let j = "B_asset_init"
2323
2424 let k = "share_asset_id"
2525
2626 let l = "share_asset_supply"
2727
2828 let m = "commission"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "staking_usdnnsbt_address"
4545
4646 let v = "staking_eurn_address"
4747
4848 let w = "leasing_amount"
4949
5050 let x = "usdn_asset_id"
5151
5252 let y = "eurn_asset_id"
5353
5454 let z = "staking_assets"
5555
5656 let A = "active_all_contracts"
5757
5858 let B = "discounts"
5959
6060 let C = "discount_values"
6161
6262 let D = "_GSwop_amount"
6363
6464 let E = "_SWOP_amount"
6565
6666 let F = "pool_"
6767
6868 let G = "admin_pub_1"
6969
7070 let H = "admin_pub_2"
7171
7272 let I = "admin_pub_3"
7373
7474 let J = "admin_invoke_pub"
7575
7676 let K = "money_box_address"
7777
78-let L = "voting_address"
78+let L = "team_box_address"
7979
80-let M = "governance_address"
80+let M = "voting_address"
8181
82-let N = "farming_address"
82+let N = "governance_address"
8383
84-let O = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
84+let O = "farming_address"
8585
86-func P (Q) = {
87- let R = getString(O, Q)
88- if ($isInstanceOf(R, "String"))
86+let P = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
87+
88+func Q (R) = {
89+ let S = getString(P, R)
90+ if ($isInstanceOf(S, "String"))
8991 then {
90- let S = R
91- fromBase58String(S)
92+ let T = S
93+ fromBase58String(T)
9294 }
9395 else {
94- let T = R
95- throw((Q + "is empty"))
96+ let U = S
97+ throw((R + "is empty"))
9698 }
9799 }
98100
99101
100-let U = P(G)
102+let V = Q(G)
101103
102-let V = P(H)
104+let W = Q(H)
103105
104-let W = P(I)
106+let X = Q(I)
105107
106-let X = P(J)
108+let Y = Q(J)
107109
108-let Y = Address(P(K))
110+let Z = Address(Q(K))
109111
110-let Z = Address(P(L))
112+let aa = Address(Q(L))
111113
112-let aa = Address(P(M))
114+let ab = Address(Q(M))
113115
114-let ab = Address(P(N))
116+let ac = Address(Q(N))
115117
116-let ac = P(x)
118+let ad = Address(Q(O))
117119
118-let ad = P(y)
120+let ae = Q(x)
119121
120-let ae = getStringValue(O, z)
122+let af = Q(y)
121123
122-let af = Address(P(u))
124+let ag = getStringValue(P, z)
123125
124-let ag = Address(P(v))
126+let ah = Address(Q(u))
125127
126-let ah = valueOrErrorMessage(getInteger(Z, r), "Empty kBasePeriod")
128+let ai = Address(Q(v))
127129
128-let ai = valueOrErrorMessage(getInteger(Z, t), "Empty kStartHeight")
130+let aj = valueOrErrorMessage(getInteger(ab, r), "Empty kBasePeriod")
129131
130-let aj = valueOrErrorMessage(getInteger(Z, s), "Empty kPeriodLength")
132+let ak = valueOrErrorMessage(getInteger(ab, t), "Empty kStartHeight")
131133
132-let ak = ((ah + ((height - ai) / aj)) + 3)
134+let al = valueOrErrorMessage(getInteger(ab, s), "Empty kPeriodLength")
133135
134-let al = getBooleanValue(O, A)
136+let am = ((aj + ((height - ak) / al)) + 3)
135137
136-let am = 1000000
138+let an = getBooleanValue(P, A)
137139
138-let an = 100000000
140+let ao = 1000000
139141
140-let ao = toBigInt(10000000000000000)
142+let ap = 100000000
141143
142-func ap (aq,ar) = {
143- let R = aq
144- if ($isInstanceOf(R, "ByteVector"))
144+let aq = toBigInt(10000000000000000)
145+
146+func ar (as,at) = {
147+ let S = as
148+ if ($isInstanceOf(S, "ByteVector"))
145149 then {
146- let as = R
147- assetBalance(ar, as)
150+ let au = S
151+ assetBalance(at, au)
148152 }
149- else if ($isInstanceOf(R, "Unit"))
153+ else if ($isInstanceOf(S, "Unit"))
150154 then {
151- let at = R
152- wavesBalance(ar).available
155+ let av = S
156+ wavesBalance(at).available
153157 }
154158 else throw("Match error")
155159 }
156160
157161
158-func au (aq,ar) = {
159- let av = {
160- let R = aq
161- if ($isInstanceOf(R, "ByteVector"))
162+func aw (as,at) = {
163+ let ax = {
164+ let S = as
165+ if ($isInstanceOf(S, "ByteVector"))
162166 then {
163- let aw = R
164- if ((aw == ac))
165- then getInteger(af, ((("rpd_balance_" + toBase58String(aw)) + "_") + toString(ar)))
166- else if ((aw == ad))
167- then getInteger(ag, ((("%s%s%s__stakingBalance__" + toBase58String(aw)) + "__") + toString(ar)))
167+ let ay = S
168+ if ((ay == ae))
169+ then getInteger(ah, ((("rpd_balance_" + toBase58String(ay)) + "_") + toString(at)))
170+ else if ((ay == af))
171+ then getInteger(ai, ((("%s%s%s__stakingBalance__" + toBase58String(ay)) + "__") + toString(at)))
168172 else 0
169173 }
170- else if ($isInstanceOf(R, "Unit"))
171- then valueOrElse(getInteger(ar, w), 0)
174+ else if ($isInstanceOf(S, "Unit"))
175+ then valueOrElse(getInteger(at, w), 0)
172176 else throw("Match error")
173177 }
174- let R = av
175- if ($isInstanceOf(R, "Int"))
178+ let S = ax
179+ if ($isInstanceOf(S, "Int"))
176180 then {
177- let ax = R
178- ax
181+ let az = S
182+ az
179183 }
180184 else 0
181185 }
182186
183187
184-func ay (aq) = {
185- let R = aq
186- if (if ($isInstanceOf(R, "String"))
188+func aA (as) = {
189+ let S = as
190+ if (if ($isInstanceOf(S, "String"))
187191 then true
188- else $isInstanceOf(R, "ByteVector"))
192+ else $isInstanceOf(S, "ByteVector"))
189193 then {
190- let as = R
191- let az = {
192- let aA = as
193- if ($isInstanceOf(aA, "ByteVector"))
194+ let au = S
195+ let aB = {
196+ let aC = au
197+ if ($isInstanceOf(aC, "ByteVector"))
194198 then {
195- let aw = aA
196- $Tuple2(toBase58String(aw), aw)
199+ let ay = aC
200+ $Tuple2(toBase58String(ay), ay)
197201 }
198- else if ($isInstanceOf(aA, "String"))
202+ else if ($isInstanceOf(aC, "String"))
199203 then {
200- let aw = aA
201- $Tuple2(aw, fromBase58String(aw))
204+ let ay = aC
205+ $Tuple2(ay, fromBase58String(ay))
202206 }
203207 else throw("Match error")
204208 }
205- let aB = az._1
206- let aC = az._2
207- let aD = valueOrErrorMessage(assetInfo(aC), (("Asset " + aB) + " doesn't exist"))
208- $Tuple3(aB, aD.name, aD.decimals)
209+ let aD = aB._1
210+ let aE = aB._2
211+ let aF = valueOrErrorMessage(assetInfo(aE), (("Asset " + aD) + " doesn't exist"))
212+ $Tuple3(aD, aF.name, aF.decimals)
209213 }
210- else if ($isInstanceOf(R, "Unit"))
214+ else if ($isInstanceOf(S, "Unit"))
211215 then {
212- let at = R
216+ let av = S
213217 $Tuple3("WAVES", "WAVES", 8)
214218 }
215219 else throw("Match error")
216220 }
217221
218222
219-func aE (aF) = [BooleanEntry(c, false), StringEntry(n, aF)]
223+func aG (aH) = [BooleanEntry(c, false), StringEntry(n, aH)]
220224
221225
222-func aG (aH) = {
223- let aI = valueOrElse(getInteger(aa, (toString(aH) + E)), 0)
224- let aJ = valueOrElse(getInteger(aa, (toString(aH) + D)), aI)
225- let aK = split(getStringValue(O, C), ",")
226- let aL = split(getStringValue(O, B), ",")
227- if (if ((aJ >= parseIntValue(aK[0])))
228- then (parseIntValue(aK[1]) > aJ)
226+func aI (aJ) = {
227+ let aK = valueOrElse(getInteger(ac, (toString(aJ) + E)), 0)
228+ let aL = valueOrElse(getInteger(ac, (toString(aJ) + D)), aK)
229+ let aM = split(getStringValue(P, C), ",")
230+ let aN = split(getStringValue(P, B), ",")
231+ if (if ((aL >= parseIntValue(aM[0])))
232+ then (parseIntValue(aM[1]) > aL)
229233 else false)
230- then (am - parseIntValue(aL[0]))
231- else if (if ((aJ >= parseIntValue(aK[1])))
232- then (parseIntValue(aK[2]) > aJ)
234+ then (ao - parseIntValue(aN[0]))
235+ else if (if ((aL >= parseIntValue(aM[1])))
236+ then (parseIntValue(aM[2]) > aL)
233237 else false)
234- then (am - parseIntValue(aL[1]))
235- else if (if ((aJ >= parseIntValue(aK[2])))
236- then (parseIntValue(aK[3]) > aJ)
238+ then (ao - parseIntValue(aN[1]))
239+ else if (if ((aL >= parseIntValue(aM[2])))
240+ then (parseIntValue(aM[3]) > aL)
237241 else false)
238- then (am - parseIntValue(aL[2]))
239- else if (if ((aJ >= parseIntValue(aK[3])))
240- then (parseIntValue(aK[4]) > aJ)
242+ then (ao - parseIntValue(aN[2]))
243+ else if (if ((aL >= parseIntValue(aM[3])))
244+ then (parseIntValue(aM[4]) > aL)
241245 else false)
242- then (am - parseIntValue(aL[3]))
243- else if ((aJ >= parseIntValue(aK[4])))
244- then (am - parseIntValue(aL[4]))
245- else am
246+ then (ao - parseIntValue(aN[3]))
247+ else if ((aL >= parseIntValue(aM[4])))
248+ then (ao - parseIntValue(aN[4]))
249+ else ao
246250 }
247251
248252
249-func aM (aN,aO,aP,aQ,aR,aS) = {
250- let aT = fraction(aQ, aN, (aN + aP))
251- let aU = fraction(aT, (am - aR), am)
252- let aV = fraction(aT, aS, am)
253- if ((aO > aU))
254- then throw(((("Calculated amount to receive " + toString(aU)) + " is less than specified minimum ") + toString(aO)))
255- else $Tuple3(aT, aU, aV)
253+func aO (aP,aQ,aR,aS,aT,aU,aV) = {
254+ let aW = fraction(aS, aP, (aP + aR))
255+ let aX = fraction(aW, (ao - aT), ao)
256+ let aY = fraction(aW, aU, ao)
257+ let aZ = fraction(aW, aV, ao)
258+ if ((aQ > aX))
259+ then throw(((("Calculated amount to receive " + toString(aX)) + " is less than specified minimum ") + toString(aQ)))
260+ else $Tuple4(aW, aX, aY, aZ)
256261 }
257262
258263
259-func aW (aN,aX,aR) = {
260- let aY = (am - aR)
261- let aZ = fraction(aR, 60, 100)
262- let ba = (an + fraction((aY * aZ), an, (am * am)))
263- let bb = ((((aX + fraction(aX, aY, am)) + fraction(aN, aY, am)) - aN) - fraction(aN, (aY * aZ), (am * am)))
264- let bc = (-(toBigInt(aX)) * toBigInt(aN))
265- let bd = ((toBigInt(bb) * toBigInt(bb)) - fraction((toBigInt(4) * bc), toBigInt(ba), toBigInt(an)))
266- toInt(fraction((-(toBigInt(bb)) + sqrtBigInt(bd, 0, 0, DOWN)), toBigInt(an), toBigInt((2 * ba))))
264+func ba (aP,bb,aT) = {
265+ let bc = (ao - aT)
266+ let bd = fraction(aT, 55, 100)
267+ let be = (ap + fraction((bc * bd), ap, (ao * ao)))
268+ let bf = ((((bb + fraction(bb, bc, ao)) + fraction(aP, bc, ao)) - aP) - fraction(aP, (bc * bd), (ao * ao)))
269+ let bg = (-(toBigInt(bb)) * toBigInt(aP))
270+ let bh = ((toBigInt(bf) * toBigInt(bf)) - fraction((toBigInt(4) * bg), toBigInt(be), toBigInt(ap)))
271+ toInt(fraction((-(toBigInt(bf)) + sqrtBigInt(bh, 0, 0, DOWN)), toBigInt(ap), toBigInt((2 * be))))
267272 }
268273
269274
270-func be (aq) = if ((aq == base58''))
275+func bi (as) = if ((as == base58''))
271276 then unit
272- else aq
277+ else as
273278
274279
275-func bf (bg,bh,bi,bj,bk,bl) = aE(((((((((((((((("Suspicious state. Actual balances: " + toString(bg)) + " ") + bk) + ", ") + toString(bh)) + " ") + bl) + ". State: ") + toString(bi)) + " ") + bk) + ", ") + toString(bj)) + " ") + bl))
280+func bj (bk,bl,bm,bn,bo,bp) = aG(((((((((((((((("Suspicious state. Actual balances: " + toString(bk)) + " ") + bo) + ", ") + toString(bl)) + " ") + bp) + ". State: ") + toString(bm)) + " ") + bo) + ", ") + toString(bn)) + " ") + bp))
276281
277282
278-func bm () = if (al)
283+func bq () = if (an)
279284 then unit
280285 else throw("DApp is inactive at this moment")
281286
282287
283-func bn (bo) = if (isDefined(getString(O, (F + bo))))
288+func br (bs) = if (isDefined(getString(P, (F + bs))))
284289 then unit
285290 else throw("DApp is not registered pool")
286291
287292
288-func bp (bo) = if (!(valueOrElse(getBoolean(O, (d + bo)), false)))
293+func bt (bs) = if (!(valueOrElse(getBoolean(P, (d + bs)), false)))
289294 then unit
290295 else throw("Pool is deprecated. Only withdraw action allowed.")
291296
292297
293-func bq (ar,bk,bl) = {
294- let bi = getIntegerValue(ar, g)
295- let bj = getIntegerValue(ar, h)
296- let br = au(bk, ar)
297- let bs = au(bl, ar)
298- let bg = (ap(bk, ar) + br)
299- let bh = (ap(bl, ar) + bs)
300- let bt = getIntegerValue(ar, l)
301- $Tuple5(bi, bj, bg, bh, bt)
298+func bu (at,bo,bp) = {
299+ let bm = getIntegerValue(at, g)
300+ let bn = getIntegerValue(at, h)
301+ let bv = aw(bo, at)
302+ let bw = aw(bp, at)
303+ let bk = (ar(bo, at) + bv)
304+ let bl = (ar(bp, at) + bw)
305+ let bx = getIntegerValue(at, l)
306+ $Tuple5(bm, bn, bk, bl, bx)
302307 }
303308
304309
305-func bu (ar) = {
306- let bv = getStringValue(ar, e)
307- let bw = getStringValue(ar, f)
308- let bk = if ((bv == "WAVES"))
310+func by (at) = {
311+ let bz = getStringValue(at, e)
312+ let bA = getStringValue(at, f)
313+ let bo = if ((bz == "WAVES"))
309314 then unit
310- else fromBase58String(bv)
311- let bl = if ((bw == "WAVES"))
315+ else fromBase58String(bz)
316+ let bp = if ((bA == "WAVES"))
312317 then unit
313- else fromBase58String(bw)
314- let bx = fromBase58String(getStringValue(ar, k))
315- $Tuple5(bv, bw, bk, bl, bx)
318+ else fromBase58String(bA)
319+ let bB = fromBase58String(getStringValue(at, k))
320+ $Tuple5(bz, bA, bo, bp, bB)
316321 }
317322
318323
319-func by (ar,bz) = {
320- let bA = aG(bz)
321- let aR = fraction(getIntegerValue(ar, m), bA, am, CEILING)
322- let bB = fraction(aR, 40, 100)
323- $Tuple2(aR, bB)
324+func bC (at,bD) = {
325+ let bE = aI(bD)
326+ let aT = fraction(getIntegerValue(at, m), bE, ao, CEILING)
327+ let bF = fraction(aT, 35, 100)
328+ let bG = fraction(aT, 10, 100)
329+ $Tuple3(aT, bF, bG)
324330 }
325331
326332
327-@Callable(ax)
328-func init (bC,bD,bE,bF) = {
329- let bz = Address(bC)
330- let bG = $Tuple2(bE[0], be(bF[0]))
331- let bH = bG._1
332- let bI = bG._2
333- let bJ = $Tuple2(bE[1], be(bF[1]))
334- let bK = bJ._1
335- let bL = bJ._2
336- if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
333+@Callable(az)
334+func init (bH,bI,bJ,bK) = {
335+ let bD = Address(bH)
336+ let bL = $Tuple2(bJ[0], bi(bK[0]))
337+ let bM = bL._1
338+ let bN = bL._2
339+ let bO = $Tuple2(bJ[1], bi(bK[1]))
340+ let bP = bO._1
341+ let bQ = bO._2
342+ if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
337343 then throw("Only admin can call this function")
338- else if ((size(bD) != 1))
344+ else if ((size(bI) != 1))
339345 then throw("Wrong args size")
340- else if (isDefined(getBoolean(bz, c)))
346+ else if (isDefined(getBoolean(bD, c)))
341347 then throw("DApp is already active")
342- else if ((bI == bL))
348+ else if ((bN == bQ))
343349 then throw("Assets must be different")
344350 else {
345- let bM = ay(bI)
346- let bN = bM._1
347- let bO = bM._2
348- let bP = bM._3
349- let bQ = ay(bL)
350- let bR = bQ._1
351- let bS = bQ._2
352- let bT = bQ._3
353- let bU = (bD[0] == "true")
354- let bV = ((("s" + take(bO, 7)) + "_") + take(bS, 7))
355- let bW = ((((("ShareToken of SwopFi protocol for " + bO) + " and ") + bS) + " at address ") + toString(this))
356- let bX = ((bP + bT) / 2)
357- let bY = pow(bH, bP, 5, 1, bP, DOWN)
358- let bZ = pow(bK, bT, 5, 1, bT, DOWN)
359- let ca = pow(10, 0, bX, 0, 0, DOWN)
360- let cb = fraction(bY, bZ, ca)
361- let cc = Issue(bV, bW, cb, bX, true)
362- let cd = calculateAssetId(cc)
363- let ce = if (contains(ae, bN))
364- then invoke(ax.caller, "stakeUnstake", [true, bH, bN], nil)
351+ let bR = aA(bN)
352+ let bS = bR._1
353+ let bT = bR._2
354+ let bU = bR._3
355+ let bV = aA(bQ)
356+ let bW = bV._1
357+ let bX = bV._2
358+ let bY = bV._3
359+ let bZ = (bI[0] == "true")
360+ let ca = ((("s" + take(bT, 7)) + "_") + take(bX, 7))
361+ let cb = ((((("ShareToken of SwopFi protocol for " + bT) + " and ") + bX) + " at address ") + toString(this))
362+ let cc = ((bU + bY) / 2)
363+ let cd = pow(bM, bU, 5, 1, bU, DOWN)
364+ let ce = pow(bP, bY, 5, 1, bY, DOWN)
365+ let cf = pow(10, 0, cc, 0, 0, DOWN)
366+ let cg = fraction(cd, ce, cf)
367+ let ch = Issue(ca, cb, cg, cc, true)
368+ let ci = calculateAssetId(ch)
369+ let cj = if (contains(ag, bS))
370+ then invoke(az.caller, "stakeUnstake", [true, bM, bS], nil)
365371 else 0
366- if ((ce == ce))
372+ if ((cj == cj))
367373 then {
368- let cf = if (contains(ae, bR))
369- then invoke(ax.caller, "stakeUnstake", [true, bK, bR], nil)
374+ let ck = if (contains(ag, bW))
375+ then invoke(az.caller, "stakeUnstake", [true, bP, bW], nil)
370376 else 0
371- if ((cf == cf))
377+ if ((ck == ck))
372378 then {
373- let cg = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bN), StringEntry(f, bR), IntegerEntry(g, bH), IntegerEntry(h, bK), IntegerEntry(m, getIntegerValue(O, "base_fee_cpmm")), cc, StringEntry(k, toBase58String(cd)), IntegerEntry(l, cb), ScriptTransfer(bz, cb, cd)]
374- if (bU)
375- then $Tuple2(nil, $Tuple2((cg ++ [BooleanEntry(o, bU), IntegerEntry(p, (ai + (ak * aj)))]), nil))
376- else $Tuple2(nil, $Tuple2(cg, nil))
379+ let cl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bS), StringEntry(f, bW), IntegerEntry(g, bM), IntegerEntry(h, bP), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), ch, StringEntry(k, toBase58String(ci)), IntegerEntry(l, cg), ScriptTransfer(bD, cg, ci)]
380+ if (bZ)
381+ then $Tuple2(nil, $Tuple2((cl ++ [BooleanEntry(o, bZ), IntegerEntry(p, (ak + (am * al)))]), nil))
382+ else $Tuple2(nil, $Tuple2(cl, nil))
377383 }
378384 else throw("Strict value is not equal to itself.")
379385 }
380386 else throw("Strict value is not equal to itself.")
381387 }
382388 }
383389
384390
385391
386-@Callable(ax)
387-func initWithInitRatio (bC,bD,bE,bF) = {
388- let bz = Address(bC)
389- let ch = $Tuple5(parseIntValue(bD[0]), parseIntValue(bD[1]), bD[2], bD[3], (bD[4] == "true"))
390- let ci = ch._1
391- let cj = ch._2
392- let ck = ch._3
393- let cl = ch._4
394- let bU = ch._5
395- if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
392+@Callable(az)
393+func initWithInitRatio (bH,bI,bJ,bK) = {
394+ let bD = Address(bH)
395+ let cm = $Tuple5(parseIntValue(bI[0]), parseIntValue(bI[1]), bI[2], bI[3], (bI[4] == "true"))
396+ let cn = cm._1
397+ let co = cm._2
398+ let cp = cm._3
399+ let cq = cm._4
400+ let bZ = cm._5
401+ if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
396402 then throw("Only admin can call this function")
397- else if ((size(bD) != 5))
403+ else if ((size(bI) != 5))
398404 then throw("Wrong args size")
399- else if (isDefined(getBoolean(bz, c)))
405+ else if (isDefined(getBoolean(bD, c)))
400406 then throw("DApp is already active")
401- else if ((ck == cl))
407+ else if ((cp == cq))
402408 then throw("Assets must be different")
403409 else {
404- let cm = ay(ck)
405- let bN = cm._1
406- let bO = cm._2
407- let bP = cm._3
408- let cn = ay(cl)
409- let bR = cn._1
410- let bS = cn._2
411- let bT = cn._3
412- let bV = ((("s" + take(bO, 7)) + "_") + take(bS, 7))
413- let bW = ((((("ShareToken of SwopFi protocol for " + bO) + " and ") + bS) + " at address ") + toString(this))
414- let bX = ((bP + bT) / 2)
415- let cb = 0
416- let cc = Issue(bV, bW, cb, bX, true)
417- let cd = calculateAssetId(cc)
418- let cg = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bN), StringEntry(f, bR), IntegerEntry(i, ci), IntegerEntry(j, cj), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(O, "base_fee_cpmm")), cc, StringEntry(k, toBase58String(cd)), IntegerEntry(l, cb)]
419- if (bU)
420- then $Tuple2(nil, $Tuple2((cg ++ [BooleanEntry(o, bU), IntegerEntry(p, (ai + (ak * aj)))]), nil))
421- else $Tuple2(nil, $Tuple2(cg, nil))
410+ let cr = aA(cp)
411+ let bS = cr._1
412+ let bT = cr._2
413+ let bU = cr._3
414+ let cs = aA(cq)
415+ let bW = cs._1
416+ let bX = cs._2
417+ let bY = cs._3
418+ let ca = ((("s" + take(bT, 7)) + "_") + take(bX, 7))
419+ let cb = ((((("ShareToken of SwopFi protocol for " + bT) + " and ") + bX) + " at address ") + toString(this))
420+ let cc = ((bU + bY) / 2)
421+ let cg = 0
422+ let ch = Issue(ca, cb, cg, cc, true)
423+ let ci = calculateAssetId(ch)
424+ let cl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(e, bS), StringEntry(f, bW), IntegerEntry(i, cn), IntegerEntry(j, co), IntegerEntry(g, 0), IntegerEntry(h, 0), IntegerEntry(m, getIntegerValue(P, "base_fee_cpmm")), ch, StringEntry(k, toBase58String(ci)), IntegerEntry(l, cg)]
425+ if (bZ)
426+ then $Tuple2(nil, $Tuple2((cl ++ [BooleanEntry(o, bZ), IntegerEntry(p, (ak + (am * al)))]), nil))
427+ else $Tuple2(nil, $Tuple2(cl, nil))
422428 }
423429 }
424430
425431
426432
427-@Callable(ax)
428-func keepLimitForFirstHarvest (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), if (!(containsElement([U, V, W, X], ax.originCallerPublicKey)))
433+@Callable(az)
434+func keepLimitForFirstHarvest (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), if (!(containsElement([V, W, X, Y], az.originCallerPublicKey)))
429435 then throw("Only admin can call this function")
430- else if ((size(bD) != 1))
436+ else if ((size(bI) != 1))
431437 then throw("Wrong args size")
432438 else {
433- let co = parseIntValue(bD[0])
434- $Tuple2(nil, $Tuple2([IntegerEntry(q, co)], nil))
439+ let ct = parseIntValue(bI[0])
440+ $Tuple2(nil, $Tuple2([IntegerEntry(q, ct)], nil))
435441 }))
436442
437443
438444
439-@Callable(ax)
440-func exchange (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
441- let bz = Address(bC)
442- let cp = $Tuple2(bE[0], be(bF[0]))
443- let aN = cp._1
444- let cq = cp._2
445- let aO = parseIntValue(bD[0])
446- let cr = bu(ax.caller)
447- let bv = cr._1
448- let bw = cr._2
449- let bk = cr._3
450- let bl = cr._4
451- let cs = bq(ax.caller, bk, bl)
452- let bi = cs._1
453- let bj = cs._2
454- let bg = cs._3
455- let bh = cs._4
456- if ((size(bD) != 1))
445+@Callable(az)
446+func exchange (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
447+ let bD = Address(bH)
448+ let cu = $Tuple2(bJ[0], bi(bK[0]))
449+ let aP = cu._1
450+ let cv = cu._2
451+ let aQ = parseIntValue(bI[0])
452+ let cw = by(az.caller)
453+ let bz = cw._1
454+ let bA = cw._2
455+ let bo = cw._3
456+ let bp = cw._4
457+ let cx = bu(az.caller, bo, bp)
458+ let bm = cx._1
459+ let bn = cx._2
460+ let bk = cx._3
461+ let bl = cx._4
462+ if ((size(bI) != 1))
457463 then throw("Wrong args size")
458- else if (if ((bi == 0))
464+ else if (if ((bm == 0))
459465 then true
460- else (bj == 0))
466+ else (bn == 0))
461467 then throw("Can't exchange with zero balance")
462- else if ((0 >= aO))
463- then throw(("Minimal amount to receive must be positive. Actual: " + toString(aO)))
464- else if ((size(bE) != 1))
468+ else if ((0 >= aQ))
469+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(aQ)))
470+ else if ((size(bJ) != 1))
465471 then throw("One attached payment expected")
466- else if (!(containsElement([bk, bl], cq)))
467- then throw(((("Incorrect asset attached. Expected: " + bv) + " or ") + bw))
468- else if (if ((bi > bg))
472+ else if (!(containsElement([bo, bp], cv)))
473+ then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
474+ else if (if ((bm > bk))
469475 then true
470- else (bj > bh))
471- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
476+ else (bn > bl))
477+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
472478 else {
473- let ct = by(ax.caller, ax.originCaller)
474- let aR = ct._1
475- let bB = ct._2
476- let cu = if ((cq == bk))
477- then aM(aN, aO, bi, bj, aR, bB)
478- else aM(aN, aO, bj, bi, aR, bB)
479- let aT = cu._1
480- let aU = cu._2
481- let aV = cu._3
482- let cv = if ((cq == bk))
483- then $Tuple3((bi + aN), ((bj - aU) - aV), bl)
484- else $Tuple3(((bi - aU) - aV), (bj + aN), bk)
485- let cw = cv._1
486- let cx = cv._2
487- let cy = cv._3
488- let cz = if ((cq == bk))
489- then $Tuple2(aN, (aU + aV))
490- else $Tuple2((aU + aV), aN)
491- let cA = cz._1
492- let cB = cz._2
493- let ce = if (contains(ae, bv))
494- then invoke(ax.caller, "stakeUnstake", [(cq == bk), cA, bv], nil)
479+ let cy = bC(az.caller, az.originCaller)
480+ let aT = cy._1
481+ let bF = cy._2
482+ let bG = cy._3
483+ let cz = if ((cv == bo))
484+ then aO(aP, aQ, bm, bn, aT, bF, bG)
485+ else aO(aP, aQ, bn, bm, aT, bF, bG)
486+ let aW = cz._1
487+ let aX = cz._2
488+ let aY = cz._3
489+ let aZ = cz._4
490+ let cA = if ((cv == bo))
491+ then $Tuple3((bm + aP), (((bn - aX) - aY) - aZ), bp)
492+ else $Tuple3((((bm - aX) - aY) - aZ), (bn + aP), bo)
493+ let cB = cA._1
494+ let cC = cA._2
495+ let cD = cA._3
496+ let cE = if ((cv == bo))
497+ then $Tuple2(aP, ((aX + aY) + aZ))
498+ else $Tuple2(((aX + aY) + aZ), aP)
499+ let cF = cE._1
500+ let cG = cE._2
501+ let cj = if (contains(ag, bz))
502+ then invoke(az.caller, "stakeUnstake", [(cv == bo), cF, bz], nil)
495503 else 0
496- if ((ce == ce))
504+ if ((cj == cj))
497505 then {
498- let cf = if (contains(ae, bw))
499- then invoke(ax.caller, "stakeUnstake", [(cq == bl), cB, bw], nil)
506+ let ck = if (contains(ag, bA))
507+ then invoke(az.caller, "stakeUnstake", [(cv == bp), cG, bA], nil)
500508 else 0
501- if ((cf == cf))
502- then $Tuple2(nil, $Tuple2([IntegerEntry(g, cw), IntegerEntry(h, cx), ScriptTransfer(bz, aU, cy), ScriptTransfer(Y, aV, cy)], [aU, cy]))
509+ if ((ck == ck))
510+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, cB), IntegerEntry(h, cC), ScriptTransfer(bD, aX, cD), ScriptTransfer(Z, aY, cD), ScriptTransfer(aa, aZ, cD)], [aX, cD]))
503511 else throw("Strict value is not equal to itself.")
504512 }
505513 else throw("Strict value is not equal to itself.")
506514 }
507515 })))
508516
509517
510518
511-@Callable(ax)
512-func replenishWithTwoTokens (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
513- let bz = Address(bC)
514- let bI = be(bF[0])
515- let bL = be(bF[1])
516- let cC = (bD[0] == "true")
517- let cD = parseIntValue(bD[1])
518- let cE = bu(ax.caller)
519- let bv = cE._1
520- let bw = cE._2
521- let bk = cE._3
522- let bl = cE._4
523- let bx = cE._5
524- let cF = bq(ax.caller, bk, bl)
525- let bi = cF._1
526- let bj = cF._2
527- let bg = cF._3
528- let bh = cF._4
529- let cG = cF._5
530- if ((size(bD) != 2))
519+@Callable(az)
520+func replenishWithTwoTokens (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
521+ let bD = Address(bH)
522+ let bN = bi(bK[0])
523+ let bQ = bi(bK[1])
524+ let cH = (bI[0] == "true")
525+ let cI = parseIntValue(bI[1])
526+ let cJ = by(az.caller)
527+ let bz = cJ._1
528+ let bA = cJ._2
529+ let bo = cJ._3
530+ let bp = cJ._4
531+ let bB = cJ._5
532+ let cK = bu(az.caller, bo, bp)
533+ let bm = cK._1
534+ let bn = cK._2
535+ let bk = cK._3
536+ let bl = cK._4
537+ let cL = cK._5
538+ if ((size(bI) != 2))
531539 then throw("Wrong args size")
532- else if (if ((size(bE) != 2))
533- then (size(bE) != 3)
540+ else if (if ((size(bJ) != 2))
541+ then (size(bJ) != 3)
534542 else false)
535543 then throw("Two or three payments expected")
536- else if (if ((bI != bk))
544+ else if (if ((bN != bo))
537545 then true
538- else (bL != bl))
539- then throw(((("Incorrect assets attached. Expected: " + bv) + " and ") + bw))
540- else if (if ((bi > bg))
546+ else (bQ != bp))
547+ then throw(((("Incorrect assets attached. Expected: " + bz) + " and ") + bA))
548+ else if (if ((bm > bk))
541549 then true
542- else (bj > bh))
543- then $Tuple2(nil, ([ScriptTransfer(bz, bE[0], bI), ScriptTransfer(bz, bE[1], bL)] ++ (if ((size(bE) == 3))
544- then [AttachedPayment(if ((bF[2] == base58''))
550+ else (bn > bl))
551+ then $Tuple2(nil, ([ScriptTransfer(bD, bJ[0], bN), ScriptTransfer(bD, bJ[1], bQ)] ++ (if ((size(bJ) == 3))
552+ then [AttachedPayment(if ((bK[2] == base58''))
545553 then unit
546- else bF[2], bE[2])]
547- else (nil ++ bf(bg, bh, bi, bj, bv, bw)))))
554+ else bK[2], bJ[2])]
555+ else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
548556 else {
549- let cH = ay(bI)
550- let bN = cH._1
551- let bO = cH._2
552- let bP = cH._3
553- let cI = ay(bL)
554- let bR = cI._1
555- let bS = cI._2
556- let bT = cI._3
557- let cJ = ((bi + bj) == 0)
558- let cK = if (cJ)
559- then $Tuple5(bE[0], bE[1], 0, bI, toBigInt(1))
557+ let cM = aA(bN)
558+ let bS = cM._1
559+ let bT = cM._2
560+ let bU = cM._3
561+ let cN = aA(bQ)
562+ let bW = cN._1
563+ let bX = cN._2
564+ let bY = cN._3
565+ let cO = ((bm + bn) == 0)
566+ let cP = if (cO)
567+ then $Tuple5(bJ[0], bJ[1], 0, bN, toBigInt(1))
560568 else {
561- let cL = fraction(ao, toBigInt(bE[0]), toBigInt(bi))
562- let cM = fraction(ao, toBigInt(bE[1]), toBigInt(bj))
563- if ((cM > cL))
569+ let cQ = fraction(aq, toBigInt(bJ[0]), toBigInt(bm))
570+ let cR = fraction(aq, toBigInt(bJ[1]), toBigInt(bn))
571+ if ((cR > cQ))
564572 then {
565- let cN = fraction(bE[0], bj, bi)
566- $Tuple5(bE[0], cN, (bE[1] - cN), bL, cL)
573+ let cS = fraction(bJ[0], bn, bm)
574+ $Tuple5(bJ[0], cS, (bJ[1] - cS), bQ, cQ)
567575 }
568576 else {
569- let cN = fraction(bE[1], bi, bj)
570- $Tuple5(cN, bE[1], (bE[0] - cN), bI, cM)
577+ let cS = fraction(bJ[1], bm, bn)
578+ $Tuple5(cS, bJ[1], (bJ[0] - cS), bN, cR)
571579 }
572580 }
573- let bH = cK._1
574- let bK = cK._2
575- let cO = cK._3
576- let cP = cK._4
577- let cQ = cK._5
578- let cR = if (cJ)
581+ let bM = cP._1
582+ let bP = cP._2
583+ let cT = cP._3
584+ let cU = cP._4
585+ let cV = cP._5
586+ let cW = if (cO)
579587 then {
580- let bX = ((bP + bT) / 2)
581- fraction(pow(bH, bP, 5, 1, bP, DOWN), pow(bK, bT, 5, 1, bT, DOWN), pow(10, 0, bX, 0, 0, DOWN))
588+ let cc = ((bU + bY) / 2)
589+ fraction(pow(bM, bU, 5, 1, bU, DOWN), pow(bP, bY, 5, 1, bY, DOWN), pow(10, 0, cc, 0, 0, DOWN))
582590 }
583- else toInt(fraction(cQ, toBigInt(cG), ao))
584- if ((cR == 0))
591+ else toInt(fraction(cV, toBigInt(cL), aq))
592+ if ((cW == 0))
585593 then throw("Too small amount to replenish")
586- else if ((0 > cO))
594+ else if ((0 > cT))
587595 then throw("Change < 0")
588596 else {
589- let ce = if (contains(ae, bN))
590- then invoke(ax.caller, "stakeUnstake", [true, bH, bN], nil)
597+ let cj = if (contains(ag, bS))
598+ then invoke(az.caller, "stakeUnstake", [true, bM, bS], nil)
591599 else 0
592- if ((ce == ce))
600+ if ((cj == cj))
593601 then {
594- let cf = if (contains(ae, bR))
595- then invoke(ax.caller, "stakeUnstake", [true, bK, bR], nil)
602+ let ck = if (contains(ag, bW))
603+ then invoke(az.caller, "stakeUnstake", [true, bP, bW], nil)
596604 else 0
597- if ((cf == cf))
605+ if ((ck == ck))
598606 then {
599- let cS = if (cC)
607+ let cX = if (cH)
600608 then {
601- let cT = ([AttachedPayment(bx, cR)] ++ (if ((size(bE) == 3))
602- then [AttachedPayment(if ((bF[2] == base58''))
609+ let cY = ([AttachedPayment(bB, cW)] ++ (if ((size(bJ) == 3))
610+ then [AttachedPayment(if ((bK[2] == base58''))
603611 then unit
604- else bF[2], bE[2])]
612+ else bK[2], bJ[2])]
605613 else nil))
606- let cU = invoke(ax.caller, "reissueShareToken", [cR], nil)
607- if ((cU == cU))
614+ let cZ = invoke(az.caller, "reissueShareToken", [cW], nil)
615+ if ((cZ == cZ))
608616 then {
609- let cV = invoke(ab, "lockShareTokensFromPool", [bC, toString(ax.caller), cD], cT)
610- if ((cV == cV))
617+ let da = invoke(ad, "lockShareTokensFromPool", [bH, toString(az.caller), cI], cY)
618+ if ((da == da))
611619 then nil
612620 else throw("Strict value is not equal to itself.")
613621 }
614622 else throw("Strict value is not equal to itself.")
615623 }
616- else [Reissue(bx, cR, true), ScriptTransfer(bz, cR, bx)]
617- $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bi + bH)), IntegerEntry(h, (bj + bK)), IntegerEntry(l, (cG + cR)), ScriptTransfer(bz, cO, cP)] ++ cS), nil))
624+ else [Reissue(bB, cW, true), ScriptTransfer(bD, cW, bB)]
625+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, (bm + bM)), IntegerEntry(h, (bn + bP)), IntegerEntry(l, (cL + cW)), ScriptTransfer(bD, cT, cU)] ++ cX), nil))
618626 }
619627 else throw("Strict value is not equal to itself.")
620628 }
621629 else throw("Strict value is not equal to itself.")
622630 }
623631 }
624632 })))
625633
626634
627635
628-@Callable(ax)
629-func replenishWithOneToken (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
630- let bz = Address(bC)
631- let cq = be(bF[0])
632- let aN = bE[0]
633- let cW = parseIntValue(bD[0])
634- let cC = (bD[1] == "true")
635- let cD = parseIntValue(bD[2])
636- let cX = bu(ax.caller)
637- let bv = cX._1
638- let bw = cX._2
639- let bk = cX._3
640- let bl = cX._4
641- let bx = cX._5
642- let cY = bq(ax.caller, bk, bl)
643- let bi = cY._1
644- let bj = cY._2
645- let bg = cY._3
646- let bh = cY._4
647- let cG = cY._5
648- let cJ = ((bi + bj) == 0)
649- if ((size(bD) != 3))
636+@Callable(az)
637+func replenishWithOneToken (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
638+ let bD = Address(bH)
639+ let cv = bi(bK[0])
640+ let aP = bJ[0]
641+ let db = parseIntValue(bI[0])
642+ let cH = (bI[1] == "true")
643+ let cI = parseIntValue(bI[2])
644+ let dc = by(az.caller)
645+ let bz = dc._1
646+ let bA = dc._2
647+ let bo = dc._3
648+ let bp = dc._4
649+ let bB = dc._5
650+ let dd = bu(az.caller, bo, bp)
651+ let bm = dd._1
652+ let bn = dd._2
653+ let bk = dd._3
654+ let bl = dd._4
655+ let cL = dd._5
656+ let cO = ((bm + bn) == 0)
657+ if ((size(bI) != 3))
650658 then throw("Wrong args size")
651- else if (if ((size(bE) != 1))
652- then (size(bE) != 2)
659+ else if (if ((size(bJ) != 1))
660+ then (size(bJ) != 2)
653661 else false)
654662 then throw("Two or one attached assets expected")
655- else if (if ((cq != bk))
656- then (cq != bl)
663+ else if (if ((cv != bo))
664+ then (cv != bp)
657665 else false)
658- then throw(((("Incorrect asset attached. Expected: " + bv) + " or ") + bw))
659- else if (cJ)
666+ then throw(((("Incorrect asset attached. Expected: " + bz) + " or ") + bA))
667+ else if (cO)
660668 then throw("For initial exchanger you need to use two tokens")
661- else if (if ((bi > bg))
669+ else if (if ((bm > bk))
662670 then true
663- else (bj > bh))
664- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ (if ((size(bE) == 2))
665- then [AttachedPayment(if ((bF[2] == base58''))
671+ else (bn > bl))
672+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ (if ((size(bJ) == 2))
673+ then [AttachedPayment(if ((bK[2] == base58''))
666674 then unit
667- else bF[2], bE[2])]
668- else (nil ++ bf(bg, bh, bi, bj, bv, bw)))))
675+ else bK[2], bJ[2])]
676+ else (nil ++ bj(bk, bl, bm, bn, bz, bA)))))
669677 else {
670- let cZ = by(ax.caller, ax.originCaller)
671- let aR = cZ._1
672- let bB = cZ._2
673- let da = if ((cq == bk))
678+ let de = bC(az.caller, az.originCaller)
679+ let aT = de._1
680+ let bF = de._2
681+ let bG = de._3
682+ let df = if ((cv == bo))
674683 then {
675- let db = aW(aN, bi, aR)
676- let dc = aM(db, cW, bi, bj, aR, bB)
677- let aT = dc._1
678- let aU = dc._2
679- let aV = dc._3
680- let dd = (bi + db)
681- let de = ((bj + aT) - aV)
682- let cw = (bi + aN)
683- let cx = (bj - aV)
684- let cL = fraction(toBigInt((aN - db)), ao, toBigInt(dd))
685- let cM = fraction(toBigInt(aU), ao, toBigInt(de))
686- let cR = toInt(fraction(min([cL, cM]), toBigInt(cG), ao))
687- $Tuple7(cw, cx, cR, aV, bl, bw, bv)
684+ let dg = ba(aP, bm, aT)
685+ let dh = aO(dg, db, bm, bn, aT, bF, bG)
686+ let aW = dh._1
687+ let aX = dh._2
688+ let aY = dh._3
689+ let di = dh._4
690+ let dj = (bm + dg)
691+ let dk = (((bn + aW) - aY) - di)
692+ let cB = (bm + aP)
693+ let cC = ((bn - aY) - di)
694+ let cQ = fraction(toBigInt((aP - dg)), aq, toBigInt(dj))
695+ let cR = fraction(toBigInt(aX), aq, toBigInt(dk))
696+ let cW = toInt(fraction(min([cQ, cR]), toBigInt(cL), aq))
697+ $Tuple8(cB, cC, cW, aY, di, bp, bA, bz)
688698 }
689699 else {
690- let db = aW(aN, bj, aR)
691- let df = aM(db, cW, bj, bi, aR, bB)
692- let aT = df._1
693- let aU = df._2
694- let aV = df._3
695- let dd = ((bi + aT) - aV)
696- let de = (bj + db)
697- let cw = (bi - aV)
698- let cx = (bj + aN)
699- let cL = fraction(toBigInt(aU), ao, toBigInt(dd))
700- let cM = fraction(toBigInt((aN - db)), ao, toBigInt(de))
701- let cR = toInt(fraction(min([cL, cM]), toBigInt(cG), ao))
702- $Tuple7(cw, cx, cR, aV, bk, bv, bw)
700+ let dg = ba(aP, bn, aT)
701+ let dl = aO(dg, db, bn, bm, aT, bF, bG)
702+ let aW = dl._1
703+ let aX = dl._2
704+ let aY = dl._3
705+ let di = dl._4
706+ let dj = (((bm + aW) - aY) - di)
707+ let dk = (bn + dg)
708+ let cB = ((bm - aY) - di)
709+ let cC = (bn + aP)
710+ let cQ = fraction(toBigInt(aX), aq, toBigInt(dj))
711+ let cR = fraction(toBigInt((aP - dg)), aq, toBigInt(dk))
712+ let cW = toInt(fraction(min([cQ, cR]), toBigInt(cL), aq))
713+ $Tuple8(cB, cC, cW, aY, di, bo, bz, bA)
703714 }
704- let cw = da._1
705- let cx = da._2
706- let cR = da._3
707- let dg = da._4
708- let dh = da._5
709- let di = da._6
710- let dj = da._7
711- if ((cR == 0))
715+ let cB = df._1
716+ let cC = df._2
717+ let cW = df._3
718+ let dm = df._4
719+ let aZ = df._5
720+ let dn = df._6
721+ let do = df._7
722+ let dp = df._8
723+ if ((cW == 0))
712724 then throw("Too small amount to replenish")
713725 else {
714- let ce = if (contains(ae, dj))
715- then invoke(ax.caller, "stakeUnstake", [true, aN, dj], nil)
726+ let cj = if (contains(ag, dp))
727+ then invoke(az.caller, "stakeUnstake", [true, aP, dp], nil)
716728 else 0
717- if ((ce == ce))
729+ if ((cj == cj))
718730 then {
719- let cf = if (contains(ae, di))
720- then invoke(ax.caller, "stakeUnstake", [false, dg, di], nil)
731+ let ck = if (contains(ag, do))
732+ then invoke(az.caller, "stakeUnstake", [false, (dm + aZ), do], nil)
721733 else 0
722- if ((cf == cf))
734+ if ((ck == ck))
723735 then {
724- let cS = if (cC)
736+ let cX = if (cH)
725737 then {
726- let cT = ([AttachedPayment(bx, cR)] ++ (if ((size(bE) == 2))
727- then [AttachedPayment(if ((bF[1] == base58''))
738+ let cY = ([AttachedPayment(bB, cW)] ++ (if ((size(bJ) == 2))
739+ then [AttachedPayment(if ((bK[1] == base58''))
728740 then unit
729- else bF[1], bE[1])]
741+ else bK[1], bJ[1])]
730742 else nil))
731- let cU = invoke(ax.caller, "reissueShareToken", [cR], nil)
732- if ((cU == cU))
743+ let cZ = invoke(az.caller, "reissueShareToken", [cW], nil)
744+ if ((cZ == cZ))
733745 then {
734- let cV = invoke(ab, "lockShareTokensFromPool", [bC, toString(ax.caller), cD], cT)
735- if ((cV == cV))
746+ let da = invoke(ad, "lockShareTokensFromPool", [bH, toString(az.caller), cI], cY)
747+ if ((da == da))
736748 then nil
737749 else throw("Strict value is not equal to itself.")
738750 }
739751 else throw("Strict value is not equal to itself.")
740752 }
741- else [Reissue(bx, cR, true), ScriptTransfer(bz, cR, bx)]
742- $Tuple2(nil, $Tuple2(([IntegerEntry(g, cw), IntegerEntry(h, cx), IntegerEntry(l, (cG + cR)), ScriptTransfer(Y, dg, dh)] ++ cS), nil))
753+ else [Reissue(bB, cW, true), ScriptTransfer(bD, cW, bB)]
754+ $Tuple2(nil, $Tuple2(([IntegerEntry(g, cB), IntegerEntry(h, cC), IntegerEntry(l, (cL + cW)), ScriptTransfer(Z, dm, dn), ScriptTransfer(aa, aZ, dn)] ++ cX), nil))
743755 }
744756 else throw("Strict value is not equal to itself.")
745757 }
746758 else throw("Strict value is not equal to itself.")
747759 }
748760 }
749761 })))
750762
751763
752764
753-@Callable(ax)
754-func withdraw (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), {
755- let dk = lastBlock.timestamp
756- let bz = Address(bC)
757- let dl = bu(ax.caller)
758- let bv = dl._1
759- let bw = dl._2
760- let bk = dl._3
761- let bl = dl._4
762- let bx = dl._5
763- let dm = bq(ax.caller, bk, bl)
764- let bi = dm._1
765- let bj = dm._2
766- let bg = dm._3
767- let bh = dm._4
768- let cG = dm._5
769- let dn = if ((size(bE) == 1))
765+@Callable(az)
766+func withdraw (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
767+ let dq = lastBlock.timestamp
768+ let bD = Address(bH)
769+ let dr = by(az.caller)
770+ let bz = dr._1
771+ let bA = dr._2
772+ let bo = dr._3
773+ let bp = dr._4
774+ let bB = dr._5
775+ let ds = bu(az.caller, bo, bp)
776+ let bm = ds._1
777+ let bn = ds._2
778+ let bk = ds._3
779+ let bl = ds._4
780+ let cL = ds._5
781+ let dt = if ((size(bJ) == 1))
770782 then {
771- let do = be(bF[0])
772- if ((do != bx))
773- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
774- else $Tuple2(bE[0], do)
783+ let du = bi(bK[0])
784+ if ((du != bB))
785+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
786+ else $Tuple2(bJ[0], du)
775787 }
776- else $Tuple2(0, bx)
777- let aN = dn._1
778- let cq = dn._2
779- if ((size(bD) != 1))
788+ else $Tuple2(0, bB)
789+ let aP = dt._1
790+ let cv = dt._2
791+ if ((size(bI) != 1))
780792 then throw("Wrong args size")
781- else if ((size(bE) > 1))
793+ else if ((size(bJ) > 1))
782794 then throw("One attached payment expected")
783- else if (if ((bi > bg))
795+ else if (if ((bm > bk))
784796 then true
785- else (bj > bh))
786- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
797+ else (bn > bl))
798+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
787799 else {
788- let dp = parseIntValue(valueOrElse(bD[0], "0"))
789- let dq = if ((dp > 0))
790- then invoke(ab, "withdrawShareTokensFromPool", [bC, toString(ax.caller), dp], nil)
800+ let dv = parseIntValue(valueOrElse(bI[0], "0"))
801+ let dw = if ((dv > 0))
802+ then invoke(ad, "withdrawShareTokensFromPool", [bH, toString(az.caller), dv], nil)
791803 else 0
792- if ((dq == dq))
804+ if ((dw == dw))
793805 then {
794- let dr = (aN + dp)
795- let ds = fraction(dr, bi, cG)
796- let dt = fraction(dr, bj, cG)
797- let ce = if (contains(ae, bv))
798- then invoke(ax.caller, "stakeUnstake", [false, ds, bv], nil)
806+ let dx = (aP + dv)
807+ let dy = fraction(dx, bm, cL)
808+ let dz = fraction(dx, bn, cL)
809+ let cj = if (contains(ag, bz))
810+ then invoke(az.caller, "stakeUnstake", [false, dy, bz], nil)
799811 else 0
800- if ((ce == ce))
812+ if ((cj == cj))
801813 then {
802- let cf = if (contains(ae, bw))
803- then invoke(ax.caller, "stakeUnstake", [false, dt, bw], nil)
814+ let ck = if (contains(ag, bA))
815+ then invoke(az.caller, "stakeUnstake", [false, dz, bA], nil)
804816 else 0
805- if ((cf == cf))
806- then $Tuple2([ScriptTransfer(ax.caller, dp, bx)], $Tuple2([IntegerEntry(g, (bi - ds)), IntegerEntry(h, (bj - dt)), IntegerEntry(l, (cG - dr)), Burn(bx, dr), ScriptTransfer(bz, ds, bk), ScriptTransfer(bz, dt, bl)], nil))
817+ if ((ck == ck))
818+ then $Tuple2([ScriptTransfer(az.caller, dv, bB)], $Tuple2([IntegerEntry(g, (bm - dy)), IntegerEntry(h, (bn - dz)), IntegerEntry(l, (cL - dx)), Burn(bB, dx), ScriptTransfer(bD, dy, bo), ScriptTransfer(bD, dz, bp)], nil))
807819 else throw("Strict value is not equal to itself.")
808820 }
809821 else throw("Strict value is not equal to itself.")
810822 }
811823 else throw("Strict value is not equal to itself.")
812824 }
813825 }))
814826
815827
816828
817-@Callable(ax)
818-func withdrawOneToken (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bp(toString(ax.caller)), valueOrElse(bm(), {
819- let bz = Address(bC)
820- let du = if ((bD[0] == ""))
829+@Callable(az)
830+func withdrawOneToken (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bt(toString(az.caller)), valueOrElse(bq(), {
831+ let bD = Address(bH)
832+ let dA = if ((bI[0] == ""))
821833 then unit
822- else fromBase58String(bD[0])
823- let dv = bu(ax.caller)
824- let bv = dv._1
825- let bw = dv._2
826- let bk = dv._3
827- let bl = dv._4
828- let bx = dv._5
829- let dw = bq(ax.caller, bk, bl)
830- let bi = dw._1
831- let bj = dw._2
832- let bg = dw._3
833- let bh = dw._4
834- let cG = dw._5
835- let dx = if ((size(bE) == 1))
834+ else fromBase58String(bI[0])
835+ let dB = by(az.caller)
836+ let bz = dB._1
837+ let bA = dB._2
838+ let bo = dB._3
839+ let bp = dB._4
840+ let bB = dB._5
841+ let dC = bu(az.caller, bo, bp)
842+ let bm = dC._1
843+ let bn = dC._2
844+ let bk = dC._3
845+ let bl = dC._4
846+ let cL = dC._5
847+ let dD = if ((size(bJ) == 1))
836848 then {
837- let do = be(bF[0])
838- if ((do != bx))
839- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
840- else $Tuple2(bE[0], do)
849+ let du = bi(bK[0])
850+ if ((du != bB))
851+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
852+ else $Tuple2(bJ[0], du)
841853 }
842- else $Tuple2(0, bx)
843- let aN = dx._1
844- let cq = dx._2
845- let dy = parseIntValue(bD[1])
846- if ((size(bD) != 3))
854+ else $Tuple2(0, bB)
855+ let aP = dD._1
856+ let cv = dD._2
857+ let dE = parseIntValue(bI[1])
858+ if ((size(bI) != 3))
847859 then throw("Wrong args size")
848- else if ((size(bE) > 1))
860+ else if ((size(bJ) > 1))
849861 then throw("One attached payment expected")
850- else if ((cq != bx))
851- then throw(("Incorrect asset attached. Expected: " + toBase58String(bx)))
852- else if (!(containsElement([bk, bl], du)))
862+ else if ((cv != bB))
863+ then throw(("Incorrect asset attached. Expected: " + toBase58String(bB)))
864+ else if (!(containsElement([bo, bp], dA)))
853865 then throw("Incorrect withdraw asset.")
854- else if (if ((bi > bg))
866+ else if (if ((bm > bk))
855867 then true
856- else (bj > bh))
857- then $Tuple2(nil, ([ScriptTransfer(bz, aN, cq)] ++ bf(bg, bh, bi, bj, bv, bw)))
868+ else (bn > bl))
869+ then $Tuple2(nil, ([ScriptTransfer(bD, aP, cv)] ++ bj(bk, bl, bm, bn, bz, bA)))
858870 else {
859- let dp = parseIntValue(valueOrElse(bD[2], "0"))
860- let dq = if ((dp > 0))
861- then invoke(ab, "withdrawShareTokensFromPool", [bC, toString(ax.caller), dp], nil)
871+ let dv = parseIntValue(valueOrElse(bI[2], "0"))
872+ let dw = if ((dv > 0))
873+ then invoke(ad, "withdrawShareTokensFromPool", [bH, toString(az.caller), dv], nil)
862874 else 0
863- if ((dq == dq))
875+ if ((dw == dw))
864876 then {
865- let dr = (aN + dp)
866- let ds = fraction(dr, bi, cG)
867- let dt = fraction(dr, bj, cG)
868- let dz = by(ax.caller, ax.originCaller)
869- let aR = dz._1
870- let bB = dz._2
871- let dA = if ((du == bk))
872- then aM(dt, dy, (bj - dt), (bi - ds), aR, bB)
873- else aM(ds, dy, (bi - ds), (bj - dt), aR, bB)
874- let aT = dA._1
875- let aU = dA._2
876- let aV = dA._3
877- let dB = if ((du == bk))
877+ let dx = (aP + dv)
878+ let dy = fraction(dx, bm, cL)
879+ let dz = fraction(dx, bn, cL)
880+ let dF = bC(az.caller, az.originCaller)
881+ let aT = dF._1
882+ let bF = dF._2
883+ let bG = dF._3
884+ let dG = if ((dA == bo))
885+ then aO(dz, dE, (bn - dz), (bm - dy), aT, bF, bG)
886+ else aO(dy, dE, (bm - dy), (bn - dz), aT, bF, bG)
887+ let aW = dG._1
888+ let aX = dG._2
889+ let aY = dG._3
890+ let aZ = dG._4
891+ let dH = if ((dA == bo))
878892 then {
879- let dC = if (contains(ae, bv))
880- then invoke(ax.caller, "stakeUnstake", [false, ((ds + aU) + aV), bv], nil)
893+ let dI = if (contains(ag, bz))
894+ then invoke(az.caller, "stakeUnstake", [false, (((dy + aX) + aY) + aZ), bz], nil)
881895 else 0
882- if ((dC == dC))
883- then $Tuple4((((bi - ds) - aU) - aV), bj, bk, [ScriptTransfer(bz, (ds + aU), bk)])
896+ if ((dI == dI))
897+ then $Tuple4(((((bm - dy) - aX) - aY) - aZ), bn, bo, [ScriptTransfer(bD, (dy + aX), bo)])
884898 else throw("Strict value is not equal to itself.")
885899 }
886900 else {
887- let dC = if (contains(ae, bw))
888- then invoke(ax.caller, "stakeUnstake", [false, ((dt + aU) + aV), bw], nil)
901+ let dI = if (contains(ag, bA))
902+ then invoke(az.caller, "stakeUnstake", [false, (((dz + aX) + aY) + aZ), bA], nil)
889903 else 0
890- if ((dC == dC))
891- then $Tuple4(bi, (((bj - dt) - aU) - aV), bl, [ScriptTransfer(bz, (dt + aU), bl)])
904+ if ((dI == dI))
905+ then $Tuple4(bm, ((((bn - dz) - aX) - aY) - aZ), bp, [ScriptTransfer(bD, (dz + aX), bp)])
892906 else throw("Strict value is not equal to itself.")
893907 }
894- let cw = dB._1
895- let cx = dB._2
896- let dD = dB._3
897- let dE = dB._4
898- $Tuple2([ScriptTransfer(ax.caller, dp, bx)], $Tuple2(([IntegerEntry(g, cw), IntegerEntry(h, cx), IntegerEntry(l, (cG - dr)), Burn(bx, dr), ScriptTransfer(Y, aV, dD)] ++ dE), nil))
908+ let cB = dH._1
909+ let cC = dH._2
910+ let dJ = dH._3
911+ let dK = dH._4
912+ $Tuple2([ScriptTransfer(az.caller, dv, bB)], $Tuple2(([IntegerEntry(g, cB), IntegerEntry(h, cC), IntegerEntry(l, (cL - dx)), Burn(bB, dx), ScriptTransfer(Z, aY, dJ), ScriptTransfer(aa, aZ, dJ)] ++ dK), nil))
899913 }
900914 else throw("Strict value is not equal to itself.")
901915 }
902916 })))
903917
904918
905919
906-@Callable(ax)
907-func takeIntoAccountExtraFunds (bC,bD,bE,bF) = valueOrElse(bn(toString(ax.caller)), valueOrElse(bm(), {
908- let dF = bu(ax.caller)
909- let bv = dF._1
910- let bw = dF._2
911- let bk = dF._3
912- let bl = dF._4
913- let dG = if (if ((bk == ac))
920+@Callable(az)
921+func takeIntoAccountExtraFunds (bH,bI,bJ,bK) = valueOrElse(br(toString(az.caller)), valueOrElse(bq(), {
922+ let dL = by(az.caller)
923+ let bz = dL._1
924+ let bA = dL._2
925+ let bo = dL._3
926+ let bp = dL._4
927+ let dM = if (if ((bo == ae))
914928 then true
915- else (bl == ac))
916- then invoke(ax.caller, "claimNetrinoRewards", nil, nil)
929+ else (bp == ae))
930+ then invoke(az.caller, "claimNetrinoRewards", nil, nil)
917931 else 0
918- if ((dG == dG))
932+ if ((dM == dM))
919933 then {
920- let dH = bq(ax.caller, bk, bl)
921- let bi = dH._1
922- let bj = dH._2
923- let bg = dH._3
924- let bh = dH._4
925- let dI = (bg - bi)
926- let dJ = (bh - bj)
927- if ((size(bD) != 0))
934+ let dN = bu(az.caller, bo, bp)
935+ let bm = dN._1
936+ let bn = dN._2
937+ let bk = dN._3
938+ let bl = dN._4
939+ let dO = (bk - bm)
940+ let dP = (bl - bn)
941+ if ((size(bI) != 0))
928942 then throw("Wrong args size")
929- else if ((Y != ax.originCaller))
943+ else if ((Z != az.originCaller))
930944 then throw("Only the wallet can call this function")
931- else if (if ((0 > dI))
945+ else if (if ((0 > dO))
932946 then true
933- else (0 > dJ))
934- then aE("Enroll amount negative")
935- else if (if ((dI == 0))
936- then (dJ == 0)
947+ else (0 > dP))
948+ then aG("Enroll amount negative")
949+ else if (if ((dO == 0))
950+ then (dP == 0)
937951 else false)
938952 then throw("No money to take")
939953 else {
940- let ce = if (if (contains(ae, bv))
941- then (dI > 0)
954+ let cj = if (if (contains(ag, bz))
955+ then (dO > 0)
942956 else false)
943- then invoke(ax.caller, "stakeUnstake", [true, dI, bv], nil)
957+ then invoke(az.caller, "stakeUnstake", [true, dO, bz], nil)
944958 else 0
945- if ((ce == ce))
959+ if ((cj == cj))
946960 then {
947- let cf = if (if (contains(ae, bw))
948- then (dJ > 0)
961+ let ck = if (if (contains(ag, bA))
962+ then (dP > 0)
949963 else false)
950- then invoke(ax.caller, "stakeUnstake", [true, dJ, bw], nil)
964+ then invoke(az.caller, "stakeUnstake", [true, dP, bA], nil)
951965 else 0
952- if ((cf == cf))
953- then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bi + dI)), IntegerEntry(h, (bj + dJ))], nil))
966+ if ((ck == ck))
967+ then $Tuple2(nil, $Tuple2([IntegerEntry(g, (bm + dO)), IntegerEntry(h, (bn + dP))], nil))
954968 else throw("Strict value is not equal to itself.")
955969 }
956970 else throw("Strict value is not equal to itself.")
957971 }
958972 }
959973 else throw("Strict value is not equal to itself.")
960974 }))
961975
962976
963-@Verifier(dK)
964-func dL () = {
965- let dM = {
966- let dN = if (sigVerify(dK.bodyBytes, dK.proofs[0], U))
977+@Verifier(dQ)
978+func dR () = {
979+ let dS = {
980+ let dT = if (sigVerify(dQ.bodyBytes, dQ.proofs[0], V))
967981 then 1
968982 else 0
969- let dO = if (sigVerify(dK.bodyBytes, dK.proofs[1], V))
983+ let dU = if (sigVerify(dQ.bodyBytes, dQ.proofs[1], W))
970984 then 1
971985 else 0
972- let dP = if (sigVerify(dK.bodyBytes, dK.proofs[2], W))
986+ let dV = if (sigVerify(dQ.bodyBytes, dQ.proofs[2], X))
973987 then 1
974988 else 0
975- (((dN + dO) + dP) >= 2)
989+ (((dT + dU) + dV) >= 2)
976990 }
977- dM
991+ dS
978992 }
979993

github/deemru/w8io/c3f4982 
359.17 ms