tx · GF9ZrVqtxwtdcPSkGuZrsZqMwPgyMXE3CcAW8SQHdkx2

3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh:  -0.03800000 Waves

2024.12.13 12:33 [3412632] smart account 3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh > SELF 0.00000000 Waves

{ "type": 13, "id": "GF9ZrVqtxwtdcPSkGuZrsZqMwPgyMXE3CcAW8SQHdkx2", "fee": 3800000, "feeAssetId": null, "timestamp": 1734082467013, "version": 2, "chainId": 84, "sender": "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh", "senderPublicKey": "3QtfC1XbLZXdeawMDeSERy9vvjUmj1XYd2GFmrvx7pWQ", "proofs": [ "Mf5TPHExyVoYcvsqYG48YtW4Yf7LacrYCu8bDGQZdzZF1jetnUjqhaFsJXdqTXmuk7rHdKwtGsB2MAGnTjWm8Pf" ], "script": "base64:BgJLCAISABIECgIICBIDCgEEEgMKAQESABIAEgMKAQESABIECgIIARIAEgMKAQgSAwoBCBIECgIIARIDCgEIEgASAwoBCBIAEgASABIAkgEAA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDcAgK3iBAAFTVVMVDgAgMLXLwAGTVVMVDE0AICA6YOx3hYACkRBWV9NSUxMSVMAgLiZKQAVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAoAE09ORV9QRVJDRU5UX0RJVklTT1IAZAAMUkFORE9NX0RFTEFZAAIAFE5GVF9DSEVTVF9QUklDRV9VU0RUAMCWsQIABWNoYWluCQDJAQIJAMoBAggFBHRoaXMFYnl0ZXMAAQABABdEQUlMWV9QUk9NT19TVEFSVF9CTE9DSwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACA75ECAwkAAAIBAVQFByRtYXRjaDAAwKbQAQkAAgECDVVua25vd24gY2hhaW4AFURBSUxZX1BST01PX0VORF9CTE9DSwQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMACg25MCAwkAAAIBAVQFByRtYXRjaDAA4JLSAQkAAgECDVVua25vd24gY2hhaW4ACkRBWV9CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAoAsDCQAAAgEBVAUHJG1hdGNoMAA8CQACAQINVW5rbm93biBjaGFpbgALV0VFS19CTE9DS1MEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAA4E4DCQAAAgEBVAUHJG1hdGNoMAC0AQkAAgECDVVua25vd24gY2hhaW4AClZSRl9PRkZTRVQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAAAAMJAAACAQFUBQckbWF0Y2gwAJD5RQkAAgECDVVua25vd24gY2hhaW4AC3VzZHRBc3NldElkBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwASCE2nqyCAM/TtG7yo7ui5O8yYLdC136B5ao1CP5qA//uQMJAAACAQFUBQckbWF0Y2gwASBVsdifcoeC7+XjW42sBatl3ppDoS8WuwXzGreHpfHFGAkAAgECDVVua25vd24gY2hhaW4AFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDACIzNQRndZdGE4YmlFejMxenBlRmU1REpLOHdFNXRyU3BRVkY4AwkAAAIBAVQFByRtYXRjaDACIzNON1V1WWFyNjI2NFA1OEZCaFZXS1BRQWg0WXVhMmhnbmd2CQACAQINVW5rbm93biBjaGFpbgAVZGVmYXVsdFJlc3RBZGRyZXNzU3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUFFDdXZGYnZoNExrUFVucm5VMXozam5iQTFwOW0zV05odgMJAAACAQFUBQckbWF0Y2gwAiMzTXVta0dHenRDS0FYcFdEcXhrZGRvZnFYU1VicVFrdlNKeQkAAgECDVVua25vd24gY2hhaW4ADmFyYml0cmFnZURlbGF5BAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwBQpEQVlfTUlMTElTAwkAAAIBAVQFByRtYXRjaDAA4NQDCQACAQINVW5rbm93biBjaGFpbgAVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAckbWF0Y2gwBQVjaGFpbgMJAAACAQFXBQckbWF0Y2gwAiMzUExuY1h0UzFVODNENmNRYkZEM0g4ckJIUExnenhTRktaMQMJAAACAQFUBQckbWF0Y2gwAiMzTkRDeUJHNXE4NUp1YVJpaWdVZUV0YWlueWpDUVQzWHBabQkAAgECDVVua25vd24gY2hhaW4BD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAABBJZHhDZmdBY3JlczJEYXBwAAEADUlkeENmZ1dsZ0RhcHAAAgAUSWR4Q2ZnSW52ZXN0RnVuZERhcHAABQAQSWR4Q2ZnTWFya2V0RGFwcAAGAQprZXlSZXN0Q2ZnAAIOJXNfX3Jlc3RDb25maWcBD2tleVJlc3QyQWRkcmVzcwACDSVzX19yZXN0MkFkZHIBDmtleVJlc3RBZGRyZXNzAAIMJXNfX3Jlc3RBZGRyAAxyZXN0Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBDmtleVJlc3RBZGRyZXNzAAUVZGVmYXVsdFJlc3RBZGRyZXNzU3RyARFyZWFkUmVzdENmZ09yRmFpbAEEcmVzdAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEcmVzdAkBCmtleVJlc3RDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIIcmVzdDJDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhyZXN0MkNmZwUDaWR4CQCsAgICKlJlc3QgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAEUlkeENmZ1N0YWtpbmdEYXBwAAEAB3Jlc3RDZmcJARFyZWFkUmVzdENmZ09yRmFpbAEFDHJlc3RDb250cmFjdAAPc3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUHcmVzdENmZwURSWR4Q2ZnU3Rha2luZ0RhcHAADXJlc3QyQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBD2tleVJlc3QyQWRkcmVzcwAFFmRlZmF1bHRSZXN0MkFkZHJlc3NTdHIACHJlc3QyQ2ZnCQERcmVhZFJlc3RDZmdPckZhaWwBBQ1yZXN0MkNvbnRyYWN0AA5hY3JlczJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBRBJZHhDZmdBY3JlczJEYXBwAAt3bGdDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCHJlc3QyQ2ZnBQ1JZHhDZmdXbGdEYXBwABJpbnZlc3RGdW5kQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUUSWR4Q2ZnSW52ZXN0RnVuZERhcHAADm1hcmtldENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFEElkeENmZ01hcmtldERhcHAAE29sZEFjcmVzQ29udHJhY3RLZXkCEG9sZEFjcmVzQ29udHJhY3QBCmtleUJsb2NrZWQAAhBjb250cmFjdHNCbG9ja2VkARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgITbGFzdFdlZWtUeElkQnlVc2VyXwUEYWRkcgEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBGFkZHIJAKwCAgISY3VyV2Vla1R4SWRCeVVzZXJfBQRhZGRyAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzAA13bGdBc3NldElkS2V5Agt3bGdfYXNzZXRJZAAKd2xnQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFC3dsZ0NvbnRyYWN0BQ13bGdBc3NldElkS2V5AhhXTEdPTEQgaXMgbm90IGlzc3VlZCB5ZXQAFGFjcmVzSXNzdWVkQW1vdW50S2V5AhFhY3Jlc0lzc3VlZEFtb3VudAAPYWNyZXNBc3NldElkS2V5AgxhY3Jlc0Fzc2V0SWQADGFjcmVzQXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmFjcmVzMkNvbnRyYWN0BQ9hY3Jlc0Fzc2V0SWRLZXkCF0FDUkVTIGlzIG5vdCBpc3N1ZWQgeWV0ARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBGFkZHIJAKwCAgIWYWNyZXNTdGFrZWRUaW1lQnlVc2VyXwUEYWRkcgEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARRrZXlTdGFrZWREdWNrQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZER1Y2tCeU93bmVyXwUJb3duZXJBZGRyAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQEYWRkcgkArAICCQCsAgIJAKwCAgIDc3RfBQdhc3NldElkAgFfBQRhZGRyARRrZXlTdGFrZWRORlRzQnlPd25lcgEJb3duZXJBZGRyCQCsAgICEnN0YWtlZE5GVHNCeU93bmVyXwUJb3duZXJBZGRyARFrZXlVc2VyUHJvbW9BY3JlcwEHYWRkcmVzcwkArAICAgtwcm9tb0FjcmVzXwUHYWRkcmVzcwETa2V5VXNlclByb21vVGlja2V0cwEHYWRkcmVzcwkArAICAg1wcm9tb1RpY2tldHNfBQdhZGRyZXNzABRrZXlUb3RhbFByb21vVGlja2V0cwIRdG90YWxQcm9tb1RpY2tldHMAC2tleVByb21vTWFwAghwcm9tb01hcAEPa2V5RGFpbHlXaW5uZXJzAQNkYXkJAKwCAgINZGFpbHlXaW5uZXJzXwkApAMBBQNkYXkBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEMYXNUdXBsZTVJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAhkoSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQIrZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTRJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAhQoSW50LCBJbnQsIEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECJmZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCwgSW50LCBJbnQpAQxhc1R1cGxlM0ludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACDyhJbnQsIEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECIWZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCwgSW50KQEMYXNUdXBsZTJJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQIcZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50KQEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQBD2dldFJhbmRvbU51bWJlcgMIbWF4VmFsdWUEc2FsdAdlbnRyb3B5AwkAZwIAAAUIbWF4VmFsdWUJAAIBAhZtYXhWYWx1ZSBzaG91bGQgYmUgPiAwBApyYW5kb21IYXNoCQDUFgEJAMsBAgUEc2FsdAUHZW50cm9weQkAagIJALEJAQUKcmFuZG9tSGFzaAUIbWF4VmFsdWUBBHBhZEwCA3ZhbANsZW4EBHZhbFMJAKQDAQUDdmFsBAZ6ZXJvZXMJALACAgkApAMBCQBsBgAKAAAJAGUCBQNsZW4JALECAQUEdmFsUwAAAAAFBERPV04AAQkArAICBQZ6ZXJvZXMFBHZhbFMAA002XwDAhD0AA004XwCAwtcvAA93bGdJc3N1ZWRBbXRLZXkCEHdsZ19pc3N1ZWRBbW91bnQADnpiSXNzdWVkQW10S2V5AhJ6YmlsbF9pc3N1ZWRBbW91bnQBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQRhZGRyCQCsAgICGGFjcmVzU3Rha2VkQW1vdW50QnlVc2VyXwUEYWRkcgEVa2V5RmFybWluZ1Bvd2VyQnlVc2VyAQRhZGRyCQCsAgICE2Zhcm1pbmdQb3dlckJ5VXNlcl8FBGFkZHIAEmFjcmVzU3Rha2RUb3RhbEtleQIWYWNyZXNTdGFrZWRBbW91bnRUb3RhbAAUdG90YWxGYXJtaW5nUG93ZXJLZXkCEXRvdGFsRmFybWluZ1Bvd2VyAAtNQVhfV0xfTkZUUwADAAxNQVhfQVJLX05GVFMAAQANQVJLX05GVF9CT05VUwCIJwAXTUFYX05GVFNfU1RBS0VEX0JZX1VTRVIABAARa2V5TmZ0VG90YWxJc3N1ZWQCDm5mdFRvdGFsSXNzdWVkABFrZXlOZnRUb3RhbEJ1cm5lZAIObmZ0VG90YWxCdXJuZWQAE2tleVdsTmZ0VG90YWxTdGFrZWQCEFdsTmZ0VG90YWxTdGFrZWQAFGtleUFya05mdFRvdGFsU3Rha2VkAhFBcmtOZnRUb3RhbFN0YWtlZAEVa2V5TmZ0TnVtYmVyQnlBc3NldElkAQdhc3NldElkCQCsAgICE25mdE51bWJlckJ5QXNzZXRJZF8FB2Fzc2V0SWQBEmtleVVzZXJXbE5mdE51bWJlcgEEYWRkcgkArAICAhB1c2VyV2xOZnROdW1iZXJfBQRhZGRyARNrZXlVc2VyQXJrTmZ0TnVtYmVyAQRhZGRyCQCsAgICEXVzZXJBcmtOZnROdW1iZXJfBQRhZGRyARBrZXlVc2VyRnVsbEJvbnVzAQRhZGRyCQCsAgICDnVzZXJGdWxsQm9udXNfBQRhZGRyAApsZXZlbEFjcmVzCQDMCAIAAAkAzAgCAAoJAMwIAgAUCQDMCAIAKAkAzAgCAFAJAMwIAgCWAQkAzAgCAPoBCQDMCAIAkAMJAMwIAgC8BQkAzAgCAOgHBQNuaWwBD2dldExldmVsQnlBY3JlcwEFYWNyZXMEA2FjcgkAaQIJAGQCBQVhY3JlcwD/wdcvBQNNOF8KAQdjaGVja2VyAgNhY2MEaXRlbQMJAGcCBQRpdGVtBQNhY3IFA2FjYwkAZAIFA2FjYwABCgACJGwFCmxldmVsQWNyZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NoZWNrZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBWFjcmVzCQBoAgkAaAIFBWFjcmVzABQJAGQCCQEPZ2V0TGV2ZWxCeUFjcmVzAQUFYWNyZXMABAEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgVhY3JlcwZib251czYECm5vdEJvbnVzZWQJARZnZXRGYXJtaW5nUG93ZXJCeUFjcmVzAQUFYWNyZXMJAJQKAgkAawMFCm5vdEJvbnVzZWQJAGQCBQNNNl8FBmJvbnVzNgUDTTZfBQpub3RCb251c2VkAAt0ZWFtQWRkcktleQIIdGVhbUFkZHIBGWtleUxhc3RXbGdUcmFkZVRpbWVCeVVzZXIBBGFkZHIJAKwCAgIQbGFzdEFyYlRpbWVVc2VyXwUEYWRkcgART0xEX1NUQUtJTkdfREVBREwAgPnjm7kyABRNQVhfTEFORFNfVE9fQ09OVkVSVAAOABRrZXlMYXN0QWNyZXNTZWxsVGltZQIRbGFzdEFjcmVzU2VsbFRpbWUAEGtleUxhc3RMaW1pdExlZnQCDWxhc3RMaW1pdExlZnQABW5hbWVzCQDMCAICC0dvbGQgc2hvdmVsCQDMCAICB1BpY2theGUFA25pbAAMZGVzY3JpcHRpb25zCQDMCAICFlJld2FyZCBmb3IgZWFybHkgYmlyZHMJAMwIAgITSW5jcmVhc2VzIEZhcm1Qb3dlcgUDbmlsAA5pZHhEZXNjclNob3ZlbAAAAA9pZHhEZXNjclBpY2theGUAAQAQcmFyaXR5VGhyZXNob2xkcwkAzAgCAAUJAMwIAgAKCQDMCAIAFAUDbmlsAA1pZHhUaHJlc2hvbGRDAAAADWlkeFRocmVzaG9sZFUAAQANaWR4VGhyZXNob2xkTAACAAVuYW1legkAzAgCAgZTSE9WRUwJAMwIAgIHUElDS0FYRQUDbmlsAA1pZHhOYW1lU2hvdmVsAAAADmlkeE5hbWVQaWNrYXhlAAEAC2NvbnRlbnRLZXl6CQDMCAICD2NvbnRlbnRQaWNrYXhlQwkAzAgCAg9jb250ZW50UGlja2F4ZVUJAMwIAgIPY29udGVudFBpY2theGVMCQDMCAICD2NvbnRlbnRQaWNrYXhlRQkAzAgCAg5jb250ZW50U2hvdmVsUAUDbmlsAAdpZHhLZXlDAAAAB2lkeEtleVAABAALcmFyaXR5TmFtZXMJAMwIAgIGQ29tbW9uCQDMCAICCFVuY29tbW9uCQDMCAICCUxlZ2VuZGFyeQkAzAgCAgRFcGljCQDMCAICBVByb21vBQNuaWwACmlkeFJhcml0eUMAAAAKaWR4UmFyaXR5VQABAAppZHhSYXJpdHlMAAIACmlkeFJhcml0eUUAAwAKaWR4UmFyaXR5UAAEAAtjb2xsZWN0aW9uegkAzAgCAg1EaWdnaW5nIHRvb2xzBQNuaWwACmlkeENvbGxEaWcAAAAKYm9udXNUeXBlegkAzAgCAglGYXJtUG93ZXIFA25pbAAOaWR4Qm9udXNUeXBlRnAAAAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUNcmVzdDJDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQLbGFzdFdlZWtLZXkJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQRhZGRyBBJsYXN0V2Vla1R4SWRCeVVzZXIJAKIIAQULbGFzdFdlZWtLZXkEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQDd3R4CQCsAgIJAKwCAgkApAMBBQR3ZWVrAgFfBQR0eElkBApjdXJXZWVrS2V5CQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQRhZGRyAwkBCWlzRGVmaW5lZAEFEmxhc3RXZWVrVHhJZEJ5VXNlcgQKbGFzdFdlZWtUeAkAtQkCCQEFdmFsdWUBBRJsYXN0V2Vla1R4SWRCeVVzZXICAV8DCQAAAgkAkQMCBQpsYXN0V2Vla1R4AAAJAKQDAQUEd2VlawkAzAgCCQELU3RyaW5nRW50cnkCBQtsYXN0V2Vla0tleQUDd3R4CQDMCAIJAQtTdHJpbmdFbnRyeQIFCmN1cldlZWtLZXkFA3d0eAUDbmlsAwkAAAIJAJEDAgUKbGFzdFdlZWtUeAAACQCkAwEJAGUCBQR3ZWVrAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgUKY3VyV2Vla0tleQUDd3R4BQNuaWwEEWN1cldlZWtUeElkQnlVc2VyCQERQGV4dHJOYXRpdmUoMTA1OCkBBQpjdXJXZWVrS2V5BAljdXJXZWVrVHgJALUJAgURY3VyV2Vla1R4SWRCeVVzZXICAV8DCQAAAgkAkQMCBQljdXJXZWVrVHgAAAkApAMBBQR3ZWVrCQDMCAIJAQtTdHJpbmdFbnRyeQIFCmN1cldlZWtLZXkFA3d0eAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2xhc3RXZWVrS2V5BRFjdXJXZWVrVHhJZEJ5VXNlcgkAzAgCCQELU3RyaW5nRW50cnkCBQpjdXJXZWVrS2V5BQN3dHgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCBQtsYXN0V2Vla0tleQUDd3R4CQDMCAIJAQtTdHJpbmdFbnRyeQIFCmN1cldlZWtLZXkFA3d0eAUDbmlsARRjcmVhdGVOZnREZXNjckN1c3RvbQgHY29udEtleQluZnRTZXJpYWwKY29sbGVjdGlvbgRuYW1lBWRlc2NyBnJhcml0eQVib251cwlib251c1R5cGUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICInsidXJsIjogImh0dHBzOi8vd2F2ZXNsYW5kcy5jb20iLCACDyJjb250ZW50S2V5IjogIgUHY29udEtleQIDIiwgAgoibnVtYmVyIjogCQCkAwEFCW5mdFNlcmlhbAICLCACDyJjb2xsZWN0aW9uIjogIgUKY29sbGVjdGlvbgIDIiwgAgkibmFtZSI6ICIFBG5hbWUCAyIsIAIQImRlc2NyaXB0aW9uIjogIgUFZGVzY3ICAyIsIAIJInJhcmUiOiAiBQZyYXJpdHkCAyIsIAIJImJvbnVzIjogCQCkAwEFBWJvbnVzAgIsIAIOImJvbnVzVHlwZSI6ICIFCWJvbnVzVHlwZQICIn0BDmlzc3VlTmZ0Q3VzdG9tCAduYW1lSWR4CmNvbnRLZXlJZHgHY29sbElkeAlyYXJpdHlJZHgJYm9udXNQZXJjCGRlc2NySWR4DGJvbnVzVHlwZUlkeARhZGRyBAluZnRTZXJpYWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURa2V5TmZ0VG90YWxJc3N1ZWQAAAQGcmFyaXR5CQCRAwIFC3Jhcml0eU5hbWVzBQlyYXJpdHlJZHgEBG5hbWUJAKwCAgkArAICCQCsAgIJAJEDAgUFbmFtZXoFB25hbWVJZHgCAS0JAK8CAgUGcmFyaXR5AAEJAKQDAQUJYm9udXNQZXJjBAVpc3N1ZQkAwggFBQRuYW1lCQEUY3JlYXRlTmZ0RGVzY3JDdXN0b20ICQCRAwIFC2NvbnRlbnRLZXl6BQpjb250S2V5SWR4BQluZnRTZXJpYWwJAJEDAgULY29sbGVjdGlvbnoFB2NvbGxJZHgJAJEDAgUFbmFtZXMFB25hbWVJZHgJAJEDAgUMZGVzY3JpcHRpb25zBQhkZXNjcklkeAkAkQMCBQtyYXJpdHlOYW1lcwUJcmFyaXR5SWR4BQlib251c1BlcmMJAJEDAgUKYm9udXNUeXBlegUMYm9udXNUeXBlSWR4AAEAAAcECm5mdEFzc2V0SWQJALgIAQUFaXNzdWUJAJQKAgkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5TmZ0VG90YWxJc3N1ZWQJAGQCBQluZnRTZXJpYWwAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleU5mdE51bWJlckJ5QXNzZXRJZAEJANgEAQUKbmZ0QXNzZXRJZAUJbmZ0U2VyaWFsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBGFkZHIAAQUKbmZ0QXNzZXRJZAUDbmlsBQpuZnRBc3NldElkARJib251c0J5RGVzY3JpcHRpb24BBWRlc2NyAwkBASEBCQEIY29udGFpbnMCBQVkZXNjcgIYImJvbnVzVHlwZSI6ICJGYXJtUG93ZXIiCQACAQkArAICAhZORlQgaXMgbm90IHN1cHBvcnRlZDogBQVkZXNjcgQIYm9udXNTdHIJAJEDAgkAvAkCCQCRAwIJALwJAgUFZGVzY3ICCCJib251cyI6AAECASwAAAkBDXBhcnNlSW50VmFsdWUBCQCwAgIFCGJvbnVzU3RyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAtwkCBQhib251c1N0cgIBIAD///////////8BAAEBFnJhcml0eUlkeEJ5RGVzY3JpcHJpb24BBWRlc2NyAwkBASEBCQEIY29udGFpbnMCBQVkZXNjcgIGInJhcmUiCQACAQkArAICAhZORlQgaXMgbm90IHN1cHBvcnRlZDogBQVkZXNjcgQJcmFyaXR5U3RyCQCRAwIJALwJAgkAkQMCCQC8CQIJAJEDAgkAvAkCBQVkZXNjcgIGInJhcmUiAAECASwAAAIBIgABCQEFdmFsdWUBCQDPCAIFC3Jhcml0eU5hbWVzBQlyYXJpdHlTdHIBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDA2FtdAdhZGRyZXNzCmJvbnVzRGVsdGEDAwkAAAIFA2FtdAAACQAAAgUKYm9udXNEZWx0YQAABwkAAgECDU5vdGhpbmcgdG8gZG8ECXdsZ1Jlc3VsdAkA/AcEBQt3bGdDb250cmFjdAISb25TdGFrZVVuc3Rha2VMYW5kCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAwkAAAIFCXdsZ1Jlc3VsdAUJd2xnUmVzdWx0BANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAd0aW1lS2V5CQEYa2V5QWNyZXNTdGFrZWRUaW1lQnlVc2VyAQUHYWRkcmVzcwQJYW1vdW50S2V5CQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQdhZGRyZXNzBA5vbGRBY3Jlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQlhbW91bnRLZXkAAAMDCQBmAgAABQNhbXQJAGYCAAAJAGQCBQ5vbGRBY3Jlc0Ftb3VudAUDYW10BwkAAgEJAKwCAgkArAICCQCsAgICDllvdSBoYXZlIG9ubHkgCQEKZml4ZWRQb2ludAIFDm9sZEFjcmVzQW1vdW50AAgCICBBQ1JFUyBzdGFrZWQsIHRyaWVkIHRvIHVuc3Rha2UgCQEKZml4ZWRQb2ludAIJAQEtAQUDYW10AAgEDm5ld0FjcmVzQW1vdW50CQBkAgUOb2xkQWNyZXNBbW91bnQFA2FtdAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSYWNyZXNTdGFrZFRvdGFsS2V5AAAECXVzZXJGcEtleQkBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEFB2FkZHJlc3MEBW9sZEZwCQELdmFsdWVPckVsc2UCCQCfCAEFCXVzZXJGcEtleQAABAhib251c0tleQkBEGtleVVzZXJGdWxsQm9udXMBBQdhZGRyZXNzBAhvbGRCb251cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQ5hY3JlczJDb250cmFjdAUIYm9udXNLZXkAAAMDCQBmAgAABQpib251c0RlbHRhCQBmAgAACQBkAgUIb2xkQm9udXMFCmJvbnVzRGVsdGEHCQACAQkArAICCQCsAgIJAKwCAgkArAICAg5Zb3UgaGF2ZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQhvbGRCb251cwAEAh4lIGJvbnVzLCBhbmQgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgkBAS0BBQpib251c0RlbHRhAAQCASUECyR0MDYyOTk2Mzk4CQEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgUObmV3QWNyZXNBbW91bnQJAGQCBQhvbGRCb251cwUKYm9udXNEZWx0YQQMbmV3Qm9udXNlZEZwCAULJHQwNjI5OTYzOTgCXzEEB2lnbm9yZWQIBQskdDA2Mjk5NjM5OAJfMgQKb2xkVG90YWxGcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRR0b3RhbEZhcm1pbmdQb3dlcktleQAABAxhY3Jlc0FjdGlvbnMDCQAAAgUDYW10AAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUJYW1vdW50S2V5BQ5uZXdBY3Jlc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSYWNyZXNTdGFrZFRvdGFsS2V5CQBkAgUIb2xkVG90YWwFA2FtdAUDbmlsBAxib251c0FjdGlvbnMDCQAAAgUKYm9udXNEZWx0YQAABQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFCGJvbnVzS2V5CQBkAgUIb2xkQm9udXMFCmJvbnVzRGVsdGEFA25pbAkAlAoCCQDNCAIJAM0IAgkAzQgCCQDOCAIFDGFjcmVzQWN0aW9ucwUMYm9udXNBY3Rpb25zCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAQxJbnRlZ2VyRW50cnkCBQl1c2VyRnBLZXkFDG5ld0JvbnVzZWRGcAkBDEludGVnZXJFbnRyeQIFFHRvdGFsRmFybWluZ1Bvd2VyS2V5CQBlAgkAZAIFCm9sZFRvdGFsRnAFDG5ld0JvbnVzZWRGcAUFb2xkRnAFCXdsZ1Jlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELZ2V0V2xnUHJpY2UBFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQMaXNzdWVkQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgULd2xnQ29udHJhY3QFD3dsZ0lzc3VlZEFtdEtleQIYV0xHT0xEIGlzIG5vdCBpc3N1ZWQgeWV0BAZ3bGdVc2QJAPAHAgULd2xnQ29udHJhY3QFC3VzZHRBc3NldElkBAlhY3JlczJVc2QJAGUCCQDwBwIFDmFjcmVzMkNvbnRyYWN0BQt1c2R0QXNzZXRJZAUVdXNkdEJhbGFuY2VDb3JyZWN0aW9uBA9pbnZlc3RGdW5kVG90YWwJAGQCCQDwBwIFEmludmVzdEZ1bmRDb250cmFjdAULdXNkdEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUSaW52ZXN0RnVuZENvbnRyYWN0BQ56Yklzc3VlZEFtdEtleQAABA10b3RhbEZ1bmRzVXNkCQBkAgkAZAIFCWFjcmVzMlVzZAUGd2xnVXNkBQ9pbnZlc3RGdW5kVG90YWwJAGsDBQ10b3RhbEZ1bmRzVXNkBQVNVUxUOAUMaXNzdWVkQW1vdW50ARFnZXRTd2FwTGltaXRBY3JlcwAEBndsZ1VzZAkA8AcCBQt3bGdDb250cmFjdAULdXNkdEFzc2V0SWQECWFjcmVzMlVzZAkA8AcCBQR0aGlzBQt1c2R0QXNzZXRJZAQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRJpbnZlc3RGdW5kQ29udHJhY3QFC3VzZHRBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFEmludmVzdEZ1bmRDb250cmFjdAUOemJJc3N1ZWRBbXRLZXkAAAQMZGVmYXVsdExpbWl0CQBpAgkAZAIJAGQCBQlhY3JlczJVc2QFBndsZ1VzZAUPaW52ZXN0RnVuZFRvdGFsBRNPTkVfUEVSQ0VOVF9ESVZJU09SBA1sYXN0TGltaXRMZWZ0CQELdmFsdWVPckVsc2UCCQCfCAEFEGtleUxhc3RMaW1pdExlZnQFDGRlZmF1bHRMaW1pdAQIbGFzdFRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUa2V5TGFzdEFjcmVzU2VsbFRpbWUAAAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQMY3VycmVudExpbWl0CQBkAgUNbGFzdExpbWl0TGVmdAkAawMFDGRlZmF1bHRMaW1pdAkAZQIFA25vdwUIbGFzdFRpbWUFCkRBWV9NSUxMSVMEDWxpbWl0TGVmdFVzZHQJAJcDAQkAzAgCBQxjdXJyZW50TGltaXQJAMwIAgUMZGVmYXVsdExpbWl0BQNuaWwJAJQKAgkBDEludGVnZXJFbnRyeQIFFGtleUxhc3RBY3Jlc1NlbGxUaW1lBQNub3cFDWxpbWl0TGVmdFVzZHQACWFya09yYWNsZQkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BKZ1o2QUsxV1ZDcGRDbUVacGVzSG1hS3ZyUURkWEc1b2cACWluY3ViYXRvcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAgAAB2JyZWVkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MCAAAPdHVydGxlSW5jdWJhdG9yCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIdc3RhdGljX3R1cnRsZUluY3ViYXRvckFkZHJlc3MCAAANdHVydGxlQnJlZWRlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCG3N0YXRpY190dXJ0bGVCcmVlZGVyQWRkcmVzcwIAAA9jYW5pbmVJbmN1YmF0b3IJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAh1zdGF0aWNfY2FuaW5lSW5jdWJhdG9yQWRkcmVzcwIAAA1jYW5pbmVCcmVlZGVyCQELdmFsdWVPckVsc2UCCQCdCAIFCWFya09yYWNsZQIbc3RhdGljX2NhbmluZUJyZWVkZXJBZGRyZXNzAgAAD2ZlbGluZUluY3ViYXRvcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCHXN0YXRpY19mZWxpbmVJbmN1YmF0b3JBZGRyZXNzAgAADWZlbGluZUJyZWVkZXIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJYXJrT3JhY2xlAhtzdGF0aWNfZmVsaW5lQnJlZWRlckFkZHJlc3MCAAANbXV0YW50QnJlZWRlcgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQlhcmtPcmFjbGUCHXN0YXRpY19tdXRhbnRJbmN1YmF0b3JBZGRyZXNzAgABD2lzQXJraW1hbElzc3VlZAEDbmZvBAZpc3N1ZXIJAKUIAQgFA25mbwZpc3N1ZXIDAwMDAwMDAwMDCQAAAgUFY2hhaW4BAVQJAAACBQZpc3N1ZXIFFW9sZFN0YWtpbmdDb250cmFjdFN0cgcGCQAAAgUGaXNzdWVyBQlpbmN1YmF0b3IGCQAAAgUGaXNzdWVyBQdicmVlZGVyBgkAAAIFBmlzc3VlcgUPdHVydGxlSW5jdWJhdG9yBgkAAAIFBmlzc3VlcgUNdHVydGxlQnJlZWRlcgYJAAACBQZpc3N1ZXIFD2NhbmluZUluY3ViYXRvcgYJAAACBQZpc3N1ZXIFDWNhbmluZUJyZWVkZXIGCQAAAgUGaXNzdWVyBQ9mZWxpbmVJbmN1YmF0b3IGCQAAAgUGaXNzdWVyBQ1mZWxpbmVCcmVlZGVyCAUDbmZvBG5hbWUDCQAAAgUGaXNzdWVyBQ1tdXRhbnRCcmVlZGVyCAUDbmZvC2Rlc2NyaXB0aW9uAgABEHN0YWtlTmZ0SW50ZXJuYWwGBGFkZHIKYXNzZXRJZFN0cgZib251czYKdXNlck51bUtleQt0b3RhbE51bUtleQVsaW1pdAQJbmZ0TnVtYmVyCQELdmFsdWVPckVsc2UCCQCfCAEFCnVzZXJOdW1LZXkAAAMJAGcCBQluZnROdW1iZXIFBWxpbWl0CQACAQkArAICCQCsAgICEllvdSBjYW4gc3Rha2UgbWF4IAkApAMBBQVsaW1pdAINIG9mIHN1Y2ggTkZUcwQNJHQwMTA2NzcxMDc1MwkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDAAAFBGFkZHIFBmJvbnVzNgQHYWN0aW9ucwgFDSR0MDEwNjc3MTA3NTMCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxMDY3NzEwNzUzAl8yCQCUCgIJAM0IAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQxJbnRlZ2VyRW50cnkCBQp1c2VyTnVtS2V5CQBkAgUJbmZ0TnVtYmVyAAEJAQxJbnRlZ2VyRW50cnkCBQt0b3RhbE51bUtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQULdG90YWxOdW1LZXkAAAABCQEMSW50ZWdlckVudHJ5AgkBHmtleVN0YWtlZFRpbWVCeUFzc2V0SWRBbmRPd25lcgIFCmFzc2V0SWRTdHIFBGFkZHIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRB3bGdDbGFpbWVkQW1vdW50AA5wcm9tb051bVByaXplcwADABJwcm9tb0F3YXJkUGVyUm91bmQJAMwIAgCA4esXCQDMCAIAwPD1CwkAzAgCAMDw9QsFA25pbAENc3Rha2VBY3Jlc0ZvcgMHYWRkcmVzcwNhbXQQc2hvdWxkQ2xlYW5Qcm9tbwQNJHQwMTEyMjUxMTMwMQkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwDBQNhbXQFB2FkZHJlc3MAAAQHYWN0aW9ucwgFDSR0MDExMjI1MTEzMDECXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxMTIyNTExMzAxAl8yBAxwcm9tb0FjdGlvbnMDAwkAZwIFBmhlaWdodAUXREFJTFlfUFJPTU9fU1RBUlRfQkxPQ0sJAGYCBRVEQUlMWV9QUk9NT19FTkRfQkxPQ0sFBmhlaWdodAcEDXByb21vQWNyZXNLZXkJARFrZXlVc2VyUHJvbW9BY3JlcwEFB2FkZHJlc3MECnByb21vQWNyZXMJAGQCAwUQc2hvdWxkQ2xlYW5Qcm9tbwAACQELdmFsdWVPckVsc2UCCQCfCAEFDXByb21vQWNyZXNLZXkAAAUDYW10BAd0aWNrZXRzCQBpAgUKcHJvbW9BY3JlcwUFTVVMVDgECnRpY2tldHNLZXkJARNrZXlVc2VyUHJvbW9UaWNrZXRzAQUHYWRkcmVzcwQMZGVsdGFUaWNrZXRzCQBlAgUHdGlja2V0cwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0aWNrZXRzS2V5AAAEDHRvdGFsVGlja2V0cwkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUa2V5VG90YWxQcm9tb1RpY2tldHMAAAUMZGVsdGFUaWNrZXRzAwMFEHNob3VsZENsZWFuUHJvbW8GCQBmAgUMZGVsdGFUaWNrZXRzAAAECHByb21vTWFwCQELdmFsdWVPckVsc2UCCQCiCAEFC2tleVByb21vTWFwAgAECnVzZXJSZWNvcmQJAKwCAgkArAICBQdhZGRyZXNzAgE6CQEEcGFkTAIFB3RpY2tldHMAAwQGbmV3TWFwAwkBCGNvbnRhaW5zAgUIcHJvbW9NYXAFB2FkZHJlc3MECG1hcFBhcnRzCQC9CQIFCHByb21vTWFwBQdhZGRyZXNzAwkAAAIJAJEDAgUIbWFwUGFydHMAAAIABAFyCQCwAgIJAJEDAgUIbWFwUGFydHMAAQAEAwkAAAIFAXICAAMJAAACBQd0aWNrZXRzAAACAAUKdXNlclJlY29yZAMJAAACBQd0aWNrZXRzAAAJALACAgUBcgABCQCsAgIFCnVzZXJSZWNvcmQFAXIEAXIJALACAgkAkQMCBQhtYXBQYXJ0cwABAAQDCQAAAgUBcgIAAwkAAAIFB3RpY2tldHMAAAkAswICCQCRAwIFCG1hcFBhcnRzAAAAAQkArAICCQCRAwIFCG1hcFBhcnRzAAAFCnVzZXJSZWNvcmQDCQAAAgUHdGlja2V0cwAACQCsAgIJAJEDAgUIbWFwUGFydHMAAAkAsAICBQFyAAEJAKwCAgkArAICCQCRAwIFCG1hcFBhcnRzAAAFCnVzZXJSZWNvcmQFAXIDCQAAAgUHdGlja2V0cwAABQhwcm9tb01hcAMJAAACBQhwcm9tb01hcAIABQp1c2VyUmVjb3JkCQCsAgIJAKwCAgUIcHJvbW9NYXACAV8FCnVzZXJSZWNvcmQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXByb21vQWNyZXNLZXkFCnByb21vQWNyZXMJAMwIAgkBDEludGVnZXJFbnRyeQIFCnRpY2tldHNLZXkFB3RpY2tldHMJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleVRvdGFsUHJvbW9UaWNrZXRzBQx0b3RhbFRpY2tldHMJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5UHJvbW9NYXAFBm5ld01hcAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1wcm9tb0FjcmVzS2V5BQpwcm9tb0FjcmVzBQNuaWwFA25pbAkAlAoCCQDOCAIFB2FjdGlvbnMFDHByb21vQWN0aW9ucwUQd2xnQ2xhaW1lZEFtb3VudBQBaQEKc2F2ZUxhc3RUeAADCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFC3dsZ0NvbnRyYWN0CQDMCAIFDm1hcmtldENvbnRyYWN0BQNuaWwIBQFpBmNhbGxlcgkAAgECDUFjY2VzcyBkZW5pZWQJAJQKAgkBBnByb2xvZwEFAWkAKgFpAQ1jb25zdHJ1Y3RvclYxAglyZXN0MkFkZHIOb2xkQWNyQ29udHJhY3QDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQOb2xkQWNyQ29udEFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDm9sZEFjckNvbnRyYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRhY3Jlc0lzc3VlZEFtb3VudEtleQkBEUBleHRyTmF0aXZlKDEwNTApAgUOb2xkQWNyQ29udEFkZHIFFGFjcmVzSXNzdWVkQW1vdW50S2V5CQDMCAIJAQtCaW5hcnlFbnRyeQIFD2FjcmVzQXNzZXRJZEtleQkBEUBleHRyTmF0aXZlKDEwNTIpAgUOb2xkQWNyQ29udEFkZHIFD2FjcmVzQXNzZXRJZEtleQkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5UmVzdDJBZGRyZXNzAAUJcmVzdDJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFE29sZEFjcmVzQ29udHJhY3RLZXkFDm9sZEFjckNvbnRyYWN0BQNuaWwBaQEKc2V0QmxvY2tlZAEJaXNCbG9ja2VkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQprZXlCbG9ja2VkAAUJaXNCbG9ja2VkBQNuaWwBaQEMdW5zdGFrZUFjcmVzAQZhbW91bnQEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwMJAGcCBQZoZWlnaHQFF0RBSUxZX1BST01PX1NUQVJUX0JMT0NLCQBmAgUVREFJTFlfUFJPTU9fRU5EX0JMT0NLBQZoZWlnaHQHCQACAQIqWW91IGNhbid0IHVuc3Rha2UgZHVyaW5nIFhtYXMgcHJvbW8gcGVyaW9kAwkAZwIAAAUGYW1vdW50CQACAQIZQW1vdW50IHNob3VsZCBiZSBwb3NpdGl2ZQQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQOYXJiUmVsZWFzZVRpbWUJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFC3dsZ0NvbnRyYWN0CQEZa2V5TGFzdFdsZ1RyYWRlVGltZUJ5VXNlcgEFB2FkZHJlc3MAAAUOYXJiaXRyYWdlRGVsYXkDCQBmAgUOYXJiUmVsZWFzZVRpbWUIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQACAQkArAICAi1Zb3UgdHJhZGVkIHNvbWUgV0xHT0xELCBjYW5ub3QgdW5zdGFrZSB1bnRpbCAJAKQDAQUOYXJiUmVsZWFzZVRpbWUEDSR0MDE1MzA0MTUzODQJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwkBAS0BBQZhbW91bnQFB2FkZHJlc3MAAAQHYWN0aW9ucwgFDSR0MDE1MzA0MTUzODQCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNTMwNDE1Mzg0Al8yCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUMYWNyZXNBc3NldElkBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBCnN0YWtlQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhBA0kdDAxNTgzNTE1OTA4CQENc3Rha2VBY3Jlc0ZvcgMFB2FkZHJlc3MFA2FtdAcEDHN0YWtlQWN0aW9ucwgFDSR0MDE1ODM1MTU5MDgCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAxNTgzNTE1OTA4Al8yCQCUCgIJAM4IAgUMc3Rha2VBY3Rpb25zBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBCGJ1eUFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQKdXNkdEFtb3VudAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECE1VTRFQgcGF5bWVudHMgb25seSEDCQBmAgUFTVVMVDYFCnVzZHRBbW91bnQJAAIBCQCsAgIJAKwCAgIWTWluIHBheW1lbnQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBQVNVUxUNgAGAgUgVVNEVAQLYWNyZXNBbW91bnQJAGgCBQp1c2R0QW1vdW50BRVVU0RUMkFDUkVTX01VTFRJUExJRVIECXdsZ0Ftb3VudAkAawMFCnVzZHRBbW91bnQFBU1VTFQ4CQELZ2V0V2xnUHJpY2UBBQp1c2R0QW1vdW50BA9vbGRBY3Jlc0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE29sZEFjcmVzQ29udHJhY3RLZXkEA3JlcQkA/AcEBQ9vbGRBY3Jlc0FkZHJlc3MCFHJlcXVlc3RBY3Jlc0NhbGxiYWNrCQDMCAIFC2FjcmVzQW1vdW50BQNuaWwFA25pbAMJAAACBQNyZXEFA3JlcQQJd2xnUmVtYWluCQEFYXNJbnQBCQD8BwQFC3dsZ0NvbnRyYWN0AgpidXJuV2xnb2xkCQDMCAIFCXdsZ0Ftb3VudAUDbmlsBQNuaWwJAJQKAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULYWNyZXNBbW91bnQFDGFjcmVzQXNzZXRJZAUDbmlsBQ1wcm9sb2dBY3Rpb25zBQl3bGdSZW1haW4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQYnV5QWNyZXNSRUFET05MWQEKdXNkdEFtb3VudAQLYWNyZXNBbW91bnQJAGgCBQp1c2R0QW1vdW50BRVVU0RUMkFDUkVTX01VTFRJUExJRVIECXdsZ1RvQnVybgkAawMFCnVzZHRBbW91bnQFBU1VTFQ4CQELZ2V0V2xnUHJpY2UBBQp1c2R0QW1vdW50CQCUCgIFA25pbAkAzAgCBQthY3Jlc0Ftb3VudAkAzAgCBQVNVUxUNgkAzAgCBQthY3Jlc0Ftb3VudAkAzAgCBQl3bGdUb0J1cm4FA25pbAFpAQlzZWxsQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAthY3Jlc0Ftb3VudAgFA3BtdAZhbW91bnQDAwkBASEBCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkBgkBAiE9AgkBBXZhbHVlAQgFA3BtdAdhc3NldElkBQxhY3Jlc0Fzc2V0SWQJAAIBAhRBQ1JFUyBwYXltZW50cyBvbmx5IQMJAGYCBQVNVUxUNwULYWNyZXNBbW91bnQJAAIBCQCsAgIJAKwCAgIWTWluIHBheW1lbnQgc2hvdWxkIGJlIAkBCmZpeGVkUG9pbnQCBQVNVUxUNwAIAgYgQUNSRVMEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBA0kdDAxNzc3MDE3ODE4CQERZ2V0U3dhcExpbWl0QWNyZXMABAtsaW1pdEFjdGlvbggFDSR0MDE3NzcwMTc4MTgCXzEEB21heFVzZHQIBQ0kdDAxNzc3MDE3ODE4Al8yBAhtYXhBY3JlcwkAaAIFB21heFVzZHQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgMJAGYCBQthY3Jlc0Ftb3VudAUIbWF4QWNyZXMJAAIBCQCsAgIJAKwCAgIRWW91IGNhbiBzZWxsIG1heCAJAQpmaXhlZFBvaW50AgUIbWF4QWNyZXMACAIGIEFDUkVTBAp1c2R0QW1vdW50CQBpAgkAaQIFC2FjcmVzQW1vdW50BRVVU0RUMkFDUkVTX01VTFRJUExJRVIAAgkAlAoCCQDOCAIJAMwIAgULbGltaXRBY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleUxhc3RMaW1pdExlZnQJAGUCBQdtYXhVc2R0BQp1c2R0QW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUKdXNkdEFtb3VudAULdXNkdEFzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwUKdXNkdEFtb3VudAFpARFzZWxsQWNyZXNSRUFET05MWQIHYWRkcmVzcwthY3Jlc0Ftb3VudAQNJHQwMTgzMTQxODM2MgkBEWdldFN3YXBMaW1pdEFjcmVzAAQLbGltaXRBY3Rpb24IBQ0kdDAxODMxNDE4MzYyAl8xBAdtYXhVc2R0CAUNJHQwMTgzMTQxODM2MgJfMgQKdXNkdEFtb3VudAkAaQIJAGkCBQthY3Jlc0Ftb3VudAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAIJAJQKAgUDbmlsCQDMCAIFCnVzZHRBbW91bnQJAMwIAgUFTVVMVDcJAMwIAgkAaAIFB21heFVzZHQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgkAzAgCAAAFA25pbAFpARBjb252ZXJ0T2xkU3Rha2VzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQBmAgURT0xEX1NUQUtJTkdfREVBREwIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQACAQkArAICAg9EaXNhYmxlZCB1bnRpbCAJAKQDAQkAaQIFEU9MRF9TVEFLSU5HX0RFQURMAOgHBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA9vbGRBY3Jlc0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE29sZEFjcmVzQ29udHJhY3RLZXkEBmFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQ9vbGRBY3Jlc0FkZHJlc3MJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFB2FkZHJlc3MAAAQJZ290QWNyZXMwAwkAZgIFBmFtb3VudAAACQEMYXNUdXBsZTJJbnRzAQkA/AcEBQ9vbGRBY3Jlc0FkZHJlc3MCFHVuc3Rha2VBY3Jlc0NhbGxiYWNrCQDMCAIFBmFtb3VudAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlAoCAAAAAAQRb2xkU3Rha2luZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFW9sZFN0YWtpbmdDb250cmFjdFN0cgQIbGFuZHNTdHIJAJ0IAgURb2xkU3Rha2luZ0FkZHJlc3MJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzBAtsYW5kc1Jlc3VsdAMJAQlpc0RlZmluZWQBBQhsYW5kc1N0cgQFbGFuZHMJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8DCQBmAgkAkAMBBQVsYW5kcwUUTUFYX0xBTkRTX1RPX0NPTlZFUlQJAAIBCQCsAgIJAKwCAgITWW91IGhhdmUgbW9yZSB0aGFuIAkApAMBBRRNQVhfTEFORFNfVE9fQ09OVkVSVAJHIGxhbmRzIHN0YWtlZCwgcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCwgd2UnbGwgcHJvY2VzcyB5b3VyIGNhc2UgbWFudWFsbHkKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQDCQAAAgULbGFuZEFzc2V0SWQCAAkAAgECF2xhbmRBc3NldElkIGlzIHJlcXVpcmVkBAFyCQEMYXNUdXBsZTVJbnRzAQkA/AcEBRFvbGRTdGFraW5nQWRkcmVzcwITdW5zdGFrZUxhbmRDYWxsYmFjawkAzAgCBQtsYW5kQXNzZXRJZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAMJAAACBQFyBQFyCQCXCgUJAGQCCAUDYWNjAl8xCAUBcgJfMQkAZAIIBQNhY2MCXzIIBQFyAl8yCQBkAggFA2FjYwJfMwgFAXICXzMJAGQCCAUDYWNjAl80CAUBcgJfNAkAZAIIBQNhY2MCXzUIBQFyAl81CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJycgoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJcKBQAAAAAAAAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE0CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgMJAAACBQJycgUCcnIECGZpbmFsaXplCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhx1bnN0YWtlTGFuZHNGaW5hbGl6ZUNhbGxiYWNrCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsAwkAAAIFCGZpbmFsaXplBQhmaW5hbGl6ZQQDcmVxCQD8BwQFD29sZEFjcmVzQWRkcmVzcwIUcmVxdWVzdEFjcmVzQ2FsbGJhY2sJAMwIAgkAZAIJAGQCCQBkAggFAnJyAl8xCAUCcnICXzIIBQJycgJfMwgFAnJyAl80BQNuaWwFA25pbAMJAAACBQNyZXEFA3JlcQQNJHQwMjA4NzYyMTAxNAkBDmlzc3VlTmZ0Q3VzdG9tCAUNaWR4TmFtZVNob3ZlbAUHaWR4S2V5UAUKaWR4Q29sbERpZwUKaWR4UmFyaXR5UAADBQ5pZHhEZXNjclNob3ZlbAUOaWR4Qm9udXNUeXBlRnAIBQFpBmNhbGxlcgQKbmZ0QWN0aW9ucwgFDSR0MDIwODc2MjEwMTQCXzEECm5mdEFzc2V0SWQIBQ0kdDAyMDg3NjIxMDE0Al8yCQCYCgYIBQJycgJfMQgFAnJyAl8yCAUCcnICXzMIBQJycgJfNAgFAnJyAl81BQpuZnRBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCYCgYAAAAAAAAAAAAABQNuaWwEC2R1Y2tBc3NldElkCQELdmFsdWVPckVsc2UCCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzAgAECmR1Y2tSZXN1bHQDCQECIT0CBQtkdWNrQXNzZXRJZAIACQEMYXNUdXBsZTNJbnRzAQkA/AcEBRFvbGRTdGFraW5nQWRkcmVzcwITdW5zdGFrZUR1Y2tDYWxsYmFjawkAzAgCBQtkdWNrQXNzZXRJZAkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAkAlQoDAAAAAAAABAF4CQEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMJAGQCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCCAUJZ290QWNyZXMwAl8xCAULbGFuZHNSZXN1bHQCXzEIBQtsYW5kc1Jlc3VsdAJfMggFC2xhbmRzUmVzdWx0Al8zCAULbGFuZHNSZXN1bHQCXzQIBQpkdWNrUmVzdWx0Al8xCAUKZHVja1Jlc3VsdAJfMggFCmR1Y2tSZXN1bHQCXzMFB2FkZHJlc3MAAAkAlAoCCQDOCAIJAM4IAggFC2xhbmRzUmVzdWx0Al82CAUBeAJfMQUNcHJvbG9nQWN0aW9ucwkAlQoDCAUJZ290QWNyZXMwAl8yCAULbGFuZHNSZXN1bHQCXzUIBQF4Al8yAWkBFHVuc3Rha2VMYW5kc1JFQURPTkxZAQdhZGRyZXNzBBFvbGRTdGFraW5nQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyBAhsYW5kc1N0cgkAnQgCBRFvbGRTdGFraW5nQWRkcmVzcwkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEC2xhbmRzUmVzdWx0AwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyBAVsYW5kcwkAvQkCCQEFdmFsdWUBBQhsYW5kc1N0cgIBXwoBB29uZUxhbmQCA2FjYwtsYW5kQXNzZXRJZAMJAAACBQtsYW5kQXNzZXRJZAIACQACAQIXbGFuZEFzc2V0SWQgaXMgcmVxdWlyZWQEAXIJAQxhc1R1cGxlNEludHMBCQD8BwQFEW9sZFN0YWtpbmdBZGRyZXNzAhN1bnN0YWtlTGFuZFJFQURPTkxZCQDMCAIFC2xhbmRBc3NldElkCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsCQCWCgQJAGQCCAUDYWNjAl8xCAUBcgJfMQkAZAIIBQNhY2MCXzIIBQFyAl8yCQBkAggFA2FjYwJfMwgFAXICXzMJAGQCCAUDYWNjAl80CAUBcgJfNAoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAAAAAAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAlgoEAAAAAAAAAAAJAJQKAgUDbmlsBQtsYW5kc1Jlc3VsdAFpARJzdGFrZUFjcmVzQ2FsbGJhY2sBBGFkZHIDCQECIT0CCAUBaQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFW9sZFN0YWtpbmdDb250cmFjdFN0cgkAAgECEVBlcm1pc3Npb24gZGVuaWVkCQEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQRhZGRyAAABaQEac2ltdWxhdGVTdGFrZUFjcmVzUkVBRE9OTFkCB2FkZHJlc3MLYWRkZWRBbW91bnQECWFtb3VudEtleQkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUHYWRkcmVzcwQObmV3QWNyZXNBbW91bnQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAABQthZGRlZEFtb3VudAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSYWNyZXNTdGFrZFRvdGFsS2V5AAAECXVzZXJGcEtleQkBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEFB2FkZHJlc3MEBW9sZEZwCQELdmFsdWVPckVsc2UCCQCfCAEFCXVzZXJGcEtleQAABAl1c2VyQm9udXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUOYWNyZXMyQ29udHJhY3QJARBrZXlVc2VyRnVsbEJvbnVzAQUHYWRkcmVzcwAABA0kdDAyMzI4NTIzMzcyCQEeZ2V0RmFybWluZ1Bvd2VyQnlBY3Jlc0FuZEJvbnVzAgUObmV3QWNyZXNBbW91bnQFCXVzZXJCb251cwQMbmV3Qm9udXNlZEZwCAUNJHQwMjMyODUyMzM3MgJfMQQHaWdub3JlZAgFDSR0MDIzMjg1MjMzNzICXzIECm9sZFRvdGFsRnAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUdG90YWxGYXJtaW5nUG93ZXJLZXkAAAQKbmV3VG90YWxGcAkAZQIJAGQCBQpvbGRUb3RhbEZwBQxuZXdCb251c2VkRnAFBW9sZEZwCQCUCgIFA25pbAkAzAgCBQVvbGRGcAkAzAgCBQxuZXdCb251c2VkRnAJAMwIAgUKb2xkVG90YWxGcAkAzAgCBQpuZXdUb3RhbEZwBQNuaWwBaQELaXNzdWVQaWNrQzEBCmZvckFkZHJlc3MDCQECIT0CCAUBaQZjYWxsZXIFC3dsZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAQ5pc3N1ZU5mdEN1c3RvbQgFDmlkeE5hbWVQaWNrYXhlBQdpZHhLZXlDBQppZHhDb2xsRGlnBQppZHhSYXJpdHlDAAEFD2lkeERlc2NyUGlja2F4ZQUOaWR4Qm9udXNUeXBlRnAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmZvckFkZHJlc3MBaQEIc3Rha2VORlQABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAZhbW91bnQAAQkAAgECJ05GVCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQHYXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAphc3NldElkU3RyCQDYBAEFB2Fzc2V0SWQEBGFkZHIJAKUIAQgFAWkGY2FsbGVyBAduZnRzS2V5CQEUa2V5U3Rha2VkTkZUc0J5T3duZXIBBQRhZGRyBAduZnRzU3RyCQCiCAEFB25mdHNLZXkEBG5mdHMDCQEJaXNEZWZpbmVkAQUHbmZ0c1N0cgkAvAkCCQEFdmFsdWUBBQduZnRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUEbmZ0cwUKYXNzZXRJZFN0cgkAAgEJAKwCAgIhWW91ciBzdGFrZWQgTkZUcyBhbHJlYWR5IGNvbnRhaW4gBQphc3NldElkU3RyAwkAZwIJAJADAQUEbmZ0cwUXTUFYX05GVFNfU1RBS0VEX0JZX1VTRVIJAAIBCQCsAgIJAKwCAgIZWW91ciBhbHJlYWR5IHN0YWtlZCBtYXggKAkApAMBBRdNQVhfTkZUU19TVEFLRURfQllfVVNFUgIGKSBORlRzBApsaXN0QWN0aW9uCQELU3RyaW5nRW50cnkCBQduZnRzS2V5CQC6CQIJAM0IAgUEbmZ0cwUKYXNzZXRJZFN0cgIBXwMJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzBA0kdDAyNDc4MTI0OTcxCQEQc3Rha2VOZnRJbnRlcm5hbAYFBGFkZHIFCmFzc2V0SWRTdHIJAGgCCQESYm9udXNCeURlc2NyaXB0aW9uAQkBBXZhbHVlAQgFBWFzc2V0C2Rlc2NyaXB0aW9uAJBOCQESa2V5VXNlcldsTmZ0TnVtYmVyAQUEYWRkcgUTa2V5V2xOZnRUb3RhbFN0YWtlZAULTUFYX1dMX05GVFMEB2FjdGlvbnMIBQ0kdDAyNDc4MTI0OTcxAl8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMjQ3ODEyNDk3MQJfMgkAlAoCCQDNCAIJAM4IAgUNcHJvbG9nQWN0aW9ucwUHYWN0aW9ucwUKbGlzdEFjdGlvbgUQd2xnQ2xhaW1lZEFtb3VudAMJAAACCQEPaXNBcmtpbWFsSXNzdWVkAQUFYXNzZXQCAAkAAgECNE9ubHkgV2F2ZXNMYW5kcyBhbmQgQXJraW1hbHMgTkZUIHRva2VucyBhcmUgYWNjZXB0ZWQEDSR0MDI1MTUyMjUzMDMJARBzdGFrZU5mdEludGVybmFsBgUEYWRkcgUKYXNzZXRJZFN0cgUNQVJLX05GVF9CT05VUwkBE2tleVVzZXJBcmtOZnROdW1iZXIBBQRhZGRyBRRrZXlBcmtOZnRUb3RhbFN0YWtlZAUMTUFYX0FSS19ORlRTBAdhY3Rpb25zCAUNJHQwMjUxNTIyNTMwMwJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFDSR0MDI1MTUyMjUzMDMCXzIJAJQKAgkAzQgCCQDOCAIFDXByb2xvZ0FjdGlvbnMFB2FjdGlvbnMFCmxpc3RBY3Rpb24FEHdsZ0NsYWltZWRBbW91bnQBaQEKdW5zdGFrZU5GVAEKYXNzZXRJZFN0cgQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQHYXNzZXRJZAkA2QQBBQphc3NldElkU3RyBARhZGRyCQClCAEIBQFpBmNhbGxlcgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAQHdGltZUtleQkBHmtleVN0YWtlZFRpbWVCeUFzc2V0SWRBbmRPd25lcgIFCmFzc2V0SWRTdHIFBGFkZHIDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCFSBpcyBub3Qgc3Rha2VkIGJ5IHlvdQQHbmZ0c0tleQkBFGtleVN0YWtlZE5GVHNCeU93bmVyAQUEYWRkcgQEbmZ0cwkAvAkCCQELdmFsdWVPckVsc2UCCQCiCAEFB25mdHNLZXkCAAIBXwQDaWR4CQDPCAIFBG5mdHMFCmFzc2V0SWRTdHIDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICH1lvdXIgc3Rha2VkIE5GVHMgZG9uJ3QgY29udGFpbiAFCmFzc2V0SWRTdHIECmxpc3RBY3Rpb24DCQBmAgkAkAMBBQRuZnRzAAEJAQtTdHJpbmdFbnRyeQIFB25mdHNLZXkJALoJAgkA0QgCBQRuZnRzCQEFdmFsdWUBBQNpZHgCAV8JAQtEZWxldGVFbnRyeQEFB25mdHNLZXkEBGlzV0wJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzAwUEaXNXTAQLd2xOZnROdW1iZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVVzZXJXbE5mdE51bWJlcgEFBGFkZHIAAAQIYm9udXNWYWwJAGgCCQESYm9udXNCeURlc2NyaXB0aW9uAQkBBXZhbHVlAQgFBWFzc2V0C2Rlc2NyaXB0aW9uAJBOBA0kdDAyNjQ2ODI2NTQ3CQEZc3Rha2VVbnN0YWtlQWNyZXNJbnRlcm5hbAMAAAUEYWRkcgkBAS0BBQhib251c1ZhbAQHYWN0aW9ucwgFDSR0MDI2NDY4MjY1NDcCXzEEEHdsZ0NsYWltZWRBbW91bnQIBQ0kdDAyNjQ2ODI2NTQ3Al8yCQCUCgIJAM4IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIFB2FjdGlvbnMFCmxpc3RBY3Rpb24JAQxJbnRlZ2VyRW50cnkCCQESa2V5VXNlcldsTmZ0TnVtYmVyAQUEYWRkcgkAZQIFC3dsTmZ0TnVtYmVyAAEJAQxJbnRlZ2VyRW50cnkCBRNrZXlXbE5mdFRvdGFsU3Rha2VkCQCWAwEJAMwIAgAACQDMCAIJAGUCCQELdmFsdWVPckVsc2UCCQCfCAEFE2tleVdsTmZ0VG90YWxTdGFrZWQAAAABBQNuaWwJAQtEZWxldGVFbnRyeQEJAR5rZXlTdGFrZWRUaW1lQnlBc3NldElkQW5kT3duZXICCQDYBAEFB2Fzc2V0SWQFBGFkZHIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50BAthcmtpbWFsTmFtZQkBD2lzQXJraW1hbElzc3VlZAEFBWFzc2V0AwkAAAIFC2Fya2ltYWxOYW1lAgAJAAIBAjRPbmx5IFdhdmVzTGFuZHMgYW5kIEFya2ltYWxzIE5GVCB0b2tlbnMgYXJlIGFjY2VwdGVkBAxhcmtOZnROdW1iZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2tleVVzZXJBcmtOZnROdW1iZXIBBQRhZGRyAAAEDSR0MDI3MjA3MjcyOTEJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAwAABQRhZGRyCQEBLQEFDUFSS19ORlRfQk9OVVMEB2FjdGlvbnMIBQ0kdDAyNzIwNzI3MjkxAl8xBBB3bGdDbGFpbWVkQW1vdW50CAUNJHQwMjcyMDcyNzI5MQJfMgkAlAoCCQDOCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgUHYWN0aW9ucwUKbGlzdEFjdGlvbgkBDEludGVnZXJFbnRyeQIJARNrZXlVc2VyQXJrTmZ0TnVtYmVyAQUEYWRkcgkAZQIFDGFya05mdE51bWJlcgABCQELRGVsZXRlRW50cnkBCQEea2V5U3Rha2VkVGltZUJ5QXNzZXRJZEFuZE93bmVyAgkA2AQBBQdhc3NldElkBQRhZGRyCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAUNcHJvbG9nQWN0aW9ucwUQd2xnQ2xhaW1lZEFtb3VudAFpAQxleGNoYW5nZU5GVHMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQMJAGYCAAMJAJADAQgFAWkIcGF5bWVudHMJAAIBAilNaW4gb25lIFdMR09MRCBhbmQgMiBORlQgcGF5bWVudHMgYWxsb3dlZAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAoJAAIBAilNYXggb25lIFdMR09MRCBhbmQgOSBORlQgcGF5bWVudHMgYWxsb3dlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIKAQVhZGRVcAIDYWNjA3BtdAQHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUDcG10B2Fzc2V0SWQCGldBVkVTIHBheW1lbnRzIG5vdCBhbGxvd2VkAwkAAAIFB2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAJYKBAkAZAIIBQNhY2MCXzEIBQNwbXQGYW1vdW50CAUDYWNjAl8yCAUDYWNjAl8zCAUDYWNjAl80BAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkAwkBAiE9AggFBWFzc2V0Bmlzc3VlcgUEdGhpcwkAAgECG09ubHkgV0wtaXNzdWVkIE5GVHMgYWxsb3dlZAQIcmFyaXR5SXgJARZyYXJpdHlJZHhCeURlc2NyaXByaW9uAQkBBXZhbHVlAQgFBWFzc2V0C2Rlc2NyaXB0aW9uAwMJAGYCCAUDYWNjAl80AAAJAQIhPQIFCHJhcml0eUl4CAUDYWNjAl80BwkAAgECLVlvdSBjYW4gZXhjaGFuZ2Ugb25seSBORlRzIG9mIHRoZSBzYW1lIHJhcml0eQQJYm9udXNQZXJjCQESYm9udXNCeURlc2NyaXB0aW9uAQkBBXZhbHVlAQgFBWFzc2V0C2Rlc2NyaXB0aW9uCQCWCgQIBQNhY2MCXzEJAGQCCAUDYWNjAl8yBQlib251c1BlcmMJAM0IAggFA2FjYwJfMwkBBEJ1cm4CBQdhc3NldElkAAEFCHJhcml0eUl4BA0kdDAyODY4MDI4ODk2CgACJGwIBQFpCHBheW1lbnRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAAAAUDbmlsAP///////////wEKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBWFkZFVwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBAZ3bGdGZWUIBQ0kdDAyODY4MDI4ODk2Al8xBAp0b3RhbEJvbnVzCAUNJHQwMjg2ODAyODg5NgJfMgQLYnVybkFjdGlvbnMIBQ0kdDAyODY4MDI4ODk2Al8zBAlyYXJpdHlJZHgIBQ0kdDAyODY4MDI4ODk2Al80BAxuZXdSYXJpdHlJZHgDCQAAAgUJcmFyaXR5SWR4BQppZHhSYXJpdHlDAwkAZgIJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkQwUKdG90YWxCb251cwUKaWR4UmFyaXR5QwMJAGYCCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZFUFCnRvdGFsQm9udXMFCmlkeFJhcml0eVUJAAIBCQCsAgIJAKwCAgI6WW91IGNhbiBhZHZhbmNlIG9ubHkgb25lIGxldmVsIG9mIHJhcml0eSwgbWF4IHRvdGFsIGJvbnVzIAkApAMBCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZFUCASUDCQAAAgUJcmFyaXR5SWR4BQppZHhSYXJpdHlVAwkAZgIJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkVQUKdG90YWxCb251cwUKaWR4UmFyaXR5VQMJAGYCCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZEwFCnRvdGFsQm9udXMFCmlkeFJhcml0eUwJAAIBCQCsAgIJAKwCAgI6WW91IGNhbiBhZHZhbmNlIG9ubHkgb25lIGxldmVsIG9mIHJhcml0eSwgbWF4IHRvdGFsIGJvbnVzIAkApAMBCQCRAwIFEHJhcml0eVRocmVzaG9sZHMFDWlkeFRocmVzaG9sZEwCASUDCQAAAgUJcmFyaXR5SWR4BQppZHhSYXJpdHlMAwkAZgIJAJEDAgUQcmFyaXR5VGhyZXNob2xkcwUNaWR4VGhyZXNob2xkTAUKdG90YWxCb251cwUKaWR4UmFyaXR5TAUKaWR4UmFyaXR5RQMJAAACBQlyYXJpdHlJZHgFCmlkeFJhcml0eUUFCmlkeFJhcml0eUUDCQAAAgUJcmFyaXR5SWR4BQppZHhSYXJpdHlQCQACAQImWW91IGNhbid0IGV4Y2hhbmdlIE5GVHMgb2YgdGhpcyByYXJpdHkJAAIBAg5Vbmtub3duIHJhcml0eQQJbWluV2xnRmVlCQBrAwUKdG90YWxCb251cwUGTVVMVDE0CQELZ2V0V2xnUHJpY2UBAAAEBmNoYW5nZQkAZQIFBndsZ0ZlZQUJbWluV2xnRmVlBAdmb3JUZWFtCQBpAgUJbWluV2xnRmVlAAIECXdsZ1JlbWFpbgkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIKYnVybldsZ29sZAkAzAgCCQBlAgUJbWluV2xnRmVlBQdmb3JUZWFtBQNuaWwFA25pbAMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICAhNZb3UgbmVlZCB0byBhdHRhY2ggCQEKZml4ZWRQb2ludAIFCW1pbldsZ0ZlZQAIAg4gV0xHT0xEIGFzIGZlZQQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQUKd2xnQXNzZXRJZAUDbmlsBQNuaWwEDSR0MDMwNDMzMzA1OTQJAQ5pc3N1ZU5mdEN1c3RvbQgFDmlkeE5hbWVQaWNrYXhlBQxuZXdSYXJpdHlJZHgFCmlkeENvbGxEaWcFDG5ld1Jhcml0eUlkeAUKdG90YWxCb251cwUPaWR4RGVzY3JQaWNrYXhlBQ5pZHhCb251c1R5cGVGcAgFAWkGY2FsbGVyBA9pc3N1ZU5mdEFjdGlvbnMIBQ0kdDAzMDQzMzMwNTk0Al8xBApuZnRBc3NldElkCAUNJHQwMzA0MzMzMDU5NAJfMgQGYnVybmVkCQCQAwEFC2J1cm5BY3Rpb25zBBJidXJuQ291bnRlckFjdGlvbnMDCQAAAgUGYnVybmVkAAAFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5TmZ0VG90YWxCdXJuZWQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFEWtleU5mdFRvdGFsQnVybmVkAAAFBmJ1cm5lZAUDbmlsCQCUCgIJAM0IAgkAzggCCQDOCAIJAM4IAgkAzggCBQ9pc3N1ZU5mdEFjdGlvbnMFC2J1cm5BY3Rpb25zBRJidXJuQ291bnRlckFjdGlvbnMFDXByb2xvZ0FjdGlvbnMFDWNoYW5nZUFjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFC3dsZ0NvbnRyYWN0BQt0ZWFtQWRkcktleQUHZm9yVGVhbQUKd2xnQXNzZXRJZAkAlAoCBQpuZnRBc3NldElkBQl3bGdSZW1haW4BaQEMb3Blbk5mdENoZXN0AAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQJd2xnQW1vdW50CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFCndsZ0Fzc2V0SWQJAAIBAhVXTEdPTEQgcGF5bWVudHMgb25seSEECW1pbldsZ0ZlZQkAawMFFE5GVF9DSEVTVF9QUklDRV9VU0RUBQVNVUxUOAkBC2dldFdsZ1ByaWNlAQAABAZjaGFuZ2UJAGUCBQl3bGdBbW91bnQFCW1pbldsZ0ZlZQQHZm9yVGVhbQkAaQIFCW1pbldsZ0ZlZQACBAl3bGdSZW1haW4JAQVhc0ludAEJAPwHBAULd2xnQ29udHJhY3QCCmJ1cm5XbGdvbGQJAMwIAgkAZQIFCW1pbldsZ0ZlZQUHZm9yVGVhbQUDbmlsBQNuaWwDCQBmAgAABQZjaGFuZ2UJAAIBCQCsAgIJAKwCAgITWW91IG5lZWQgdG8gYXR0YWNoIAkBCmZpeGVkUG9pbnQCBQltaW5XbGdGZWUACAIOIFdMR09MRCBhcyBmZWUEDWNoYW5nZUFjdGlvbnMDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZjaGFuZ2UFCndsZ0Fzc2V0SWQFA25pbAUDbmlsBARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQLZmluaXNoQmxvY2sJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQlmaW5pc2hLZXkCJFlvdSBoYXZlIHRvIGNvbW1pdEZvclJhbmRvbSgpIGZpcnN0IQMJAGYCBQtmaW5pc2hCbG9jawUGaGVpZ2h0CQACAQkArAICAjRSYW5kb20gbnVtYmVyIGlzIG5vdCByZWFkeSB5ZXQsIHdhaXQgdW50aWwgaGVpZ2h0ID0gCQCkAwEFC2ZpbmlzaEJsb2NrBAdlbnRyb3B5CQEFdmFsdWUBCAkBBXZhbHVlAQkA7QcBBQtmaW5pc2hCbG9jawN2cmYEBHNhbHQJANkEAQkAkQMCCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBFGtleUN1cldlZWtUeElkQnlVc2VyAQUEYWRkcgIKNDJfREVGQVVMVAIBXwABBARyYW5kCQEPZ2V0UmFuZG9tTnVtYmVyAwBkBQRzYWx0BQdlbnRyb3B5BA0kdDAzMjYxMzMyODg1AwkAZgIAVAUEcmFuZAkAlAoCAAEFCmlkeFJhcml0eUMDCQBmAgBiBQRyYW5kCQCUCgIABQUKaWR4UmFyaXR5VQkAlAoCAAoFCmlkeFJhcml0eUwEBWJvbnVzCAUNJHQwMzI2MTMzMjg4NQJfMQQJcmFyaXR5SWR4CAUNJHQwMzI2MTMzMjg4NQJfMgQNJHQwMzI4ODgzMzAzOAkBDmlzc3VlTmZ0Q3VzdG9tCAUOaWR4TmFtZVBpY2theGUFCXJhcml0eUlkeAUKaWR4Q29sbERpZwUJcmFyaXR5SWR4BQVib251cwUPaWR4RGVzY3JQaWNrYXhlBQ5pZHhCb251c1R5cGVGcAgFAWkGY2FsbGVyBA9pc3N1ZU5mdEFjdGlvbnMIBQ0kdDAzMjg4ODMzMDM4Al8xBApuZnRBc3NldElkCAUNJHQwMzI4ODgzMzAzOAJfMgkAlAoCCQDNCAIJAM0IAgkAzggCCQDOCAIFD2lzc3VlTmZ0QWN0aW9ucwUNcHJvbG9nQWN0aW9ucwUNY2hhbmdlQWN0aW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgULd2xnQ29udHJhY3QFC3RlYW1BZGRyS2V5BQdmb3JUZWFtBQp3bGdBc3NldElkCQELRGVsZXRlRW50cnkBBQlmaW5pc2hLZXkJAJQKAgUKbmZ0QXNzZXRJZAUJd2xnUmVtYWluAWkBD2NvbW1pdEZvclJhbmRvbQAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpBARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgMJAQlpc0RlZmluZWQBCQCfCAEFCWZpbmlzaEtleQkAAgECLllvdSBhbHJlYWR5IGNvbW1pdGVkIGZvciByYW5kb20sIHBsZWFzZSB1c2UgaXQEC2ZpbmlzaEJsb2NrCQBkAgUGaGVpZ2h0BQxSQU5ET01fREVMQVkJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlmaW5pc2hLZXkFC2ZpbmlzaEJsb2NrBQNuaWwFDXByb2xvZ0FjdGlvbnMFC2ZpbmlzaEJsb2NrAWkBDmRyYXdEYXlseVByb21vAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAV0b2RheQkAaQIFBmhlaWdodAUKREFZX0JMT0NLUwQIbWF4VmFsdWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUa2V5VG90YWxQcm9tb1RpY2tldHMAAAMJAAACBQhtYXhWYWx1ZQAACQACAQISTm8gdGlja2V0cyB0byBkcmF3BAFiCQBoAgUFdG9kYXkFCkRBWV9CTE9DS1MEAWgDCQBmAgUBYgUKVlJGX09GRlNFVAUBYgkAZAIFAWIFClZSRl9PRkZTRVQEB2VudHJvcHkJAQV2YWx1ZQEICQEFdmFsdWUBCQDtBwEFAWgDdnJmBAhwcm9tb01hcAkBC3ZhbHVlT3JFbHNlAgkAoggBBQtrZXlQcm9tb01hcAIAAwkAAAIFCHByb21vTWFwAgAJAAIBAg9ObyBwYXJ0aWNpcGFudHMKAQpzaW5nbGVEcmF3AgJhYwFqAwkAZwIFAWoFDnByb21vTnVtUHJpemVzBQJhYwQEcmFuZAkBD2dldFJhbmRvbU51bWJlcgMIBQJhYwJfMQgFAmFjAl8yBQdlbnRyb3B5BAlwcm9tb0xpc3QDCQAAAggFAmFjAl8zAgAFA25pbAkAvQkCCAUCYWMCXzMCAV8KAQxjb3VudFRpY2tldHMCA2FjYwJlbAQFcGFydHMJALUJAgUCZWwCAToEBGFkZHIJAJEDAgUFcGFydHMAAAQHdGlja2V0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBXBhcnRzAAEECG5ld1RvdGFsCQBkAggFA2FjYwJfMQUHdGlja2V0cwMDCQAAAggFA2FjYwJfMwIACQBmAgUIbmV3VG90YWwFBHJhbmQHCQCVCgMFCG5ld1RvdGFsBQd0aWNrZXRzBQRhZGRyCQCVCgMFCG5ld1RvdGFsCAUDYWNjAl8yCAUDYWNjAl8zBAFyCgACJGwFCXByb21vTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwAAAAACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEMY291bnRUaWNrZXRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAyMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAQCBAQCCAQCDAQCEAQCFAQCGAQCHAQCIAQCJAQCKAQCLAQCMAQCNAQCOAQCPAQCQAQCRAQCSAQCTAQCUAQCVAQCWAQCXAQCYAQCZAQCaAQCbAQCcAQCdAQCeAQCfAQCgAQChAQCiAQCjAQCkAQClAQCmAQCnAQCoAQCpAQCqAQCrAQCsAQCtAQCuAQCvAQCwAQCxAQCyAQCzAQC0AQC1AQC2AQC3AQC4AQC5AQC6AQC7AQC8AQC9AQC+AQC/AQDAAQDBAQDCAQDDAQDEAQDFAQDGAQDHAQDIAQQGd2lubmVyCAUBcgJfMwMJAAACBQZ3aW5uZXICAAUCYWMECG1hcFBhcnRzCQC9CQIIBQJhYwJfMwUGd2lubmVyBAZuZXdNYXADCQAAAgkAkQMCBQhtYXBQYXJ0cwAAAgAJALACAgkAkQMCBQhtYXBQYXJ0cwABAAUJAKwCAgkAswICCQCRAwIFCG1hcFBhcnRzAAAAAQkAsAICCQCRAwIFCG1hcFBhcnRzAAEABAQNJHQwMzU1ODQzNTczNQkBDXN0YWtlQWNyZXNGb3IDBQZ3aW5uZXIJAJEDAgUScHJvbW9Bd2FyZFBlclJvdW5kBQFqBgQMc3Rha2VBY3Rpb25zCAUNJHQwMzU1ODQzNTczNQJfMQQXaWdub3JlZFdsZ0NsYWltZWRBbW91bnQIBQ0kdDAzNTU4NDM1NzM1Al8yBAduZXdTYWx0CQDZBAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQZ3aW5uZXICB0RFRkFVTFQJAJcKBQkAZQIIBQJhYwJfMQgFAXICXzIFB25ld1NhbHQFBm5ld01hcAkAzQgCCAUCYWMCXzQFDHN0YWtlQWN0aW9ucwkAzQgCCAUCYWMCXzUFBndpbm5lcgQFZHJhd3MKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlwoFBQhtYXhWYWx1ZQgFAWkNdHJhbnNhY3Rpb25JZAUIcHJvbW9NYXAFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpzaW5nbGVEcmF3AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyAzCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADCQCUCgIJAM0IAgkAzQgCCQDNCAIIBQVkcmF3cwJfNAkBC1N0cmluZ0VudHJ5AgULa2V5UHJvbW9NYXAIBQVkcmF3cwJfMwkBDEludGVnZXJFbnRyeQIFFGtleVRvdGFsUHJvbW9UaWNrZXRzCAUFZHJhd3MCXzEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEYWlseVdpbm5lcnMBBQV0b2RheQkAuQkCCAUFZHJhd3MCXzUCAV8AAADvyN+v", "height": 3412632, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5xymvw3vMy4b4m88chQRYRMMTs3NDFw5365ta7q3YGqm Next: 3rSTnyXJaMwa8kjU9ftu4g8L9VgB6cd8xrQYj6cGFUkt Diff:
OldNewDifferences
208208
209209 let ap = "promoMap"
210210
211-func aq (ar) = {
212- let m = ar
211+func aq (ar) = ("dailyWinners_" + toString(ar))
212+
213+
214+func as (at) = {
215+ let m = at
213216 if ($isInstanceOf(m, "Int"))
214217 then {
215- let as = m
216- as
218+ let au = m
219+ au
217220 }
218221 else throw("fail to cast into Int")
219222 }
220223
221224
222-func at (au) = {
223- let m = au
225+func av (aw) = {
226+ let m = aw
224227 if ($isInstanceOf(m, "(Int, Int, Int, Int, Int)"))
225228 then {
226- let av = m
227- av
229+ let ax = m
230+ ax
228231 }
229232 else throw("fail to cast into (Int, Int, Int, Int, Int)")
230233 }
231234
232235
233-func aw (au) = {
234- let m = au
236+func ay (aw) = {
237+ let m = aw
235238 if ($isInstanceOf(m, "(Int, Int, Int, Int)"))
236239 then {
237- let av = m
238- av
240+ let ax = m
241+ ax
239242 }
240243 else throw("fail to cast into (Int, Int, Int, Int)")
241244 }
242245
243246
244-func ax (au) = {
245- let m = au
247+func az (aw) = {
248+ let m = aw
246249 if ($isInstanceOf(m, "(Int, Int, Int)"))
247250 then {
248- let av = m
249- av
251+ let ax = m
252+ ax
250253 }
251254 else throw("fail to cast into (Int, Int, Int)")
252255 }
253256
254257
255-func ay (au) = {
256- let m = au
258+func aA (aw) = {
259+ let m = aw
257260 if ($isInstanceOf(m, "(Int, Int)"))
258261 then {
259- let av = m
260- av
262+ let ax = m
263+ ax
261264 }
262265 else throw("fail to cast into (Int, Int)")
263266 }
264267
265268
266-func az (au,aA) = {
267- let aB = pow(10, 0, aA, 0, 0, DOWN)
268- let aC = toString((au % aB))
269- let aD = drop(toString(aB), (1 + size(aC)))
270- (((toString((au / aB)) + ".") + aD) + aC)
269+func aB (aw,aC) = {
270+ let aD = pow(10, 0, aC, 0, 0, DOWN)
271+ let aE = toString((aw % aD))
272+ let aF = drop(toString(aD), (1 + size(aE)))
273+ (((toString((aw / aD)) + ".") + aF) + aE)
271274 }
272275
273276
274-func aE (aF,aG,aH) = if ((0 >= aF))
277+func aG (aH,aI,aJ) = if ((0 >= aH))
275278 then throw("maxValue should be > 0")
276279 else {
277- let aI = sha256_16Kb((aG + aH))
278- (toInt(aI) % aF)
280+ let aK = sha256_16Kb((aI + aJ))
281+ (toInt(aK) % aH)
279282 }
280283
281284
282-func aJ (au,aK) = {
283- let aL = toString(au)
284- let aD = drop(toString(pow(10, 0, (aK - size(aL)), 0, 0, DOWN)), 1)
285- (aD + aL)
285+func aL (aw,aM) = {
286+ let aN = toString(aw)
287+ let aF = drop(toString(pow(10, 0, (aM - size(aN)), 0, 0, DOWN)), 1)
288+ (aF + aN)
286289 }
287290
288291
289-let aM = 1000000
292+let aO = 1000000
290293
291-let aN = 100000000
294+let aP = 100000000
292295
293-let aO = "wlg_issuedAmount"
296+let aQ = "wlg_issuedAmount"
294297
295-let aP = "zbill_issuedAmount"
298+let aR = "zbill_issuedAmount"
296299
297-func aQ (X) = ("acresStakedAmountByUser_" + X)
300+func aS (X) = ("acresStakedAmountByUser_" + X)
298301
299302
300-func aR (X) = ("farmingPowerByUser_" + X)
303+func aT (X) = ("farmingPowerByUser_" + X)
301304
302305
303-let aS = "acresStakedAmountTotal"
306+let aU = "acresStakedAmountTotal"
304307
305-let aT = "totalFarmingPower"
308+let aV = "totalFarmingPower"
306309
307-let aU = 3
310+let aW = 3
308311
309-let aV = 1
312+let aX = 1
310313
311-let aW = 5000
314+let aY = 5000
312315
313-let aX = 4
316+let aZ = 4
314317
315-let aY = "nftTotalIssued"
318+let ba = "nftTotalIssued"
316319
317-let aZ = "nftTotalBurned"
320+let bb = "nftTotalBurned"
318321
319-let ba = "WlNftTotalStaked"
322+let bc = "WlNftTotalStaked"
320323
321-let bb = "ArkNftTotalStaked"
324+let bd = "ArkNftTotalStaked"
322325
323-func bc (ak) = ("nftNumberByAssetId_" + ak)
326+func be (ak) = ("nftNumberByAssetId_" + ak)
324327
325328
326-func bd (X) = ("userWlNftNumber_" + X)
329+func bf (X) = ("userWlNftNumber_" + X)
327330
328331
329-func be (X) = ("userArkNftNumber_" + X)
332+func bg (X) = ("userArkNftNumber_" + X)
330333
331334
332-func bf (X) = ("userFullBonus_" + X)
335+func bh (X) = ("userFullBonus_" + X)
333336
334337
335-let bg = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
338+let bi = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
336339
337-func bh (bi) = {
338- let bj = ((bi + 99999999) / aN)
339- func bk (bl,bm) = if ((bm >= bj))
340- then bl
341- else (bl + 1)
340+func bj (bk) = {
341+ let bl = ((bk + 99999999) / aP)
342+ func bm (bn,bo) = if ((bo >= bl))
343+ then bn
344+ else (bn + 1)
342345
343- let bn = bg
344- let bo = size(bn)
345- let bp = 0
346- func bq (br,bs) = if ((bs >= bo))
347- then br
348- else bk(br, bn[bs])
346+ let bp = bi
347+ let bq = size(bp)
348+ let br = 0
349+ func bs (bt,bu) = if ((bu >= bq))
350+ then bt
351+ else bm(bt, bp[bu])
349352
350- func bt (br,bs) = if ((bs >= bo))
351- then br
353+ func bv (bt,bu) = if ((bu >= bq))
354+ then bt
352355 else throw("List size exceeds 10")
353356
354- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
357+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
355358 }
356359
357360
358-func bu (bi) = ((bi * 20) * (bh(bi) + 4))
361+func bw (bk) = ((bk * 20) * (bj(bk) + 4))
359362
360363
361-func bv (bi,bw) = {
362- let bx = bu(bi)
363- $Tuple2(fraction(bx, (aM + bw), aM), bx)
364+func bx (bk,by) = {
365+ let bz = bw(bk)
366+ $Tuple2(fraction(bz, (aO + by), aO), bz)
364367 }
365368
366369
367-let by = "teamAddr"
370+let bA = "teamAddr"
368371
369-func bz (X) = ("lastArbTimeUser_" + X)
372+func bB (X) = ("lastArbTimeUser_" + X)
370373
371374
372-let bA = 1733346000000
375+let bC = 1733346000000
373376
374-let bB = 14
377+let bD = 14
375378
376-let bC = "lastAcresSellTime"
379+let bE = "lastAcresSellTime"
377380
378-let bD = "lastLimitLeft"
381+let bF = "lastLimitLeft"
379382
380-let bE = ["Gold shovel", "Pickaxe"]
383+let bG = ["Gold shovel", "Pickaxe"]
381384
382-let bF = ["Reward for early birds", "Increases FarmPower"]
385+let bH = ["Reward for early birds", "Increases FarmPower"]
383386
384-let bG = 0
387+let bI = 0
385388
386-let bH = 1
389+let bJ = 1
387390
388-let bI = [5, 10, 20]
391+let bK = [5, 10, 20]
389392
390-let bJ = 0
393+let bL = 0
391394
392-let bK = 1
395+let bM = 1
393396
394-let bL = 2
397+let bN = 2
395398
396-let bM = ["SHOVEL", "PICKAXE"]
399+let bO = ["SHOVEL", "PICKAXE"]
397400
398-let bN = 0
401+let bP = 0
399402
400-let bO = 1
403+let bQ = 1
401404
402-let bP = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
405+let bR = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
403406
404-let bQ = 0
407+let bS = 0
405408
406-let bR = 4
409+let bT = 4
407410
408-let bS = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
411+let bU = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
409412
410-let bT = 0
413+let bV = 0
411414
412-let bU = 1
415+let bW = 1
413416
414-let bV = 2
417+let bX = 2
415418
416-let bW = 3
419+let bY = 3
417420
418-let bX = 4
421+let bZ = 4
419422
420-let bY = ["Digging tools"]
421-
422-let bZ = 0
423-
424-let ca = ["FarmPower"]
423+let ca = ["Digging tools"]
425424
426425 let cb = 0
427426
428-func cc (cd) = if (if ((cd.originCaller != P))
427+let cc = ["FarmPower"]
428+
429+let cd = 0
430+
431+func ce (cf) = if (if ((cf.originCaller != P))
429432 then valueOrElse(getBoolean(V()), false)
430433 else false)
431434 then throw("Contracts are under maintenance")
432435 else {
433- let X = toString(cd.originCaller)
434- let ce = (height / p)
435- let cf = W(X)
436- let cg = getString(cf)
437- let ch = toBase58String(cd.transactionId)
438- let ci = ((toString(ce) + "_") + ch)
439- let cj = Y(X)
440- if (isDefined(cg))
436+ let X = toString(cf.originCaller)
437+ let cg = (height / p)
438+ let ch = W(X)
439+ let ci = getString(ch)
440+ let cj = toBase58String(cf.transactionId)
441+ let ck = ((toString(cg) + "_") + cj)
442+ let cl = Y(X)
443+ if (isDefined(ci))
441444 then {
442- let ck = split(value(cg), "_")
443- if ((ck[0] == toString(ce)))
444- then [StringEntry(cf, ci), StringEntry(cj, ci)]
445- else if ((ck[0] == toString((ce - 1))))
446- then [StringEntry(cj, ci)]
445+ let cm = split(value(ci), "_")
446+ if ((cm[0] == toString(cg)))
447+ then [StringEntry(ch, ck), StringEntry(cl, ck)]
448+ else if ((cm[0] == toString((cg - 1))))
449+ then [StringEntry(cl, ck)]
447450 else {
448- let cl = getStringValue(cj)
449- let cm = split(cl, "_")
450- if ((cm[0] == toString(ce)))
451- then [StringEntry(cj, ci)]
452- else [StringEntry(cf, cl), StringEntry(cj, ci)]
451+ let cn = getStringValue(cl)
452+ let co = split(cn, "_")
453+ if ((co[0] == toString(cg)))
454+ then [StringEntry(cl, ck)]
455+ else [StringEntry(ch, cn), StringEntry(cl, ck)]
453456 }
454457 }
455- else [StringEntry(cf, ci), StringEntry(cj, ci)]
458+ else [StringEntry(ch, ck), StringEntry(cl, ck)]
456459 }
457460
458461
459-func cn (co,cp,cq,cr,cs,ct,cu,cv) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + co) + "\", ") + "\"number\": ") + toString(cp)) + ", ") + "\"collection\": \"") + cq) + "\", ") + "\"name\": \"") + cr) + "\", ") + "\"description\": \"") + cs) + "\", ") + "\"rare\": \"") + ct) + "\", ") + "\"bonus\": ") + toString(cu)) + ", ") + "\"bonusType\": \"") + cv) + "\"}")
462+func cp (cq,cr,cs,ct,cu,cv,cw,cx) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + cq) + "\", ") + "\"number\": ") + toString(cr)) + ", ") + "\"collection\": \"") + cs) + "\", ") + "\"name\": \"") + ct) + "\", ") + "\"description\": \"") + cu) + "\", ") + "\"rare\": \"") + cv) + "\", ") + "\"bonus\": ") + toString(cw)) + ", ") + "\"bonusType\": \"") + cx) + "\"}")
460463
461464
462-func cw (cx,cy,cz,cA,cB,cC,cD,X) = {
463- let cp = valueOrElse(getInteger(aY), 0)
464- let ct = bS[cA]
465- let cr = (((bM[cx] + "-") + take(ct, 1)) + toString(cB))
466- let cE = Issue(cr, cn(bP[cy], cp, bY[cz], bE[cx], bF[cC], bS[cA], cB, ca[cD]), 1, 0, false)
467- let cF = calculateAssetId(cE)
468- $Tuple2([cE, IntegerEntry(aY, (cp + 1)), IntegerEntry(bc(toBase58String(cF)), cp), ScriptTransfer(X, 1, cF)], cF)
465+func cy (cz,cA,cB,cC,cD,cE,cF,X) = {
466+ let cr = valueOrElse(getInteger(ba), 0)
467+ let cv = bU[cC]
468+ let ct = (((bO[cz] + "-") + take(cv, 1)) + toString(cD))
469+ let cG = Issue(ct, cp(bR[cA], cr, ca[cB], bG[cz], bH[cE], bU[cC], cD, cc[cF]), 1, 0, false)
470+ let cH = calculateAssetId(cG)
471+ $Tuple2([cG, IntegerEntry(ba, (cr + 1)), IntegerEntry(be(toBase58String(cH)), cr), ScriptTransfer(X, 1, cH)], cH)
469472 }
470473
471474
472-func cG (cs) = if (!(contains(cs, "\"bonusType\": \"FarmPower\"")))
473- then throw(("NFT is not supported: " + cs))
475+func cI (cu) = if (!(contains(cu, "\"bonusType\": \"FarmPower\"")))
476+ then throw(("NFT is not supported: " + cu))
474477 else {
475- let cH = split_4C(split_4C(cs, "\"bonus\":")[1], ",")[0]
476- parseIntValue(drop(cH, (valueOrElse(lastIndexOf(cH, " "), -1) + 1)))
478+ let cJ = split_4C(split_4C(cu, "\"bonus\":")[1], ",")[0]
479+ parseIntValue(drop(cJ, (valueOrElse(lastIndexOf(cJ, " "), -1) + 1)))
477480 }
478481
479482
480-func cI (cs) = if (!(contains(cs, "\"rare\"")))
481- then throw(("NFT is not supported: " + cs))
483+func cK (cu) = if (!(contains(cu, "\"rare\"")))
484+ then throw(("NFT is not supported: " + cu))
482485 else {
483- let cJ = split_4C(split_4C(split_4C(cs, "\"rare\"")[1], ",")[0], "\"")[1]
484- value(indexOf(bS, cJ))
486+ let cL = split_4C(split_4C(split_4C(cu, "\"rare\"")[1], ",")[0], "\"")[1]
487+ value(indexOf(bU, cL))
485488 }
486489
487490
488-func cK (cL,x,cM) = if (if ((cL == 0))
489- then (cM == 0)
491+func cM (cN,x,cO) = if (if ((cN == 0))
492+ then (cO == 0)
490493 else false)
491494 then throw("Nothing to do")
492495 else {
493- let cN = invoke(R, "onStakeUnstakeLand", [x], nil)
494- if ((cN == cN))
496+ let cP = invoke(R, "onStakeUnstakeLand", [x], nil)
497+ if ((cP == cP))
495498 then {
496- let cO = lastBlock.timestamp
497- let cP = af(x)
498- let cQ = aQ(x)
499- let cR = valueOrElse(getInteger(cQ), 0)
500- if (if ((0 > cL))
501- then (0 > (cR + cL))
499+ let cQ = lastBlock.timestamp
500+ let cR = af(x)
501+ let cS = aS(x)
502+ let cT = valueOrElse(getInteger(cS), 0)
503+ if (if ((0 > cN))
504+ then (0 > (cT + cN))
502505 else false)
503- then throw(((("You have only " + az(cR, 8)) + " ACRES staked, tried to unstake ") + az(-(cL), 8)))
506+ then throw(((("You have only " + aB(cT, 8)) + " ACRES staked, tried to unstake ") + aB(-(cN), 8)))
504507 else {
505- let cS = (cR + cL)
506- let cT = valueOrElse(getInteger(aS), 0)
507- let cU = aR(x)
508- let cV = valueOrElse(getInteger(cU), 0)
509- let cW = bf(x)
510- let cX = valueOrElse(getInteger(Q, cW), 0)
511- if (if ((0 > cM))
512- then (0 > (cX + cM))
508+ let cU = (cT + cN)
509+ let cV = valueOrElse(getInteger(aU), 0)
510+ let cW = aT(x)
511+ let cX = valueOrElse(getInteger(cW), 0)
512+ let cY = bh(x)
513+ let cZ = valueOrElse(getInteger(Q, cY), 0)
514+ if (if ((0 > cO))
515+ then (0 > (cZ + cO))
513516 else false)
514- then throw((((("You have only " + az(cX, 4)) + "% bonus, and tried to unstake ") + az(-(cM), 4)) + "%"))
517+ then throw((((("You have only " + aB(cZ, 4)) + "% bonus, and tried to unstake ") + aB(-(cO), 4)) + "%"))
515518 else {
516- let cY = bv(cS, (cX + cM))
517- let cZ = cY._1
518- let da = cY._2
519- let db = valueOrElse(getInteger(aT), 0)
520- let dc = if ((cL == 0))
519+ let da = bx(cU, (cZ + cO))
520+ let db = da._1
521+ let dc = da._2
522+ let dd = valueOrElse(getInteger(aV), 0)
523+ let de = if ((cN == 0))
521524 then nil
522- else [IntegerEntry(cQ, cS), IntegerEntry(aS, (cT + cL))]
523- let dd = if ((cM == 0))
525+ else [IntegerEntry(cS, cU), IntegerEntry(aU, (cV + cN))]
526+ let df = if ((cO == 0))
524527 then nil
525- else [IntegerEntry(cW, (cX + cM))]
526- $Tuple2(((((dc ++ dd) :+ IntegerEntry(cP, lastBlock.timestamp)) :+ IntegerEntry(cU, cZ)) :+ IntegerEntry(aT, ((db + cZ) - cV))), cN)
528+ else [IntegerEntry(cY, (cZ + cO))]
529+ $Tuple2(((((de ++ df) :+ IntegerEntry(cR, lastBlock.timestamp)) :+ IntegerEntry(cW, db)) :+ IntegerEntry(aV, ((dd + db) - cX))), cP)
527530 }
528531 }
529532 }
531534 }
532535
533536
534-func de (df) = {
535- let dg = valueOrErrorMessage(getInteger(R, aO), "WLGOLD is not issued yet")
536- let dh = assetBalance(R, r)
537- let di = (assetBalance(Q, r) - df)
538- let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
539- let dk = ((di + dh) + dj)
540- fraction(dk, d, dg)
537+func dg (dh) = {
538+ let di = valueOrErrorMessage(getInteger(R, aQ), "WLGOLD is not issued yet")
539+ let dj = assetBalance(R, r)
540+ let dk = (assetBalance(Q, r) - dh)
541+ let dl = (assetBalance(S, r) + valueOrElse(getInteger(S, aR), 0))
542+ let dm = ((dk + dj) + dl)
543+ fraction(dm, d, di)
541544 }
542545
543546
544-func dl () = {
545- let dh = assetBalance(R, r)
546- let di = assetBalance(this, r)
547- let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
548- let dm = (((di + dh) + dj) / h)
549- let dn = valueOrElse(getInteger(bD), dm)
550- let do = valueOrElse(getInteger(bC), 0)
551- let cO = lastBlock.timestamp
552- let dp = (dn + fraction(dm, (cO - do), f))
553- let dq = min([dp, dm])
554- $Tuple2(IntegerEntry(bC, cO), dq)
547+func dn () = {
548+ let dj = assetBalance(R, r)
549+ let dk = assetBalance(this, r)
550+ let dl = (assetBalance(S, r) + valueOrElse(getInteger(S, aR), 0))
551+ let do = (((dk + dj) + dl) / h)
552+ let dp = valueOrElse(getInteger(bF), do)
553+ let dq = valueOrElse(getInteger(bE), 0)
554+ let cQ = lastBlock.timestamp
555+ let dr = (dp + fraction(do, (cQ - dq), f))
556+ let ds = min([dr, do])
557+ $Tuple2(IntegerEntry(bE, cQ), ds)
555558 }
556559
557560
558-let dr = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
561+let dt = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
559562
560-let ds = valueOrElse(getString(dr, "static_incubatorAddress"), "")
563+let du = valueOrElse(getString(dt, "static_incubatorAddress"), "")
561564
562-let dt = valueOrElse(getString(dr, "static_breederAddress"), "")
565+let dv = valueOrElse(getString(dt, "static_breederAddress"), "")
563566
564-let du = valueOrElse(getString(dr, "static_turtleIncubatorAddress"), "")
567+let dw = valueOrElse(getString(dt, "static_turtleIncubatorAddress"), "")
565568
566-let dv = valueOrElse(getString(dr, "static_turtleBreederAddress"), "")
569+let dx = valueOrElse(getString(dt, "static_turtleBreederAddress"), "")
567570
568-let dw = valueOrElse(getString(dr, "static_canineIncubatorAddress"), "")
571+let dy = valueOrElse(getString(dt, "static_canineIncubatorAddress"), "")
569572
570-let dx = valueOrElse(getString(dr, "static_canineBreederAddress"), "")
573+let dz = valueOrElse(getString(dt, "static_canineBreederAddress"), "")
571574
572-let dy = valueOrElse(getString(dr, "static_felineIncubatorAddress"), "")
575+let dA = valueOrElse(getString(dt, "static_felineIncubatorAddress"), "")
573576
574-let dz = valueOrElse(getString(dr, "static_felineBreederAddress"), "")
577+let dB = valueOrElse(getString(dt, "static_felineBreederAddress"), "")
575578
576-let dA = valueOrElse(getString(dr, "static_mutantIncubatorAddress"), "")
579+let dC = valueOrElse(getString(dt, "static_mutantIncubatorAddress"), "")
577580
578-func dB (dC) = {
579- let dD = toString(dC.issuer)
581+func dD (dE) = {
582+ let dF = toString(dE.issuer)
580583 if (if (if (if (if (if (if (if (if (if ((k == base58'2T'))
581- then (dD == v)
584+ then (dF == v)
582585 else false)
583586 then true
584- else (dD == ds))
587+ else (dF == du))
585588 then true
586- else (dD == dt))
589+ else (dF == dv))
587590 then true
588- else (dD == du))
591+ else (dF == dw))
589592 then true
590- else (dD == dv))
593+ else (dF == dx))
591594 then true
592- else (dD == dw))
595+ else (dF == dy))
593596 then true
594- else (dD == dx))
597+ else (dF == dz))
595598 then true
596- else (dD == dy))
599+ else (dF == dA))
597600 then true
598- else (dD == dz))
599- then dC.name
600- else if ((dD == dA))
601- then dC.description
601+ else (dF == dB))
602+ then dE.name
603+ else if ((dF == dC))
604+ then dE.description
602605 else ""
603606 }
604607
605608
606-func dE (X,dF,bw,dG,dH,dI) = {
607- let dJ = valueOrElse(getInteger(dG), 0)
608- if ((dJ >= dI))
609- then throw((("You can stake max " + toString(dI)) + " of such NFTs"))
609+func dG (X,dH,by,dI,dJ,dK) = {
610+ let dL = valueOrElse(getInteger(dI), 0)
611+ if ((dL >= dK))
612+ then throw((("You can stake max " + toString(dK)) + " of such NFTs"))
610613 else {
611- let dK = cK(0, X, bw)
612- let dL = dK._1
613- let dM = dK._2
614- $Tuple2((((dL :+ IntegerEntry(dG, (dJ + 1))) :+ IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + 1))) :+ IntegerEntry(aj(dF, X), lastBlock.timestamp)), dM)
614+ let dM = cM(0, X, by)
615+ let dN = dM._1
616+ let dO = dM._2
617+ $Tuple2((((dN :+ IntegerEntry(dI, (dL + 1))) :+ IntegerEntry(dJ, (valueOrElse(getInteger(dJ), 0) + 1))) :+ IntegerEntry(aj(dH, X), lastBlock.timestamp)), dO)
615618 }
616619 }
617620
618621
619-let dN = 3
622+let dP = 3
620623
621-let dO = [50000000, 25000000, 25000000]
624+let dQ = [50000000, 25000000, 25000000]
622625
623-func dP (x,cL,dQ) = {
624- let dR = cK(cL, x, 0)
625- let dL = dR._1
626- let dM = dR._2
627- let dS = if (if ((height >= l))
626+func dR (x,cN,dS) = {
627+ let dT = cM(cN, x, 0)
628+ let dN = dT._1
629+ let dO = dT._2
630+ let dU = if (if ((height >= l))
628631 then (n > height)
629632 else false)
630633 then {
631- let dT = am(x)
632- let dU = ((if (dQ)
634+ let dV = am(x)
635+ let dW = ((if (dS)
633636 then 0
634- else valueOrElse(getInteger(dT), 0)) + cL)
635- let dV = (dU / d)
636- let dW = an(x)
637- let dX = (dV - valueOrElse(getInteger(dW), 0))
638- let dY = (valueOrElse(getInteger(ao), 0) + dX)
639- if (if (dQ)
637+ else valueOrElse(getInteger(dV), 0)) + cN)
638+ let dX = (dW / d)
639+ let dY = an(x)
640+ let dZ = (dX - valueOrElse(getInteger(dY), 0))
641+ let ea = (valueOrElse(getInteger(ao), 0) + dZ)
642+ if (if (dS)
640643 then true
641- else (dX > 0))
644+ else (dZ > 0))
642645 then {
643- let dZ = valueOrElse(getString(ap), "")
644- let ea = ((x + ":") + aJ(dV, 3))
645- let eb = if (contains(dZ, x))
646+ let eb = valueOrElse(getString(ap), "")
647+ let ec = ((x + ":") + aL(dX, 3))
648+ let ed = if (contains(eb, x))
646649 then {
647- let ec = split_51C(dZ, x)
648- if ((ec[0] == ""))
650+ let ee = split_51C(eb, x)
651+ if ((ee[0] == ""))
649652 then {
650- let ed = drop(ec[1], 4)
651- if ((ed == ""))
652- then if ((dV == 0))
653+ let ef = drop(ee[1], 4)
654+ if ((ef == ""))
655+ then if ((dX == 0))
653656 then ""
654- else ea
655- else if ((dV == 0))
656- then drop(ed, 1)
657- else (ea + ed)
657+ else ec
658+ else if ((dX == 0))
659+ then drop(ef, 1)
660+ else (ec + ef)
658661 }
659662 else {
660- let ed = drop(ec[1], 4)
661- if ((ed == ""))
662- then if ((dV == 0))
663- then dropRight(ec[0], 1)
664- else (ec[0] + ea)
665- else if ((dV == 0))
666- then (ec[0] + drop(ed, 1))
667- else ((ec[0] + ea) + ed)
663+ let ef = drop(ee[1], 4)
664+ if ((ef == ""))
665+ then if ((dX == 0))
666+ then dropRight(ee[0], 1)
667+ else (ee[0] + ec)
668+ else if ((dX == 0))
669+ then (ee[0] + drop(ef, 1))
670+ else ((ee[0] + ec) + ef)
668671 }
669672 }
670- else if ((dV == 0))
671- then dZ
672- else if ((dZ == ""))
673- then ea
674- else ((dZ + "_") + ea)
675-[IntegerEntry(dT, dU), IntegerEntry(dW, dV), IntegerEntry(ao, dY), StringEntry(ap, eb)]
673+ else if ((dX == 0))
674+ then eb
675+ else if ((eb == ""))
676+ then ec
677+ else ((eb + "_") + ec)
678+[IntegerEntry(dV, dW), IntegerEntry(dY, dX), IntegerEntry(ao, ea), StringEntry(ap, ed)]
676679 }
677- else [IntegerEntry(dT, dU)]
680+ else [IntegerEntry(dV, dW)]
678681 }
679682 else nil
680- $Tuple2((dL ++ dS), dM)
683+ $Tuple2((dN ++ dU), dO)
681684 }
682685
683686
684-@Callable(cd)
685-func saveLastTx () = if (!(containsElement([R, T], cd.caller)))
687+@Callable(cf)
688+func saveLastTx () = if (!(containsElement([R, T], cf.caller)))
686689 then throw("Access denied")
687- else $Tuple2(cc(cd), 42)
690+ else $Tuple2(ce(cf), 42)
688691
689692
690693
691-@Callable(cd)
692-func constructorV1 (ee,ef) = if ((cd.caller != this))
694+@Callable(cf)
695+func constructorV1 (eg,eh) = if ((cf.caller != this))
693696 then throw("Permission denied")
694697 else {
695- let eg = addressFromStringValue(ef)
696-[IntegerEntry(ac, getIntegerValue(eg, ac)), BinaryEntry(ad, getBinaryValue(eg, ad)), StringEntry(E(), ee), StringEntry(U, ef)]
698+ let ei = addressFromStringValue(eh)
699+[IntegerEntry(ac, getIntegerValue(ei, ac)), BinaryEntry(ad, getBinaryValue(ei, ad)), StringEntry(E(), eg), StringEntry(U, eh)]
697700 }
698701
699702
700703
701-@Callable(cd)
702-func setBlocked (eh) = if ((cd.caller != this))
704+@Callable(cf)
705+func setBlocked (ej) = if ((cf.caller != this))
703706 then throw("permission denied")
704- else [BooleanEntry(V(), eh)]
707+ else [BooleanEntry(V(), ej)]
705708
706709
707710
708-@Callable(cd)
709-func unstakeAcres (ei) = {
710- let ej = cc(cd)
711+@Callable(cf)
712+func unstakeAcres (ek) = {
713+ let el = ce(cf)
711714 if (if ((height >= l))
712715 then (n > height)
713716 else false)
714717 then throw("You can't unstake during Xmas promo period")
715- else if ((0 >= ei))
718+ else if ((0 >= ek))
716719 then throw("Amount should be positive")
717720 else {
718- let x = toString(cd.caller)
719- if ((size(cd.payments) != 0))
721+ let x = toString(cf.caller)
722+ if ((size(cf.payments) != 0))
720723 then throw("No payments required")
721724 else {
722- let ek = (valueOrElse(getInteger(R, bz(x)), 0) + u)
723- if ((ek > lastBlock.timestamp))
724- then throw(("You traded some WLGOLD, cannot unstake until " + toString(ek)))
725+ let em = (valueOrElse(getInteger(R, bB(x)), 0) + u)
726+ if ((em > lastBlock.timestamp))
727+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(em)))
725728 else {
726- let el = cK(-(ei), x, 0)
727- let dL = el._1
728- let dM = el._2
729- $Tuple2(((dL :+ ScriptTransfer(cd.caller, ei, ae)) ++ ej), dM)
729+ let en = cM(-(ek), x, 0)
730+ let dN = en._1
731+ let dO = en._2
732+ $Tuple2(((dN :+ ScriptTransfer(cf.caller, ek, ae)) ++ el), dO)
730733 }
731734 }
732735 }
734737
735738
736739
737-@Callable(cd)
740+@Callable(cf)
738741 func stakeAcres () = {
739- let ej = cc(cd)
740- let x = toString(cd.caller)
741- if ((size(cd.payments) != 1))
742+ let el = ce(cf)
743+ let x = toString(cf.caller)
744+ if ((size(cf.payments) != 1))
742745 then throw("exactly 1 payment must be attached")
743746 else {
744- let em = cd.payments[0]
745- let cL = em.amount
746- if (if (!(isDefined(em.assetId)))
747+ let eo = cf.payments[0]
748+ let cN = eo.amount
749+ if (if (!(isDefined(eo.assetId)))
747750 then true
748- else (value(em.assetId) != ae))
751+ else (value(eo.assetId) != ae))
749752 then throw("ACRES payments only!")
750753 else {
751- let en = dP(x, cL, false)
752- let eo = en._1
753- let dM = en._2
754- $Tuple2((eo ++ ej), dM)
754+ let ep = dR(x, cN, false)
755+ let eq = ep._1
756+ let dO = ep._2
757+ $Tuple2((eq ++ el), dO)
755758 }
756759 }
757760 }
758761
759762
760763
761-@Callable(cd)
764+@Callable(cf)
762765 func buyAcres () = {
763- let ej = cc(cd)
764- if ((size(cd.payments) != 1))
766+ let el = ce(cf)
767+ if ((size(cf.payments) != 1))
765768 then throw("exactly 1 payment must be attached")
766769 else {
767- let em = cd.payments[0]
768- let ep = em.amount
769- if (if (!(isDefined(em.assetId)))
770+ let eo = cf.payments[0]
771+ let er = eo.amount
772+ if (if (!(isDefined(eo.assetId)))
770773 then true
771- else (value(em.assetId) != r))
774+ else (value(eo.assetId) != r))
772775 then throw("USDT payments only!")
773- else if ((b > ep))
774- then throw((("Min payment should be " + az(b, 6)) + " USDT"))
776+ else if ((b > er))
777+ then throw((("Min payment should be " + aB(b, 6)) + " USDT"))
775778 else {
776- let eq = (ep * g)
777- let er = fraction(ep, d, de(ep))
778- let es = addressFromStringValue(getStringValue(U))
779- let et = invoke(es, "requestAcresCallback", [eq], nil)
780- if ((et == et))
779+ let es = (er * g)
780+ let et = fraction(er, d, dg(er))
781+ let eu = addressFromStringValue(getStringValue(U))
782+ let ev = invoke(eu, "requestAcresCallback", [es], nil)
783+ if ((ev == ev))
781784 then {
782- let eu = aq(invoke(R, "burnWlgold", [er], nil))
783- $Tuple2(([ScriptTransfer(cd.caller, eq, ae)] ++ ej), eu)
785+ let ew = as(invoke(R, "burnWlgold", [et], nil))
786+ $Tuple2(([ScriptTransfer(cf.caller, es, ae)] ++ el), ew)
784787 }
785788 else throw("Strict value is not equal to itself.")
786789 }
789792
790793
791794
792-@Callable(cd)
793-func buyAcresREADONLY (ep) = {
794- let eq = (ep * g)
795- let ev = fraction(ep, d, de(ep))
796- $Tuple2(nil, [eq, b, eq, ev])
795+@Callable(cf)
796+func buyAcresREADONLY (er) = {
797+ let es = (er * g)
798+ let ex = fraction(er, d, dg(er))
799+ $Tuple2(nil, [es, b, es, ex])
797800 }
798801
799802
800803
801-@Callable(cd)
804+@Callable(cf)
802805 func sellAcres () = {
803- let ej = cc(cd)
804- if ((size(cd.payments) != 1))
806+ let el = ce(cf)
807+ if ((size(cf.payments) != 1))
805808 then throw("exactly 1 payment must be attached")
806809 else {
807- let em = cd.payments[0]
808- let eq = em.amount
809- if (if (!(isDefined(em.assetId)))
810+ let eo = cf.payments[0]
811+ let es = eo.amount
812+ if (if (!(isDefined(eo.assetId)))
810813 then true
811- else (value(em.assetId) != ae))
814+ else (value(eo.assetId) != ae))
812815 then throw("ACRES payments only!")
813- else if ((c > eq))
814- then throw((("Min payment should be " + az(c, 8)) + " ACRES"))
816+ else if ((c > es))
817+ then throw((("Min payment should be " + aB(c, 8)) + " ACRES"))
815818 else {
816- let X = toString(cd.caller)
817- let ew = dl()
818- let ex = ew._1
819- let ey = ew._2
820- let ez = (ey * g)
821- if ((eq > ez))
822- then throw((("You can sell max " + az(ez, 8)) + " ACRES"))
819+ let X = toString(cf.caller)
820+ let ey = dn()
821+ let ez = ey._1
822+ let eA = ey._2
823+ let eB = (eA * g)
824+ if ((es > eB))
825+ then throw((("You can sell max " + aB(eB, 8)) + " ACRES"))
823826 else {
824- let ep = ((eq / g) / 2)
825- $Tuple2(([ex, IntegerEntry(bD, (ey - ep)), ScriptTransfer(cd.caller, ep, r)] ++ ej), ep)
827+ let er = ((es / g) / 2)
828+ $Tuple2(([ez, IntegerEntry(bF, (eA - er)), ScriptTransfer(cf.caller, er, r)] ++ el), er)
826829 }
827830 }
828831 }
830833
831834
832835
833-@Callable(cd)
834-func sellAcresREADONLY (x,eq) = {
835- let eA = dl()
836- let ex = eA._1
837- let ey = eA._2
838- let ep = ((eq / g) / 2)
839- $Tuple2(nil, [ep, c, (ey * g), 0])
836+@Callable(cf)
837+func sellAcresREADONLY (x,es) = {
838+ let eC = dn()
839+ let ez = eC._1
840+ let eA = eC._2
841+ let er = ((es / g) / 2)
842+ $Tuple2(nil, [er, c, (eA * g), 0])
840843 }
841844
842845
843846
844-@Callable(cd)
847+@Callable(cf)
845848 func convertOldStakes () = {
846- let ej = cc(cd)
847- if ((bA > lastBlock.timestamp))
848- then throw(("Disabled until " + toString((bA / 1000))))
849+ let el = ce(cf)
850+ if ((bC > lastBlock.timestamp))
851+ then throw(("Disabled until " + toString((bC / 1000))))
849852 else {
850- let x = toString(cd.caller)
851- if ((size(cd.payments) != 0))
853+ let x = toString(cf.caller)
854+ if ((size(cf.payments) != 0))
852855 then throw("No payments required")
853856 else {
854- let es = addressFromStringValue(getStringValue(U))
855- let ei = valueOrElse(getInteger(es, aQ(x)), 0)
856- let eB = if ((ei > 0))
857- then ay(invoke(es, "unstakeAcresCallback", [ei, x], nil))
857+ let eu = addressFromStringValue(getStringValue(U))
858+ let ek = valueOrElse(getInteger(eu, aS(x)), 0)
859+ let eD = if ((ek > 0))
860+ then aA(invoke(eu, "unstakeAcresCallback", [ek, x], nil))
858861 else $Tuple2(0, 0)
859- let eC = addressFromStringValue(v)
860- let eD = getString(eC, ag(x))
861- let eE = if (isDefined(eD))
862+ let eE = addressFromStringValue(v)
863+ let eF = getString(eE, ag(x))
864+ let eG = if (isDefined(eF))
862865 then {
863- let eF = split_51C(value(eD), "_")
864- if ((size(eF) > bB))
865- then throw((("You have more than " + toString(bB)) + " lands staked, please contact support, we'll process your case manually"))
866+ let eH = split_51C(value(eF), "_")
867+ if ((size(eH) > bD))
868+ then throw((("You have more than " + toString(bD)) + " lands staked, please contact support, we'll process your case manually"))
866869 else {
867- func eG (bl,eH) = if ((eH == ""))
870+ func eI (bn,eJ) = if ((eJ == ""))
868871 then throw("landAssetId is required")
869872 else {
870- let ed = at(invoke(eC, "unstakeLandCallback", [eH, x], nil))
871- if ((ed == ed))
872- then $Tuple5((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4), (bl._5 + ed._5))
873+ let ef = av(invoke(eE, "unstakeLandCallback", [eJ, x], nil))
874+ if ((ef == ef))
875+ then $Tuple5((bn._1 + ef._1), (bn._2 + ef._2), (bn._3 + ef._3), (bn._4 + ef._4), (bn._5 + ef._5))
873876 else throw("Strict value is not equal to itself.")
874877 }
875878
876- let eI = {
877- let bn = eF
878- let bo = size(bn)
879- let bp = $Tuple5(0, 0, 0, 0, 0)
880- func bq (br,bs) = if ((bs >= bo))
881- then br
882- else eG(br, bn[bs])
879+ let eK = {
880+ let bp = eH
881+ let bq = size(bp)
882+ let br = $Tuple5(0, 0, 0, 0, 0)
883+ func bs (bt,bu) = if ((bu >= bq))
884+ then bt
885+ else eI(bt, bp[bu])
883886
884- func bt (br,bs) = if ((bs >= bo))
885- then br
887+ func bv (bt,bu) = if ((bu >= bq))
888+ then bt
886889 else throw("List size exceeds 14")
887890
888- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
891+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
889892 }
890- if ((eI == eI))
893+ if ((eK == eK))
891894 then {
892- let eJ = invoke(eC, "unstakeLandsFinalizeCallback", [x], nil)
893- if ((eJ == eJ))
895+ let eL = invoke(eE, "unstakeLandsFinalizeCallback", [x], nil)
896+ if ((eL == eL))
894897 then {
895- let et = invoke(es, "requestAcresCallback", [(((eI._1 + eI._2) + eI._3) + eI._4)], nil)
896- if ((et == et))
898+ let ev = invoke(eu, "requestAcresCallback", [(((eK._1 + eK._2) + eK._3) + eK._4)], nil)
899+ if ((ev == ev))
897900 then {
898- let eK = cw(bN, bR, bZ, bX, 3, bG, cb, cd.caller)
899- let eL = eK._1
900- let cF = eK._2
901- $Tuple6(eI._1, eI._2, eI._3, eI._4, eI._5, eL)
901+ let eM = cy(bP, bT, cb, bZ, 3, bI, cd, cf.caller)
902+ let eN = eM._1
903+ let cH = eM._2
904+ $Tuple6(eK._1, eK._2, eK._3, eK._4, eK._5, eN)
902905 }
903906 else throw("Strict value is not equal to itself.")
904907 }
908911 }
909912 }
910913 else $Tuple6(0, 0, 0, 0, 0, nil)
911- let eM = valueOrElse(getString(eC, ai(x)), "")
912- let eN = if ((eM != ""))
913- then ax(invoke(eC, "unstakeDuckCallback", [eM, x], nil))
914+ let eO = valueOrElse(getString(eE, ai(x)), "")
915+ let eP = if ((eO != ""))
916+ then az(invoke(eE, "unstakeDuckCallback", [eO, x], nil))
914917 else $Tuple3(0, 0, 0)
915- let eO = cK((((((((eB._1 + eE._1) + eE._2) + eE._3) + eE._4) + eN._1) + eN._2) + eN._3), x, 0)
916- $Tuple2(((eE._6 ++ eO._1) ++ ej), $Tuple3(eB._2, eE._5, eO._2))
918+ let eQ = cM((((((((eD._1 + eG._1) + eG._2) + eG._3) + eG._4) + eP._1) + eP._2) + eP._3), x, 0)
919+ $Tuple2(((eG._6 ++ eQ._1) ++ el), $Tuple3(eD._2, eG._5, eQ._2))
917920 }
918921 }
919922 }
920923
921924
922925
923-@Callable(cd)
926+@Callable(cf)
924927 func unstakeLandsREADONLY (x) = {
925- let eC = addressFromStringValue(v)
926- let eD = getString(eC, ag(x))
927- let eE = if (isDefined(eD))
928+ let eE = addressFromStringValue(v)
929+ let eF = getString(eE, ag(x))
930+ let eG = if (isDefined(eF))
928931 then {
929- let eF = split_51C(value(eD), "_")
930- func eG (bl,eH) = if ((eH == ""))
932+ let eH = split_51C(value(eF), "_")
933+ func eI (bn,eJ) = if ((eJ == ""))
931934 then throw("landAssetId is required")
932935 else {
933- let ed = aw(invoke(eC, "unstakeLandREADONLY", [eH, x], nil))
934- $Tuple4((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4))
936+ let ef = ay(invoke(eE, "unstakeLandREADONLY", [eJ, x], nil))
937+ $Tuple4((bn._1 + ef._1), (bn._2 + ef._2), (bn._3 + ef._3), (bn._4 + ef._4))
935938 }
936939
937- let bn = eF
938- let bo = size(bn)
939- let bp = $Tuple4(0, 0, 0, 0)
940- func bq (br,bs) = if ((bs >= bo))
941- then br
942- else eG(br, bn[bs])
940+ let bp = eH
941+ let bq = size(bp)
942+ let br = $Tuple4(0, 0, 0, 0)
943+ func bs (bt,bu) = if ((bu >= bq))
944+ then bt
945+ else eI(bt, bp[bu])
943946
944- func bt (br,bs) = if ((bs >= bo))
945- then br
947+ func bv (bt,bu) = if ((bu >= bq))
948+ then bt
946949 else throw("List size exceeds 100")
947950
948- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
951+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
949952 }
950953 else $Tuple4(0, 0, 0, 0)
951- $Tuple2(nil, eE)
954+ $Tuple2(nil, eG)
952955 }
953956
954957
955958
956-@Callable(cd)
957-func stakeAcresCallback (X) = if ((cd.caller != addressFromStringValue(v)))
959+@Callable(cf)
960+func stakeAcresCallback (X) = if ((cf.caller != addressFromStringValue(v)))
958961 then throw("Permission denied")
959- else cK(cd.payments[0].amount, X, 0)
962+ else cM(cf.payments[0].amount, X, 0)
960963
961964
962965
963-@Callable(cd)
964-func simulateStakeAcresREADONLY (x,eP) = {
965- let cQ = aQ(x)
966- let cS = (valueOrElse(getInteger(cQ), 0) + eP)
967- let cT = valueOrElse(getInteger(aS), 0)
968- let cU = aR(x)
969- let cV = valueOrElse(getInteger(cU), 0)
970- let eQ = valueOrElse(getInteger(Q, bf(x)), 0)
971- let eR = bv(cS, eQ)
972- let cZ = eR._1
973- let da = eR._2
974- let db = valueOrElse(getInteger(aT), 0)
975- let eS = ((db + cZ) - cV)
976- $Tuple2(nil, [cV, cZ, db, eS])
966+@Callable(cf)
967+func simulateStakeAcresREADONLY (x,eR) = {
968+ let cS = aS(x)
969+ let cU = (valueOrElse(getInteger(cS), 0) + eR)
970+ let cV = valueOrElse(getInteger(aU), 0)
971+ let cW = aT(x)
972+ let cX = valueOrElse(getInteger(cW), 0)
973+ let eS = valueOrElse(getInteger(Q, bh(x)), 0)
974+ let eT = bx(cU, eS)
975+ let db = eT._1
976+ let dc = eT._2
977+ let dd = valueOrElse(getInteger(aV), 0)
978+ let eU = ((dd + db) - cX)
979+ $Tuple2(nil, [cX, db, dd, eU])
977980 }
978981
979982
980983
981-@Callable(cd)
982-func issuePickC1 (eT) = if ((cd.caller != R))
984+@Callable(cf)
985+func issuePickC1 (eV) = if ((cf.caller != R))
983986 then throw("Permission denied")
984- else cw(bO, bQ, bZ, bT, 1, bH, cb, addressFromStringValue(eT))
987+ else cy(bQ, bS, cb, bV, 1, bJ, cd, addressFromStringValue(eV))
985988
986989
987990
988-@Callable(cd)
991+@Callable(cf)
989992 func stakeNFT () = {
990- let ej = cc(cd)
991- if ((size(cd.payments) != 1))
993+ let el = ce(cf)
994+ if ((size(cf.payments) != 1))
992995 then throw("Exactly one payment required")
993996 else {
994- let em = value(cd.payments[0])
995- if ((em.amount != 1))
997+ let eo = value(cf.payments[0])
998+ if ((eo.amount != 1))
996999 then throw("NFT token should be attached as payment")
9971000 else {
998- let ak = value(em.assetId)
999- let eU = value(assetInfo(ak))
1000- let dF = toBase58String(ak)
1001- let X = toString(cd.caller)
1002- let eV = al(X)
1003- let eW = getString(eV)
1004- let eX = if (isDefined(eW))
1005- then split_4C(value(eW), "_")
1001+ let ak = value(eo.assetId)
1002+ let eW = value(assetInfo(ak))
1003+ let dH = toBase58String(ak)
1004+ let X = toString(cf.caller)
1005+ let eX = al(X)
1006+ let eY = getString(eX)
1007+ let eZ = if (isDefined(eY))
1008+ then split_4C(value(eY), "_")
10061009 else nil
1007- if (containsElement(eX, dF))
1008- then throw(("Your staked NFTs already contain " + dF))
1009- else if ((size(eX) >= aX))
1010- then throw((("Your already staked max (" + toString(aX)) + ") NFTs"))
1010+ if (containsElement(eZ, dH))
1011+ then throw(("Your staked NFTs already contain " + dH))
1012+ else if ((size(eZ) >= aZ))
1013+ then throw((("Your already staked max (" + toString(aZ)) + ") NFTs"))
10111014 else {
1012- let eY = StringEntry(eV, makeString_2C((eX :+ dF), "_"))
1013- if ((eU.issuer == this))
1015+ let fa = StringEntry(eX, makeString_2C((eZ :+ dH), "_"))
1016+ if ((eW.issuer == this))
10141017 then {
1015- let eZ = dE(X, dF, (cG(value(eU.description)) * 10000), bd(X), ba, aU)
1016- let dL = eZ._1
1017- let dM = eZ._2
1018- $Tuple2(((ej ++ dL) :+ eY), dM)
1018+ let fb = dG(X, dH, (cI(value(eW.description)) * 10000), bf(X), bc, aW)
1019+ let dN = fb._1
1020+ let dO = fb._2
1021+ $Tuple2(((el ++ dN) :+ fa), dO)
10191022 }
1020- else if ((dB(eU) == ""))
1023+ else if ((dD(eW) == ""))
10211024 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
10221025 else {
1023- let fa = dE(X, dF, aW, be(X), bb, aV)
1024- let dL = fa._1
1025- let dM = fa._2
1026- $Tuple2(((ej ++ dL) :+ eY), dM)
1026+ let fc = dG(X, dH, aY, bg(X), bd, aX)
1027+ let dN = fc._1
1028+ let dO = fc._2
1029+ $Tuple2(((el ++ dN) :+ fa), dO)
10271030 }
10281031 }
10291032 }
10321035
10331036
10341037
1035-@Callable(cd)
1036-func unstakeNFT (dF) = {
1037- let ej = cc(cd)
1038- if ((size(cd.payments) != 0))
1038+@Callable(cf)
1039+func unstakeNFT (dH) = {
1040+ let el = ce(cf)
1041+ if ((size(cf.payments) != 0))
10391042 then throw("No payments required")
10401043 else {
1041- let ak = fromBase58String(dF)
1042- let X = toString(cd.caller)
1043- let eU = value(assetInfo(ak))
1044- let cP = aj(dF, X)
1045- if (!(isDefined(getInteger(cP))))
1046- then throw((("NFT " + eU.name) + " is not staked by you"))
1044+ let ak = fromBase58String(dH)
1045+ let X = toString(cf.caller)
1046+ let eW = value(assetInfo(ak))
1047+ let cR = aj(dH, X)
1048+ if (!(isDefined(getInteger(cR))))
1049+ then throw((("NFT " + eW.name) + " is not staked by you"))
10471050 else {
1048- let eV = al(X)
1049- let eX = split_4C(valueOrElse(getString(eV), ""), "_")
1050- let L = indexOf(eX, dF)
1051+ let eX = al(X)
1052+ let eZ = split_4C(valueOrElse(getString(eX), ""), "_")
1053+ let L = indexOf(eZ, dH)
10511054 if (!(isDefined(L)))
1052- then throw(("Your staked NFTs don't contain " + dF))
1055+ then throw(("Your staked NFTs don't contain " + dH))
10531056 else {
1054- let eY = if ((size(eX) > 1))
1055- then StringEntry(eV, makeString_2C(removeByIndex(eX, value(L)), "_"))
1056- else DeleteEntry(eV)
1057- let fb = (eU.issuer == this)
1058- if (fb)
1057+ let fa = if ((size(eZ) > 1))
1058+ then StringEntry(eX, makeString_2C(removeByIndex(eZ, value(L)), "_"))
1059+ else DeleteEntry(eX)
1060+ let fd = (eW.issuer == this)
1061+ if (fd)
10591062 then {
1060- let fc = valueOrElse(getInteger(bd(X)), 0)
1061- let fd = (cG(value(eU.description)) * 10000)
1062- let fe = cK(0, X, -(fd))
1063- let dL = fe._1
1064- let dM = fe._2
1065- $Tuple2(((((((dL :+ eY) :+ IntegerEntry(bd(X), (fc - 1))) :+ IntegerEntry(ba, max([0, (valueOrElse(getInteger(ba), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
1063+ let fe = valueOrElse(getInteger(bf(X)), 0)
1064+ let ff = (cI(value(eW.description)) * 10000)
1065+ let fg = cM(0, X, -(ff))
1066+ let dN = fg._1
1067+ let dO = fg._2
1068+ $Tuple2(((((((dN :+ fa) :+ IntegerEntry(bf(X), (fe - 1))) :+ IntegerEntry(bc, max([0, (valueOrElse(getInteger(bc), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cf.caller, 1, ak)) ++ el), dO)
10661069 }
10671070 else {
1068- let ff = dB(eU)
1069- if ((ff == ""))
1071+ let fh = dD(eW)
1072+ if ((fh == ""))
10701073 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
10711074 else {
1072- let fg = valueOrElse(getInteger(be(X)), 0)
1073- let fh = cK(0, X, -(aW))
1074- let dL = fh._1
1075- let dM = fh._2
1076- $Tuple2((((((dL :+ eY) :+ IntegerEntry(be(X), (fg - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
1075+ let fi = valueOrElse(getInteger(bg(X)), 0)
1076+ let fj = cM(0, X, -(aY))
1077+ let dN = fj._1
1078+ let dO = fj._2
1079+ $Tuple2((((((dN :+ fa) :+ IntegerEntry(bg(X), (fi - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cf.caller, 1, ak)) ++ el), dO)
10771080 }
10781081 }
10791082 }
10831086
10841087
10851088
1086-@Callable(cd)
1089+@Callable(cf)
10871090 func exchangeNFTs () = {
1088- let ej = cc(cd)
1089- if ((3 > size(cd.payments)))
1091+ let el = ce(cf)
1092+ if ((3 > size(cf.payments)))
10901093 then throw("Min one WLGOLD and 2 NFT payments allowed")
1091- else if ((size(cd.payments) > 10))
1094+ else if ((size(cf.payments) > 10))
10921095 then throw("Max one WLGOLD and 9 NFT payments allowed")
10931096 else {
1094- let X = toString(cd.caller)
1095- func fi (bl,em) = {
1096- let ak = valueOrErrorMessage(em.assetId, "WAVES payments not allowed")
1097+ let X = toString(cf.caller)
1098+ func fk (bn,eo) = {
1099+ let ak = valueOrErrorMessage(eo.assetId, "WAVES payments not allowed")
10971100 if ((ak == ab))
1098- then $Tuple4((bl._1 + em.amount), bl._2, bl._3, bl._4)
1101+ then $Tuple4((bn._1 + eo.amount), bn._2, bn._3, bn._4)
10991102 else {
1100- let eU = value(assetInfo(ak))
1101- if ((eU.issuer != this))
1103+ let eW = value(assetInfo(ak))
1104+ if ((eW.issuer != this))
11021105 then throw("Only WL-issued NFTs allowed")
11031106 else {
1104- let fj = cI(value(eU.description))
1105- if (if ((bl._4 > 0))
1106- then (fj != bl._4)
1107+ let fl = cK(value(eW.description))
1108+ if (if ((bn._4 > 0))
1109+ then (fl != bn._4)
11071110 else false)
11081111 then throw("You can exchange only NFTs of the same rarity")
11091112 else {
1110- let cB = cG(value(eU.description))
1111- $Tuple4(bl._1, (bl._2 + cB), (bl._3 :+ Burn(ak, 1)), fj)
1113+ let cD = cI(value(eW.description))
1114+ $Tuple4(bn._1, (bn._2 + cD), (bn._3 :+ Burn(ak, 1)), fl)
11121115 }
11131116 }
11141117 }
11151118 }
11161119
1117- let fk = {
1118- let bn = cd.payments
1119- let bo = size(bn)
1120- let bp = $Tuple4(0, 0, nil, -1)
1121- func bq (br,bs) = if ((bs >= bo))
1122- then br
1123- else fi(br, bn[bs])
1120+ let fm = {
1121+ let bp = cf.payments
1122+ let bq = size(bp)
1123+ let br = $Tuple4(0, 0, nil, -1)
1124+ func bs (bt,bu) = if ((bu >= bq))
1125+ then bt
1126+ else fk(bt, bp[bu])
11241127
1125- func bt (br,bs) = if ((bs >= bo))
1126- then br
1128+ func bv (bt,bu) = if ((bu >= bq))
1129+ then bt
11271130 else throw("List size exceeds 10")
11281131
1129- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1132+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11301133 }
1131- let fl = fk._1
1132- let fm = fk._2
1133- let fn = fk._3
1134- let cA = fk._4
1135- let fo = if ((cA == bT))
1136- then if ((bI[bJ] > fm))
1137- then bT
1138- else if ((bI[bK] > fm))
1139- then bU
1140- else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bK])) + "%"))
1141- else if ((cA == bU))
1142- then if ((bI[bK] > fm))
1143- then bU
1144- else if ((bI[bL] > fm))
1145- then bV
1146- else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bL])) + "%"))
1147- else if ((cA == bV))
1148- then if ((bI[bL] > fm))
1149- then bV
1150- else bW
1151- else if ((cA == bW))
1152- then bW
1153- else if ((cA == bX))
1134+ let fn = fm._1
1135+ let fo = fm._2
1136+ let fp = fm._3
1137+ let cC = fm._4
1138+ let fq = if ((cC == bV))
1139+ then if ((bK[bL] > fo))
1140+ then bV
1141+ else if ((bK[bM] > fo))
1142+ then bW
1143+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bK[bM])) + "%"))
1144+ else if ((cC == bW))
1145+ then if ((bK[bM] > fo))
1146+ then bW
1147+ else if ((bK[bN] > fo))
1148+ then bX
1149+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bK[bN])) + "%"))
1150+ else if ((cC == bX))
1151+ then if ((bK[bN] > fo))
1152+ then bX
1153+ else bY
1154+ else if ((cC == bY))
1155+ then bY
1156+ else if ((cC == bZ))
11541157 then throw("You can't exchange NFTs of this rarity")
11551158 else throw("Unknown rarity")
1156- let fp = fraction(fm, e, de(0))
1157- let fq = (fl - fp)
1158- let fr = (fp / 2)
1159- let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1160- if ((0 > fq))
1161- then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
1159+ let fr = fraction(fo, e, dg(0))
1160+ let fs = (fn - fr)
1161+ let ft = (fr / 2)
1162+ let ew = as(invoke(R, "burnWlgold", [(fr - ft)], nil))
1163+ if ((0 > fs))
1164+ then throw((("You need to attach " + aB(fr, 8)) + " WLGOLD as fee"))
11621165 else {
1163- let fs = if ((fq > 0))
1164- then [ScriptTransfer(cd.caller, fq, ab)]
1166+ let fu = if ((fs > 0))
1167+ then [ScriptTransfer(cf.caller, fs, ab)]
11651168 else nil
1166- let ft = cw(bO, fo, bZ, fo, fm, bH, cb, cd.caller)
1167- let fu = ft._1
1168- let cF = ft._2
1169- let fv = size(fn)
1170- let fw = if ((fv == 0))
1169+ let fv = cy(bQ, fq, cb, fq, fo, bJ, cd, cf.caller)
1170+ let fw = fv._1
1171+ let cH = fv._2
1172+ let fx = size(fp)
1173+ let fy = if ((fx == 0))
11711174 then nil
1172- else [IntegerEntry(aZ, (valueOrElse(getInteger(aZ), 0) + fv))]
1173- $Tuple2((((((fu ++ fn) ++ fw) ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)), $Tuple2(cF, eu))
1175+ else [IntegerEntry(bb, (valueOrElse(getInteger(bb), 0) + fx))]
1176+ $Tuple2((((((fw ++ fp) ++ fy) ++ el) ++ fu) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, bA)), ft, ab)), $Tuple2(cH, ew))
11741177 }
11751178 }
11761179 }
11771180
11781181
11791182
1180-@Callable(cd)
1183+@Callable(cf)
11811184 func openNftChest () = {
1182- let ej = cc(cd)
1183- if ((size(cd.payments) != 1))
1185+ let el = ce(cf)
1186+ if ((size(cf.payments) != 1))
11841187 then throw("exactly 1 payment must be attached")
11851188 else {
1186- let em = cd.payments[0]
1187- let er = em.amount
1188- if (if (!(isDefined(em.assetId)))
1189+ let eo = cf.payments[0]
1190+ let et = eo.amount
1191+ if (if (!(isDefined(eo.assetId)))
11891192 then true
1190- else (value(em.assetId) != ab))
1193+ else (value(eo.assetId) != ab))
11911194 then throw("WLGOLD payments only!")
11921195 else {
1193- let fp = fraction(j, d, de(0))
1194- let fq = (er - fp)
1195- let fr = (fp / 2)
1196- let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1197- if ((0 > fq))
1198- then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
1196+ let fr = fraction(j, d, dg(0))
1197+ let fs = (et - fr)
1198+ let ft = (fr / 2)
1199+ let ew = as(invoke(R, "burnWlgold", [(fr - ft)], nil))
1200+ if ((0 > fs))
1201+ then throw((("You need to attach " + aB(fr, 8)) + " WLGOLD as fee"))
11991202 else {
1200- let fs = if ((fq > 0))
1201- then [ScriptTransfer(cd.caller, fq, ab)]
1203+ let fu = if ((fs > 0))
1204+ then [ScriptTransfer(cf.caller, fs, ab)]
12021205 else nil
1203- let X = toString(cd.caller)
1204- let fx = Z(X)
1205- let fy = valueOrErrorMessage(getInteger(fx), "You have to commitForRandom() first!")
1206- if ((fy > height))
1207- then throw(("Random number is not ready yet, wait until height = " + toString(fy)))
1206+ let X = toString(cf.caller)
1207+ let fz = Z(X)
1208+ let fA = valueOrErrorMessage(getInteger(fz), "You have to commitForRandom() first!")
1209+ if ((fA > height))
1210+ then throw(("Random number is not ready yet, wait until height = " + toString(fA)))
12081211 else {
1209- let aH = value(value(blockInfoByHeight(fy)).vrf)
1210- let aG = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1211- let fz = aE(100, aG, aH)
1212- let fA = if ((84 > fz))
1213- then $Tuple2(1, bT)
1214- else if ((98 > fz))
1215- then $Tuple2(5, bU)
1216- else $Tuple2(10, bV)
1217- let cu = fA._1
1218- let cA = fA._2
1219- let fB = cw(bO, cA, bZ, cA, cu, bH, cb, cd.caller)
1220- let fu = fB._1
1221- let cF = fB._2
1222- $Tuple2(((((fu ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)) :+ DeleteEntry(fx)), $Tuple2(cF, eu))
1212+ let aJ = value(value(blockInfoByHeight(fA)).vrf)
1213+ let aI = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1214+ let fB = aG(100, aI, aJ)
1215+ let fC = if ((84 > fB))
1216+ then $Tuple2(1, bV)
1217+ else if ((98 > fB))
1218+ then $Tuple2(5, bW)
1219+ else $Tuple2(10, bX)
1220+ let cw = fC._1
1221+ let cC = fC._2
1222+ let fD = cy(bQ, cC, cb, cC, cw, bJ, cd, cf.caller)
1223+ let fw = fD._1
1224+ let cH = fD._2
1225+ $Tuple2(((((fw ++ el) ++ fu) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, bA)), ft, ab)) :+ DeleteEntry(fz)), $Tuple2(cH, ew))
12231226 }
12241227 }
12251228 }
12281231
12291232
12301233
1231-@Callable(cd)
1234+@Callable(cf)
12321235 func commitForRandom () = {
1233- let ej = cc(cd)
1234- let X = toString(cd.caller)
1235- let fx = Z(X)
1236- if (isDefined(getInteger(fx)))
1236+ let el = ce(cf)
1237+ let X = toString(cf.caller)
1238+ let fz = Z(X)
1239+ if (isDefined(getInteger(fz)))
12371240 then throw("You already commited for random, please use it")
12381241 else {
1239- let fy = (height + i)
1240- $Tuple2(([IntegerEntry(fx, fy)] ++ ej), fy)
1242+ let fA = (height + i)
1243+ $Tuple2(([IntegerEntry(fz, fA)] ++ el), fA)
12411244 }
12421245 }
12431246
12441247
12451248
1246-@Callable(cd)
1247-func drawDaylyPromo () = if ((cd.caller != this))
1249+@Callable(cf)
1250+func drawDaylyPromo () = if ((cf.caller != this))
12481251 then throw("Permission denied")
12491252 else {
1250- let fC = (height % o)
1251- let aF = valueOrElse(getInteger(ao), 0)
1252- if ((aF == 0))
1253+ let fE = (height / o)
1254+ let aH = valueOrElse(getInteger(ao), 0)
1255+ if ((aH == 0))
12531256 then throw("No tickets to draw")
12541257 else {
1255- let fD = (fC * o)
1256- let fE = if ((fD > q))
1257- then fD
1258- else (fD + q)
1259- let aH = value(value(blockInfoByHeight(fE)).vrf)
1260- let dZ = valueOrElse(getString(ap), "")
1261- if ((dZ == ""))
1258+ let fF = (fE * o)
1259+ let fG = if ((fF > q))
1260+ then fF
1261+ else (fF + q)
1262+ let aJ = value(value(blockInfoByHeight(fG)).vrf)
1263+ let eb = valueOrElse(getString(ap), "")
1264+ if ((eb == ""))
12621265 then throw("No participants")
12631266 else {
1264- let fF = split_51C(dZ, "_")
1265- func fG (fH,fI) = if ((fI >= dN))
1266- then fH
1267+ func fH (fI,fJ) = if ((fJ >= dP))
1268+ then fI
12671269 else {
1268- let fz = aE(fH._1, fH._2, aH)
1269- let fJ = if ((fH._3 == ""))
1270+ let fB = aG(fI._1, fI._2, aJ)
1271+ let fK = if ((fI._3 == ""))
12701272 then nil
1271- else split_51C(fH._3, "_")
1272- func fK (bl,fL) = {
1273- let fM = split(fL, ":")
1274- let X = fM[0]
1275- let dV = parseIntValue(fM[1])
1276- let fN = (bl._1 + dV)
1277- if (if ((bl._3 == ""))
1278- then (fN > fz)
1273+ else split_51C(fI._3, "_")
1274+ func fL (bn,fM) = {
1275+ let fN = split(fM, ":")
1276+ let X = fN[0]
1277+ let dX = parseIntValue(fN[1])
1278+ let fO = (bn._1 + dX)
1279+ if (if ((bn._3 == ""))
1280+ then (fO > fB)
12791281 else false)
1280- then $Tuple3(fN, dV, X)
1281- else $Tuple3(fN, bl._2, bl._3)
1282+ then $Tuple3(fO, dX, X)
1283+ else $Tuple3(fO, bn._2, bn._3)
12821284 }
12831285
1284- let ed = {
1285- let bn = fJ
1286- let bo = size(bn)
1287- let bp = $Tuple3(0, 0, "")
1288- func bq (br,bs) = if ((bs >= bo))
1289- then br
1290- else fK(br, bn[bs])
1286+ let ef = {
1287+ let bp = fK
1288+ let bq = size(bp)
1289+ let br = $Tuple3(0, 0, "")
1290+ func bs (bt,bu) = if ((bu >= bq))
1291+ then bt
1292+ else fL(bt, bp[bu])
12911293
1292- func bt (br,bs) = if ((bs >= bo))
1293- then br
1294- else throw("List size exceeds 20")
1294+ func bv (bt,bu) = if ((bu >= bq))
1295+ then bt
1296+ else throw("List size exceeds 200")
12951297
1296- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1298+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200)
12971299 }
1298- let fO = ed._3
1299- if ((fO == ""))
1300- then fH
1300+ let fP = ef._3
1301+ if ((fP == ""))
1302+ then fI
13011303 else {
1302- let ec = split_51C(fH._3, fO)
1303- let eb = if ((ec[0] == ""))
1304- then drop(ec[1], 5)
1305- else (dropRight(ec[0], 1) + drop(ec[1], 4))
1306- let fP = dP(fO, dO[fI], true)
1307- let eo = fP._1
1308- let fQ = fP._2
1309- let fR = fromBase58String(valueOrElse(getString(O, Y(fO)), "DEFAULT"))
1310- $Tuple4((fH._1 - ed._2), fR, eb, (fH._4 :+ eo))
1304+ let ee = split_51C(fI._3, fP)
1305+ let ed = if ((ee[0] == ""))
1306+ then drop(ee[1], 5)
1307+ else (dropRight(ee[0], 1) + drop(ee[1], 4))
1308+ let fQ = dR(fP, dQ[fJ], true)
1309+ let eq = fQ._1
1310+ let fR = fQ._2
1311+ let fS = fromBase58String(valueOrElse(getString(O, Y(fP)), "DEFAULT"))
1312+ $Tuple5((fI._1 - ef._2), fS, ed, (fI._4 :+ eq), (fI._5 :+ fP))
13111313 }
13121314 }
13131315
1314- let fS = {
1315- let bn = [0, 1, 2]
1316- let bo = size(bn)
1317- let bp = $Tuple4(aF, cd.transactionId, dZ, nil)
1318- func bq (br,bs) = if ((bs >= bo))
1319- then br
1320- else fG(br, bn[bs])
1316+ let fT = {
1317+ let bp = [0, 1, 2]
1318+ let bq = size(bp)
1319+ let br = $Tuple5(aH, cf.transactionId, eb, nil, nil)
1320+ func bs (bt,bu) = if ((bu >= bq))
1321+ then bt
1322+ else fH(bt, bp[bu])
13211323
1322- func bt (br,bs) = if ((bs >= bo))
1323- then br
1324+ func bv (bt,bu) = if ((bu >= bq))
1325+ then bt
13241326 else throw("List size exceeds 3")
13251327
1326- bt(bq(bq(bq(bp, 0), 1), 2), 3)
1328+ bv(bs(bs(bs(br, 0), 1), 2), 3)
13271329 }
1328- $Tuple2(([StringEntry(ap, fS._3), IntegerEntry(ao, fS._1)] ++ fS._4), 0)
1330+ $Tuple2((((fT._4 :+ StringEntry(ap, fT._3)) :+ IntegerEntry(ao, fT._1)) :+ StringEntry(aq(fE), makeString(fT._5, "_"))), 0)
13291331 }
13301332 }
13311333 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 10000000
99
1010 let d = 100000000
1111
1212 let e = 100000000000000
1313
1414 let f = 86400000
1515
1616 let g = 10
1717
1818 let h = 100
1919
2020 let i = 2
2121
2222 let j = 5000000
2323
2424 let k = take(drop(this.bytes, 1), 1)
2525
2626 let l = {
2727 let m = k
2828 if ((base58'2W' == m))
2929 then 4487040
3030 else if ((base58'2T' == m))
3131 then 3412800
3232 else throw("Unknown chain")
3333 }
3434
3535 let n = {
3636 let m = k
3737 if ((base58'2W' == m))
3838 then 4517280
3939 else if ((base58'2T' == m))
4040 then 3443040
4141 else throw("Unknown chain")
4242 }
4343
4444 let o = {
4545 let m = k
4646 if ((base58'2W' == m))
4747 then 1440
4848 else if ((base58'2T' == m))
4949 then 60
5050 else throw("Unknown chain")
5151 }
5252
5353 let p = {
5454 let m = k
5555 if ((base58'2W' == m))
5656 then 10080
5757 else if ((base58'2T' == m))
5858 then 180
5959 else throw("Unknown chain")
6060 }
6161
6262 let q = {
6363 let m = k
6464 if ((base58'2W' == m))
6565 then 0
6666 else if ((base58'2T' == m))
6767 then 1146000
6868 else throw("Unknown chain")
6969 }
7070
7171 let r = {
7272 let m = k
7373 if ((base58'2W' == m))
7474 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
7575 else if ((base58'2T' == m))
7676 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
7777 else throw("Unknown chain")
7878 }
7979
8080 let s = {
8181 let m = k
8282 if ((base58'2W' == m))
8383 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
8484 else if ((base58'2T' == m))
8585 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
8686 else throw("Unknown chain")
8787 }
8888
8989 let t = {
9090 let m = k
9191 if ((base58'2W' == m))
9292 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
9393 else if ((base58'2T' == m))
9494 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
9595 else throw("Unknown chain")
9696 }
9797
9898 let u = {
9999 let m = k
100100 if ((base58'2W' == m))
101101 then f
102102 else if ((base58'2T' == m))
103103 then 60000
104104 else throw("Unknown chain")
105105 }
106106
107107 let v = {
108108 let m = k
109109 if ((base58'2W' == m))
110110 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
111111 else if ((base58'2T' == m))
112112 then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
113113 else throw("Unknown chain")
114114 }
115115
116116 func w (x,y) = valueOrErrorMessage(getString(x, y), makeString(["mandatory ", toString(x), ".", y, " is not defined"], ""))
117117
118118
119119 let z = 1
120120
121121 let A = 2
122122
123123 let B = 5
124124
125125 let C = 6
126126
127127 func D () = "%s__restConfig"
128128
129129
130130 func E () = "%s__rest2Addr"
131131
132132
133133 func F () = "%s__restAddr"
134134
135135
136136 let G = addressFromStringValue(valueOrElse(getString(this, F()), t))
137137
138138 func H (I) = split_4C(w(I, D()), a)
139139
140140
141141 func J (K,L) = valueOrErrorMessage(addressFromString(K[L]), ("Rest cfg doesn't contain address at index " + toString(L)))
142142
143143
144144 let M = 1
145145
146146 let N = H(G)
147147
148148 let O = J(N, M)
149149
150150 let P = addressFromStringValue(valueOrElse(getString(this, E()), s))
151151
152152 let K = H(P)
153153
154154 let Q = J(K, z)
155155
156156 let R = J(K, A)
157157
158158 let S = J(K, B)
159159
160160 let T = J(K, C)
161161
162162 let U = "oldAcresContract"
163163
164164 func V () = "contractsBlocked"
165165
166166
167167 func W (X) = ("lastWeekTxIdByUser_" + X)
168168
169169
170170 func Y (X) = ("curWeekTxIdByUser_" + X)
171171
172172
173173 func Z (x) = ("finishBlockFor_" + x)
174174
175175
176176 let aa = "wlg_assetId"
177177
178178 let ab = valueOrErrorMessage(getBinary(R, aa), "WLGOLD is not issued yet")
179179
180180 let ac = "acresIssuedAmount"
181181
182182 let ad = "acresAssetId"
183183
184184 let ae = valueOrErrorMessage(getBinary(Q, ad), "ACRES is not issued yet")
185185
186186 func af (X) = ("acresStakedTimeByUser_" + X)
187187
188188
189189 func ag (ah) = ("stakedLandsByOwner_" + ah)
190190
191191
192192 func ai (ah) = ("stakedDuckByOwner_" + ah)
193193
194194
195195 func aj (ak,X) = ((("st_" + ak) + "_") + X)
196196
197197
198198 func al (ah) = ("stakedNFTsByOwner_" + ah)
199199
200200
201201 func am (x) = ("promoAcres_" + x)
202202
203203
204204 func an (x) = ("promoTickets_" + x)
205205
206206
207207 let ao = "totalPromoTickets"
208208
209209 let ap = "promoMap"
210210
211-func aq (ar) = {
212- let m = ar
211+func aq (ar) = ("dailyWinners_" + toString(ar))
212+
213+
214+func as (at) = {
215+ let m = at
213216 if ($isInstanceOf(m, "Int"))
214217 then {
215- let as = m
216- as
218+ let au = m
219+ au
217220 }
218221 else throw("fail to cast into Int")
219222 }
220223
221224
222-func at (au) = {
223- let m = au
225+func av (aw) = {
226+ let m = aw
224227 if ($isInstanceOf(m, "(Int, Int, Int, Int, Int)"))
225228 then {
226- let av = m
227- av
229+ let ax = m
230+ ax
228231 }
229232 else throw("fail to cast into (Int, Int, Int, Int, Int)")
230233 }
231234
232235
233-func aw (au) = {
234- let m = au
236+func ay (aw) = {
237+ let m = aw
235238 if ($isInstanceOf(m, "(Int, Int, Int, Int)"))
236239 then {
237- let av = m
238- av
240+ let ax = m
241+ ax
239242 }
240243 else throw("fail to cast into (Int, Int, Int, Int)")
241244 }
242245
243246
244-func ax (au) = {
245- let m = au
247+func az (aw) = {
248+ let m = aw
246249 if ($isInstanceOf(m, "(Int, Int, Int)"))
247250 then {
248- let av = m
249- av
251+ let ax = m
252+ ax
250253 }
251254 else throw("fail to cast into (Int, Int, Int)")
252255 }
253256
254257
255-func ay (au) = {
256- let m = au
258+func aA (aw) = {
259+ let m = aw
257260 if ($isInstanceOf(m, "(Int, Int)"))
258261 then {
259- let av = m
260- av
262+ let ax = m
263+ ax
261264 }
262265 else throw("fail to cast into (Int, Int)")
263266 }
264267
265268
266-func az (au,aA) = {
267- let aB = pow(10, 0, aA, 0, 0, DOWN)
268- let aC = toString((au % aB))
269- let aD = drop(toString(aB), (1 + size(aC)))
270- (((toString((au / aB)) + ".") + aD) + aC)
269+func aB (aw,aC) = {
270+ let aD = pow(10, 0, aC, 0, 0, DOWN)
271+ let aE = toString((aw % aD))
272+ let aF = drop(toString(aD), (1 + size(aE)))
273+ (((toString((aw / aD)) + ".") + aF) + aE)
271274 }
272275
273276
274-func aE (aF,aG,aH) = if ((0 >= aF))
277+func aG (aH,aI,aJ) = if ((0 >= aH))
275278 then throw("maxValue should be > 0")
276279 else {
277- let aI = sha256_16Kb((aG + aH))
278- (toInt(aI) % aF)
280+ let aK = sha256_16Kb((aI + aJ))
281+ (toInt(aK) % aH)
279282 }
280283
281284
282-func aJ (au,aK) = {
283- let aL = toString(au)
284- let aD = drop(toString(pow(10, 0, (aK - size(aL)), 0, 0, DOWN)), 1)
285- (aD + aL)
285+func aL (aw,aM) = {
286+ let aN = toString(aw)
287+ let aF = drop(toString(pow(10, 0, (aM - size(aN)), 0, 0, DOWN)), 1)
288+ (aF + aN)
286289 }
287290
288291
289-let aM = 1000000
292+let aO = 1000000
290293
291-let aN = 100000000
294+let aP = 100000000
292295
293-let aO = "wlg_issuedAmount"
296+let aQ = "wlg_issuedAmount"
294297
295-let aP = "zbill_issuedAmount"
298+let aR = "zbill_issuedAmount"
296299
297-func aQ (X) = ("acresStakedAmountByUser_" + X)
300+func aS (X) = ("acresStakedAmountByUser_" + X)
298301
299302
300-func aR (X) = ("farmingPowerByUser_" + X)
303+func aT (X) = ("farmingPowerByUser_" + X)
301304
302305
303-let aS = "acresStakedAmountTotal"
306+let aU = "acresStakedAmountTotal"
304307
305-let aT = "totalFarmingPower"
308+let aV = "totalFarmingPower"
306309
307-let aU = 3
310+let aW = 3
308311
309-let aV = 1
312+let aX = 1
310313
311-let aW = 5000
314+let aY = 5000
312315
313-let aX = 4
316+let aZ = 4
314317
315-let aY = "nftTotalIssued"
318+let ba = "nftTotalIssued"
316319
317-let aZ = "nftTotalBurned"
320+let bb = "nftTotalBurned"
318321
319-let ba = "WlNftTotalStaked"
322+let bc = "WlNftTotalStaked"
320323
321-let bb = "ArkNftTotalStaked"
324+let bd = "ArkNftTotalStaked"
322325
323-func bc (ak) = ("nftNumberByAssetId_" + ak)
326+func be (ak) = ("nftNumberByAssetId_" + ak)
324327
325328
326-func bd (X) = ("userWlNftNumber_" + X)
329+func bf (X) = ("userWlNftNumber_" + X)
327330
328331
329-func be (X) = ("userArkNftNumber_" + X)
332+func bg (X) = ("userArkNftNumber_" + X)
330333
331334
332-func bf (X) = ("userFullBonus_" + X)
335+func bh (X) = ("userFullBonus_" + X)
333336
334337
335-let bg = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
338+let bi = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
336339
337-func bh (bi) = {
338- let bj = ((bi + 99999999) / aN)
339- func bk (bl,bm) = if ((bm >= bj))
340- then bl
341- else (bl + 1)
340+func bj (bk) = {
341+ let bl = ((bk + 99999999) / aP)
342+ func bm (bn,bo) = if ((bo >= bl))
343+ then bn
344+ else (bn + 1)
342345
343- let bn = bg
344- let bo = size(bn)
345- let bp = 0
346- func bq (br,bs) = if ((bs >= bo))
347- then br
348- else bk(br, bn[bs])
346+ let bp = bi
347+ let bq = size(bp)
348+ let br = 0
349+ func bs (bt,bu) = if ((bu >= bq))
350+ then bt
351+ else bm(bt, bp[bu])
349352
350- func bt (br,bs) = if ((bs >= bo))
351- then br
353+ func bv (bt,bu) = if ((bu >= bq))
354+ then bt
352355 else throw("List size exceeds 10")
353356
354- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
357+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
355358 }
356359
357360
358-func bu (bi) = ((bi * 20) * (bh(bi) + 4))
361+func bw (bk) = ((bk * 20) * (bj(bk) + 4))
359362
360363
361-func bv (bi,bw) = {
362- let bx = bu(bi)
363- $Tuple2(fraction(bx, (aM + bw), aM), bx)
364+func bx (bk,by) = {
365+ let bz = bw(bk)
366+ $Tuple2(fraction(bz, (aO + by), aO), bz)
364367 }
365368
366369
367-let by = "teamAddr"
370+let bA = "teamAddr"
368371
369-func bz (X) = ("lastArbTimeUser_" + X)
372+func bB (X) = ("lastArbTimeUser_" + X)
370373
371374
372-let bA = 1733346000000
375+let bC = 1733346000000
373376
374-let bB = 14
377+let bD = 14
375378
376-let bC = "lastAcresSellTime"
379+let bE = "lastAcresSellTime"
377380
378-let bD = "lastLimitLeft"
381+let bF = "lastLimitLeft"
379382
380-let bE = ["Gold shovel", "Pickaxe"]
383+let bG = ["Gold shovel", "Pickaxe"]
381384
382-let bF = ["Reward for early birds", "Increases FarmPower"]
385+let bH = ["Reward for early birds", "Increases FarmPower"]
383386
384-let bG = 0
387+let bI = 0
385388
386-let bH = 1
389+let bJ = 1
387390
388-let bI = [5, 10, 20]
391+let bK = [5, 10, 20]
389392
390-let bJ = 0
393+let bL = 0
391394
392-let bK = 1
395+let bM = 1
393396
394-let bL = 2
397+let bN = 2
395398
396-let bM = ["SHOVEL", "PICKAXE"]
399+let bO = ["SHOVEL", "PICKAXE"]
397400
398-let bN = 0
401+let bP = 0
399402
400-let bO = 1
403+let bQ = 1
401404
402-let bP = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
405+let bR = ["contentPickaxeC", "contentPickaxeU", "contentPickaxeL", "contentPickaxeE", "contentShovelP"]
403406
404-let bQ = 0
407+let bS = 0
405408
406-let bR = 4
409+let bT = 4
407410
408-let bS = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
411+let bU = ["Common", "Uncommon", "Legendary", "Epic", "Promo"]
409412
410-let bT = 0
413+let bV = 0
411414
412-let bU = 1
415+let bW = 1
413416
414-let bV = 2
417+let bX = 2
415418
416-let bW = 3
419+let bY = 3
417420
418-let bX = 4
421+let bZ = 4
419422
420-let bY = ["Digging tools"]
421-
422-let bZ = 0
423-
424-let ca = ["FarmPower"]
423+let ca = ["Digging tools"]
425424
426425 let cb = 0
427426
428-func cc (cd) = if (if ((cd.originCaller != P))
427+let cc = ["FarmPower"]
428+
429+let cd = 0
430+
431+func ce (cf) = if (if ((cf.originCaller != P))
429432 then valueOrElse(getBoolean(V()), false)
430433 else false)
431434 then throw("Contracts are under maintenance")
432435 else {
433- let X = toString(cd.originCaller)
434- let ce = (height / p)
435- let cf = W(X)
436- let cg = getString(cf)
437- let ch = toBase58String(cd.transactionId)
438- let ci = ((toString(ce) + "_") + ch)
439- let cj = Y(X)
440- if (isDefined(cg))
436+ let X = toString(cf.originCaller)
437+ let cg = (height / p)
438+ let ch = W(X)
439+ let ci = getString(ch)
440+ let cj = toBase58String(cf.transactionId)
441+ let ck = ((toString(cg) + "_") + cj)
442+ let cl = Y(X)
443+ if (isDefined(ci))
441444 then {
442- let ck = split(value(cg), "_")
443- if ((ck[0] == toString(ce)))
444- then [StringEntry(cf, ci), StringEntry(cj, ci)]
445- else if ((ck[0] == toString((ce - 1))))
446- then [StringEntry(cj, ci)]
445+ let cm = split(value(ci), "_")
446+ if ((cm[0] == toString(cg)))
447+ then [StringEntry(ch, ck), StringEntry(cl, ck)]
448+ else if ((cm[0] == toString((cg - 1))))
449+ then [StringEntry(cl, ck)]
447450 else {
448- let cl = getStringValue(cj)
449- let cm = split(cl, "_")
450- if ((cm[0] == toString(ce)))
451- then [StringEntry(cj, ci)]
452- else [StringEntry(cf, cl), StringEntry(cj, ci)]
451+ let cn = getStringValue(cl)
452+ let co = split(cn, "_")
453+ if ((co[0] == toString(cg)))
454+ then [StringEntry(cl, ck)]
455+ else [StringEntry(ch, cn), StringEntry(cl, ck)]
453456 }
454457 }
455- else [StringEntry(cf, ci), StringEntry(cj, ci)]
458+ else [StringEntry(ch, ck), StringEntry(cl, ck)]
456459 }
457460
458461
459-func cn (co,cp,cq,cr,cs,ct,cu,cv) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + co) + "\", ") + "\"number\": ") + toString(cp)) + ", ") + "\"collection\": \"") + cq) + "\", ") + "\"name\": \"") + cr) + "\", ") + "\"description\": \"") + cs) + "\", ") + "\"rare\": \"") + ct) + "\", ") + "\"bonus\": ") + toString(cu)) + ", ") + "\"bonusType\": \"") + cv) + "\"}")
462+func cp (cq,cr,cs,ct,cu,cv,cw,cx) = (((((((((((((((((((((((("{\"url\": \"https://waveslands.com\", " + "\"contentKey\": \"") + cq) + "\", ") + "\"number\": ") + toString(cr)) + ", ") + "\"collection\": \"") + cs) + "\", ") + "\"name\": \"") + ct) + "\", ") + "\"description\": \"") + cu) + "\", ") + "\"rare\": \"") + cv) + "\", ") + "\"bonus\": ") + toString(cw)) + ", ") + "\"bonusType\": \"") + cx) + "\"}")
460463
461464
462-func cw (cx,cy,cz,cA,cB,cC,cD,X) = {
463- let cp = valueOrElse(getInteger(aY), 0)
464- let ct = bS[cA]
465- let cr = (((bM[cx] + "-") + take(ct, 1)) + toString(cB))
466- let cE = Issue(cr, cn(bP[cy], cp, bY[cz], bE[cx], bF[cC], bS[cA], cB, ca[cD]), 1, 0, false)
467- let cF = calculateAssetId(cE)
468- $Tuple2([cE, IntegerEntry(aY, (cp + 1)), IntegerEntry(bc(toBase58String(cF)), cp), ScriptTransfer(X, 1, cF)], cF)
465+func cy (cz,cA,cB,cC,cD,cE,cF,X) = {
466+ let cr = valueOrElse(getInteger(ba), 0)
467+ let cv = bU[cC]
468+ let ct = (((bO[cz] + "-") + take(cv, 1)) + toString(cD))
469+ let cG = Issue(ct, cp(bR[cA], cr, ca[cB], bG[cz], bH[cE], bU[cC], cD, cc[cF]), 1, 0, false)
470+ let cH = calculateAssetId(cG)
471+ $Tuple2([cG, IntegerEntry(ba, (cr + 1)), IntegerEntry(be(toBase58String(cH)), cr), ScriptTransfer(X, 1, cH)], cH)
469472 }
470473
471474
472-func cG (cs) = if (!(contains(cs, "\"bonusType\": \"FarmPower\"")))
473- then throw(("NFT is not supported: " + cs))
475+func cI (cu) = if (!(contains(cu, "\"bonusType\": \"FarmPower\"")))
476+ then throw(("NFT is not supported: " + cu))
474477 else {
475- let cH = split_4C(split_4C(cs, "\"bonus\":")[1], ",")[0]
476- parseIntValue(drop(cH, (valueOrElse(lastIndexOf(cH, " "), -1) + 1)))
478+ let cJ = split_4C(split_4C(cu, "\"bonus\":")[1], ",")[0]
479+ parseIntValue(drop(cJ, (valueOrElse(lastIndexOf(cJ, " "), -1) + 1)))
477480 }
478481
479482
480-func cI (cs) = if (!(contains(cs, "\"rare\"")))
481- then throw(("NFT is not supported: " + cs))
483+func cK (cu) = if (!(contains(cu, "\"rare\"")))
484+ then throw(("NFT is not supported: " + cu))
482485 else {
483- let cJ = split_4C(split_4C(split_4C(cs, "\"rare\"")[1], ",")[0], "\"")[1]
484- value(indexOf(bS, cJ))
486+ let cL = split_4C(split_4C(split_4C(cu, "\"rare\"")[1], ",")[0], "\"")[1]
487+ value(indexOf(bU, cL))
485488 }
486489
487490
488-func cK (cL,x,cM) = if (if ((cL == 0))
489- then (cM == 0)
491+func cM (cN,x,cO) = if (if ((cN == 0))
492+ then (cO == 0)
490493 else false)
491494 then throw("Nothing to do")
492495 else {
493- let cN = invoke(R, "onStakeUnstakeLand", [x], nil)
494- if ((cN == cN))
496+ let cP = invoke(R, "onStakeUnstakeLand", [x], nil)
497+ if ((cP == cP))
495498 then {
496- let cO = lastBlock.timestamp
497- let cP = af(x)
498- let cQ = aQ(x)
499- let cR = valueOrElse(getInteger(cQ), 0)
500- if (if ((0 > cL))
501- then (0 > (cR + cL))
499+ let cQ = lastBlock.timestamp
500+ let cR = af(x)
501+ let cS = aS(x)
502+ let cT = valueOrElse(getInteger(cS), 0)
503+ if (if ((0 > cN))
504+ then (0 > (cT + cN))
502505 else false)
503- then throw(((("You have only " + az(cR, 8)) + " ACRES staked, tried to unstake ") + az(-(cL), 8)))
506+ then throw(((("You have only " + aB(cT, 8)) + " ACRES staked, tried to unstake ") + aB(-(cN), 8)))
504507 else {
505- let cS = (cR + cL)
506- let cT = valueOrElse(getInteger(aS), 0)
507- let cU = aR(x)
508- let cV = valueOrElse(getInteger(cU), 0)
509- let cW = bf(x)
510- let cX = valueOrElse(getInteger(Q, cW), 0)
511- if (if ((0 > cM))
512- then (0 > (cX + cM))
508+ let cU = (cT + cN)
509+ let cV = valueOrElse(getInteger(aU), 0)
510+ let cW = aT(x)
511+ let cX = valueOrElse(getInteger(cW), 0)
512+ let cY = bh(x)
513+ let cZ = valueOrElse(getInteger(Q, cY), 0)
514+ if (if ((0 > cO))
515+ then (0 > (cZ + cO))
513516 else false)
514- then throw((((("You have only " + az(cX, 4)) + "% bonus, and tried to unstake ") + az(-(cM), 4)) + "%"))
517+ then throw((((("You have only " + aB(cZ, 4)) + "% bonus, and tried to unstake ") + aB(-(cO), 4)) + "%"))
515518 else {
516- let cY = bv(cS, (cX + cM))
517- let cZ = cY._1
518- let da = cY._2
519- let db = valueOrElse(getInteger(aT), 0)
520- let dc = if ((cL == 0))
519+ let da = bx(cU, (cZ + cO))
520+ let db = da._1
521+ let dc = da._2
522+ let dd = valueOrElse(getInteger(aV), 0)
523+ let de = if ((cN == 0))
521524 then nil
522- else [IntegerEntry(cQ, cS), IntegerEntry(aS, (cT + cL))]
523- let dd = if ((cM == 0))
525+ else [IntegerEntry(cS, cU), IntegerEntry(aU, (cV + cN))]
526+ let df = if ((cO == 0))
524527 then nil
525- else [IntegerEntry(cW, (cX + cM))]
526- $Tuple2(((((dc ++ dd) :+ IntegerEntry(cP, lastBlock.timestamp)) :+ IntegerEntry(cU, cZ)) :+ IntegerEntry(aT, ((db + cZ) - cV))), cN)
528+ else [IntegerEntry(cY, (cZ + cO))]
529+ $Tuple2(((((de ++ df) :+ IntegerEntry(cR, lastBlock.timestamp)) :+ IntegerEntry(cW, db)) :+ IntegerEntry(aV, ((dd + db) - cX))), cP)
527530 }
528531 }
529532 }
530533 else throw("Strict value is not equal to itself.")
531534 }
532535
533536
534-func de (df) = {
535- let dg = valueOrErrorMessage(getInteger(R, aO), "WLGOLD is not issued yet")
536- let dh = assetBalance(R, r)
537- let di = (assetBalance(Q, r) - df)
538- let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
539- let dk = ((di + dh) + dj)
540- fraction(dk, d, dg)
537+func dg (dh) = {
538+ let di = valueOrErrorMessage(getInteger(R, aQ), "WLGOLD is not issued yet")
539+ let dj = assetBalance(R, r)
540+ let dk = (assetBalance(Q, r) - dh)
541+ let dl = (assetBalance(S, r) + valueOrElse(getInteger(S, aR), 0))
542+ let dm = ((dk + dj) + dl)
543+ fraction(dm, d, di)
541544 }
542545
543546
544-func dl () = {
545- let dh = assetBalance(R, r)
546- let di = assetBalance(this, r)
547- let dj = (assetBalance(S, r) + valueOrElse(getInteger(S, aP), 0))
548- let dm = (((di + dh) + dj) / h)
549- let dn = valueOrElse(getInteger(bD), dm)
550- let do = valueOrElse(getInteger(bC), 0)
551- let cO = lastBlock.timestamp
552- let dp = (dn + fraction(dm, (cO - do), f))
553- let dq = min([dp, dm])
554- $Tuple2(IntegerEntry(bC, cO), dq)
547+func dn () = {
548+ let dj = assetBalance(R, r)
549+ let dk = assetBalance(this, r)
550+ let dl = (assetBalance(S, r) + valueOrElse(getInteger(S, aR), 0))
551+ let do = (((dk + dj) + dl) / h)
552+ let dp = valueOrElse(getInteger(bF), do)
553+ let dq = valueOrElse(getInteger(bE), 0)
554+ let cQ = lastBlock.timestamp
555+ let dr = (dp + fraction(do, (cQ - dq), f))
556+ let ds = min([dr, do])
557+ $Tuple2(IntegerEntry(bE, cQ), ds)
555558 }
556559
557560
558-let dr = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
561+let dt = addressFromStringValue("3PJgZ6AK1WVCpdCmEZpesHmaKvrQDdXG5og")
559562
560-let ds = valueOrElse(getString(dr, "static_incubatorAddress"), "")
563+let du = valueOrElse(getString(dt, "static_incubatorAddress"), "")
561564
562-let dt = valueOrElse(getString(dr, "static_breederAddress"), "")
565+let dv = valueOrElse(getString(dt, "static_breederAddress"), "")
563566
564-let du = valueOrElse(getString(dr, "static_turtleIncubatorAddress"), "")
567+let dw = valueOrElse(getString(dt, "static_turtleIncubatorAddress"), "")
565568
566-let dv = valueOrElse(getString(dr, "static_turtleBreederAddress"), "")
569+let dx = valueOrElse(getString(dt, "static_turtleBreederAddress"), "")
567570
568-let dw = valueOrElse(getString(dr, "static_canineIncubatorAddress"), "")
571+let dy = valueOrElse(getString(dt, "static_canineIncubatorAddress"), "")
569572
570-let dx = valueOrElse(getString(dr, "static_canineBreederAddress"), "")
573+let dz = valueOrElse(getString(dt, "static_canineBreederAddress"), "")
571574
572-let dy = valueOrElse(getString(dr, "static_felineIncubatorAddress"), "")
575+let dA = valueOrElse(getString(dt, "static_felineIncubatorAddress"), "")
573576
574-let dz = valueOrElse(getString(dr, "static_felineBreederAddress"), "")
577+let dB = valueOrElse(getString(dt, "static_felineBreederAddress"), "")
575578
576-let dA = valueOrElse(getString(dr, "static_mutantIncubatorAddress"), "")
579+let dC = valueOrElse(getString(dt, "static_mutantIncubatorAddress"), "")
577580
578-func dB (dC) = {
579- let dD = toString(dC.issuer)
581+func dD (dE) = {
582+ let dF = toString(dE.issuer)
580583 if (if (if (if (if (if (if (if (if (if ((k == base58'2T'))
581- then (dD == v)
584+ then (dF == v)
582585 else false)
583586 then true
584- else (dD == ds))
587+ else (dF == du))
585588 then true
586- else (dD == dt))
589+ else (dF == dv))
587590 then true
588- else (dD == du))
591+ else (dF == dw))
589592 then true
590- else (dD == dv))
593+ else (dF == dx))
591594 then true
592- else (dD == dw))
595+ else (dF == dy))
593596 then true
594- else (dD == dx))
597+ else (dF == dz))
595598 then true
596- else (dD == dy))
599+ else (dF == dA))
597600 then true
598- else (dD == dz))
599- then dC.name
600- else if ((dD == dA))
601- then dC.description
601+ else (dF == dB))
602+ then dE.name
603+ else if ((dF == dC))
604+ then dE.description
602605 else ""
603606 }
604607
605608
606-func dE (X,dF,bw,dG,dH,dI) = {
607- let dJ = valueOrElse(getInteger(dG), 0)
608- if ((dJ >= dI))
609- then throw((("You can stake max " + toString(dI)) + " of such NFTs"))
609+func dG (X,dH,by,dI,dJ,dK) = {
610+ let dL = valueOrElse(getInteger(dI), 0)
611+ if ((dL >= dK))
612+ then throw((("You can stake max " + toString(dK)) + " of such NFTs"))
610613 else {
611- let dK = cK(0, X, bw)
612- let dL = dK._1
613- let dM = dK._2
614- $Tuple2((((dL :+ IntegerEntry(dG, (dJ + 1))) :+ IntegerEntry(dH, (valueOrElse(getInteger(dH), 0) + 1))) :+ IntegerEntry(aj(dF, X), lastBlock.timestamp)), dM)
614+ let dM = cM(0, X, by)
615+ let dN = dM._1
616+ let dO = dM._2
617+ $Tuple2((((dN :+ IntegerEntry(dI, (dL + 1))) :+ IntegerEntry(dJ, (valueOrElse(getInteger(dJ), 0) + 1))) :+ IntegerEntry(aj(dH, X), lastBlock.timestamp)), dO)
615618 }
616619 }
617620
618621
619-let dN = 3
622+let dP = 3
620623
621-let dO = [50000000, 25000000, 25000000]
624+let dQ = [50000000, 25000000, 25000000]
622625
623-func dP (x,cL,dQ) = {
624- let dR = cK(cL, x, 0)
625- let dL = dR._1
626- let dM = dR._2
627- let dS = if (if ((height >= l))
626+func dR (x,cN,dS) = {
627+ let dT = cM(cN, x, 0)
628+ let dN = dT._1
629+ let dO = dT._2
630+ let dU = if (if ((height >= l))
628631 then (n > height)
629632 else false)
630633 then {
631- let dT = am(x)
632- let dU = ((if (dQ)
634+ let dV = am(x)
635+ let dW = ((if (dS)
633636 then 0
634- else valueOrElse(getInteger(dT), 0)) + cL)
635- let dV = (dU / d)
636- let dW = an(x)
637- let dX = (dV - valueOrElse(getInteger(dW), 0))
638- let dY = (valueOrElse(getInteger(ao), 0) + dX)
639- if (if (dQ)
637+ else valueOrElse(getInteger(dV), 0)) + cN)
638+ let dX = (dW / d)
639+ let dY = an(x)
640+ let dZ = (dX - valueOrElse(getInteger(dY), 0))
641+ let ea = (valueOrElse(getInteger(ao), 0) + dZ)
642+ if (if (dS)
640643 then true
641- else (dX > 0))
644+ else (dZ > 0))
642645 then {
643- let dZ = valueOrElse(getString(ap), "")
644- let ea = ((x + ":") + aJ(dV, 3))
645- let eb = if (contains(dZ, x))
646+ let eb = valueOrElse(getString(ap), "")
647+ let ec = ((x + ":") + aL(dX, 3))
648+ let ed = if (contains(eb, x))
646649 then {
647- let ec = split_51C(dZ, x)
648- if ((ec[0] == ""))
650+ let ee = split_51C(eb, x)
651+ if ((ee[0] == ""))
649652 then {
650- let ed = drop(ec[1], 4)
651- if ((ed == ""))
652- then if ((dV == 0))
653+ let ef = drop(ee[1], 4)
654+ if ((ef == ""))
655+ then if ((dX == 0))
653656 then ""
654- else ea
655- else if ((dV == 0))
656- then drop(ed, 1)
657- else (ea + ed)
657+ else ec
658+ else if ((dX == 0))
659+ then drop(ef, 1)
660+ else (ec + ef)
658661 }
659662 else {
660- let ed = drop(ec[1], 4)
661- if ((ed == ""))
662- then if ((dV == 0))
663- then dropRight(ec[0], 1)
664- else (ec[0] + ea)
665- else if ((dV == 0))
666- then (ec[0] + drop(ed, 1))
667- else ((ec[0] + ea) + ed)
663+ let ef = drop(ee[1], 4)
664+ if ((ef == ""))
665+ then if ((dX == 0))
666+ then dropRight(ee[0], 1)
667+ else (ee[0] + ec)
668+ else if ((dX == 0))
669+ then (ee[0] + drop(ef, 1))
670+ else ((ee[0] + ec) + ef)
668671 }
669672 }
670- else if ((dV == 0))
671- then dZ
672- else if ((dZ == ""))
673- then ea
674- else ((dZ + "_") + ea)
675-[IntegerEntry(dT, dU), IntegerEntry(dW, dV), IntegerEntry(ao, dY), StringEntry(ap, eb)]
673+ else if ((dX == 0))
674+ then eb
675+ else if ((eb == ""))
676+ then ec
677+ else ((eb + "_") + ec)
678+[IntegerEntry(dV, dW), IntegerEntry(dY, dX), IntegerEntry(ao, ea), StringEntry(ap, ed)]
676679 }
677- else [IntegerEntry(dT, dU)]
680+ else [IntegerEntry(dV, dW)]
678681 }
679682 else nil
680- $Tuple2((dL ++ dS), dM)
683+ $Tuple2((dN ++ dU), dO)
681684 }
682685
683686
684-@Callable(cd)
685-func saveLastTx () = if (!(containsElement([R, T], cd.caller)))
687+@Callable(cf)
688+func saveLastTx () = if (!(containsElement([R, T], cf.caller)))
686689 then throw("Access denied")
687- else $Tuple2(cc(cd), 42)
690+ else $Tuple2(ce(cf), 42)
688691
689692
690693
691-@Callable(cd)
692-func constructorV1 (ee,ef) = if ((cd.caller != this))
694+@Callable(cf)
695+func constructorV1 (eg,eh) = if ((cf.caller != this))
693696 then throw("Permission denied")
694697 else {
695- let eg = addressFromStringValue(ef)
696-[IntegerEntry(ac, getIntegerValue(eg, ac)), BinaryEntry(ad, getBinaryValue(eg, ad)), StringEntry(E(), ee), StringEntry(U, ef)]
698+ let ei = addressFromStringValue(eh)
699+[IntegerEntry(ac, getIntegerValue(ei, ac)), BinaryEntry(ad, getBinaryValue(ei, ad)), StringEntry(E(), eg), StringEntry(U, eh)]
697700 }
698701
699702
700703
701-@Callable(cd)
702-func setBlocked (eh) = if ((cd.caller != this))
704+@Callable(cf)
705+func setBlocked (ej) = if ((cf.caller != this))
703706 then throw("permission denied")
704- else [BooleanEntry(V(), eh)]
707+ else [BooleanEntry(V(), ej)]
705708
706709
707710
708-@Callable(cd)
709-func unstakeAcres (ei) = {
710- let ej = cc(cd)
711+@Callable(cf)
712+func unstakeAcres (ek) = {
713+ let el = ce(cf)
711714 if (if ((height >= l))
712715 then (n > height)
713716 else false)
714717 then throw("You can't unstake during Xmas promo period")
715- else if ((0 >= ei))
718+ else if ((0 >= ek))
716719 then throw("Amount should be positive")
717720 else {
718- let x = toString(cd.caller)
719- if ((size(cd.payments) != 0))
721+ let x = toString(cf.caller)
722+ if ((size(cf.payments) != 0))
720723 then throw("No payments required")
721724 else {
722- let ek = (valueOrElse(getInteger(R, bz(x)), 0) + u)
723- if ((ek > lastBlock.timestamp))
724- then throw(("You traded some WLGOLD, cannot unstake until " + toString(ek)))
725+ let em = (valueOrElse(getInteger(R, bB(x)), 0) + u)
726+ if ((em > lastBlock.timestamp))
727+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(em)))
725728 else {
726- let el = cK(-(ei), x, 0)
727- let dL = el._1
728- let dM = el._2
729- $Tuple2(((dL :+ ScriptTransfer(cd.caller, ei, ae)) ++ ej), dM)
729+ let en = cM(-(ek), x, 0)
730+ let dN = en._1
731+ let dO = en._2
732+ $Tuple2(((dN :+ ScriptTransfer(cf.caller, ek, ae)) ++ el), dO)
730733 }
731734 }
732735 }
733736 }
734737
735738
736739
737-@Callable(cd)
740+@Callable(cf)
738741 func stakeAcres () = {
739- let ej = cc(cd)
740- let x = toString(cd.caller)
741- if ((size(cd.payments) != 1))
742+ let el = ce(cf)
743+ let x = toString(cf.caller)
744+ if ((size(cf.payments) != 1))
742745 then throw("exactly 1 payment must be attached")
743746 else {
744- let em = cd.payments[0]
745- let cL = em.amount
746- if (if (!(isDefined(em.assetId)))
747+ let eo = cf.payments[0]
748+ let cN = eo.amount
749+ if (if (!(isDefined(eo.assetId)))
747750 then true
748- else (value(em.assetId) != ae))
751+ else (value(eo.assetId) != ae))
749752 then throw("ACRES payments only!")
750753 else {
751- let en = dP(x, cL, false)
752- let eo = en._1
753- let dM = en._2
754- $Tuple2((eo ++ ej), dM)
754+ let ep = dR(x, cN, false)
755+ let eq = ep._1
756+ let dO = ep._2
757+ $Tuple2((eq ++ el), dO)
755758 }
756759 }
757760 }
758761
759762
760763
761-@Callable(cd)
764+@Callable(cf)
762765 func buyAcres () = {
763- let ej = cc(cd)
764- if ((size(cd.payments) != 1))
766+ let el = ce(cf)
767+ if ((size(cf.payments) != 1))
765768 then throw("exactly 1 payment must be attached")
766769 else {
767- let em = cd.payments[0]
768- let ep = em.amount
769- if (if (!(isDefined(em.assetId)))
770+ let eo = cf.payments[0]
771+ let er = eo.amount
772+ if (if (!(isDefined(eo.assetId)))
770773 then true
771- else (value(em.assetId) != r))
774+ else (value(eo.assetId) != r))
772775 then throw("USDT payments only!")
773- else if ((b > ep))
774- then throw((("Min payment should be " + az(b, 6)) + " USDT"))
776+ else if ((b > er))
777+ then throw((("Min payment should be " + aB(b, 6)) + " USDT"))
775778 else {
776- let eq = (ep * g)
777- let er = fraction(ep, d, de(ep))
778- let es = addressFromStringValue(getStringValue(U))
779- let et = invoke(es, "requestAcresCallback", [eq], nil)
780- if ((et == et))
779+ let es = (er * g)
780+ let et = fraction(er, d, dg(er))
781+ let eu = addressFromStringValue(getStringValue(U))
782+ let ev = invoke(eu, "requestAcresCallback", [es], nil)
783+ if ((ev == ev))
781784 then {
782- let eu = aq(invoke(R, "burnWlgold", [er], nil))
783- $Tuple2(([ScriptTransfer(cd.caller, eq, ae)] ++ ej), eu)
785+ let ew = as(invoke(R, "burnWlgold", [et], nil))
786+ $Tuple2(([ScriptTransfer(cf.caller, es, ae)] ++ el), ew)
784787 }
785788 else throw("Strict value is not equal to itself.")
786789 }
787790 }
788791 }
789792
790793
791794
792-@Callable(cd)
793-func buyAcresREADONLY (ep) = {
794- let eq = (ep * g)
795- let ev = fraction(ep, d, de(ep))
796- $Tuple2(nil, [eq, b, eq, ev])
795+@Callable(cf)
796+func buyAcresREADONLY (er) = {
797+ let es = (er * g)
798+ let ex = fraction(er, d, dg(er))
799+ $Tuple2(nil, [es, b, es, ex])
797800 }
798801
799802
800803
801-@Callable(cd)
804+@Callable(cf)
802805 func sellAcres () = {
803- let ej = cc(cd)
804- if ((size(cd.payments) != 1))
806+ let el = ce(cf)
807+ if ((size(cf.payments) != 1))
805808 then throw("exactly 1 payment must be attached")
806809 else {
807- let em = cd.payments[0]
808- let eq = em.amount
809- if (if (!(isDefined(em.assetId)))
810+ let eo = cf.payments[0]
811+ let es = eo.amount
812+ if (if (!(isDefined(eo.assetId)))
810813 then true
811- else (value(em.assetId) != ae))
814+ else (value(eo.assetId) != ae))
812815 then throw("ACRES payments only!")
813- else if ((c > eq))
814- then throw((("Min payment should be " + az(c, 8)) + " ACRES"))
816+ else if ((c > es))
817+ then throw((("Min payment should be " + aB(c, 8)) + " ACRES"))
815818 else {
816- let X = toString(cd.caller)
817- let ew = dl()
818- let ex = ew._1
819- let ey = ew._2
820- let ez = (ey * g)
821- if ((eq > ez))
822- then throw((("You can sell max " + az(ez, 8)) + " ACRES"))
819+ let X = toString(cf.caller)
820+ let ey = dn()
821+ let ez = ey._1
822+ let eA = ey._2
823+ let eB = (eA * g)
824+ if ((es > eB))
825+ then throw((("You can sell max " + aB(eB, 8)) + " ACRES"))
823826 else {
824- let ep = ((eq / g) / 2)
825- $Tuple2(([ex, IntegerEntry(bD, (ey - ep)), ScriptTransfer(cd.caller, ep, r)] ++ ej), ep)
827+ let er = ((es / g) / 2)
828+ $Tuple2(([ez, IntegerEntry(bF, (eA - er)), ScriptTransfer(cf.caller, er, r)] ++ el), er)
826829 }
827830 }
828831 }
829832 }
830833
831834
832835
833-@Callable(cd)
834-func sellAcresREADONLY (x,eq) = {
835- let eA = dl()
836- let ex = eA._1
837- let ey = eA._2
838- let ep = ((eq / g) / 2)
839- $Tuple2(nil, [ep, c, (ey * g), 0])
836+@Callable(cf)
837+func sellAcresREADONLY (x,es) = {
838+ let eC = dn()
839+ let ez = eC._1
840+ let eA = eC._2
841+ let er = ((es / g) / 2)
842+ $Tuple2(nil, [er, c, (eA * g), 0])
840843 }
841844
842845
843846
844-@Callable(cd)
847+@Callable(cf)
845848 func convertOldStakes () = {
846- let ej = cc(cd)
847- if ((bA > lastBlock.timestamp))
848- then throw(("Disabled until " + toString((bA / 1000))))
849+ let el = ce(cf)
850+ if ((bC > lastBlock.timestamp))
851+ then throw(("Disabled until " + toString((bC / 1000))))
849852 else {
850- let x = toString(cd.caller)
851- if ((size(cd.payments) != 0))
853+ let x = toString(cf.caller)
854+ if ((size(cf.payments) != 0))
852855 then throw("No payments required")
853856 else {
854- let es = addressFromStringValue(getStringValue(U))
855- let ei = valueOrElse(getInteger(es, aQ(x)), 0)
856- let eB = if ((ei > 0))
857- then ay(invoke(es, "unstakeAcresCallback", [ei, x], nil))
857+ let eu = addressFromStringValue(getStringValue(U))
858+ let ek = valueOrElse(getInteger(eu, aS(x)), 0)
859+ let eD = if ((ek > 0))
860+ then aA(invoke(eu, "unstakeAcresCallback", [ek, x], nil))
858861 else $Tuple2(0, 0)
859- let eC = addressFromStringValue(v)
860- let eD = getString(eC, ag(x))
861- let eE = if (isDefined(eD))
862+ let eE = addressFromStringValue(v)
863+ let eF = getString(eE, ag(x))
864+ let eG = if (isDefined(eF))
862865 then {
863- let eF = split_51C(value(eD), "_")
864- if ((size(eF) > bB))
865- then throw((("You have more than " + toString(bB)) + " lands staked, please contact support, we'll process your case manually"))
866+ let eH = split_51C(value(eF), "_")
867+ if ((size(eH) > bD))
868+ then throw((("You have more than " + toString(bD)) + " lands staked, please contact support, we'll process your case manually"))
866869 else {
867- func eG (bl,eH) = if ((eH == ""))
870+ func eI (bn,eJ) = if ((eJ == ""))
868871 then throw("landAssetId is required")
869872 else {
870- let ed = at(invoke(eC, "unstakeLandCallback", [eH, x], nil))
871- if ((ed == ed))
872- then $Tuple5((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4), (bl._5 + ed._5))
873+ let ef = av(invoke(eE, "unstakeLandCallback", [eJ, x], nil))
874+ if ((ef == ef))
875+ then $Tuple5((bn._1 + ef._1), (bn._2 + ef._2), (bn._3 + ef._3), (bn._4 + ef._4), (bn._5 + ef._5))
873876 else throw("Strict value is not equal to itself.")
874877 }
875878
876- let eI = {
877- let bn = eF
878- let bo = size(bn)
879- let bp = $Tuple5(0, 0, 0, 0, 0)
880- func bq (br,bs) = if ((bs >= bo))
881- then br
882- else eG(br, bn[bs])
879+ let eK = {
880+ let bp = eH
881+ let bq = size(bp)
882+ let br = $Tuple5(0, 0, 0, 0, 0)
883+ func bs (bt,bu) = if ((bu >= bq))
884+ then bt
885+ else eI(bt, bp[bu])
883886
884- func bt (br,bs) = if ((bs >= bo))
885- then br
887+ func bv (bt,bu) = if ((bu >= bq))
888+ then bt
886889 else throw("List size exceeds 14")
887890
888- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
891+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14)
889892 }
890- if ((eI == eI))
893+ if ((eK == eK))
891894 then {
892- let eJ = invoke(eC, "unstakeLandsFinalizeCallback", [x], nil)
893- if ((eJ == eJ))
895+ let eL = invoke(eE, "unstakeLandsFinalizeCallback", [x], nil)
896+ if ((eL == eL))
894897 then {
895- let et = invoke(es, "requestAcresCallback", [(((eI._1 + eI._2) + eI._3) + eI._4)], nil)
896- if ((et == et))
898+ let ev = invoke(eu, "requestAcresCallback", [(((eK._1 + eK._2) + eK._3) + eK._4)], nil)
899+ if ((ev == ev))
897900 then {
898- let eK = cw(bN, bR, bZ, bX, 3, bG, cb, cd.caller)
899- let eL = eK._1
900- let cF = eK._2
901- $Tuple6(eI._1, eI._2, eI._3, eI._4, eI._5, eL)
901+ let eM = cy(bP, bT, cb, bZ, 3, bI, cd, cf.caller)
902+ let eN = eM._1
903+ let cH = eM._2
904+ $Tuple6(eK._1, eK._2, eK._3, eK._4, eK._5, eN)
902905 }
903906 else throw("Strict value is not equal to itself.")
904907 }
905908 else throw("Strict value is not equal to itself.")
906909 }
907910 else throw("Strict value is not equal to itself.")
908911 }
909912 }
910913 else $Tuple6(0, 0, 0, 0, 0, nil)
911- let eM = valueOrElse(getString(eC, ai(x)), "")
912- let eN = if ((eM != ""))
913- then ax(invoke(eC, "unstakeDuckCallback", [eM, x], nil))
914+ let eO = valueOrElse(getString(eE, ai(x)), "")
915+ let eP = if ((eO != ""))
916+ then az(invoke(eE, "unstakeDuckCallback", [eO, x], nil))
914917 else $Tuple3(0, 0, 0)
915- let eO = cK((((((((eB._1 + eE._1) + eE._2) + eE._3) + eE._4) + eN._1) + eN._2) + eN._3), x, 0)
916- $Tuple2(((eE._6 ++ eO._1) ++ ej), $Tuple3(eB._2, eE._5, eO._2))
918+ let eQ = cM((((((((eD._1 + eG._1) + eG._2) + eG._3) + eG._4) + eP._1) + eP._2) + eP._3), x, 0)
919+ $Tuple2(((eG._6 ++ eQ._1) ++ el), $Tuple3(eD._2, eG._5, eQ._2))
917920 }
918921 }
919922 }
920923
921924
922925
923-@Callable(cd)
926+@Callable(cf)
924927 func unstakeLandsREADONLY (x) = {
925- let eC = addressFromStringValue(v)
926- let eD = getString(eC, ag(x))
927- let eE = if (isDefined(eD))
928+ let eE = addressFromStringValue(v)
929+ let eF = getString(eE, ag(x))
930+ let eG = if (isDefined(eF))
928931 then {
929- let eF = split_51C(value(eD), "_")
930- func eG (bl,eH) = if ((eH == ""))
932+ let eH = split_51C(value(eF), "_")
933+ func eI (bn,eJ) = if ((eJ == ""))
931934 then throw("landAssetId is required")
932935 else {
933- let ed = aw(invoke(eC, "unstakeLandREADONLY", [eH, x], nil))
934- $Tuple4((bl._1 + ed._1), (bl._2 + ed._2), (bl._3 + ed._3), (bl._4 + ed._4))
936+ let ef = ay(invoke(eE, "unstakeLandREADONLY", [eJ, x], nil))
937+ $Tuple4((bn._1 + ef._1), (bn._2 + ef._2), (bn._3 + ef._3), (bn._4 + ef._4))
935938 }
936939
937- let bn = eF
938- let bo = size(bn)
939- let bp = $Tuple4(0, 0, 0, 0)
940- func bq (br,bs) = if ((bs >= bo))
941- then br
942- else eG(br, bn[bs])
940+ let bp = eH
941+ let bq = size(bp)
942+ let br = $Tuple4(0, 0, 0, 0)
943+ func bs (bt,bu) = if ((bu >= bq))
944+ then bt
945+ else eI(bt, bp[bu])
943946
944- func bt (br,bs) = if ((bs >= bo))
945- then br
947+ func bv (bt,bu) = if ((bu >= bq))
948+ then bt
946949 else throw("List size exceeds 100")
947950
948- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
951+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
949952 }
950953 else $Tuple4(0, 0, 0, 0)
951- $Tuple2(nil, eE)
954+ $Tuple2(nil, eG)
952955 }
953956
954957
955958
956-@Callable(cd)
957-func stakeAcresCallback (X) = if ((cd.caller != addressFromStringValue(v)))
959+@Callable(cf)
960+func stakeAcresCallback (X) = if ((cf.caller != addressFromStringValue(v)))
958961 then throw("Permission denied")
959- else cK(cd.payments[0].amount, X, 0)
962+ else cM(cf.payments[0].amount, X, 0)
960963
961964
962965
963-@Callable(cd)
964-func simulateStakeAcresREADONLY (x,eP) = {
965- let cQ = aQ(x)
966- let cS = (valueOrElse(getInteger(cQ), 0) + eP)
967- let cT = valueOrElse(getInteger(aS), 0)
968- let cU = aR(x)
969- let cV = valueOrElse(getInteger(cU), 0)
970- let eQ = valueOrElse(getInteger(Q, bf(x)), 0)
971- let eR = bv(cS, eQ)
972- let cZ = eR._1
973- let da = eR._2
974- let db = valueOrElse(getInteger(aT), 0)
975- let eS = ((db + cZ) - cV)
976- $Tuple2(nil, [cV, cZ, db, eS])
966+@Callable(cf)
967+func simulateStakeAcresREADONLY (x,eR) = {
968+ let cS = aS(x)
969+ let cU = (valueOrElse(getInteger(cS), 0) + eR)
970+ let cV = valueOrElse(getInteger(aU), 0)
971+ let cW = aT(x)
972+ let cX = valueOrElse(getInteger(cW), 0)
973+ let eS = valueOrElse(getInteger(Q, bh(x)), 0)
974+ let eT = bx(cU, eS)
975+ let db = eT._1
976+ let dc = eT._2
977+ let dd = valueOrElse(getInteger(aV), 0)
978+ let eU = ((dd + db) - cX)
979+ $Tuple2(nil, [cX, db, dd, eU])
977980 }
978981
979982
980983
981-@Callable(cd)
982-func issuePickC1 (eT) = if ((cd.caller != R))
984+@Callable(cf)
985+func issuePickC1 (eV) = if ((cf.caller != R))
983986 then throw("Permission denied")
984- else cw(bO, bQ, bZ, bT, 1, bH, cb, addressFromStringValue(eT))
987+ else cy(bQ, bS, cb, bV, 1, bJ, cd, addressFromStringValue(eV))
985988
986989
987990
988-@Callable(cd)
991+@Callable(cf)
989992 func stakeNFT () = {
990- let ej = cc(cd)
991- if ((size(cd.payments) != 1))
993+ let el = ce(cf)
994+ if ((size(cf.payments) != 1))
992995 then throw("Exactly one payment required")
993996 else {
994- let em = value(cd.payments[0])
995- if ((em.amount != 1))
997+ let eo = value(cf.payments[0])
998+ if ((eo.amount != 1))
996999 then throw("NFT token should be attached as payment")
9971000 else {
998- let ak = value(em.assetId)
999- let eU = value(assetInfo(ak))
1000- let dF = toBase58String(ak)
1001- let X = toString(cd.caller)
1002- let eV = al(X)
1003- let eW = getString(eV)
1004- let eX = if (isDefined(eW))
1005- then split_4C(value(eW), "_")
1001+ let ak = value(eo.assetId)
1002+ let eW = value(assetInfo(ak))
1003+ let dH = toBase58String(ak)
1004+ let X = toString(cf.caller)
1005+ let eX = al(X)
1006+ let eY = getString(eX)
1007+ let eZ = if (isDefined(eY))
1008+ then split_4C(value(eY), "_")
10061009 else nil
1007- if (containsElement(eX, dF))
1008- then throw(("Your staked NFTs already contain " + dF))
1009- else if ((size(eX) >= aX))
1010- then throw((("Your already staked max (" + toString(aX)) + ") NFTs"))
1010+ if (containsElement(eZ, dH))
1011+ then throw(("Your staked NFTs already contain " + dH))
1012+ else if ((size(eZ) >= aZ))
1013+ then throw((("Your already staked max (" + toString(aZ)) + ") NFTs"))
10111014 else {
1012- let eY = StringEntry(eV, makeString_2C((eX :+ dF), "_"))
1013- if ((eU.issuer == this))
1015+ let fa = StringEntry(eX, makeString_2C((eZ :+ dH), "_"))
1016+ if ((eW.issuer == this))
10141017 then {
1015- let eZ = dE(X, dF, (cG(value(eU.description)) * 10000), bd(X), ba, aU)
1016- let dL = eZ._1
1017- let dM = eZ._2
1018- $Tuple2(((ej ++ dL) :+ eY), dM)
1018+ let fb = dG(X, dH, (cI(value(eW.description)) * 10000), bf(X), bc, aW)
1019+ let dN = fb._1
1020+ let dO = fb._2
1021+ $Tuple2(((el ++ dN) :+ fa), dO)
10191022 }
1020- else if ((dB(eU) == ""))
1023+ else if ((dD(eW) == ""))
10211024 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
10221025 else {
1023- let fa = dE(X, dF, aW, be(X), bb, aV)
1024- let dL = fa._1
1025- let dM = fa._2
1026- $Tuple2(((ej ++ dL) :+ eY), dM)
1026+ let fc = dG(X, dH, aY, bg(X), bd, aX)
1027+ let dN = fc._1
1028+ let dO = fc._2
1029+ $Tuple2(((el ++ dN) :+ fa), dO)
10271030 }
10281031 }
10291032 }
10301033 }
10311034 }
10321035
10331036
10341037
1035-@Callable(cd)
1036-func unstakeNFT (dF) = {
1037- let ej = cc(cd)
1038- if ((size(cd.payments) != 0))
1038+@Callable(cf)
1039+func unstakeNFT (dH) = {
1040+ let el = ce(cf)
1041+ if ((size(cf.payments) != 0))
10391042 then throw("No payments required")
10401043 else {
1041- let ak = fromBase58String(dF)
1042- let X = toString(cd.caller)
1043- let eU = value(assetInfo(ak))
1044- let cP = aj(dF, X)
1045- if (!(isDefined(getInteger(cP))))
1046- then throw((("NFT " + eU.name) + " is not staked by you"))
1044+ let ak = fromBase58String(dH)
1045+ let X = toString(cf.caller)
1046+ let eW = value(assetInfo(ak))
1047+ let cR = aj(dH, X)
1048+ if (!(isDefined(getInteger(cR))))
1049+ then throw((("NFT " + eW.name) + " is not staked by you"))
10471050 else {
1048- let eV = al(X)
1049- let eX = split_4C(valueOrElse(getString(eV), ""), "_")
1050- let L = indexOf(eX, dF)
1051+ let eX = al(X)
1052+ let eZ = split_4C(valueOrElse(getString(eX), ""), "_")
1053+ let L = indexOf(eZ, dH)
10511054 if (!(isDefined(L)))
1052- then throw(("Your staked NFTs don't contain " + dF))
1055+ then throw(("Your staked NFTs don't contain " + dH))
10531056 else {
1054- let eY = if ((size(eX) > 1))
1055- then StringEntry(eV, makeString_2C(removeByIndex(eX, value(L)), "_"))
1056- else DeleteEntry(eV)
1057- let fb = (eU.issuer == this)
1058- if (fb)
1057+ let fa = if ((size(eZ) > 1))
1058+ then StringEntry(eX, makeString_2C(removeByIndex(eZ, value(L)), "_"))
1059+ else DeleteEntry(eX)
1060+ let fd = (eW.issuer == this)
1061+ if (fd)
10591062 then {
1060- let fc = valueOrElse(getInteger(bd(X)), 0)
1061- let fd = (cG(value(eU.description)) * 10000)
1062- let fe = cK(0, X, -(fd))
1063- let dL = fe._1
1064- let dM = fe._2
1065- $Tuple2(((((((dL :+ eY) :+ IntegerEntry(bd(X), (fc - 1))) :+ IntegerEntry(ba, max([0, (valueOrElse(getInteger(ba), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
1063+ let fe = valueOrElse(getInteger(bf(X)), 0)
1064+ let ff = (cI(value(eW.description)) * 10000)
1065+ let fg = cM(0, X, -(ff))
1066+ let dN = fg._1
1067+ let dO = fg._2
1068+ $Tuple2(((((((dN :+ fa) :+ IntegerEntry(bf(X), (fe - 1))) :+ IntegerEntry(bc, max([0, (valueOrElse(getInteger(bc), 0) - 1)]))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cf.caller, 1, ak)) ++ el), dO)
10661069 }
10671070 else {
1068- let ff = dB(eU)
1069- if ((ff == ""))
1071+ let fh = dD(eW)
1072+ if ((fh == ""))
10701073 then throw("Only WavesLands and Arkimals NFT tokens are accepted")
10711074 else {
1072- let fg = valueOrElse(getInteger(be(X)), 0)
1073- let fh = cK(0, X, -(aW))
1074- let dL = fh._1
1075- let dM = fh._2
1076- $Tuple2((((((dL :+ eY) :+ IntegerEntry(be(X), (fg - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cd.caller, 1, ak)) ++ ej), dM)
1075+ let fi = valueOrElse(getInteger(bg(X)), 0)
1076+ let fj = cM(0, X, -(aY))
1077+ let dN = fj._1
1078+ let dO = fj._2
1079+ $Tuple2((((((dN :+ fa) :+ IntegerEntry(bg(X), (fi - 1))) :+ DeleteEntry(aj(toBase58String(ak), X))) :+ ScriptTransfer(cf.caller, 1, ak)) ++ el), dO)
10771080 }
10781081 }
10791082 }
10801083 }
10811084 }
10821085 }
10831086
10841087
10851088
1086-@Callable(cd)
1089+@Callable(cf)
10871090 func exchangeNFTs () = {
1088- let ej = cc(cd)
1089- if ((3 > size(cd.payments)))
1091+ let el = ce(cf)
1092+ if ((3 > size(cf.payments)))
10901093 then throw("Min one WLGOLD and 2 NFT payments allowed")
1091- else if ((size(cd.payments) > 10))
1094+ else if ((size(cf.payments) > 10))
10921095 then throw("Max one WLGOLD and 9 NFT payments allowed")
10931096 else {
1094- let X = toString(cd.caller)
1095- func fi (bl,em) = {
1096- let ak = valueOrErrorMessage(em.assetId, "WAVES payments not allowed")
1097+ let X = toString(cf.caller)
1098+ func fk (bn,eo) = {
1099+ let ak = valueOrErrorMessage(eo.assetId, "WAVES payments not allowed")
10971100 if ((ak == ab))
1098- then $Tuple4((bl._1 + em.amount), bl._2, bl._3, bl._4)
1101+ then $Tuple4((bn._1 + eo.amount), bn._2, bn._3, bn._4)
10991102 else {
1100- let eU = value(assetInfo(ak))
1101- if ((eU.issuer != this))
1103+ let eW = value(assetInfo(ak))
1104+ if ((eW.issuer != this))
11021105 then throw("Only WL-issued NFTs allowed")
11031106 else {
1104- let fj = cI(value(eU.description))
1105- if (if ((bl._4 > 0))
1106- then (fj != bl._4)
1107+ let fl = cK(value(eW.description))
1108+ if (if ((bn._4 > 0))
1109+ then (fl != bn._4)
11071110 else false)
11081111 then throw("You can exchange only NFTs of the same rarity")
11091112 else {
1110- let cB = cG(value(eU.description))
1111- $Tuple4(bl._1, (bl._2 + cB), (bl._3 :+ Burn(ak, 1)), fj)
1113+ let cD = cI(value(eW.description))
1114+ $Tuple4(bn._1, (bn._2 + cD), (bn._3 :+ Burn(ak, 1)), fl)
11121115 }
11131116 }
11141117 }
11151118 }
11161119
1117- let fk = {
1118- let bn = cd.payments
1119- let bo = size(bn)
1120- let bp = $Tuple4(0, 0, nil, -1)
1121- func bq (br,bs) = if ((bs >= bo))
1122- then br
1123- else fi(br, bn[bs])
1120+ let fm = {
1121+ let bp = cf.payments
1122+ let bq = size(bp)
1123+ let br = $Tuple4(0, 0, nil, -1)
1124+ func bs (bt,bu) = if ((bu >= bq))
1125+ then bt
1126+ else fk(bt, bp[bu])
11241127
1125- func bt (br,bs) = if ((bs >= bo))
1126- then br
1128+ func bv (bt,bu) = if ((bu >= bq))
1129+ then bt
11271130 else throw("List size exceeds 10")
11281131
1129- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
1132+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11301133 }
1131- let fl = fk._1
1132- let fm = fk._2
1133- let fn = fk._3
1134- let cA = fk._4
1135- let fo = if ((cA == bT))
1136- then if ((bI[bJ] > fm))
1137- then bT
1138- else if ((bI[bK] > fm))
1139- then bU
1140- else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bK])) + "%"))
1141- else if ((cA == bU))
1142- then if ((bI[bK] > fm))
1143- then bU
1144- else if ((bI[bL] > fm))
1145- then bV
1146- else throw((("You can advance only one level of rarity, max total bonus " + toString(bI[bL])) + "%"))
1147- else if ((cA == bV))
1148- then if ((bI[bL] > fm))
1149- then bV
1150- else bW
1151- else if ((cA == bW))
1152- then bW
1153- else if ((cA == bX))
1134+ let fn = fm._1
1135+ let fo = fm._2
1136+ let fp = fm._3
1137+ let cC = fm._4
1138+ let fq = if ((cC == bV))
1139+ then if ((bK[bL] > fo))
1140+ then bV
1141+ else if ((bK[bM] > fo))
1142+ then bW
1143+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bK[bM])) + "%"))
1144+ else if ((cC == bW))
1145+ then if ((bK[bM] > fo))
1146+ then bW
1147+ else if ((bK[bN] > fo))
1148+ then bX
1149+ else throw((("You can advance only one level of rarity, max total bonus " + toString(bK[bN])) + "%"))
1150+ else if ((cC == bX))
1151+ then if ((bK[bN] > fo))
1152+ then bX
1153+ else bY
1154+ else if ((cC == bY))
1155+ then bY
1156+ else if ((cC == bZ))
11541157 then throw("You can't exchange NFTs of this rarity")
11551158 else throw("Unknown rarity")
1156- let fp = fraction(fm, e, de(0))
1157- let fq = (fl - fp)
1158- let fr = (fp / 2)
1159- let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1160- if ((0 > fq))
1161- then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
1159+ let fr = fraction(fo, e, dg(0))
1160+ let fs = (fn - fr)
1161+ let ft = (fr / 2)
1162+ let ew = as(invoke(R, "burnWlgold", [(fr - ft)], nil))
1163+ if ((0 > fs))
1164+ then throw((("You need to attach " + aB(fr, 8)) + " WLGOLD as fee"))
11621165 else {
1163- let fs = if ((fq > 0))
1164- then [ScriptTransfer(cd.caller, fq, ab)]
1166+ let fu = if ((fs > 0))
1167+ then [ScriptTransfer(cf.caller, fs, ab)]
11651168 else nil
1166- let ft = cw(bO, fo, bZ, fo, fm, bH, cb, cd.caller)
1167- let fu = ft._1
1168- let cF = ft._2
1169- let fv = size(fn)
1170- let fw = if ((fv == 0))
1169+ let fv = cy(bQ, fq, cb, fq, fo, bJ, cd, cf.caller)
1170+ let fw = fv._1
1171+ let cH = fv._2
1172+ let fx = size(fp)
1173+ let fy = if ((fx == 0))
11711174 then nil
1172- else [IntegerEntry(aZ, (valueOrElse(getInteger(aZ), 0) + fv))]
1173- $Tuple2((((((fu ++ fn) ++ fw) ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)), $Tuple2(cF, eu))
1175+ else [IntegerEntry(bb, (valueOrElse(getInteger(bb), 0) + fx))]
1176+ $Tuple2((((((fw ++ fp) ++ fy) ++ el) ++ fu) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, bA)), ft, ab)), $Tuple2(cH, ew))
11741177 }
11751178 }
11761179 }
11771180
11781181
11791182
1180-@Callable(cd)
1183+@Callable(cf)
11811184 func openNftChest () = {
1182- let ej = cc(cd)
1183- if ((size(cd.payments) != 1))
1185+ let el = ce(cf)
1186+ if ((size(cf.payments) != 1))
11841187 then throw("exactly 1 payment must be attached")
11851188 else {
1186- let em = cd.payments[0]
1187- let er = em.amount
1188- if (if (!(isDefined(em.assetId)))
1189+ let eo = cf.payments[0]
1190+ let et = eo.amount
1191+ if (if (!(isDefined(eo.assetId)))
11891192 then true
1190- else (value(em.assetId) != ab))
1193+ else (value(eo.assetId) != ab))
11911194 then throw("WLGOLD payments only!")
11921195 else {
1193- let fp = fraction(j, d, de(0))
1194- let fq = (er - fp)
1195- let fr = (fp / 2)
1196- let eu = aq(invoke(R, "burnWlgold", [(fp - fr)], nil))
1197- if ((0 > fq))
1198- then throw((("You need to attach " + az(fp, 8)) + " WLGOLD as fee"))
1196+ let fr = fraction(j, d, dg(0))
1197+ let fs = (et - fr)
1198+ let ft = (fr / 2)
1199+ let ew = as(invoke(R, "burnWlgold", [(fr - ft)], nil))
1200+ if ((0 > fs))
1201+ then throw((("You need to attach " + aB(fr, 8)) + " WLGOLD as fee"))
11991202 else {
1200- let fs = if ((fq > 0))
1201- then [ScriptTransfer(cd.caller, fq, ab)]
1203+ let fu = if ((fs > 0))
1204+ then [ScriptTransfer(cf.caller, fs, ab)]
12021205 else nil
1203- let X = toString(cd.caller)
1204- let fx = Z(X)
1205- let fy = valueOrErrorMessage(getInteger(fx), "You have to commitForRandom() first!")
1206- if ((fy > height))
1207- then throw(("Random number is not ready yet, wait until height = " + toString(fy)))
1206+ let X = toString(cf.caller)
1207+ let fz = Z(X)
1208+ let fA = valueOrErrorMessage(getInteger(fz), "You have to commitForRandom() first!")
1209+ if ((fA > height))
1210+ then throw(("Random number is not ready yet, wait until height = " + toString(fA)))
12081211 else {
1209- let aH = value(value(blockInfoByHeight(fy)).vrf)
1210- let aG = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1211- let fz = aE(100, aG, aH)
1212- let fA = if ((84 > fz))
1213- then $Tuple2(1, bT)
1214- else if ((98 > fz))
1215- then $Tuple2(5, bU)
1216- else $Tuple2(10, bV)
1217- let cu = fA._1
1218- let cA = fA._2
1219- let fB = cw(bO, cA, bZ, cA, cu, bH, cb, cd.caller)
1220- let fu = fB._1
1221- let cF = fB._2
1222- $Tuple2(((((fu ++ ej) ++ fs) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, by)), fr, ab)) :+ DeleteEntry(fx)), $Tuple2(cF, eu))
1212+ let aJ = value(value(blockInfoByHeight(fA)).vrf)
1213+ let aI = fromBase58String(split(valueOrElse(getString(Y(X)), "42_DEFAULT"), "_")[1])
1214+ let fB = aG(100, aI, aJ)
1215+ let fC = if ((84 > fB))
1216+ then $Tuple2(1, bV)
1217+ else if ((98 > fB))
1218+ then $Tuple2(5, bW)
1219+ else $Tuple2(10, bX)
1220+ let cw = fC._1
1221+ let cC = fC._2
1222+ let fD = cy(bQ, cC, cb, cC, cw, bJ, cd, cf.caller)
1223+ let fw = fD._1
1224+ let cH = fD._2
1225+ $Tuple2(((((fw ++ el) ++ fu) :+ ScriptTransfer(addressFromStringValue(getStringValue(R, bA)), ft, ab)) :+ DeleteEntry(fz)), $Tuple2(cH, ew))
12231226 }
12241227 }
12251228 }
12261229 }
12271230 }
12281231
12291232
12301233
1231-@Callable(cd)
1234+@Callable(cf)
12321235 func commitForRandom () = {
1233- let ej = cc(cd)
1234- let X = toString(cd.caller)
1235- let fx = Z(X)
1236- if (isDefined(getInteger(fx)))
1236+ let el = ce(cf)
1237+ let X = toString(cf.caller)
1238+ let fz = Z(X)
1239+ if (isDefined(getInteger(fz)))
12371240 then throw("You already commited for random, please use it")
12381241 else {
1239- let fy = (height + i)
1240- $Tuple2(([IntegerEntry(fx, fy)] ++ ej), fy)
1242+ let fA = (height + i)
1243+ $Tuple2(([IntegerEntry(fz, fA)] ++ el), fA)
12411244 }
12421245 }
12431246
12441247
12451248
1246-@Callable(cd)
1247-func drawDaylyPromo () = if ((cd.caller != this))
1249+@Callable(cf)
1250+func drawDaylyPromo () = if ((cf.caller != this))
12481251 then throw("Permission denied")
12491252 else {
1250- let fC = (height % o)
1251- let aF = valueOrElse(getInteger(ao), 0)
1252- if ((aF == 0))
1253+ let fE = (height / o)
1254+ let aH = valueOrElse(getInteger(ao), 0)
1255+ if ((aH == 0))
12531256 then throw("No tickets to draw")
12541257 else {
1255- let fD = (fC * o)
1256- let fE = if ((fD > q))
1257- then fD
1258- else (fD + q)
1259- let aH = value(value(blockInfoByHeight(fE)).vrf)
1260- let dZ = valueOrElse(getString(ap), "")
1261- if ((dZ == ""))
1258+ let fF = (fE * o)
1259+ let fG = if ((fF > q))
1260+ then fF
1261+ else (fF + q)
1262+ let aJ = value(value(blockInfoByHeight(fG)).vrf)
1263+ let eb = valueOrElse(getString(ap), "")
1264+ if ((eb == ""))
12621265 then throw("No participants")
12631266 else {
1264- let fF = split_51C(dZ, "_")
1265- func fG (fH,fI) = if ((fI >= dN))
1266- then fH
1267+ func fH (fI,fJ) = if ((fJ >= dP))
1268+ then fI
12671269 else {
1268- let fz = aE(fH._1, fH._2, aH)
1269- let fJ = if ((fH._3 == ""))
1270+ let fB = aG(fI._1, fI._2, aJ)
1271+ let fK = if ((fI._3 == ""))
12701272 then nil
1271- else split_51C(fH._3, "_")
1272- func fK (bl,fL) = {
1273- let fM = split(fL, ":")
1274- let X = fM[0]
1275- let dV = parseIntValue(fM[1])
1276- let fN = (bl._1 + dV)
1277- if (if ((bl._3 == ""))
1278- then (fN > fz)
1273+ else split_51C(fI._3, "_")
1274+ func fL (bn,fM) = {
1275+ let fN = split(fM, ":")
1276+ let X = fN[0]
1277+ let dX = parseIntValue(fN[1])
1278+ let fO = (bn._1 + dX)
1279+ if (if ((bn._3 == ""))
1280+ then (fO > fB)
12791281 else false)
1280- then $Tuple3(fN, dV, X)
1281- else $Tuple3(fN, bl._2, bl._3)
1282+ then $Tuple3(fO, dX, X)
1283+ else $Tuple3(fO, bn._2, bn._3)
12821284 }
12831285
1284- let ed = {
1285- let bn = fJ
1286- let bo = size(bn)
1287- let bp = $Tuple3(0, 0, "")
1288- func bq (br,bs) = if ((bs >= bo))
1289- then br
1290- else fK(br, bn[bs])
1286+ let ef = {
1287+ let bp = fK
1288+ let bq = size(bp)
1289+ let br = $Tuple3(0, 0, "")
1290+ func bs (bt,bu) = if ((bu >= bq))
1291+ then bt
1292+ else fL(bt, bp[bu])
12911293
1292- func bt (br,bs) = if ((bs >= bo))
1293- then br
1294- else throw("List size exceeds 20")
1294+ func bv (bt,bu) = if ((bu >= bq))
1295+ then bt
1296+ else throw("List size exceeds 200")
12951297
1296- bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1298+ bv(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(bs(br, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110), 111), 112), 113), 114), 115), 116), 117), 118), 119), 120), 121), 122), 123), 124), 125), 126), 127), 128), 129), 130), 131), 132), 133), 134), 135), 136), 137), 138), 139), 140), 141), 142), 143), 144), 145), 146), 147), 148), 149), 150), 151), 152), 153), 154), 155), 156), 157), 158), 159), 160), 161), 162), 163), 164), 165), 166), 167), 168), 169), 170), 171), 172), 173), 174), 175), 176), 177), 178), 179), 180), 181), 182), 183), 184), 185), 186), 187), 188), 189), 190), 191), 192), 193), 194), 195), 196), 197), 198), 199), 200)
12971299 }
1298- let fO = ed._3
1299- if ((fO == ""))
1300- then fH
1300+ let fP = ef._3
1301+ if ((fP == ""))
1302+ then fI
13011303 else {
1302- let ec = split_51C(fH._3, fO)
1303- let eb = if ((ec[0] == ""))
1304- then drop(ec[1], 5)
1305- else (dropRight(ec[0], 1) + drop(ec[1], 4))
1306- let fP = dP(fO, dO[fI], true)
1307- let eo = fP._1
1308- let fQ = fP._2
1309- let fR = fromBase58String(valueOrElse(getString(O, Y(fO)), "DEFAULT"))
1310- $Tuple4((fH._1 - ed._2), fR, eb, (fH._4 :+ eo))
1304+ let ee = split_51C(fI._3, fP)
1305+ let ed = if ((ee[0] == ""))
1306+ then drop(ee[1], 5)
1307+ else (dropRight(ee[0], 1) + drop(ee[1], 4))
1308+ let fQ = dR(fP, dQ[fJ], true)
1309+ let eq = fQ._1
1310+ let fR = fQ._2
1311+ let fS = fromBase58String(valueOrElse(getString(O, Y(fP)), "DEFAULT"))
1312+ $Tuple5((fI._1 - ef._2), fS, ed, (fI._4 :+ eq), (fI._5 :+ fP))
13111313 }
13121314 }
13131315
1314- let fS = {
1315- let bn = [0, 1, 2]
1316- let bo = size(bn)
1317- let bp = $Tuple4(aF, cd.transactionId, dZ, nil)
1318- func bq (br,bs) = if ((bs >= bo))
1319- then br
1320- else fG(br, bn[bs])
1316+ let fT = {
1317+ let bp = [0, 1, 2]
1318+ let bq = size(bp)
1319+ let br = $Tuple5(aH, cf.transactionId, eb, nil, nil)
1320+ func bs (bt,bu) = if ((bu >= bq))
1321+ then bt
1322+ else fH(bt, bp[bu])
13211323
1322- func bt (br,bs) = if ((bs >= bo))
1323- then br
1324+ func bv (bt,bu) = if ((bu >= bq))
1325+ then bt
13241326 else throw("List size exceeds 3")
13251327
1326- bt(bq(bq(bq(bp, 0), 1), 2), 3)
1328+ bv(bs(bs(bs(br, 0), 1), 2), 3)
13271329 }
1328- $Tuple2(([StringEntry(ap, fS._3), IntegerEntry(ao, fS._1)] ++ fS._4), 0)
1330+ $Tuple2((((fT._4 :+ StringEntry(ap, fT._3)) :+ IntegerEntry(ao, fT._1)) :+ StringEntry(aq(fE), makeString(fT._5, "_"))), 0)
13291331 }
13301332 }
13311333 }
13321334
13331335

github/deemru/w8io/169f3d6 
690.67 ms