tx · 8GSPM6h6gqDSXK5jUruTiL5fLqUZokWPnwrvT4MsJYxQ

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02900000 Waves

2022.07.27 16:12 [2158264] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "8GSPM6h6gqDSXK5jUruTiL5fLqUZokWPnwrvT4MsJYxQ", "fee": 2900000, "feeAssetId": null, "timestamp": 1658927611357, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "3dJcKS7qWQT9DmqTxxwYTcovE9N1TTkXNwWMhnGGF71vAE2DW7nYAAXPPkpNB6U4WDjDdoQJQFPP2UJy36mMaQox" ], "script": "base64:BgJACAISCAoGCAgBAQEIEgUKAwEIAhIDCgEBEgMKAQESBAoCCAgSBAoCCAgSAwoBCBIDCgEIEgQKAggBEgMKAQgSAGsAA1NFUAICX18ABlNDQUxFOAAIAAVNVUxUOACAwtcvAA5QT09MV0VJR0hUTVVMVAUFTVVMVDgBBHN0cmYCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEDaW96AgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEDaW9kAwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEDaW9mAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBA2FicwEDdmFsAwkAZgIAAAUDdmFsCQEBLQEFA3ZhbAUDdmFsAQNhYWwBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55THlzdAUHJG1hdGNoMAUKdmFsQW55THlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQECYWkBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAB5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwAAFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFA1NFUAAacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQCBnd4bG9jawATcmVmZXJyYWxQcm9ncmFtTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRZrZXlSZWZlcnJhbFByb2dyYW1OYW1lBRpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdAERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAIABpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcAAJABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAKABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAsBDWtleUZhY3RvcnlDZmcAAhElc19fZmFjdG9yeUNvbmZpZwEaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARBrZXlGYWN0b3J5THBMaXN0AAIQJXNfX2xwVG9rZW5zTGlzdAEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBCmxwQXNzZXRTdHIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUKbHBBc3NldFN0cgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUDU0VQARRrZXlGYWN0b3J5UG9vbFdlaWdodAEPY29udHJhY3RBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFD2NvbnRyYWN0QWRkcmVzcwUDbmlsBQNTRVABG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeQILcG9vbEFkZHJlc3MDbnVtCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FC3Bvb2xBZGRyZXNzAgJfXwkApAMBBQNudW0BGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAEKcmVhZExwTGlzdAAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCCQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEGtleUZhY3RvcnlMcExpc3QAAgAFA1NFUAEUcmVhZEZhY3RvcnlDZmdPckZhaWwBB2ZhY3RvcnkJALUJAgkBBHN0cmYCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBCmZhY3RvcnlDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUKZmFjdG9yeUNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50ARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uARNrZXlFbWlzc2lvbkVuZEJsb2NrAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQ1rZXlOZXh0UGVyaW9kAAIOJXNfX25leHRQZXJpb2QBH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AA1JZHhDZmdBc3NldElkAAEAE0lkeENmZ01pbkxvY2tBbW91bnQAAgAVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uAAMAFUlkeENmZ01heExvY2tEdXJhdGlvbgAEABJJZHhDZmdNYXRoQ29udHJhY3QABQEJa2V5Q29uZmlnAAIKJXNfX2NvbmZpZwEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAkAtQkCCQEEc3RyZgIFBHRoaXMJAQlrZXlDb25maWcABQNTRVABDWZvcm1hdENvbmZpZ1MFB2Fzc2V0SWQNbWluTG9ja0Ftb3VudA9taW5Mb2NrRHVyYXRpb24PbWF4TG9ja0R1cmF0aW9uDG1hdGhDb250cmFjdAkAuQkCCQDMCAICCCVzJWQlZCVkCQDMCAIFB2Fzc2V0SWQJAMwIAgUNbWluTG9ja0Ftb3VudAkAzAgCBQ9taW5Mb2NrRHVyYXRpb24JAMwIAgUPbWF4TG9ja0R1cmF0aW9uCQDMCAIFDG1hdGhDb250cmFjdAUDbmlsBQNTRVABDGZvcm1hdENvbmZpZwUHYXNzZXRJZA1taW5Mb2NrQW1vdW50D21pbkxvY2tEdXJhdGlvbg9tYXhMb2NrRHVyYXRpb24MbWF0aENvbnRyYWN0CQENZm9ybWF0Q29uZmlnUwUFB2Fzc2V0SWQJAKQDAQUNbWluTG9ja0Ftb3VudAkApAMBBQ9taW5Mb2NrRHVyYXRpb24JAKQDAQUPbWF4TG9ja0R1cmF0aW9uBQxtYXRoQ29udHJhY3QBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkEAnBkCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yAA5JZHhMb2NrVXNlck51bQABAA1JZHhMb2NrQW1vdW50AAIADElkeExvY2tTdGFydAADAA9JZHhMb2NrRHVyYXRpb24ABAANSWR4TG9ja1BhcmFtSwAFAA1JZHhMb2NrUGFyYW1CAAYBE2tleUxvY2tQYXJhbXNSZWNvcmQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIKJXMlc19fbG9jawkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsAQt1c2VyQWRkcmVzcwkAtQkCCQEEc3RyZgIFBHRoaXMJARNrZXlMb2NrUGFyYW1zUmVjb3JkAQULdXNlckFkZHJlc3MFA1NFUAEXZm9ybWF0TG9ja1BhcmFtc1JlY29yZFMIB3VzZXJOdW0GYW1vdW50BXN0YXJ0CGR1cmF0aW9uBnBhcmFtSwZwYXJhbUIQbGFzdFVwZFRpbWVzdGFtcAlnd3hBbW91bnQJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIFB3VzZXJOdW0JAMwIAgUGYW1vdW50CQDMCAIFBXN0YXJ0CQDMCAIFCGR1cmF0aW9uCQDMCAIFBnBhcmFtSwkAzAgCBQZwYXJhbUIJAMwIAgUQbGFzdFVwZFRpbWVzdGFtcAkAzAgCBQlnd3hBbW91bnQFA25pbAUDU0VQARZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkBwd1c2VyTnVtBmFtb3VudAVzdGFydAhkdXJhdGlvbgZwYXJhbUsGcGFyYW1CCWd3eEFtb3VudAkBF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTCAUHdXNlck51bQkApAMBBQZhbW91bnQJAKQDAQUFc3RhcnQJAKQDAQUIZHVyYXRpb24JAKQDAQUGcGFyYW1LCQCkAwEFBnBhcmFtQgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkApAMBBQlnd3hBbW91bnQBDmtleU5leHRVc2VyTnVtAAIPJXNfX25leHRVc2VyTnVtARJrZXlVc2VyMk51bU1hcHBpbmcBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABEmtleU51bTJVc2VyTWFwcGluZwEDbnVtCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQNudW0FA25pbAUDU0VQARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICBmFtb3VudAUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIFc3RhcnQFA25pbAUDU0VQARRrZXlMb2NrUGFyYW1EdXJhdGlvbgEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAghkdXJhdGlvbgUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUsBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBawUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUIBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgUDbmlsBQNTRVABFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwIHdXNlck51bQZwZXJpb2QJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQd1c2VyTnVtCQDMCAICAWsJAMwIAgUGcGVyaW9kBQNuaWwFA1NFUAEVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAgd1c2VyTnVtBnBlcmlvZAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgkAzAgCBQZwZXJpb2QFA25pbAUDU0VQARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAEga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MAAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzARJrZXlTdGF0c0xvY2tzQ291bnQAAhclcyVzX19zdGF0c19fbG9ja3NDb3VudAESa2V5U3RhdHNVc2Vyc0NvdW50AAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQd1c2VyTnVtCQC5CQIJAMwIAgIeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQASJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAgd1c2VyTnVtCWxwQXNzZXRJZAkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQd1c2VyTnVtCQDMCAIFCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAQd1c2VyTnVtCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAEha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAQd1c2VyTnVtCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARNrZXlVc2VyQm9vc3RDbGFpbWVkAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAERa2V5VG90YWxDYWNoZWRHd3gAAhYlcyVzX19nd3hDYWNoZWRfX3RvdGFsAA9mYWN0b3J5Q29udHJhY3QJARhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAApmYWN0b3J5Q2ZnCQEUcmVhZEZhY3RvcnlDZmdPckZhaWwBBQ9mYWN0b3J5Q29udHJhY3QAEGVtaXNzaW9uQ29udHJhY3QJARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAA9zdGFraW5nQ29udHJhY3QJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcAEWd3eFJld2FyZENvbnRyYWN0CQEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcBDEhpc3RvcnlFbnRyeQgEdHlwZQR1c2VyBmFtb3VudAlsb2NrU3RhcnQIZHVyYXRpb24BawFiAWkECmhpc3RvcnlLRVkJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIFBHVzZXIJAMwIAgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFA1NFUAQLaGlzdG9yeURBVEEJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQZhbW91bnQJAMwIAgkApAMBBQlsb2NrU3RhcnQJAMwIAgkApAMBBQhkdXJhdGlvbgkAzAgCCQCkAwEFAWsJAMwIAgkApAMBBQFiBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgUKaGlzdG9yeUtFWQULaGlzdG9yeURBVEEBClN0YXRzRW50cnkEDnRvdGFsTG9ja2VkSW5jC2R1cmF0aW9uSW5jDGxvY2tDb3VudEluYw11c2Vyc0NvdW50SW5jBBtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkJASBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwAEDWxvY2tzQ291bnRLRVkJARJrZXlTdGF0c0xvY2tzQ291bnQABA11c2Vyc0NvdW50S0VZCQESa2V5U3RhdHNVc2Vyc0NvdW50AAQOdG90YWxBbW91bnRLRVkJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAEGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkBA2lvegIFBHRoaXMFG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWQQKbG9ja3NDb3VudAkBA2lvegIFBHRoaXMFDWxvY2tzQ291bnRLRVkECnVzZXJzQ291bnQJAQNpb3oCBQR0aGlzBQ11c2Vyc0NvdW50S0VZBAt0b3RhbEFtb3VudAkBA2lvegIFBHRoaXMFDnRvdGFsQW1vdW50S0VZCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkJAGQCBRhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MFC2R1cmF0aW9uSW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1sb2Nrc0NvdW50S0VZCQBkAgUKbG9ja3NDb3VudAUMbG9ja0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ11c2Vyc0NvdW50S0VZCQBkAgUKdXNlcnNDb3VudAUNdXNlcnNDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUOdG90YWxBbW91bnRLRVkJAGQCBQt0b3RhbEFtb3VudAUOdG90YWxMb2NrZWRJbmMFA25pbAENY2FsY0d3eEFtb3VudAMEa1JhdwRiUmF3AWgEBVNDQUxFAOgHCQBpAgkAZAIJAGgCBQRrUmF3BQFoBQRiUmF3BQVTQ0FMRQEPTG9ja1BhcmFtc0VudHJ5CAt1c2VyQWRkcmVzcwd1c2VyTnVtBmFtb3VudAVzdGFydAhkdXJhdGlvbgFrAWIGcGVyaW9kBA11c2VyQW1vdW50S0VZCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFB3VzZXJOdW0EDXN0YXJ0QmxvY2tLRVkJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQUHdXNlck51bQQLZHVyYXRpb25LRVkJARRrZXlMb2NrUGFyYW1EdXJhdGlvbgEFB3VzZXJOdW0EBGtLRVkJAQ1rZXlMb2NrUGFyYW1LAQUHdXNlck51bQQEYktFWQkBDWtleUxvY2tQYXJhbUIBBQd1c2VyTnVtBAxrQnlQZXJpb2RLRVkJARVrZXlMb2NrUGFyYW1CeVBlcmlvZEsCBQd1c2VyTnVtBQZwZXJpb2QEDGJCeVBlcmlvZEtFWQkBFWtleUxvY2tQYXJhbUJ5UGVyaW9kQgIFB3VzZXJOdW0FBnBlcmlvZAQJZ3d4QW1vdW50CQENY2FsY0d3eEFtb3VudAMFAWsFAWIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdXNlckFtb3VudEtFWQUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1zdGFydEJsb2NrS0VZBQVzdGFydAkAzAgCCQEMSW50ZWdlckVudHJ5AgULZHVyYXRpb25LRVkFCGR1cmF0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRrS0VZBQFrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQRiS0VZBQFiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrQnlQZXJpb2RLRVkFAWsJAMwIAgkBDEludGVnZXJFbnRyeQIFDGJCeVBlcmlvZEtFWQUBYgkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TG9ja1BhcmFtc1JlY29yZAEFC3VzZXJBZGRyZXNzCQEWZm9ybWF0TG9ja1BhcmFtc1JlY29yZAcFB3VzZXJOdW0FBmFtb3VudAUFc3RhcnQFCGR1cmF0aW9uBQFrBQFiBQlnd3hBbW91bnQFA25pbAEiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbAIBaQ9leHBlY3RlZEFzc2V0SWQDCQBmAgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIbb25seSBvbmUgcGF5bWVudCBpcyBhbGxvd2VkAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAAABANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUPZXhwZWN0ZWRBc3NldElkCQACAQIbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUDcG10BmFtb3VudAEZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodAILdXNlckFkZHJlc3MMdGFyZ2V0SGVpZ2h0BAVFTVBUWQIFZW1wdHkEEnVzZXIyTnVtTWFwcGluZ0tFWQkBEmtleVVzZXIyTnVtTWFwcGluZwEFC3VzZXJBZGRyZXNzBAd1c2VyTnVtCQELdmFsdWVPckVsc2UCCQCiCAEFEnVzZXIyTnVtTWFwcGluZ0tFWQUFRU1QVFkEAWsJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDWtleUxvY2tQYXJhbUsBBQd1c2VyTnVtAAAEAWIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDWtleUxvY2tQYXJhbUIBBQd1c2VyTnVtAAAEDWd3eEFtb3VudENhbGMJAQ1jYWxjR3d4QW1vdW50AwUBawUBYgUMdGFyZ2V0SGVpZ2h0BAlnd3hBbW91bnQDCQBmAgAABQ1nd3hBbW91bnRDYWxjAAAFDWd3eEFtb3VudENhbGMFCWd3eEFtb3VudAEUY2FsY0N1cnJlbnRHd3hBbW91bnQBC3VzZXJBZGRyZXNzCQEZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodAIFC3VzZXJBZGRyZXNzBQZoZWlnaHQBFGludGVybmFsQ2xhaW1XeEJvb3N0AwxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIIcmVhZE9ubHkEBUVNUFRZAgVFTVBUWQQRdXNlclJlY29yZE9yRW1wdHkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBE2tleUxvY2tQYXJhbXNSZWNvcmQBBQ51c2VyQWRkcmVzc1N0cgUFRU1QVFkDCQAAAgURdXNlclJlY29yZE9yRW1wdHkFBUVNUFRZCQCVCgMAAAUDbmlsAhV1c2VyUmVjb3JkOjppczo6ZW1wdHkED3VzZXJSZWNvcmRBcnJheQkAtQkCBRF1c2VyUmVjb3JkT3JFbXB0eQUDU0VQBAp1c2VyTnVtU3RyCQCRAwIFD3VzZXJSZWNvcmRBcnJheQUOSWR4TG9ja1VzZXJOdW0EHGd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgURZ3d4UmV3YXJkQ29udHJhY3QJAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAAABAhFTVBUWVNUUgIFZW1wdHkEDSR0MDEzODcwMTQ0MzgDCQECIT0CBQxscEFzc2V0SWRTdHIFCEVNUFRZU1RSBA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBANwdzEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD2ZhY3RvcnlDb250cmFjdAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIEA3B3MAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9mYWN0b3J5Q29udHJhY3QJARtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkCBQ5wb29sQWRkcmVzc1N0cgAABQNwdzEJAJQKAgUDcHcwBQNwdzEDBQhyZWFkT25seQkAlAoCAAAAAAkAAgEJAKwCAgIobm90IHJlYWRvbmx5IG1vZGU6IHVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBAtwb29sV2VpZ2h0MAgFDSR0MDEzODcwMTQ0MzgCXzEEC3Bvb2xXZWlnaHQxCAUNJHQwMTM4NzAxNDQzOAJfMgQSd3hFbWlzc2lvblBlckJsb2NrCQEDaW9mAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEDWVtaXNzaW9uU3RhcnQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAQLZW1pc3Npb25FbmQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQETa2V5RW1pc3Npb25FbmRCbG9jawAEAWgDCQBmAgUGaGVpZ2h0BQtlbWlzc2lvbkVuZAULZW1pc3Npb25FbmQFBmhlaWdodAQCZGgJAJYDAQkAzAgCCQBlAgUBaAUNZW1pc3Npb25TdGFydAkAzAgCAAAFA25pbAQidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwCBQp1c2VyTnVtU3RyBQxscEFzc2V0SWRTdHIEIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZCQEga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwBBQp1c2VyTnVtU3RyBB11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBSJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZCQEDaW96AgUEdGhpcwUgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkEFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAaQIJAGgCCQBoAgUSd3hFbWlzc2lvblBlckJsb2NrBQJkaAACAAMEGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwJAGUCBRVib29zdEVtaXNzaW9uSW50ZWdyYWwFHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsBAN1ZGgJAGsDBRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsAAMJAGgCAAIFEnd4RW1pc3Npb25QZXJCbG9jawQGdUxhc3RICQBlAgUBaAUDdWRoBAR1ZGgwCQCWAwEJAMwIAgkAZQIFHGd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQFBnVMYXN0SAkAzAgCAAAFA25pbAQEdWRoMQkAZQIJAGUCBQFoBQZ1TGFzdEgFBHVkaDADAwMJAGYCAAAFBnVMYXN0SAYJAGYCAAAFBHVkaDEGCQBnAgkBA2FicwEJAGUCCQBkAgUEdWRoMAUEdWRoMQUDdWRoAAEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFmludmFsaWQgdWRoIGNhbGM6IHVkaD0JAKQDAQUDdWRoAgggdUxhc3RIPQkApAMBBQZ1TGFzdEgCBiB1ZGgwPQkApAMBBQR1ZGgwAgYgdWRoMT0JAKQDAQUEdWRoMQMJAGYCAAAFGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEF3VzZXJNYXhCb29zdEludGVncmFsS0VZCQEXa2V5VXNlck1heEJvb3N0SU5URUdSQUwBBQp1c2VyTnVtU3RyBBh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkJARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwABA91c2VyTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQQQdG90YWxNYXhCb29zdEludAkBA2lvegIFBHRoaXMFGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQQRdG90YWxDYWNoZWRHd3hLRVkJARFrZXlUb3RhbENhY2hlZEd3eAAEDnRvdGFsQ2FjaGVkR3d4CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEXRvdGFsQ2FjaGVkR3d4S0VZAAAEC3VzZXJDdXJyR3d4CQEUY2FsY0N1cnJlbnRHd3hBbW91bnQBBQ51c2VyQWRkcmVzc1N0cgQhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZCQEha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAQUKdXNlck51bVN0cgQedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQEDaW96AgUEdGhpcwUhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBBp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMAMJAAACBQN1ZGgAAAAACQBrAwUZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAUEdWRoMAUDdWRoBBp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMQMJAAACBQN1ZGgAAAAACQBrAwUZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAUEdWRoMQUDdWRoBB5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAJAGsDBRp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMAULcG9vbFdlaWdodDAFDlBPT0xXRUlHSFRNVUxUBB5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDEJAGsDBRp1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsMQULcG9vbFdlaWdodDEFDlBPT0xXRUlHSFRNVUxUBCJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcwAwkAAAIFDnRvdGFsQ2FjaGVkR3d4AAAAAAkAawMFHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMAULdXNlckN1cnJHd3gFDnRvdGFsQ2FjaGVkR3d4BCJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcxAwkAAAIFDnRvdGFsQ2FjaGVkR3d4AAAAAAkAawMFHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMQULdXNlckN1cnJHd3gFDnRvdGFsQ2FjaGVkR3d4BCF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAGQCBSJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcwBSJ1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcxBBN1c2VyQm9vc3RDbGFpbWVkS0VZCQETa2V5VXNlckJvb3N0Q2xhaW1lZAEFCnVzZXJOdW1TdHIEEHVzZXJCb29zdENsYWltZWQJAQNpb3oCBQR0aGlzBRN1c2VyQm9vc3RDbGFpbWVkS0VZBBJ1c2VyQm9vc3RBdmFpbGFibGUJAGUCBSF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcFEHVzZXJCb29zdENsYWltZWQECWRhdGFTdGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQUVYm9vc3RFbWlzc2lvbkludGVncmFsBQNuaWwEBWRlYnVnCQC5CQIJAMwIAgkApAMBBR11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbAkAzAgCCQCkAwEFGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwJAMwIAgkApAMBBRB1c2VyQm9vc3RDbGFpbWVkCQDMCAIJAKQDAQUSdXNlckJvb3N0QXZhaWxhYmxlCQDMCAIJAKQDAQULcG9vbFdlaWdodDAJAMwIAgkApAMBBQtwb29sV2VpZ2h0MQkAzAgCCQCkAwEFAWgJAMwIAgkApAMBBQN1ZGgJAMwIAgkApAMBBQZ1TGFzdEgJAMwIAgkApAMBBQR1ZGgwCQDMCAIJAKQDAQUEdWRoMQkAzAgCCQCkAwEFC3VzZXJDdXJyR3d4CQDMCAIJAKQDAQUOdG90YWxDYWNoZWRHd3gFA25pbAIBOgkAlQoDBSF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcFCWRhdGFTdGF0ZQUFZGVidWcBC2xvY2tBY3Rpb25zAgFpCGR1cmF0aW9uBAhjZmdBcnJheQkBFXJlYWRDb25maWdBcnJheU9yRmFpbAAECmFzc2V0SWRTdHIJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQNbWluTG9ja0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGNmZ0FycmF5BRNJZHhDZmdNaW5Mb2NrQW1vdW50BA9taW5Mb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uBA9tYXhMb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uBAxtYXRoQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUIY2ZnQXJyYXkFEklkeENmZ01hdGhDb250cmFjdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAlwbXRBbW91bnQIBQNwbXQGYW1vdW50AwkBAiE9AgUHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkCQACAQkArAICCQCsAgICHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUKYXNzZXRJZFN0cgIMIGlzIGV4cGVjdGVkBA5uZXh0VXNlck51bUtFWQkBDmtleU5leHRVc2VyTnVtAAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBA51c2VySXNFeGlzdGluZwkBCWlzRGVmaW5lZAEJAKIIAQkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzU3RyBAp1c2VyTnVtU3RyAwUOdXNlcklzRXhpc3RpbmcJAQV2YWx1ZQEJAKIIAQkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzU3RyCQCkAwEJAQNpb2YCBQR0aGlzBQ5uZXh0VXNlck51bUtFWQQHdXNlck51bQkBDXBhcnNlSW50VmFsdWUBBQp1c2VyTnVtU3RyBAlsb2NrU3RhcnQFBmhlaWdodAQNc3RhcnRCbG9ja0tFWQkBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBBQp1c2VyTnVtU3RyBAtkdXJhdGlvbktFWQkBFGtleUxvY2tQYXJhbUR1cmF0aW9uAQUKdXNlck51bVN0cgQNdXNlckFtb3VudEtFWQkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQp1c2VyTnVtU3RyAwkAZgIFDW1pbkxvY2tBbW91bnQFCXBtdEFtb3VudAkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQ1taW5Mb2NrQW1vdW50AwkAZgIFD21pbkxvY2tEdXJhdGlvbgUIZHVyYXRpb24JAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQ9taW5Mb2NrRHVyYXRpb24DCQBmAgUIZHVyYXRpb24FD21heExvY2tEdXJhdGlvbgkAAgEJAKwCAgIwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFD21heExvY2tEdXJhdGlvbgMDBQ51c2VySXNFeGlzdGluZwkAZwIJAGQCCQEDaW9mAgUEdGhpcwUNc3RhcnRCbG9ja0tFWQkBA2lvZgIFBHRoaXMFC2R1cmF0aW9uS0VZBQlsb2NrU3RhcnQHCQACAQI2dGhlcmUgaXMgYW4gYWN0aXZlIGxvY2sgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrAwkAZgIJAQNpb3oCBQR0aGlzBQ11c2VyQW1vdW50S0VZAAAJAAIBCQCsAgICNHRoZXJlIGFyZSBsb2NrZWQgV1hzIC0gY29uc2lkZXIgdG8gdXNlIGluY3JlYXNlTG9jayAFDXVzZXJBbW91bnRLRVkEB2NvZWZmWDgJAGsDBQhkdXJhdGlvbgUFTVVMVDgFD21heExvY2tEdXJhdGlvbgQOZ1d4QW1vdW50U3RhcnQJAGsDBQlwbXRBbW91bnQFB2NvZWZmWDgFBU1VTFQ4BBNnV3hQYXJhbXNSZXN1bHRMaXN0CQEDYWFsAQkA/AcEBQxtYXRoQ29udHJhY3QCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQ5nV3hBbW91bnRTdGFydAkAzAgCBQlsb2NrU3RhcnQJAMwIAgUIZHVyYXRpb24FA25pbAUDbmlsBAFrCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAAQBYgkBAmFpAQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAEEBnBlcmlvZAkApAMBCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAgQSd3hFbWlzc2lvblBlckJsb2NrCQEDaW9mAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEDWVtaXNzaW9uU3RhcnQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAQLZW1pc3Npb25FbmQJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQETa2V5RW1pc3Npb25FbmRCbG9jawAEAWgDCQBmAgUGaGVpZ2h0BQtlbWlzc2lvbkVuZAULZW1pc3Npb25FbmQFBmhlaWdodAQCZGgJAJYDAQkAzAgCCQBlAgUBaAUNZW1pc3Npb25TdGFydAkAzAgCAAAFA25pbAQgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkJASBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAEFCnVzZXJOdW1TdHIEFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAaQIJAGgCCQBoAgUSd3hFbWlzc2lvblBlckJsb2NrBQJkaAACAAMEF3VzZXJNYXhCb29zdEludGVncmFsS0VZCQEXa2V5VXNlck1heEJvb3N0SU5URUdSQUwBBQp1c2VyTnVtU3RyBBh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkJARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwABA91c2VyTWF4Qm9vc3RJbnQJAGkCCQBoAgUOZ1d4QW1vdW50U3RhcnQFCGR1cmF0aW9uAAIEEHRvdGFsTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEEXRvdGFsQ2FjaGVkR3d4S0VZCQERa2V5VG90YWxDYWNoZWRHd3gABA50b3RhbENhY2hlZEd3eAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRF0b3RhbENhY2hlZEd3eEtFWQAABANhcnIDBQ51c2VySXNFeGlzdGluZwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5uZXh0VXNlck51bUtFWQkAZAIFB3VzZXJOdW0AAQkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5VXNlcjJOdW1NYXBwaW5nAQUOdXNlckFkZHJlc3NTdHIFCnVzZXJOdW1TdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleU51bTJVc2VyTWFwcGluZwEFCnVzZXJOdW1TdHIFDnVzZXJBZGRyZXNzU3RyBQNuaWwJAM4IAgkAzQgCCQDOCAIJAM4IAgUDYXJyCQEPTG9ja1BhcmFtc0VudHJ5CAUOdXNlckFkZHJlc3NTdHIFCnVzZXJOdW1TdHIFCXBtdEFtb3VudAUJbG9ja1N0YXJ0BQhkdXJhdGlvbgUBawUBYgUGcGVyaW9kCQEKU3RhdHNFbnRyeQQFCXBtdEFtb3VudAUIZHVyYXRpb24AAQMFDnVzZXJJc0V4aXN0aW5nAAAAAQkBDEhpc3RvcnlFbnRyeQgCBGxvY2sFDnVzZXJBZGRyZXNzU3RyBQlwbXRBbW91bnQFCWxvY2tTdGFydAUIZHVyYXRpb24FAWsFAWIFAWkJAMwIAgkBDEludGVnZXJFbnRyeQIFIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZBRVib29zdEVtaXNzaW9uSW50ZWdyYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEXRvdGFsQ2FjaGVkR3d4S0VZCQBkAgUOdG90YWxDYWNoZWRHd3gFDmdXeEFtb3VudFN0YXJ0BQNuaWwLAWkBC2NvbnN0cnVjdG9yBhFmYWN0b3J5QWRkcmVzc1N0cg5sb2NrQXNzZXRJZFN0cg1taW5Mb2NrQW1vdW50C21pbkR1cmF0aW9uC21heER1cmF0aW9uDG1hdGhDb250cmFjdAQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlOZXh0VXNlck51bQAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5Q29uZmlnAAkBDGZvcm1hdENvbmZpZwUFDmxvY2tBc3NldElkU3RyBQ1taW5Mb2NrQW1vdW50BQttaW5EdXJhdGlvbgULbWF4RHVyYXRpb24FDG1hdGhDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5RmFjdG9yeUFkZHJlc3MABRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsCQEKU3RhdHNFbnRyeQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdsb2NrUmVmAwhkdXJhdGlvbg9yZWZlcnJlckFkZHJlc3MJc2lnbmF0dXJlBBFsb2NrQWN0aW9uc1Jlc3VsdAkBC2xvY2tBY3Rpb25zAgUBaQUIZHVyYXRpb24ED3JlZmVycmFsQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBnJlZkludgMDCQAAAgUPcmVmZXJyZXJBZGRyZXNzAgAGCQAAAgUJc2lnbmF0dXJlAQAFBHVuaXQJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgpjcmVhdGVQYWlyCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyZXJBZGRyZXNzCQDMCAIFD3JlZmVycmFsQWRkcmVzcwkAzAgCBQlzaWduYXR1cmUFA25pbAUDbmlsAwkAAAIFBnJlZkludgUGcmVmSW52CQCUCgIFEWxvY2tBY3Rpb25zUmVzdWx0BQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBGxvY2sBCGR1cmF0aW9uCQELbG9ja0FjdGlvbnMCBQFpBQhkdXJhdGlvbgFpAQxpbmNyZWFzZUxvY2sBDWRlbHRhRHVyYXRpb24ECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAQKYXNzZXRJZFN0cgkAkQMCBQhjZmdBcnJheQUNSWR4Q2ZnQXNzZXRJZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBA9taW5Mb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uBA9tYXhMb2NrRHVyYXRpb24JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhjZmdBcnJheQUVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uBAxtYXRoQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUIY2ZnQXJyYXkFEklkeENmZ01hdGhDb250cmFjdAQJcG10QW1vdW50CQEiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbAIFAWkFB2Fzc2V0SWQEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQPdXNlclJlY29yZEFycmF5CQEacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwBBQ51c2VyQWRkcmVzc1N0cgQKdXNlck51bVN0cgkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDklkeExvY2tVc2VyTnVtBAp1c2VyQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ1JZHhMb2NrQW1vdW50BAlsb2NrU3RhcnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDElkeExvY2tTdGFydAQMbG9ja0R1cmF0aW9uCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ9JZHhMb2NrRHVyYXRpb24EB2xvY2tFbmQJAGQCBQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgQRcmVtYWluaW5nRHVyYXRpb24JAJYDAQkAzAgCCQBlAgUHbG9ja0VuZAUGaGVpZ2h0CQDMCAIAAAUDbmlsBA11c2VyQW1vdW50TmV3CQBkAgUKdXNlckFtb3VudAUJcG10QW1vdW50BA9sb2NrRHVyYXRpb25OZXcJAGQCBRFyZW1haW5pbmdEdXJhdGlvbgUNZGVsdGFEdXJhdGlvbgMJAGYCAAAFDWRlbHRhRHVyYXRpb24JAAIBAhpkdXJhdGlvbiBpcyBsZXNzIHRoZW4gemVybwMJAGYCBQ9taW5Mb2NrRHVyYXRpb24FD2xvY2tEdXJhdGlvbk5ldwkAAgEJAKwCAgItbG9ja0R1cmF0aW9uTmV3IGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFD21pbkxvY2tEdXJhdGlvbgMJAGYCBQ9sb2NrRHVyYXRpb25OZXcFD21heExvY2tEdXJhdGlvbgkAAgEJAKwCAgJEZGVsdGFEdXJhdGlvbiArIGV4aXN0ZWRMb2NrRHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUPbWF4TG9ja0R1cmF0aW9uBAdjb2VmZlg4CQBrAwUPbG9ja0R1cmF0aW9uTmV3BQVNVUxUOAUPbWF4TG9ja0R1cmF0aW9uBA5nV3hBbW91bnRTdGFydAkAawMFDXVzZXJBbW91bnROZXcFB2NvZWZmWDgFBU1VTFQ4BAxsb2NrU3RhcnROZXcFBmhlaWdodAQTZ1d4UGFyYW1zUmVzdWx0TGlzdAkBA2FhbAEJAPwHBAUMbWF0aENvbnRyYWN0AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUOZ1d4QW1vdW50U3RhcnQJAMwIAgUMbG9ja1N0YXJ0TmV3CQDMCAIFD2xvY2tEdXJhdGlvbk5ldwUDbmlsBQNuaWwEAWsJAQJhaQEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAAABAFiCQECYWkBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAQQGcGVyaW9kCQCkAwEJAQJhaQEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAACBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQNpb2YCBRBlbWlzc2lvbkNvbnRyYWN0CQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQNZW1pc3Npb25TdGFydAkBA2lvZgIFEGVtaXNzaW9uQ29udHJhY3QJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAtlbWlzc2lvbkVuZAkBA2lvZgIFEGVtaXNzaW9uQ29udHJhY3QJARNrZXlFbWlzc2lvbkVuZEJsb2NrAAQBaAMJAGYCBQZoZWlnaHQFC2VtaXNzaW9uRW5kBQtlbWlzc2lvbkVuZAUGaGVpZ2h0BAJkaAkAlgMBCQDMCAIJAGUCBQFoBQ1lbWlzc2lvblN0YXJ0CQDMCAIAAAUDbmlsBCB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQkBIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQUKdXNlck51bVN0cgQddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwJAQNpb3oCBQR0aGlzBSB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWQQVYm9vc3RFbWlzc2lvbkludGVncmFsCQBpAgkAaAIJAGgCBRJ3eEVtaXNzaW9uUGVyQmxvY2sFAmRoAAIAAwQZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbAkAZQIFFWJvb3N0RW1pc3Npb25JbnRlZ3JhbAUddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwDCQBmAgAABRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBBd1c2VyTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAQUKdXNlck51bVN0cgQYdG90YWxNYXhCb29zdEludGVncmFsS0VZCQEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAQPdXNlck1heEJvb3N0SW50CQEDaW96AgUEdGhpcwUXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkEEHRvdGFsTWF4Qm9vc3RJbnQJAQNpb3oCBQR0aGlzBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEC2N1cnJVc2VyR3d4CQEUY2FsY0N1cnJlbnRHd3hBbW91bnQBBQ51c2VyQWRkcmVzc1N0cgQHZ3d4RGlmZgkAZQIFDmdXeEFtb3VudFN0YXJ0BQtjdXJyVXNlckd3eAMJAGYCAAAFB2d3eERpZmYJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQdnd3hEaWZmBBF0b3RhbENhY2hlZEd3eEtFWQkBEWtleVRvdGFsQ2FjaGVkR3d4AAQOdG90YWxDYWNoZWRHd3gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURdG90YWxDYWNoZWRHd3hLRVkAAAQhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZCQEha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAQUKdXNlck51bVN0cgQedXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQEDaW96AgUEdGhpcwUhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZBCF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXcJAGsDBRl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsBQtjdXJyVXNlckd3eAUOdG90YWxDYWNoZWRHd3gEEnVzZXJNYXhCb29zdEludE5ldwkAaQIJAGgCBQ5nV3hBbW91bnRTdGFydAUPbG9ja0R1cmF0aW9uTmV3AAIEGHJlbWFpbmluZ1VzZXJNYXhCb29zdEludAkAaQIJAGgCBQtjdXJyVXNlckd3eAURcmVtYWluaW5nRHVyYXRpb24AAgQTdXNlck1heEJvb3N0SW50RGlmZgkAZQIFEnVzZXJNYXhCb29zdEludE5ldwUYcmVtYWluaW5nVXNlck1heEJvb3N0SW50CQDOCAIJAM0IAgkAzggCCQEPTG9ja1BhcmFtc0VudHJ5CAUOdXNlckFkZHJlc3NTdHIFCnVzZXJOdW1TdHIFDXVzZXJBbW91bnROZXcFDGxvY2tTdGFydE5ldwUPbG9ja0R1cmF0aW9uTmV3BQFrBQFiBQZwZXJpb2QJAQpTdGF0c0VudHJ5BAUJcG10QW1vdW50BQ1kZWx0YUR1cmF0aW9uAAAAAAkBDEhpc3RvcnlFbnRyeQgCBGxvY2sFDnVzZXJBZGRyZXNzU3RyBQlwbXRBbW91bnQFCWxvY2tTdGFydAUPbG9ja0R1cmF0aW9uTmV3BQFrBQFiBQFpCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF0b3RhbENhY2hlZEd3eEtFWQkAZAIFDnRvdGFsQ2FjaGVkR3d4BQdnd3hEaWZmBQNuaWwBaQEMY2xhaW1XeEJvb3N0AgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIDCQECIT0CBQ9zdGFraW5nQ29udHJhY3QIBQFpBmNhbGxlcgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAQNJHQwMjgxNDMyODI0NQkBFGludGVybmFsQ2xhaW1XeEJvb3N0AwUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgcEEnVzZXJCb29zdEF2YWlsYWJsZQgFDSR0MDI4MTQzMjgyNDUCXzEECWRhdGFTdGF0ZQgFDSR0MDI4MTQzMjgyNDUCXzIEBWRlYnVnCAUNJHQwMjgxNDMyODI0NQJfMwkAlAoCBQlkYXRhU3RhdGUJAMwIAgUSdXNlckJvb3N0QXZhaWxhYmxlBQNuaWwBaQEUY2xhaW1XeEJvb3N0UkVBRE9OTFkCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgQNJHQwMjgzNzcyODQ3OAkBFGludGVybmFsQ2xhaW1XeEJvb3N0AwUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgYEEnVzZXJCb29zdEF2YWlsYWJsZQgFDSR0MDI4Mzc3Mjg0NzgCXzEECWRhdGFTdGF0ZQgFDSR0MDI4Mzc3Mjg0NzgCXzIEBWRlYnVnCAUNJHQwMjgzNzcyODQ3OAJfMwkAlAoCBQNuaWwJAMwIAgUSdXNlckJvb3N0QXZhaWxhYmxlCQDMCAIFBWRlYnVnBQNuaWwBaQEGdW5sb2NrAQt1c2VyQWRkcmVzcwQPdXNlclJlY29yZEFycmF5CQEacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwBBQt1c2VyQWRkcmVzcwQKdXNlck51bVN0cgkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDklkeExvY2tVc2VyTnVtBAp1c2VyQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ1JZHhMb2NrQW1vdW50BAlsb2NrU3RhcnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ91c2VyUmVjb3JkQXJyYXkFDElkeExvY2tTdGFydAQMbG9ja0R1cmF0aW9uCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdXNlclJlY29yZEFycmF5BQ9JZHhMb2NrRHVyYXRpb24EB2xvY2tFbmQJAGQCBQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAdhc3NldElkCQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQEDG1hdGhDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQhjZmdBcnJheQUSSWR4Q2ZnTWF0aENvbnRyYWN0AwkAZwIFB2xvY2tFbmQFBmhlaWdodAkAAgEJAKwCAgkArAICAgV3YWl0IAkApAMBBQdsb2NrRW5kAgogdG8gdW5sb2NrAwkAZwIAAAUKdXNlckFtb3VudAkAAgECEW5vdGhpbmcgdG8gdW5sb2NrBAZwZXJpb2QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMbWF0aENvbnRyYWN0CQENa2V5TmV4dFBlcmlvZAAAAAkAzQgCCQDNCAIJAM4IAgkBD0xvY2tQYXJhbXNFbnRyeQgFC3VzZXJBZGRyZXNzBQp1c2VyTnVtU3RyAAAFCWxvY2tTdGFydAUMbG9ja0R1cmF0aW9uAAAAAAkApAMBBQZwZXJpb2QJAQpTdGF0c0VudHJ5BAkBAS0BBQp1c2VyQW1vdW50AAAAAAD///////////8BCQEMSGlzdG9yeUVudHJ5CAIGdW5sb2NrBQt1c2VyQWRkcmVzcwUKdXNlckFtb3VudAUJbG9ja1N0YXJ0BQxsb2NrRHVyYXRpb24AAAAABQFpCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwUKdXNlckFtb3VudAUHYXNzZXRJZAFpARNnd3hVc2VySW5mb1JFQURPTkxZAQt1c2VyQWRkcmVzcwQJZ3d4QW1vdW50CQEUY2FsY0N1cnJlbnRHd3hBbW91bnQBBQt1c2VyQWRkcmVzcwkAlAoCBQNuaWwJAMwIAgUJZ3d4QW1vdW50BQNuaWwBaQEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQJZ3d4QW1vdW50CQEZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodAIFC3VzZXJBZGRyZXNzBQx0YXJnZXRIZWlnaHQJAJQKAgUDbmlsBQlnd3hBbW91bnQBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXlXfZYk", "chainId": 84, "height": 2158264, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 68THTkLDDbGHpz1pgyhY8mirMCL2AvA7EFDeW1RPsUhb Next: G46EbvhUp8mM8ndb5NoenpmVNZw36UaADbnx9KNXSVEz Diff:
OldNewDifferences
463463 }
464464
465465
466-@Callable(aD)
467-func constructor (do,dp,au,dq,dr,ax) = {
468- let ds = aC(aD)
469- if ((ds == ds))
470- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dp, au, dq, dr, ax)), StringEntry(x(), do)] ++ bI(0, 0, 0, 0))
471- else throw("Strict value is not equal to itself.")
472- }
473-
474-
475-
476-@Callable(aD)
477-func lockRef (aT,dt,du) = {
478- let dv = invoke(this, "lock", [aT], aD.payments)
479- if ((dv == dv))
480- then {
481- let dw = toString(aD.caller)
482- let dx = if (if ((dt == ""))
483- then true
484- else (du == base58''))
485- then unit
486- else invoke(t, "createPair", [w, dt, dw, du], nil)
487- if ((dx == dx))
488- then $Tuple2(nil, unit)
489- else throw("Strict value is not equal to itself.")
490- }
491- else throw("Strict value is not equal to itself.")
492- }
493-
494-
495-
496-@Callable(aD)
497-func lock (aT) = {
498- let dy = ar()
499- let dz = dy[al]
500- let at = fromBase58String(dz)
501- let au = parseIntValue(dy[am])
502- let av = parseIntValue(dy[an])
503- let aw = parseIntValue(dy[ao])
504- let ax = addressFromStringValue(dy[ap])
466+func do (aD,aT) = {
467+ let dp = ar()
468+ let dq = dp[al]
469+ let at = fromBase58String(dq)
470+ let au = parseIntValue(dp[am])
471+ let av = parseIntValue(dp[an])
472+ let aw = parseIntValue(dp[ao])
473+ let ax = addressFromStringValue(dp[ap])
505474 if ((size(aD.payments) != 1))
506475 then throw("invalid payment - exact one payment must be attached")
507476 else {
508477 let ck = aD.payments[0]
509- let dA = ck.amount
478+ let dr = ck.amount
510479 if ((at != value(ck.assetId)))
511- then throw((("invalid asset is in payment - " + dz) + " is expected"))
480+ then throw((("invalid asset is in payment - " + dq) + " is expected"))
512481 else {
513- let dB = aZ()
482+ let ds = aZ()
514483 let ct = toString(aD.caller)
515- let dC = isDefined(getString(ba(ct)))
516- let cx = if (dC)
484+ let dt = isDefined(getString(ba(ct)))
485+ let cx = if (dt)
517486 then value(getString(ba(ct)))
518- else toString(k(this, dB))
487+ else toString(k(this, ds))
519488 let aQ = parseIntValue(cx)
520489 let bD = height
521490 let cc = bd(cx)
522491 let cd = be(cx)
523492 let cb = bc(cx)
524- if ((au > dA))
493+ if ((au > dr))
525494 then throw(("amount is less then minLockAmount=" + toString(au)))
526495 else if ((av > aT))
527496 then throw(("passed duration is less then minLockDuration=" + toString(av)))
528497 else if ((aT > aw))
529498 then throw(("passed duration is greater then maxLockDuration=" + toString(aw)))
530- else if (if (dC)
499+ else if (if (dt)
531500 then ((k(this, cc) + k(this, cd)) >= bD)
532501 else false)
533502 then throw("there is an active lock - consider to use increaseLock")
534503 else if ((h(this, cb) > 0))
535504 then throw(("there are locked WXs - consider to use increaseLock " + cb))
536505 else {
537- let dD = fraction(aT, c, aw)
538- let dE = fraction(dA, dD, c)
539- let dF = n(invoke(ax, "calcGwxParamsREADONLY", [dE, bD, aT], nil))
540- let bE = q(dF[0])
541- let bF = q(dF[1])
542- let bi = toString(q(dF[2]))
506+ let du = fraction(aT, c, aw)
507+ let dv = fraction(dr, du, c)
508+ let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509+ let bE = q(dw[0])
510+ let bF = q(dw[1])
511+ let bi = toString(q(dw[2]))
543512 let cG = k(bx, ae())
544513 let cH = k(bx, ag())
545514 let cI = k(bx, ai())
551520 let cN = (((cG * cJ) * 2) / 3)
552521 let cT = br(cx)
553522 let cU = bs()
554- let cV = ((dE * aT) / 2)
523+ let cV = ((dv * aT) / 2)
555524 let cW = h(this, cU)
556525 let cX = bv()
557526 let cY = valueOrElse(getInteger(this, cX), 0)
558- let dG = if (dC)
527+ let dx = if (dt)
559528 then nil
560- else [IntegerEntry(dB, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
561- ((((dG ++ ca(ct, cx, dA, bD, aT, bE, bF, bi)) ++ bI(dA, aT, 1, if (dC)
529+ else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
530+ ((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
562531 then 0
563- else 1)) :+ bA("lock", ct, dA, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dE))])
532+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))])
564533 }
565534 }
566535 }
567536 }
568537
569538
539+@Callable(aD)
540+func constructor (dy,dz,au,dA,dB,ax) = {
541+ let dC = aC(aD)
542+ if ((dC == dC))
543+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, au, dA, dB, ax)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544+ else throw("Strict value is not equal to itself.")
545+ }
546+
547+
570548
571549 @Callable(aD)
572-func increaseLock (dH) = {
573- let dy = ar()
574- let dz = dy[al]
575- let at = fromBase58String(dz)
576- let av = parseIntValue(dy[an])
577- let aw = parseIntValue(dy[ao])
578- let ax = addressFromStringValue(dy[ap])
579- let dA = ci(aD, at)
550+func lockRef (aT,dD,dE) = {
551+ let dF = do(aD, aT)
552+ let dG = toString(aD.caller)
553+ let dH = if (if ((dD == ""))
554+ then true
555+ else (dE == base58''))
556+ then unit
557+ else invoke(t, "createPair", [w, dD, dG, dE], nil)
558+ if ((dH == dH))
559+ then $Tuple2(dF, unit)
560+ else throw("Strict value is not equal to itself.")
561+ }
562+
563+
564+
565+@Callable(aD)
566+func lock (aT) = do(aD, aT)
567+
568+
569+
570+@Callable(aD)
571+func increaseLock (dI) = {
572+ let dp = ar()
573+ let dq = dp[al]
574+ let at = fromBase58String(dq)
575+ let av = parseIntValue(dp[an])
576+ let aw = parseIntValue(dp[ao])
577+ let ax = addressFromStringValue(dp[ap])
578+ let dr = ci(aD, at)
580579 let ct = toString(aD.caller)
581580 let cw = aO(ct)
582581 let cx = cw[aG]
583- let dI = parseIntValue(cw[aH])
582+ let dJ = parseIntValue(cw[aH])
584583 let bD = parseIntValue(cw[aI])
585- let dJ = parseIntValue(cw[aJ])
586- let dK = (bD + dJ)
587- let dL = max([(dK - height), 0])
588- let dM = (dI + dA)
589- let dN = (dL + dH)
590- if ((0 > dH))
584+ let dK = parseIntValue(cw[aJ])
585+ let dL = (bD + dK)
586+ let dM = max([(dL - height), 0])
587+ let dN = (dJ + dr)
588+ let dO = (dM + dI)
589+ if ((0 > dI))
591590 then throw("duration is less then zero")
592- else if ((av > dN))
591+ else if ((av > dO))
593592 then throw(("lockDurationNew is less then minLockDuration=" + toString(av)))
594- else if ((dN > aw))
593+ else if ((dO > aw))
595594 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aw)))
596595 else {
597- let dD = fraction(dN, c, aw)
598- let dE = fraction(dM, dD, c)
599- let dO = height
600- let dF = n(invoke(ax, "calcGwxParamsREADONLY", [dE, dO, dN], nil))
601- let bE = q(dF[0])
602- let bF = q(dF[1])
603- let bi = toString(q(dF[2]))
596+ let du = fraction(dO, c, aw)
597+ let dv = fraction(dN, du, c)
598+ let dP = height
599+ let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, dP, dO], nil))
600+ let bE = q(dw[0])
601+ let bF = q(dw[1])
602+ let bi = toString(q(dw[2]))
604603 let cG = k(bx, ae())
605604 let cH = k(bx, ag())
606605 let cI = k(bx, ai())
619618 let cU = bs()
620619 let cV = h(this, cT)
621620 let cW = h(this, cU)
622- let dP = cq(ct)
623- let dQ = (dE - dP)
624- if ((0 > dQ))
625- then throw(("gwxDiff is less then 0: " + toString(dQ)))
621+ let dQ = cq(ct)
622+ let dR = (dv - dQ)
623+ if ((0 > dR))
624+ then throw(("gwxDiff is less then 0: " + toString(dR)))
626625 else {
627626 let cX = bv()
628627 let cY = valueOrElse(getInteger(this, cX), 0)
629628 let da = bt(cx)
630629 let db = h(this, da)
631- let di = fraction(cO, dP, cY)
632- let dR = ((dE * dN) / 2)
633- let dS = ((dP * dL) / 2)
634- let dT = (dR - dS)
635- (((ca(ct, cx, dM, dO, dN, bE, bF, bi) ++ bI(dA, dH, 0, 0)) :+ bA("lock", ct, dA, bD, dN, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dQ))])
630+ let di = fraction(cO, dQ, cY)
631+ let dS = ((dv * dO) / 2)
632+ let dT = ((dQ * dM) / 2)
633+ let dU = (dS - dT)
634+ (((ca(ct, cx, dN, dP, dO, bE, bF, bi) ++ bI(dr, dI, 0, 0)) :+ bA("lock", ct, dr, bD, dO, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dR))])
636635 }
637636 }
638637 }
644643 func claimWxBoost (cs,ct) = if ((by != aD.caller))
645644 then throw("permissions denied")
646645 else {
647- let dU = cr(cs, ct, false)
648- let dl = dU._1
649- let dm = dU._2
650- let dn = dU._3
646+ let dV = cr(cs, ct, false)
647+ let dl = dV._1
648+ let dm = dV._2
649+ let dn = dV._3
651650 $Tuple2(dm, [dl])
652651 }
653652
655654
656655 @Callable(aD)
657656 func claimWxBoostREADONLY (cs,ct) = {
658- let dV = cr(cs, ct, true)
659- let dl = dV._1
660- let dm = dV._2
661- let dn = dV._3
657+ let dW = cr(cs, ct, true)
658+ let dl = dW._1
659+ let dm = dW._2
660+ let dn = dW._3
662661 $Tuple2(nil, [dl, dn])
663662 }
664663
668667 func unlock (aN) = {
669668 let cw = aO(aN)
670669 let cx = cw[aG]
671- let dI = parseIntValue(cw[aH])
670+ let dJ = parseIntValue(cw[aH])
672671 let bD = parseIntValue(cw[aI])
673- let dJ = parseIntValue(cw[aJ])
674- let dK = (bD + dJ)
675- let dy = ar()
676- let at = fromBase58String(dy[al])
677- let ax = addressFromStringValue(dy[ap])
678- if ((dK >= height))
679- then throw((("wait " + toString(dK)) + " to unlock"))
680- else if ((0 >= dI))
672+ let dK = parseIntValue(cw[aJ])
673+ let dL = (bD + dK)
674+ let dp = ar()
675+ let at = fromBase58String(dp[al])
676+ let ax = addressFromStringValue(dp[ap])
677+ if ((dL >= height))
678+ then throw((("wait " + toString(dL)) + " to unlock"))
679+ else if ((0 >= dJ))
681680 then throw("nothing to unlock")
682681 else {
683682 let bi = valueOrElse(getInteger(ax, aj()), 0)
684- (((ca(aN, cx, 0, bD, dJ, 0, 0, toString(bi)) ++ bI(-(dI), 0, 0, -1)) :+ bA("unlock", aN, dI, bD, dJ, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dI, at))
683+ (((ca(aN, cx, 0, bD, dK, 0, 0, toString(bi)) ++ bI(-(dJ), 0, 0, -1)) :+ bA("unlock", aN, dJ, bD, dK, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dJ, at))
685684 }
686685 }
687686
704703
705704
706705 @Callable(aD)
707-func setManager (dW) = {
708- let ds = aC(aD)
709- if ((ds == ds))
706+func setManager (dX) = {
707+ let dC = aC(aD)
708+ if ((dC == dC))
710709 then {
711- let dX = fromBase58String(dW)
712- if ((dX == dX))
713- then [StringEntry(ad(), dW)]
710+ let dY = fromBase58String(dX)
711+ if ((dY == dY))
712+ then [StringEntry(ad(), dX)]
714713 else throw("Strict value is not equal to itself.")
715714 }
716715 else throw("Strict value is not equal to itself.")
720719
721720 @Callable(aD)
722721 func confirmManager () = {
723- let dY = aB()
724- let dZ = if (isDefined(dY))
722+ let dZ = aB()
723+ let ea = if (isDefined(dZ))
725724 then true
726725 else throw("No pending manager")
727- if ((dZ == dZ))
726+ if ((ea == ea))
728727 then {
729- let ea = if ((aD.callerPublicKey == value(dY)))
728+ let eb = if ((aD.callerPublicKey == value(dZ)))
730729 then true
731730 else throw("You are not pending manager")
732- if ((ea == ea))
733- then [StringEntry(ac(), toBase58String(value(dY))), DeleteEntry(ad())]
731+ if ((eb == eb))
732+ then [StringEntry(ac(), toBase58String(value(dZ))), DeleteEntry(ad())]
734733 else throw("Strict value is not equal to itself.")
735734 }
736735 else throw("Strict value is not equal to itself.")
737736 }
738737
739738
740-@Verifier(eb)
741-func ec () = {
742- let ed = {
739+@Verifier(ec)
740+func ed () = {
741+ let ee = {
743742 let o = az()
744743 if ($isInstanceOf(o, "ByteVector"))
745744 then {
747746 aF
748747 }
749748 else if ($isInstanceOf(o, "Unit"))
750- then eb.senderPublicKey
749+ then ec.senderPublicKey
751750 else throw("Match error")
752751 }
753- sigVerify(eb.bodyBytes, eb.proofs[0], ed)
752+ sigVerify(ec.bodyBytes, ec.proofs[0], ee)
754753 }
755754
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
1313
1414
1515 func h (f,g) = valueOrElse(getInteger(f, g), 0)
1616
1717
1818 func i (f,g,j) = valueOrElse(getInteger(f, g), j)
1919
2020
2121 func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
2222
2323
2424 func l (m) = if ((0 > m))
2525 then -(m)
2626 else m
2727
2828
2929 func n (m) = {
3030 let o = m
3131 if ($isInstanceOf(o, "List[Any]"))
3232 then {
3333 let p = o
3434 p
3535 }
3636 else throw("fail to cast into List[Any]")
3737 }
3838
3939
4040 func q (m) = {
4141 let o = m
4242 if ($isInstanceOf(o, "Int"))
4343 then {
4444 let r = o
4545 r
4646 }
4747 else throw("fail to cast into Int")
4848 }
4949
5050
5151 func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5252
5353
5454 let t = addressFromStringValue(e(this, s()))
5555
5656 let u = makeString(["%s%s", "referral", "programName"], a)
5757
5858 let v = "wxlock"
5959
6060 let w = valueOrElse(getString(this, u), v)
6161
6262 func x () = "%s%s__config__factoryAddress"
6363
6464
6565 let y = 1
6666
6767 let z = 2
6868
6969 let A = 3
7070
7171 let B = 4
7272
7373 let C = 5
7474
7575 let D = 6
7676
7777 let E = 7
7878
7979 let F = 8
8080
8181 let G = 9
8282
8383 let H = 10
8484
8585 let I = 11
8686
8787 func J () = "%s__factoryConfig"
8888
8989
9090 func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9191
9292
9393 func M () = "%s__lpTokensList"
9494
9595
9696 func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func O (P) = makeString(["%s%s", "poolWeight", P], a)
100100
101101
102102 func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
103103
104104
105105 func T () = addressFromStringValue(e(this, x()))
106106
107107
108108 func U () = split(valueOrElse(getString(T(), M()), ""), a)
109109
110110
111111 func V (W) = split(e(W, J()), a)
112112
113113
114114 func X (Y) = addressFromStringValue(Y[z])
115115
116116
117117 func Z (Y) = addressFromStringValue(Y[C])
118118
119119
120120 func aa (Y) = addressFromStringValue(Y[y])
121121
122122
123123 func ab (Y) = addressFromStringValue(Y[H])
124124
125125
126126 func ac () = "%s__managerPublicKey"
127127
128128
129129 func ad () = "%s__pendingManagerPublicKey"
130130
131131
132132 func ae () = "%s%s__ratePerBlock__current"
133133
134134
135135 func af () = "%s%s__ratePerBlockMax__current"
136136
137137
138138 func ag () = "%s%s__emission__startBlock"
139139
140140
141141 func ah () = "%s%s__emission__duration"
142142
143143
144144 func ai () = "%s%s__emission__endBlock"
145145
146146
147147 func aj () = "%s__nextPeriod"
148148
149149
150150 func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
151151
152152
153153 let al = 1
154154
155155 let am = 2
156156
157157 let an = 3
158158
159159 let ao = 4
160160
161161 let ap = 5
162162
163163 func aq () = "%s__config"
164164
165165
166166 func ar () = split(e(this, aq()), a)
167167
168168
169169 func as (at,au,av,aw,ax) = makeString(["%s%d%d%d", at, au, av, aw, ax], a)
170170
171171
172172 func ay (at,au,av,aw,ax) = as(at, toString(au), toString(av), toString(aw), ax)
173173
174174
175175 func az () = {
176176 let o = getString(ac())
177177 if ($isInstanceOf(o, "String"))
178178 then {
179179 let aA = o
180180 fromBase58String(aA)
181181 }
182182 else if ($isInstanceOf(o, "Unit"))
183183 then unit
184184 else throw("Match error")
185185 }
186186
187187
188188 func aB () = {
189189 let o = getString(ad())
190190 if ($isInstanceOf(o, "String"))
191191 then {
192192 let aA = o
193193 fromBase58String(aA)
194194 }
195195 else if ($isInstanceOf(o, "Unit"))
196196 then unit
197197 else throw("Match error")
198198 }
199199
200200
201201 func aC (aD) = {
202202 let aE = throw("Permission denied")
203203 let o = az()
204204 if ($isInstanceOf(o, "ByteVector"))
205205 then {
206206 let aF = o
207207 if ((aD.callerPublicKey == aF))
208208 then true
209209 else aE
210210 }
211211 else if ($isInstanceOf(o, "Unit"))
212212 then if ((aD.caller == this))
213213 then true
214214 else aE
215215 else throw("Match error")
216216 }
217217
218218
219219 let aG = 1
220220
221221 let aH = 2
222222
223223 let aI = 3
224224
225225 let aJ = 4
226226
227227 let aK = 5
228228
229229 let aL = 6
230230
231231 func aM (aN) = makeString(["%s%s__lock", aN], a)
232232
233233
234234 func aO (aN) = split(e(this, aM(aN)), a)
235235
236236
237237 func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
238238
239239
240240 func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
241241
242242
243243 func aZ () = "%s__nextUserNum"
244244
245245
246246 func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
247247
248248
249249 func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
250250
251251
252252 func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
253253
254254
255255 func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
256256
257257
258258 func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
259259
260260
261261 func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
262262
263263
264264 func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
265265
266266
267267 func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
268268
269269
270270 func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
271271
272272
273273 func bk () = "%s%s__stats__activeTotalLocked"
274274
275275
276276 func bl () = "%s%s__stats__locksDurationSumInBlocks"
277277
278278
279279 func bm () = "%s%s__stats__locksCount"
280280
281281
282282 func bn () = "%s%s__stats__activeUsersCount"
283283
284284
285285 func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
286286
287287
288288 func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
289289
290290
291291 func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
292292
293293
294294 func bs () = "%s%s__maxBoostInt__total"
295295
296296
297297 func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
298298
299299
300300 func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
301301
302302
303303 func bv () = "%s%s__gwxCached__total"
304304
305305
306306 let bw = T()
307307
308308 let Y = V(bw)
309309
310310 let bx = Z(Y)
311311
312312 let by = aa(Y)
313313
314314 let bz = ab(Y)
315315
316316 func bA (bB,bC,aR,bD,aT,bE,bF,aD) = {
317317 let bG = makeString(["%s%s%s%s__history", bB, bC, toBase58String(aD.transactionId)], a)
318318 let bH = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bD), toString(aT), toString(bE), toString(bF)], a)
319319 StringEntry(bG, bH)
320320 }
321321
322322
323323 func bI (bJ,bK,bL,bM) = {
324324 let bN = bl()
325325 let bO = bm()
326326 let bP = bn()
327327 let bQ = bk()
328328 let bR = h(this, bN)
329329 let bS = h(this, bO)
330330 let bT = h(this, bP)
331331 let bU = h(this, bQ)
332332 [IntegerEntry(bN, (bR + bK)), IntegerEntry(bO, (bS + bL)), IntegerEntry(bP, (bT + bM)), IntegerEntry(bQ, (bU + bJ))]
333333 }
334334
335335
336336 func bV (bW,bX,bY) = {
337337 let bZ = 1000
338338 (((bW * bY) + bX) / bZ)
339339 }
340340
341341
342342 func ca (aN,aQ,aR,aS,aT,bE,bF,bi) = {
343343 let cb = bc(aQ)
344344 let cc = bd(aQ)
345345 let cd = be(aQ)
346346 let ce = bf(aQ)
347347 let cf = bg(aQ)
348348 let cg = bh(aQ, bi)
349349 let ch = bj(aQ, bi)
350350 let aX = bV(bE, bF, height)
351351 [IntegerEntry(cb, aR), IntegerEntry(cc, aS), IntegerEntry(cd, aT), IntegerEntry(ce, bE), IntegerEntry(cf, bF), IntegerEntry(cg, bE), IntegerEntry(ch, bF), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bE, bF, aX))]
352352 }
353353
354354
355355 func ci (aD,cj) = if ((size(aD.payments) > 1))
356356 then throw("only one payment is allowed")
357357 else if ((size(aD.payments) == 0))
358358 then 0
359359 else {
360360 let ck = aD.payments[0]
361361 if ((value(ck.assetId) != cj))
362362 then throw("invalid asset id in payment")
363363 else ck.amount
364364 }
365365
366366
367367 func cl (aN,cm) = {
368368 let cn = "empty"
369369 let co = ba(aN)
370370 let aQ = valueOrElse(getString(co), cn)
371371 let bE = valueOrElse(getInteger(bf(aQ)), 0)
372372 let bF = valueOrElse(getInteger(bg(aQ)), 0)
373373 let cp = bV(bE, bF, cm)
374374 let aX = if ((0 > cp))
375375 then 0
376376 else cp
377377 aX
378378 }
379379
380380
381381 func cq (aN) = cl(aN, height)
382382
383383
384384 func cr (cs,ct,cu) = {
385385 let cn = "EMPTY"
386386 let cv = valueOrElse(getString(this, aM(ct)), cn)
387387 if ((cv == cn))
388388 then $Tuple3(0, nil, "userRecord::is::empty")
389389 else {
390390 let cw = split(cv, a)
391391 let cx = cw[aG]
392392 let cy = valueOrElse(getInteger(bz, ak()), 0)
393393 let cz = "empty"
394394 let cA = if ((cs != cz))
395395 then {
396396 let cB = valueOrErrorMessage(getString(bw, K(cs)), ("unsupported lp asset " + cs))
397397 let cC = getIntegerValue(bw, O(cB))
398398 let cD = valueOrElse(getInteger(bw, Q(cB, 0)), cC)
399399 $Tuple2(cD, cC)
400400 }
401401 else if (cu)
402402 then $Tuple2(0, 0)
403403 else throw(("not readonly mode: unsupported lp asset " + cs))
404404 let cE = cA._1
405405 let cF = cA._2
406406 let cG = k(bx, ae())
407407 let cH = k(bx, ag())
408408 let cI = k(bx, ai())
409409 let bY = if ((height > cI))
410410 then cI
411411 else height
412412 let cJ = max([(bY - cH), 0])
413413 let cK = bp(cx, cs)
414414 let cL = bo(cx)
415415 let cM = valueOrElse(getInteger(this, cK), h(this, cL))
416416 let cN = (((cG * cJ) * 2) / 3)
417417 let cO = (cN - cM)
418418 let cP = fraction(cO, 3, (2 * cG))
419419 let cQ = (bY - cP)
420420 let cR = max([(cy - cQ), 0])
421421 let cS = ((bY - cQ) - cR)
422422 if (if (if ((0 > cQ))
423423 then true
424424 else (0 > cS))
425425 then true
426426 else (l(((cR + cS) - cP)) >= 1))
427427 then throw(((((((("invalid udh calc: udh=" + toString(cP)) + " uLastH=") + toString(cQ)) + " udh0=") + toString(cR)) + " udh1=") + toString(cS)))
428428 else if ((0 > cO))
429429 then throw("wrong calculations")
430430 else {
431431 let cT = br(cx)
432432 let cU = bs()
433433 let cV = h(this, cT)
434434 let cW = h(this, cU)
435435 let cX = bv()
436436 let cY = valueOrElse(getInteger(this, cX), 0)
437437 let cZ = cq(ct)
438438 let da = bt(cx)
439439 let db = h(this, da)
440440 let dc = if ((cP == 0))
441441 then 0
442442 else fraction(cO, cR, cP)
443443 let dd = if ((cP == 0))
444444 then 0
445445 else fraction(cO, cS, cP)
446446 let de = fraction(dc, cE, d)
447447 let df = fraction(dd, cF, d)
448448 let dg = if ((cY == 0))
449449 then 0
450450 else fraction(de, cZ, cY)
451451 let dh = if ((cY == 0))
452452 then 0
453453 else fraction(df, cZ, cY)
454454 let di = (dg + dh)
455455 let dj = bu(cx)
456456 let dk = h(this, dj)
457457 let dl = (di - dk)
458458 let dm = [IntegerEntry(cK, cN)]
459459 let dn = makeString([toString(cM), toString(cO), toString(dk), toString(dl), toString(cE), toString(cF), toString(bY), toString(cP), toString(cQ), toString(cR), toString(cS), toString(cZ), toString(cY)], ":")
460460 $Tuple3(di, dm, dn)
461461 }
462462 }
463463 }
464464
465465
466-@Callable(aD)
467-func constructor (do,dp,au,dq,dr,ax) = {
468- let ds = aC(aD)
469- if ((ds == ds))
470- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dp, au, dq, dr, ax)), StringEntry(x(), do)] ++ bI(0, 0, 0, 0))
471- else throw("Strict value is not equal to itself.")
472- }
473-
474-
475-
476-@Callable(aD)
477-func lockRef (aT,dt,du) = {
478- let dv = invoke(this, "lock", [aT], aD.payments)
479- if ((dv == dv))
480- then {
481- let dw = toString(aD.caller)
482- let dx = if (if ((dt == ""))
483- then true
484- else (du == base58''))
485- then unit
486- else invoke(t, "createPair", [w, dt, dw, du], nil)
487- if ((dx == dx))
488- then $Tuple2(nil, unit)
489- else throw("Strict value is not equal to itself.")
490- }
491- else throw("Strict value is not equal to itself.")
492- }
493-
494-
495-
496-@Callable(aD)
497-func lock (aT) = {
498- let dy = ar()
499- let dz = dy[al]
500- let at = fromBase58String(dz)
501- let au = parseIntValue(dy[am])
502- let av = parseIntValue(dy[an])
503- let aw = parseIntValue(dy[ao])
504- let ax = addressFromStringValue(dy[ap])
466+func do (aD,aT) = {
467+ let dp = ar()
468+ let dq = dp[al]
469+ let at = fromBase58String(dq)
470+ let au = parseIntValue(dp[am])
471+ let av = parseIntValue(dp[an])
472+ let aw = parseIntValue(dp[ao])
473+ let ax = addressFromStringValue(dp[ap])
505474 if ((size(aD.payments) != 1))
506475 then throw("invalid payment - exact one payment must be attached")
507476 else {
508477 let ck = aD.payments[0]
509- let dA = ck.amount
478+ let dr = ck.amount
510479 if ((at != value(ck.assetId)))
511- then throw((("invalid asset is in payment - " + dz) + " is expected"))
480+ then throw((("invalid asset is in payment - " + dq) + " is expected"))
512481 else {
513- let dB = aZ()
482+ let ds = aZ()
514483 let ct = toString(aD.caller)
515- let dC = isDefined(getString(ba(ct)))
516- let cx = if (dC)
484+ let dt = isDefined(getString(ba(ct)))
485+ let cx = if (dt)
517486 then value(getString(ba(ct)))
518- else toString(k(this, dB))
487+ else toString(k(this, ds))
519488 let aQ = parseIntValue(cx)
520489 let bD = height
521490 let cc = bd(cx)
522491 let cd = be(cx)
523492 let cb = bc(cx)
524- if ((au > dA))
493+ if ((au > dr))
525494 then throw(("amount is less then minLockAmount=" + toString(au)))
526495 else if ((av > aT))
527496 then throw(("passed duration is less then minLockDuration=" + toString(av)))
528497 else if ((aT > aw))
529498 then throw(("passed duration is greater then maxLockDuration=" + toString(aw)))
530- else if (if (dC)
499+ else if (if (dt)
531500 then ((k(this, cc) + k(this, cd)) >= bD)
532501 else false)
533502 then throw("there is an active lock - consider to use increaseLock")
534503 else if ((h(this, cb) > 0))
535504 then throw(("there are locked WXs - consider to use increaseLock " + cb))
536505 else {
537- let dD = fraction(aT, c, aw)
538- let dE = fraction(dA, dD, c)
539- let dF = n(invoke(ax, "calcGwxParamsREADONLY", [dE, bD, aT], nil))
540- let bE = q(dF[0])
541- let bF = q(dF[1])
542- let bi = toString(q(dF[2]))
506+ let du = fraction(aT, c, aw)
507+ let dv = fraction(dr, du, c)
508+ let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, bD, aT], nil))
509+ let bE = q(dw[0])
510+ let bF = q(dw[1])
511+ let bi = toString(q(dw[2]))
543512 let cG = k(bx, ae())
544513 let cH = k(bx, ag())
545514 let cI = k(bx, ai())
546515 let bY = if ((height > cI))
547516 then cI
548517 else height
549518 let cJ = max([(bY - cH), 0])
550519 let cL = bo(cx)
551520 let cN = (((cG * cJ) * 2) / 3)
552521 let cT = br(cx)
553522 let cU = bs()
554- let cV = ((dE * aT) / 2)
523+ let cV = ((dv * aT) / 2)
555524 let cW = h(this, cU)
556525 let cX = bv()
557526 let cY = valueOrElse(getInteger(this, cX), 0)
558- let dG = if (dC)
527+ let dx = if (dt)
559528 then nil
560- else [IntegerEntry(dB, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
561- ((((dG ++ ca(ct, cx, dA, bD, aT, bE, bF, bi)) ++ bI(dA, aT, 1, if (dC)
529+ else [IntegerEntry(ds, (aQ + 1)), StringEntry(ba(ct), cx), StringEntry(bb(cx), ct)]
530+ ((((dx ++ ca(ct, cx, dr, bD, aT, bE, bF, bi)) ++ bI(dr, aT, 1, if (dt)
562531 then 0
563- else 1)) :+ bA("lock", ct, dA, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dE))])
532+ else 1)) :+ bA("lock", ct, dr, bD, aT, bE, bF, aD)) ++ [IntegerEntry(cL, cN), IntegerEntry(cX, (cY + dv))])
564533 }
565534 }
566535 }
567536 }
568537
569538
539+@Callable(aD)
540+func constructor (dy,dz,au,dA,dB,ax) = {
541+ let dC = aC(aD)
542+ if ((dC == dC))
543+ then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dz, au, dA, dB, ax)), StringEntry(x(), dy)] ++ bI(0, 0, 0, 0))
544+ else throw("Strict value is not equal to itself.")
545+ }
546+
547+
570548
571549 @Callable(aD)
572-func increaseLock (dH) = {
573- let dy = ar()
574- let dz = dy[al]
575- let at = fromBase58String(dz)
576- let av = parseIntValue(dy[an])
577- let aw = parseIntValue(dy[ao])
578- let ax = addressFromStringValue(dy[ap])
579- let dA = ci(aD, at)
550+func lockRef (aT,dD,dE) = {
551+ let dF = do(aD, aT)
552+ let dG = toString(aD.caller)
553+ let dH = if (if ((dD == ""))
554+ then true
555+ else (dE == base58''))
556+ then unit
557+ else invoke(t, "createPair", [w, dD, dG, dE], nil)
558+ if ((dH == dH))
559+ then $Tuple2(dF, unit)
560+ else throw("Strict value is not equal to itself.")
561+ }
562+
563+
564+
565+@Callable(aD)
566+func lock (aT) = do(aD, aT)
567+
568+
569+
570+@Callable(aD)
571+func increaseLock (dI) = {
572+ let dp = ar()
573+ let dq = dp[al]
574+ let at = fromBase58String(dq)
575+ let av = parseIntValue(dp[an])
576+ let aw = parseIntValue(dp[ao])
577+ let ax = addressFromStringValue(dp[ap])
578+ let dr = ci(aD, at)
580579 let ct = toString(aD.caller)
581580 let cw = aO(ct)
582581 let cx = cw[aG]
583- let dI = parseIntValue(cw[aH])
582+ let dJ = parseIntValue(cw[aH])
584583 let bD = parseIntValue(cw[aI])
585- let dJ = parseIntValue(cw[aJ])
586- let dK = (bD + dJ)
587- let dL = max([(dK - height), 0])
588- let dM = (dI + dA)
589- let dN = (dL + dH)
590- if ((0 > dH))
584+ let dK = parseIntValue(cw[aJ])
585+ let dL = (bD + dK)
586+ let dM = max([(dL - height), 0])
587+ let dN = (dJ + dr)
588+ let dO = (dM + dI)
589+ if ((0 > dI))
591590 then throw("duration is less then zero")
592- else if ((av > dN))
591+ else if ((av > dO))
593592 then throw(("lockDurationNew is less then minLockDuration=" + toString(av)))
594- else if ((dN > aw))
593+ else if ((dO > aw))
595594 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aw)))
596595 else {
597- let dD = fraction(dN, c, aw)
598- let dE = fraction(dM, dD, c)
599- let dO = height
600- let dF = n(invoke(ax, "calcGwxParamsREADONLY", [dE, dO, dN], nil))
601- let bE = q(dF[0])
602- let bF = q(dF[1])
603- let bi = toString(q(dF[2]))
596+ let du = fraction(dO, c, aw)
597+ let dv = fraction(dN, du, c)
598+ let dP = height
599+ let dw = n(invoke(ax, "calcGwxParamsREADONLY", [dv, dP, dO], nil))
600+ let bE = q(dw[0])
601+ let bF = q(dw[1])
602+ let bi = toString(q(dw[2]))
604603 let cG = k(bx, ae())
605604 let cH = k(bx, ag())
606605 let cI = k(bx, ai())
607606 let bY = if ((height > cI))
608607 then cI
609608 else height
610609 let cJ = max([(bY - cH), 0])
611610 let cL = bo(cx)
612611 let cM = h(this, cL)
613612 let cN = (((cG * cJ) * 2) / 3)
614613 let cO = (cN - cM)
615614 if ((0 > cO))
616615 then throw("wrong calculations")
617616 else {
618617 let cT = br(cx)
619618 let cU = bs()
620619 let cV = h(this, cT)
621620 let cW = h(this, cU)
622- let dP = cq(ct)
623- let dQ = (dE - dP)
624- if ((0 > dQ))
625- then throw(("gwxDiff is less then 0: " + toString(dQ)))
621+ let dQ = cq(ct)
622+ let dR = (dv - dQ)
623+ if ((0 > dR))
624+ then throw(("gwxDiff is less then 0: " + toString(dR)))
626625 else {
627626 let cX = bv()
628627 let cY = valueOrElse(getInteger(this, cX), 0)
629628 let da = bt(cx)
630629 let db = h(this, da)
631- let di = fraction(cO, dP, cY)
632- let dR = ((dE * dN) / 2)
633- let dS = ((dP * dL) / 2)
634- let dT = (dR - dS)
635- (((ca(ct, cx, dM, dO, dN, bE, bF, bi) ++ bI(dA, dH, 0, 0)) :+ bA("lock", ct, dA, bD, dN, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dQ))])
630+ let di = fraction(cO, dQ, cY)
631+ let dS = ((dv * dO) / 2)
632+ let dT = ((dQ * dM) / 2)
633+ let dU = (dS - dT)
634+ (((ca(ct, cx, dN, dP, dO, bE, bF, bi) ++ bI(dr, dI, 0, 0)) :+ bA("lock", ct, dr, bD, dO, bE, bF, aD)) ++ [IntegerEntry(cX, (cY + dR))])
636635 }
637636 }
638637 }
639638 }
640639
641640
642641
643642 @Callable(aD)
644643 func claimWxBoost (cs,ct) = if ((by != aD.caller))
645644 then throw("permissions denied")
646645 else {
647- let dU = cr(cs, ct, false)
648- let dl = dU._1
649- let dm = dU._2
650- let dn = dU._3
646+ let dV = cr(cs, ct, false)
647+ let dl = dV._1
648+ let dm = dV._2
649+ let dn = dV._3
651650 $Tuple2(dm, [dl])
652651 }
653652
654653
655654
656655 @Callable(aD)
657656 func claimWxBoostREADONLY (cs,ct) = {
658- let dV = cr(cs, ct, true)
659- let dl = dV._1
660- let dm = dV._2
661- let dn = dV._3
657+ let dW = cr(cs, ct, true)
658+ let dl = dW._1
659+ let dm = dW._2
660+ let dn = dW._3
662661 $Tuple2(nil, [dl, dn])
663662 }
664663
665664
666665
667666 @Callable(aD)
668667 func unlock (aN) = {
669668 let cw = aO(aN)
670669 let cx = cw[aG]
671- let dI = parseIntValue(cw[aH])
670+ let dJ = parseIntValue(cw[aH])
672671 let bD = parseIntValue(cw[aI])
673- let dJ = parseIntValue(cw[aJ])
674- let dK = (bD + dJ)
675- let dy = ar()
676- let at = fromBase58String(dy[al])
677- let ax = addressFromStringValue(dy[ap])
678- if ((dK >= height))
679- then throw((("wait " + toString(dK)) + " to unlock"))
680- else if ((0 >= dI))
672+ let dK = parseIntValue(cw[aJ])
673+ let dL = (bD + dK)
674+ let dp = ar()
675+ let at = fromBase58String(dp[al])
676+ let ax = addressFromStringValue(dp[ap])
677+ if ((dL >= height))
678+ then throw((("wait " + toString(dL)) + " to unlock"))
679+ else if ((0 >= dJ))
681680 then throw("nothing to unlock")
682681 else {
683682 let bi = valueOrElse(getInteger(ax, aj()), 0)
684- (((ca(aN, cx, 0, bD, dJ, 0, 0, toString(bi)) ++ bI(-(dI), 0, 0, -1)) :+ bA("unlock", aN, dI, bD, dJ, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dI, at))
683+ (((ca(aN, cx, 0, bD, dK, 0, 0, toString(bi)) ++ bI(-(dJ), 0, 0, -1)) :+ bA("unlock", aN, dJ, bD, dK, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dJ, at))
685684 }
686685 }
687686
688687
689688
690689 @Callable(aD)
691690 func gwxUserInfoREADONLY (aN) = {
692691 let aX = cq(aN)
693692 $Tuple2(nil, [aX])
694693 }
695694
696695
697696
698697 @Callable(aD)
699698 func getUserGwxAmountAtHeightREADONLY (aN,cm) = {
700699 let aX = cl(aN, cm)
701700 $Tuple2(nil, aX)
702701 }
703702
704703
705704
706705 @Callable(aD)
707-func setManager (dW) = {
708- let ds = aC(aD)
709- if ((ds == ds))
706+func setManager (dX) = {
707+ let dC = aC(aD)
708+ if ((dC == dC))
710709 then {
711- let dX = fromBase58String(dW)
712- if ((dX == dX))
713- then [StringEntry(ad(), dW)]
710+ let dY = fromBase58String(dX)
711+ if ((dY == dY))
712+ then [StringEntry(ad(), dX)]
714713 else throw("Strict value is not equal to itself.")
715714 }
716715 else throw("Strict value is not equal to itself.")
717716 }
718717
719718
720719
721720 @Callable(aD)
722721 func confirmManager () = {
723- let dY = aB()
724- let dZ = if (isDefined(dY))
722+ let dZ = aB()
723+ let ea = if (isDefined(dZ))
725724 then true
726725 else throw("No pending manager")
727- if ((dZ == dZ))
726+ if ((ea == ea))
728727 then {
729- let ea = if ((aD.callerPublicKey == value(dY)))
728+ let eb = if ((aD.callerPublicKey == value(dZ)))
730729 then true
731730 else throw("You are not pending manager")
732- if ((ea == ea))
733- then [StringEntry(ac(), toBase58String(value(dY))), DeleteEntry(ad())]
731+ if ((eb == eb))
732+ then [StringEntry(ac(), toBase58String(value(dZ))), DeleteEntry(ad())]
734733 else throw("Strict value is not equal to itself.")
735734 }
736735 else throw("Strict value is not equal to itself.")
737736 }
738737
739738
740-@Verifier(eb)
741-func ec () = {
742- let ed = {
739+@Verifier(ec)
740+func ed () = {
741+ let ee = {
743742 let o = az()
744743 if ($isInstanceOf(o, "ByteVector"))
745744 then {
746745 let aF = o
747746 aF
748747 }
749748 else if ($isInstanceOf(o, "Unit"))
750- then eb.senderPublicKey
749+ then ec.senderPublicKey
751750 else throw("Match error")
752751 }
753- sigVerify(eb.bodyBytes, eb.proofs[0], ed)
752+ sigVerify(ec.bodyBytes, ec.proofs[0], ee)
754753 }
755754

github/deemru/w8io/026f985 
117.43 ms