tx · 5QhYwBHtJGPxSwDsWDEUxY7GsRg4Uhbqu794nCFRqNUA

3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy:  -0.04000000 Waves

2022.08.02 17:10 [2166972] smart account 3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy > SELF 0.00000000 Waves

{ "type": 13, "id": "5QhYwBHtJGPxSwDsWDEUxY7GsRg4Uhbqu794nCFRqNUA", "fee": 4000000, "feeAssetId": null, "timestamp": 1659449437104, "version": 1, "sender": "3N5yarEiTQccnnuerogYT3BxM5Zc5bRgDZy", "senderPublicKey": "FK9j3YFWVChXKESTn33fMZz1JseCNMMqHhfB7smxJo4e", "proofs": [ "sernKpAz41Kb7zWwB2LWVp4fg5rSdmVhtGXuxGbEUgGogP2nbwNu7kXspL9JNRh7yn7YTqFFtsG4U25SResPJgY" ], "script": "base64:BgIkCAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSAwoBCBIASgAJc2VwYXJhdG9yAgJfXwADU0VQAgJfXwAFTVVMVDYAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDYJALYCAQUFTVVMVDYABk1VTFRYOAkAtgIBBQVNVUxUOAAHTVVMVFgxOAkAtgIBAICAkLu61q3wDQAKV0FWRVNJRFNUUgIFV0FWRVMAB1dBVkVTSUQJANkEAQUKV0FWRVNJRFNUUgAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQdhZGRyZXNzAgEuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAERa2V5Q29udHJvbEFkZHJlc3MAAhwlcyVzX19jb25maWdfX2NvbnRyb2xBZGRyZXNzAQ1rZXlDb250cm9sQ2ZnAAIRJXNfX2NvbnRyb2xDb25maWcBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQdjb250cm9sCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQdjb250cm9sCQENa2V5Q29udHJvbENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgpjb250cm9sQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKY29udHJvbENmZwUDaWR4CQCsAgICLUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAD2NvbnRyb2xDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQERa2V5Q29udHJvbEFkZHJlc3MAAiMzTjROUzdkNEpvOWE2RjE0TGlGVUtLWVZkVWtrZjJlUDRaeAAKY29udHJvbENmZwkBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQUPY29udHJvbENvbnRyYWN0AAxtYXRoQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRVJZHhDb250cm9sQ2ZnTWF0aERhcHAAEG5ldXRyaW5vQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAA9hdWN0aW9uQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHABDGtleUJvbmRBc3NldAACDWJvbmRfYXNzZXRfaWQBGWtleUF1Y3Rpb25Db250cmFjdEFkZHJlc3MAAhBhdWN0aW9uX2NvbnRyYWN0ARBrZXlNaW5Mb2NrQW1vdW50AAIRJXNfX21pbkxvY2tBbW91bnQBEGtleVN0YWtlZEFzc2V0SWQAAhElc19fc3Rha2VkQXNzZXRJZAEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAgZhbW91bnQFA25pbAUJc2VwYXJhdG9yARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBXN0YXJ0BQNuaWwFCXNlcGFyYXRvcgEQa2V5SGlzdG9yeVJlY29yZAMEdHlwZQt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIHaGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgkA2AQBBQR0eElkBQNuaWwFCXNlcGFyYXRvcgEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhFhY3RpdmVUb3RhbExvY2tlZAUDbmlsBQlzZXBhcmF0b3IBEmtleVN0YXRzTG9ja3NDb3VudAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBXN0YXRzCQDMCAICCmxvY2tzQ291bnQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c1VzZXJzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAhBhY3RpdmVVc2Vyc0NvdW50BQNuaWwFCXNlcGFyYXRvcgENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAhVzdXBwb3J0ZWRSZXdhcmRBc3NldHMBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQECW9sZEFtb3VudAhvbGRTdGFydAluZXdBbW91bnQIbmV3U3RhcnQJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUJb2xkQW1vdW50CQDMCAIJAKQDAQUIb2xkU3RhcnQJAMwIAgkApAMBBQluZXdBbW91bnQJAMwIAgkApAMBBQhuZXdTdGFydAUDbmlsBQlzZXBhcmF0b3IBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIEdXNlcg5jbGFpbWVkUmV3YXJkcwkAuQkCCQDMCAICCCVzJWQlZCVzCQDMCAIFBHVzZXIJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIFDmNsYWltZWRSZXdhcmRzBQNuaWwFCXNlcGFyYXRvcgESSGlzdG9yeVJlY29yZEVudHJ5BwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwUEdHhJZAkBE2Zvcm1hdEhpc3RvcnlSZWNvcmQEBQlvbGRBbW91bnQFCG9sZFN0YXJ0BQluZXdBbW91bnQFCG5ld1N0YXJ0ARFDbGFpbUhpc3RvcnlFbnRyeQMLdXNlckFkZHJlc3MEdHhJZA5jbGFpbWVkUmV3YXJkcwkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDAgVjbGFpbQULdXNlckFkZHJlc3MFBHR4SWQJARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCCQClCAEFC3VzZXJBZGRyZXNzBQ5jbGFpbWVkUmV3YXJkcwELU3RhdHNSZXN1bHQDDnRvdGFsTG9ja2VkSW5jDGxvY2tDb3VudEluYw11c2Vyc0NvdW50SW5jBApsb2Nrc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzTG9ja3NDb3VudAAECnVzZXJzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNVc2Vyc0NvdW50AAQLdG90YWxBbW91bnQJAQxnZXRJbnRPclplcm8BCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABA50b3RhbEFtb3VudE5ldwkAZAIFC3RvdGFsQW1vdW50BQ50b3RhbExvY2tlZEluYwkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNMb2Nrc0NvdW50AAkAZAIFCmxvY2tzQ291bnQFDGxvY2tDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzVXNlcnNDb3VudAAJAGQCBQp1c2Vyc0NvdW50BQ11c2Vyc0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABQ50b3RhbEFtb3VudE5ldwUDbmlsBQt0b3RhbEFtb3VudAUOdG90YWxBbW91bnROZXcBD0xvY2tQYXJhbXNFbnRyeQMLdXNlckFkZHJlc3MGYW1vdW50BXN0YXJ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MFBXN0YXJ0BQNuaWwBD2dldFBhcmFtc09yRmFpbAAJAJQKAgkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQACQEMZ2V0SW50T3JGYWlsAQkBEGtleU1pbkxvY2tBbW91bnQAAQxpc0FjdGl2ZVVzZXIBC3VzZXJBZGRyZXNzCQBmAgkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MAAAAAARNnZXRVc2VyUGFyYW1zT3JVbml0AQt1c2VyQWRkcmVzcwMJAQxpc0FjdGl2ZVVzZXIBBQt1c2VyQWRkcmVzcwkAlQoDBwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MJAQxnZXRJbnRPckZhaWwBCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBQR1bml0ARNnZXRVc2VyUGFyYW1zT3JGYWlsAQt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCsAgIJAKwCAgIFVXNlciAJAKUIAQULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAASc3VwcG9ydGVkQXNzZXRzU3RyCQEMZ2V0U3RyT3JFbHNlAgkBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACAAATc3VwcG9ydGVkQXNzZXRzTGlzdAkAtQkCBRJzdXBwb3J0ZWRBc3NldHNTdHICAV8BCmNhbGNSZXdhcmQFC3VzZXJBZGRyZXNzB2Fzc2V0SWQNc3Rha2VkQW1vdW50WA5kZXBvc2l0TnVtVXNlcg5kZXBvc2l0TnVtTGFzdAQXcmV3YXJkUGVyTnNidFN1bUxhc3RLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAQKc3VtTGFzdFgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkAgEwBApzdW1Vc2VyWDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bVVzZXIFB2Fzc2V0SWQCATAEEXJld2FyZER5bmFtaWNQYXJ0CQCgAwEJALwCAwkAuAICBQpzdW1MYXN0WDE4BQpzdW1Vc2VyWDE4BQ1zdGFrZWRBbW91bnRYBQdNVUxUWDE4BBNyZXdhcmRDYWNoZWRQYXJ0S0VZCQEJa2V5UmV3YXJkAgULdXNlckFkZHJlc3MFB2Fzc2V0SWQEEHJld2FyZENhY2hlZFBhcnQJAQxnZXRJbnRPckVsc2UCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAJAJYKBAkAZAIFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUTcmV3YXJkQ2FjaGVkUGFydEtFWQENUmV3YXJkRW50cmllcwMJaXNOZXdVc2VyC3VzZXJBZGRyZXNzDHN0YWtlZEFtb3VudAQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFC3VzZXJBZGRyZXNzBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFYWNjdW0FYXNzZXQECyR0MDg0MzY4NTcxCQEKY2FsY1Jld2FyZAUFC3VzZXJBZGRyZXNzBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFCyR0MDg0MzY4NTcxAl8xBAZjYWNoZWQIBQskdDA4NDM2ODU3MQJfMgQHZHluYW1pYwgFCyR0MDg0MzY4NTcxAl8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAULJHQwODQzNjg1NzECXzQJAM0IAgUFYWNjdW0JAQxJbnRlZ2VyRW50cnkCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZBQtyZXdhcmRUb3RhbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAAAIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHBQNuaWwDAwkAAAIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGYCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwkAAgECL2ludmFsaWQgZGVwb3NpdE51bUxhc3QgYW5kIGRlcG9zaXROdW1Vc2VyIHN0YXRlAwMJAGYCBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQBnAgUOZGVwb3NpdE51bVVzZXIA////////////AQcDBQlpc05ld1VzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QFA25pbAkAzQgCCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJAAIBCQCsAgIJAKwCAgkArAICAiR1bmNvdmVyZWQgY29uZGl0aW9uOiBkZXBvc2l0TnVtTGFzdD0JAKQDAQUOZGVwb3NpdE51bUxhc3QCECBkZXBvc2l0TnVtVXNlcj0JAKQDAQUOZGVwb3NpdE51bVVzZXIBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCA3RrbglhbW91bnRJbmMEF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBBQN0a24EFG5vdERpc3RyaWJ1dGVkUmV3YXJkCQEMZ2V0SW50T3JFbHNlAgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jBQNuaWwBC3N1cmZUb0duc2J0AQdzdXJmQW10CQBpAgUHc3VyZkFtdAA8AQtjb21tb25TdGFrZQILdXNlckFkZHJlc3MBaQQNJHQwMTE0NTUxMTUwOQkBD2dldFBhcmFtc09yRmFpbAAEDXN0YWtlZEFzc2V0SWQIBQ0kdDAxMTQ1NTExNTA5Al8xBA1taW5Mb2NrQW1vdW50CAUNJHQwMTE0NTUxMTUwOQJfMgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECFUludmFsaWQgcGF5bWVudHMgc2l6ZQQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQdwYXltZW50BmFtb3VudAQTaW52YWxpZEFzc2V0TWVzc2FnZQkArAICCQCsAgICD0ludmFsaWQgYXNzZXQuIAkA2AQBBQ1zdGFrZWRBc3NldElkAgwgaXMgZXhwZWN0ZWQEB2Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUTaW52YWxpZEFzc2V0TWVzc2FnZQMJAQIhPQIFB2Fzc2V0SWQFDXN0YWtlZEFzc2V0SWQJAAIBBRNpbnZhbGlkQXNzZXRNZXNzYWdlBA51c2VyQWRkcmVzc1N0cgkApQgBBQt1c2VyQWRkcmVzcwQMZ25zYnRBbXRVc2VyAAAEDWduc2J0QW10VG90YWwAAAQNJHQwMTE5NzgxMjA4NwkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAP///////////wEECWlzTmV3VXNlcggFDSR0MDExOTc4MTIwODcCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDExOTc4MTIwODcCXzIED2xvY2tTdGFydEhlaWdodAgFDSR0MDExOTc4MTIwODcCXzMED3N0YWtlZEFtb3VudE5ldwMFCWlzTmV3VXNlcgUGYW1vdW50CQBkAgUGYW1vdW50BQxzdGFrZWRBbW91bnQEEW1lcmdlZFN0YXJ0SGVpZ2h0AwUJaXNOZXdVc2VyBQZoZWlnaHQJAGQCBQZoZWlnaHQJAGgCAKALAA4DCQBmAgUNbWluTG9ja0Ftb3VudAUPc3Rha2VkQW1vdW50TmV3CQACAQkArAICAhNNaW4gbG9jayBhbW91bnQgaXMgCQCkAwEFDW1pbkxvY2tBbW91bnQEDSR0MDEyMzkwMTI0OTIJAQtTdGF0c1Jlc3VsdAMFBmFtb3VudAABAwUJaXNOZXdVc2VyAAEAAAQMc3RhdHNFbnRyaWVzCAUNJHQwMTIzOTAxMjQ5MgJfMQQLdG90YWxTdGFrZWQIBQ0kdDAxMjM5MDEyNDkyAl8yBA50b3RhbFN0YWtlZE5ldwgFDSR0MDEyMzkwMTI0OTICXzMJAM4IAgkAzggCCQDOCAIJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCBXN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAUMc3Rha2VkQW1vdW50BQ9sb2NrU3RhcnRIZWlnaHQFD3N0YWtlZEFtb3VudE5ldwURbWVyZ2VkU3RhcnRIZWlnaHQFA25pbAkBDVJld2FyZEVudHJpZXMDBQlpc05ld1VzZXIFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TmV3BRFtZXJnZWRTdGFydEhlaWdodAUMc3RhdHNFbnRyaWVzAQtjb21tb25DbGFpbQILdXNlckFkZHJlc3MBaQQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIZcGF5bWVudHMgYXJlIG5vdCBhY2NlcHRlZAQNJHQwMTI5NjMxMzA2OAkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDEyOTYzMTMwNjgCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDEyOTYzMTMwNjgCXzIEDHN0YWtpbmdTdGFydAgFDSR0MDEyOTYzMTMwNjgCXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTM0MzkxMzU3NwkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxMzQzOTEzNTc3Al8xBAZjYWNoZWQIBQ0kdDAxMzQzOTEzNTc3Al8yBAdkeW5hbWljCAUNJHQwMTM0MzkxMzU3NwJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDEzNDM5MTM1NzcCXzQECmNsYWltZWRLRVkJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BA0kdDAxMzYzNzEzNjc0BQVhY2N1bQQEZGF0YQgFDSR0MDEzNjM3MTM2NzQCXzEEEWNsYWltZWRBbXRCeUFzc2V0CAUNJHQwMTM2MzcxMzY3NAJfMgQHbmV3UGFydAkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwFA25pbAIBOgQUY2xhaW1lZEFtdEJ5QXNzZXROZXcJALkJAgkAzAgCBRFjbGFpbWVkQW10QnlBc3NldAkAzAgCBQduZXdQYXJ0BQNuaWwCAV8DCQBnAgAABQtyZXdhcmRUb3RhbAkAlAoCBQRkYXRhBRRjbGFpbWVkQW10QnlBc3NldE5ldwkAlAoCCQDNCAIJAM0IAgkAzQgCBQRkYXRhCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULcmV3YXJkVG90YWwJAQt0b0Fzc2V0VmVjdAEFBWFzc2V0CQEMSW50ZWdlckVudHJ5AgUKY2xhaW1lZEtFWQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKY2xhaW1lZEtFWQAABQtyZXdhcmRUb3RhbAkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAUUY2xhaW1lZEFtdEJ5QXNzZXROZXcEDSR0MDE0MTM0MTQyNDgKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoECXRyYW5zZmVycwgFDSR0MDE0MTM0MTQyNDgCXzEEF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0CAUNJHQwMTQxMzQxNDI0OAJfMgMJAGcCAAAJAJADAQUJdHJhbnNmZXJzCQACAQIQbm90aGluZyB0byBjbGFpbQkAzQgCCQDNCAIFCXRyYW5zZmVycwkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJARFDbGFpbUhpc3RvcnlFbnRyeQMFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQCwAgIFF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0AAEKAWkBC2NvbnN0cnVjdG9yAw1taW5Mb2NrQW1vdW50FXN1cHBvcnRlZFJld2FyZEFzc2V0cw1zdGFrZWRBc3NldElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlNaW5Mb2NrQW1vdW50AAUNbWluTG9ja0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAUVc3VwcG9ydGVkUmV3YXJkQXNzZXRzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdGFrZWRBc3NldElkAAUNc3Rha2VkQXNzZXRJZAUDbmlsAWkBBXN0YWtlAAkBC2NvbW1vblN0YWtlAggFAWkGY2FsbGVyBQFpAWkBE3N0YWtlQnlPcmlnaW5DYWxsZXIACQELY29tbW9uU3Rha2UCCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEHdW5zdGFrZQEGYW1vdW50AwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIjdW5zdGFrZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnQEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBA0kdDAxNTE4MDE1MjM0CQEPZ2V0UGFyYW1zT3JGYWlsAAQNc3Rha2VkQXNzZXRJZAgFDSR0MDE1MTgwMTUyMzQCXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAxNTE4MDE1MjM0Al8yBA0kdDAxNTIzNzE1MzExCQETZ2V0VXNlclBhcmFtc09yRmFpbAEFC3VzZXJBZGRyZXNzBAlpc05ld1VzZXIIBQ0kdDAxNTIzNzE1MzExAl8xBApsb2NrQW1vdW50CAUNJHQwMTUyMzcxNTMxMQJfMgQJbG9ja1N0YXJ0CAUNJHQwMTUyMzcxNTMxMQJfMwMJAGcCAAAFCmxvY2tBbW91bnQJAAIBAhJOb3RoaW5nIHRvIHVuc3Rha2UDCQBmAgUGYW1vdW50BQpsb2NrQW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIKUmVxdWVzdGVkIAkApAMBBQZhbW91bnQCEiwgYnV0IHN0YWtlZCBvbmx5IAkApAMBBQpsb2NrQW1vdW50BA0kdDAxNTUwMTE1NjU1CQELU3RhdHNSZXN1bHQDCQEBLQEFBmFtb3VudAMJAAACBQZhbW91bnQFCmxvY2tBbW91bnQA////////////AQAAAwkAAAIFBmFtb3VudAUKbG9ja0Ftb3VudAD///////////8BAAAEDHN0YXRzRW50cmllcwgFDSR0MDE1NTAxMTU2NTUCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTU1MDExNTY1NQJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNTUwMTE1NjU1Al8zCQDOCAIJAM4IAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQZhbW91bnQFDXN0YWtlZEFzc2V0SWQJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCB3Vuc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQpsb2NrQW1vdW50BQlsb2NrU3RhcnQJAGUCBQpsb2NrQW1vdW50BQZhbW91bnQFCWxvY2tTdGFydAUDbmlsCQENUmV3YXJkRW50cmllcwMHBQ51c2VyQWRkcmVzc1N0cgUKbG9ja0Ftb3VudAkBD0xvY2tQYXJhbXNFbnRyeQMFC3VzZXJBZGRyZXNzCQBlAgUKbG9ja0Ftb3VudAUGYW1vdW50BQlsb2NrU3RhcnQFDHN0YXRzRW50cmllcwFpAQdkZXBvc2l0AAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECH2V4YWN0IDEgcGF5bWVudCBpcyBhbGxvd2VkIG9ubHkEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQIBQNwbXQGYW1vdW50BApwbXRBc3NldElkCQELdmFsdWVPckVsc2UCCAUDcG10B2Fzc2V0SWQFB1dBVkVTSUQEDXBtdEFzc2V0SWRTdHIJANgEAQUKcG10QXNzZXRJZAQIcG10TXVsdFgDCQAAAgUKcG10QXNzZXRJZAUHV0FWRVNJRAUGTVVMVFg4BQZNVUxUWDYEB2Ftb3VudFgJALYCAQUGYW1vdW50BAt0b3RhbFN0YWtlZAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAQMdG90YWxTdGFrZWRYCQC2AgEFC3RvdGFsU3Rha2VkAwkAZgIAAAULdG90YWxTdGFrZWQJAAIBAhtUT0RPOiBjYXNlIGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgULdG90YWxTdGFrZWQAAAkBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCBQ1wbXRBc3NldElkU3RyBQZhbW91bnQEEHJld2FyZFBlck5zYnRYMTgJALwCAwUHYW1vdW50WAUHTVVMVFgxOAUMdG90YWxTdGFrZWRYBBFkZXBvc2l0TnVtTGFzdEtFWQkBEWtleURlcG9zaXROdW1MYXN0AAQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCBRFkZXBvc2l0TnVtTGFzdEtFWQD///////////8BBA1kZXBvc2l0TnVtTmV3CQBkAgUOZGVwb3NpdE51bUxhc3QAAQMJAQEhAQkBCGNvbnRhaW5zAgUSc3VwcG9ydGVkQXNzZXRzU3RyBQ1wbXRBc3NldElkU3RyCQACAQkArAICCQCsAgIFEnN1cHBvcnRlZEFzc2V0c1N0cgIRIGRvZXNuJ3QgY29udGFpbiAFDXBtdEFzc2V0SWRTdHIKARdyZWZyZXNoUmV3YXJkUGVyTnNidFNVTQIFYWNjdW0JbmV4dEFzc2V0BBZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUNZGVwb3NpdE51bU5ldwUJbmV4dEFzc2V0BApzdW1MYXN0U3RyCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQluZXh0QXNzZXQCATAJAM0IAgUFYWNjdW0DCQAAAgUJbmV4dEFzc2V0BQ1wbXRBc3NldElkU3RyCQELU3RyaW5nRW50cnkCBRZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZCQCmAwEJALcCAgkApwMBBQpzdW1MYXN0U3RyBRByZXdhcmRQZXJOc2J0WDE4CQELU3RyaW5nRW50cnkCBRZyZXdhcmRQZXJOc2J0U3VtTmV3S0VZBQpzdW1MYXN0U3RyCQDNCAIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEXcmVmcmVzaFJld2FyZFBlck5zYnRTVU0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAQxJbnRlZ2VyRW50cnkCBRFkZXBvc2l0TnVtTGFzdEtFWQUNZGVwb3NpdE51bU5ldwFpAQxjbGFpbVJld2FyZHMACQELY29tbW9uQ2xhaW0CCAUBaQZjYWxsZXIFAWkBaQEaY2xhaW1SZXdhcmRzQnlPcmlnaW5DYWxsZXIACQELY29tbW9uQ2xhaW0CCAUBaQxvcmlnaW5DYWxsZXIFAWkBaQEYdW5jbGFpbWVkUmV3YXJkc1JFQURPTkxZAQ51c2VyQWRkcmVzc1N0cgoBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBWFjY3VtBWFzc2V0CQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCAgEwCQDMCAICATAFA25pbAIBOgIBXwQSdW5jbGFpbWVkUmV3YXJkU3RyAwkAAAIFDnVzZXJBZGRyZXNzU3RyAgAKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWZm9yRWFjaEFzc2V0WmVyb1Jld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQLdXNlckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnVzZXJBZGRyZXNzU3RyBA0kdDAxODIwOTE4MzE0CQELdmFsdWVPckVsc2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCVCgMGAAAAAAQJaXNOZXdVc2VyCAUNJHQwMTgyMDkxODMxNAJfMQQMc3Rha2VkQW1vdW50CAUNJHQwMTgyMDkxODMxNAJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMTgyMDkxODMxNAJfMwQNc3Rha2VkQW1vdW50WAkAtgIBBQxzdGFrZWRBbW91bnQEG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQEFDnVzZXJBZGRyZXNzU3RyBA5kZXBvc2l0TnVtVXNlcgkBDGdldEludE9yRWxzZQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD///////////8BBA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIJARFrZXlEZXBvc2l0TnVtTGFzdAAA////////////AQoBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBWFjY3VtBWFzc2V0BA0kdDAxODY2MDE4Nzk4CQEKY2FsY1Jld2FyZAUFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAUNc3Rha2VkQW1vdW50WAUOZGVwb3NpdE51bVVzZXIFDmRlcG9zaXROdW1MYXN0BAtyZXdhcmRUb3RhbAgFDSR0MDE4NjYwMTg3OTgCXzEEBmNhY2hlZAgFDSR0MDE4NjYwMTg3OTgCXzIEB2R5bmFtaWMIBQ0kdDAxODY2MDE4Nzk4Al8zBBNyZXdhcmRDYWNoZWRQYXJ0S0VZCAUNJHQwMTg2NjAxODc5OAJfNAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEKa2V5Q2xhaW1lZAIFDnVzZXJBZGRyZXNzU3RyBQVhc3NldAAACQCsAgIJAKwCAgUFYWNjdW0JALkJAgkAzAgCBQVhc3NldAkAzAgCCQCkAwEFC3Jld2FyZFRvdGFsCQDMCAIJAKQDAQUHY2xhaW1lZAUDbmlsAgE6AgFfCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAgUDbmlsCQCzAgIFEnVuY2xhaW1lZFJld2FyZFN0cgABAWkBFnN1cmZTdGFraW5nU1lTUkVBRE9OTFkBFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQJc3VyZlRvdGFsCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABBJnbnNidEZyb21TdXJmVG90YWwJAQtzdXJmVG9HbnNidAEFCXN1cmZUb3RhbAMJAAACBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkCAAkAlAoCBQNuaWwJAMwIAgAACQDMCAIFCXN1cmZUb3RhbAkAzAgCAAAJAMwIAgUSZ25zYnRGcm9tU3VyZlRvdGFsCQDMCAIAAAUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQNJHQwMTk0OTAxOTU5MQkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE5NDkwMTk1OTECXzEECHN1cmZVc2VyCAUNJHQwMTk0OTAxOTU5MQJfMgQMc3Rha2luZ1N0YXJ0CAUNJHQwMTk0OTAxOTU5MQJfMwQRZ25zYnRGcm9tU3VyZlVzZXIJAQtzdXJmVG9HbnNidAEFCHN1cmZVc2VyCQCUCgIFA25pbAkAzAgCBQhzdXJmVXNlcgkAzAgCBQlzdXJmVG90YWwJAMwIAgURZ25zYnRGcm9tU3VyZlVzZXIJAMwIAgUSZ25zYnRGcm9tU3VyZlRvdGFsCQDMCAIFDHN0YWtpbmdTdGFydAUDbmlsAWkBEWNvbmZpZ1NZU1JFQURPTkxZAAQKbWluTG9ja0FtdAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEGtleU1pbkxvY2tBbW91bnQABBJnbnNidEZyb21TdXJmQ29lZmYJAGgCADwFBU1VTFQ2BCBzdXJmVm90aW5nUG93ZXJSZXN0cmljdGl2ZVBlcmlvZAkAaAIAoAsADgQbYnJUb1N0YXJ0U3VyZlRyYW5zZm9ybWF0aW9uAICfSQkAlAoCBQNuaWwJAMwIAgUKbWluTG9ja0FtdAkAzAgCBRJnbnNidEZyb21TdXJmQ29lZmYJAMwIAgUgc3VyZlZvdGluZ1Bvd2VyUmVzdHJpY3RpdmVQZXJpb2QJAMwIAgUbYnJUb1N0YXJ0U3VyZlRyYW5zZm9ybWF0aW9uBQNuaWwAwFxtjw==", "chainId": 84, "height": 2166972, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GG7U6RU6imnkPjoM189Aw2SLTGFWupFoyuXhvc19ZGVQ Next: Eo87tBzH1CUTSnwEXnthCU22SUvdKfdfKxHTDrWjKJw6 Diff:
OldNewDifferences
230230 else false)
231231 then throw("invalid depositNumLast and depositNumUser state")
232232 else if (if ((ba > -1))
233- then (aZ == -1)
233+ then (aZ >= -1)
234234 else false)
235235 then if (bi)
236236 then [IntegerEntry(bk, ba)]
248248
249249 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
250250 } :+ IntegerEntry(bk, ba))
251- else if (if ((ba > -1))
252- then (aZ > -1)
253- else false)
254- then if (bi)
255- then [IntegerEntry(bk, ba)]
256- else ({
257- let bs = aV
258- let bt = size(bs)
259- let bu = nil
260- func bv (bw,bx) = if ((bx >= bt))
261- then bw
262- else bl(bw, bs[bx])
263-
264- func by (bw,bx) = if ((bx >= bt))
265- then bw
266- else throw("List size exceeds 10")
267-
268- by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
269- } :+ IntegerEntry(bk, ba))
270- else throw(((("uncovered condition: depositNumLast=" + toString(ba)) + " depositNumUser=") + toString(aZ)))
251+ else throw(((("uncovered condition: depositNumLast=" + toString(ba)) + " depositNumUser=") + toString(aZ)))
271252 }
272253
273254
281262 func bD (bE) = (bE / 60)
282263
283264
284-let bF = "control_contract"
285-
286-@Callable(bG)
287-func constructor (bH,bI,bJ) = if ((bG.caller != this))
288- then throw("Permission denied")
289- else [IntegerEntry(K(), bH), StringEntry(W(), bI), StringEntry(L(), bJ)]
290-
291-
292-
293-@Callable(bG)
294-func stake () = {
295- let bK = aQ()
296- let bJ = bK._1
297- let bH = bK._2
265+func bF (N,bG) = {
266+ let bH = aQ()
267+ let bI = bH._1
268+ let bJ = bH._2
298269 if ((size(bG.payments) != 1))
299270 then throw("Invalid payments size")
300271 else {
301- let bL = bG.payments[0]
302- let aO = bL.amount
303- let bM = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
304- let aX = valueOrErrorMessage(bL.assetId, bM)
305- if ((aX != bJ))
306- then throw(bM)
272+ let bK = bG.payments[0]
273+ let aO = bK.amount
274+ let bL = (("Invalid asset. " + toBase58String(bI)) + " is expected")
275+ let aX = valueOrErrorMessage(bK.assetId, bL)
276+ if ((aX != bI))
277+ then throw(bL)
307278 else {
308- let N = bG.caller
309- let bN = toString(N)
279+ let bM = toString(N)
280+ let bN = 0
310281 let bO = 0
311- let bP = 0
312- let bQ = valueOrElse(aS(N), $Tuple3(true, 0, -1))
313- let bi = bQ._1
314- let bj = bQ._2
315- let bR = bQ._3
316- let bS = if (bi)
282+ let bP = valueOrElse(aS(N), $Tuple3(true, 0, -1))
283+ let bi = bP._1
284+ let bj = bP._2
285+ let bQ = bP._3
286+ let bR = if (bi)
317287 then aO
318288 else (aO + bj)
319- let bT = if (bi)
289+ let bS = if (bi)
320290 then height
321291 else (height + (1440 * 14))
322- if ((bH > bS))
323- then throw(("Min lock amount is " + toString(bH)))
292+ if ((bJ > bR))
293+ then throw(("Min lock amount is " + toString(bJ)))
324294 else {
325- let bU = aF(aO, 1, if (bi)
295+ let bT = aF(aO, 1, if (bi)
326296 then 1
327297 else 0)
328- let bV = bU._1
329- let bW = bU._2
330- let bX = bU._3
331- ((([aD("stake", N, bG.transactionId, bj, bR, bS, bT)] ++ bh(bi, bN, bj)) ++ aN(N, bS, bT)) ++ bV)
298+ let bU = bT._1
299+ let bV = bT._2
300+ let bW = bT._3
301+ ((([aD("stake", N, bG.transactionId, bj, bQ, bR, bS)] ++ bh(bi, bM, bj)) ++ aN(N, bR, bS)) ++ bU)
332302 }
333303 }
334304 }
335305 }
336306
337307
308+func bX (N,bG) = {
309+ let bM = toString(N)
310+ if ((size(bG.payments) > 0))
311+ then throw("payments are not accepted")
312+ else {
313+ let bY = valueOrElse(aS(N), $Tuple3(true, 0, 0))
314+ let bi = bY._1
315+ let bj = bY._2
316+ let bZ = bY._3
317+ let aY = toBigInt(bj)
318+ let bk = Y(bM)
319+ let aZ = aj(bk, -1)
320+ let ba = aj(X(), -1)
321+ func ca (bm,bn) = {
322+ let cb = aW(bM, bn, aY, aZ, ba)
323+ let bp = cb._1
324+ let bq = cb._2
325+ let br = cb._3
326+ let bf = cb._4
327+ let cc = ad(bM, bn)
328+ let cd = bm
329+ let ce = cd._1
330+ let cf = cd._2
331+ let cg = makeString([bn, toString(bp)], ":")
332+ let ch = makeString([cf, cg], "_")
333+ if ((0 >= bp))
334+ then $Tuple2(ce, ch)
335+ else $Tuple2((((ce :+ ScriptTransfer(N, bp, ap(bn))) :+ IntegerEntry(cc, (valueOrElse(getInteger(cc), 0) + bp))) :+ IntegerEntry(bf, 0)), ch)
336+ }
337+
338+ let ci = {
339+ let bs = aV
340+ let bt = size(bs)
341+ let bu = $Tuple2(nil, "")
342+ func bv (bw,bx) = if ((bx >= bt))
343+ then bw
344+ else ca(bw, bs[bx])
345+
346+ func by (bw,bx) = if ((bx >= bt))
347+ then bw
348+ else throw("List size exceeds 10")
349+
350+ by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
351+ }
352+ let cj = ci._1
353+ let ck = ci._2
354+ if ((0 >= size(cj)))
355+ then throw("nothing to claim")
356+ else ((cj :+ IntegerEntry(bk, ba)) :+ aE(N, bG.transactionId, drop(ck, 1)))
357+ }
358+ }
359+
338360
339361 @Callable(bG)
340-func stakeByOriginCaller () = {
341- let bY = aQ()
342- let bJ = bY._1
343- let bH = bY._2
344- if ((size(bG.payments) != 1))
345- then throw("Invalid payments size")
346- else {
347- let bL = bG.payments[0]
348- let aO = bL.amount
349- let bM = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
350- let aX = valueOrErrorMessage(bL.assetId, bM)
351- if ((aX != bJ))
352- then throw(bM)
353- else {
354- let N = bG.originCaller
355- let bN = toString(N)
356- let bO = 0
357- let bP = 0
358- let bZ = valueOrElse(aS(N), $Tuple3(true, 0, -1))
359- let bi = bZ._1
360- let bj = bZ._2
361- let bR = bZ._3
362- let bS = if (bi)
363- then aO
364- else (aO + bj)
365- let bT = if (bi)
366- then height
367- else (height + (1440 * 14))
368- if ((bH > bS))
369- then throw(("Min lock amount is " + toString(bH)))
370- else {
371- let ca = aF(aO, 1, if (bi)
372- then 1
373- else 0)
374- let bV = ca._1
375- let bW = ca._2
376- let bX = ca._3
377- ((([aD("stake", N, bG.transactionId, bj, bR, bS, bT)] ++ bh(bi, bN, bj)) ++ aN(N, bS, bT)) ++ bV)
378- }
379- }
380- }
381- }
362+func constructor (bJ,cl,bI) = if ((bG.caller != this))
363+ then throw("Permission denied")
364+ else [IntegerEntry(K(), bJ), StringEntry(W(), cl), StringEntry(L(), bI)]
365+
366+
367+
368+@Callable(bG)
369+func stake () = bF(bG.caller, bG)
370+
371+
372+
373+@Callable(bG)
374+func stakeByOriginCaller () = bF(bG.originCaller, bG)
382375
383376
384377
387380 then throw("unstake doesn't require any payment")
388381 else {
389382 let N = bG.caller
390- let bN = toString(N)
391- let cb = aQ()
392- let bJ = cb._1
393- let bH = cb._2
394- let cc = aT(N)
395- let bi = cc._1
396- let cd = cc._2
397- let ce = cc._3
398- if ((0 >= cd))
383+ let bM = toString(N)
384+ let cm = aQ()
385+ let bI = cm._1
386+ let bJ = cm._2
387+ let cn = aT(N)
388+ let bi = cn._1
389+ let co = cn._2
390+ let cp = cn._3
391+ if ((0 >= co))
399392 then throw("Nothing to unstake")
400- else if ((aO > cd))
401- then throw(((("Requested " + toString(aO)) + ", but staked only ") + toString(cd)))
393+ else if ((aO > co))
394+ then throw(((("Requested " + toString(aO)) + ", but staked only ") + toString(co)))
402395 else {
403- let cf = aF(-(aO), if ((aO == cd))
396+ let cq = aF(-(aO), if ((aO == co))
404397 then -1
405- else 0, if ((aO == cd))
398+ else 0, if ((aO == co))
406399 then -1
407400 else 0)
408- let bV = cf._1
409- let bW = cf._2
410- let bX = cf._3
411- ((([ScriptTransfer(N, aO, bJ), aD("unstake", N, bG.transactionId, cd, ce, (cd - aO), ce)] ++ bh(false, bN, cd)) ++ aN(N, (cd - aO), ce)) ++ bV)
401+ let bU = cq._1
402+ let bV = cq._2
403+ let bW = cq._3
404+ ((([ScriptTransfer(N, aO, bI), aD("unstake", N, bG.transactionId, co, cp, (co - aO), cp)] ++ bh(false, bM, co)) ++ aN(N, (co - aO), cp)) ++ bU)
412405 }
413406 }
414407
418411 func deposit () = if ((size(bG.payments) != 1))
419412 then throw("exact 1 payment is allowed only")
420413 else {
421- let cg = bG.payments[0]
422- let aO = cg.amount
423- let ch = valueOrElse(cg.assetId, i)
424- let ci = toBase58String(ch)
425- let cj = if ((ch == i))
414+ let cr = bG.payments[0]
415+ let aO = cr.amount
416+ let cs = valueOrElse(cr.assetId, i)
417+ let ct = toBase58String(cs)
418+ let cu = if ((cs == i))
426419 then f
427420 else e
428- let ck = toBigInt(aO)
429- let bW = aj(S(), 0)
430- let cl = toBigInt(bW)
431- if ((0 > bW))
421+ let cv = toBigInt(aO)
422+ let bV = aj(S(), 0)
423+ let cw = toBigInt(bV)
424+ if ((0 > bV))
432425 then throw("TODO: case is not supported")
433- else if ((bW == 0))
434- then bz(ci, aO)
426+ else if ((bV == 0))
427+ then bz(ct, aO)
435428 else {
436- let cm = fraction(ck, g, cl)
437- let cn = X()
438- let ba = aj(cn, -1)
439- let co = (ba + 1)
440- if (!(contains(aU, ci)))
441- then throw(((aU + " doesn't contain ") + ci))
429+ let cx = fraction(cv, g, cw)
430+ let cy = X()
431+ let ba = aj(cy, -1)
432+ let cz = (ba + 1)
433+ if (!(contains(aU, ct)))
434+ then throw(((aU + " doesn't contain ") + ct))
442435 else {
443- func cp (bm,cq) = {
444- let cr = Z(co, cq)
445- let cs = am(Z(ba, cq), "0")
446- (bm :+ (if ((cq == ci))
447- then StringEntry(cr, toString((parseBigIntValue(cs) + cm)))
448- else StringEntry(cr, cs)))
436+ func cA (bm,cB) = {
437+ let cC = Z(cz, cB)
438+ let cD = am(Z(ba, cB), "0")
439+ (bm :+ (if ((cB == ct))
440+ then StringEntry(cC, toString((parseBigIntValue(cD) + cx)))
441+ else StringEntry(cC, cD)))
449442 }
450443
451444 ({
454447 let bu = nil
455448 func bv (bw,bx) = if ((bx >= bt))
456449 then bw
457- else cp(bw, bs[bx])
450+ else cA(bw, bs[bx])
458451
459452 func by (bw,bx) = if ((bx >= bt))
460453 then bw
461454 else throw("List size exceeds 10")
462455
463456 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
464- } :+ IntegerEntry(cn, co))
457+ } :+ IntegerEntry(cy, cz))
465458 }
466459 }
467460 }
469462
470463
471464 @Callable(bG)
472-func claimRewards () = {
473- let N = bG.caller
474- let bN = toString(N)
475- if ((size(bG.payments) > 0))
476- then throw("payments are not accepted")
477- else {
478- let ct = valueOrElse(aS(N), $Tuple3(true, 0, 0))
479- let bi = ct._1
480- let bj = ct._2
481- let cu = ct._3
482- let aY = toBigInt(bj)
483- let bk = Y(bN)
484- let aZ = aj(bk, -1)
485- let ba = aj(X(), -1)
486- func cv (bm,bn) = {
487- let cw = aW(bN, bn, aY, aZ, ba)
488- let bp = cw._1
489- let bq = cw._2
490- let br = cw._3
491- let bf = cw._4
492- let cx = ad(bN, bn)
493- let cy = bm
494- let cz = cy._1
495- let cA = cy._2
496- let cB = makeString([bn, toString(bp)], ":")
497- let cC = makeString([cA, cB], "_")
498- if ((0 >= bp))
499- then $Tuple2(cz, cC)
500- else $Tuple2((((cz :+ ScriptTransfer(N, bp, ap(bn))) :+ IntegerEntry(cx, (valueOrElse(getInteger(cx), 0) + bp))) :+ IntegerEntry(bf, 0)), cC)
501- }
502-
503- let cD = {
504- let bs = aV
505- let bt = size(bs)
506- let bu = $Tuple2(nil, "")
507- func bv (bw,bx) = if ((bx >= bt))
508- then bw
509- else cv(bw, bs[bx])
510-
511- func by (bw,bx) = if ((bx >= bt))
512- then bw
513- else throw("List size exceeds 10")
514-
515- by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
516- }
517- let cE = cD._1
518- let cF = cD._2
519- if ((0 >= size(cE)))
520- then throw("nothing to claim")
521- else ((cE :+ IntegerEntry(bk, ba)) :+ aE(N, bG.transactionId, drop(cF, 1)))
522- }
523- }
465+func claimRewards () = bX(bG.caller, bG)
524466
525467
526468
527469 @Callable(bG)
528-func unclaimedRewardsREADONLY (bN) = {
529- func cG (bm,bn) = ((bm + makeString([bn, "0", "0"], ":")) + "_")
470+func claimRewardsByOriginCaller () = bX(bG.originCaller, bG)
530471
531- let cH = if ((bN == ""))
472+
473+
474+@Callable(bG)
475+func unclaimedRewardsREADONLY (bM) = {
476+ func cE (bm,bn) = ((bm + makeString([bn, "0", "0"], ":")) + "_")
477+
478+ let cF = if ((bM == ""))
532479 then {
533480 let bs = aV
534481 let bt = size(bs)
535482 let bu = ""
536483 func bv (bw,bx) = if ((bx >= bt))
537484 then bw
538- else cG(bw, bs[bx])
485+ else cE(bw, bs[bx])
539486
540487 func by (bw,bx) = if ((bx >= bt))
541488 then bw
544491 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
545492 }
546493 else {
547- let N = addressFromStringValue(bN)
548- let cI = valueOrElse(aS(N), $Tuple3(true, 0, 0))
549- let bi = cI._1
550- let bj = cI._2
551- let cu = cI._3
494+ let N = addressFromStringValue(bM)
495+ let cG = valueOrElse(aS(N), $Tuple3(true, 0, 0))
496+ let bi = cG._1
497+ let bj = cG._2
498+ let bZ = cG._3
552499 let aY = toBigInt(bj)
553- let bk = Y(bN)
500+ let bk = Y(bM)
554501 let aZ = aj(bk, -1)
555502 let ba = aj(X(), -1)
556- func cv (bm,bn) = {
557- let cJ = aW(bN, bn, aY, aZ, ba)
558- let bp = cJ._1
559- let bq = cJ._2
560- let br = cJ._3
561- let bf = cJ._4
562- let cK = valueOrElse(getInteger(ad(bN, bn)), 0)
563- ((bm + makeString([bn, toString(bp), toString(cK)], ":")) + "_")
503+ func ca (bm,bn) = {
504+ let cH = aW(bM, bn, aY, aZ, ba)
505+ let bp = cH._1
506+ let bq = cH._2
507+ let br = cH._3
508+ let bf = cH._4
509+ let cI = valueOrElse(getInteger(ad(bM, bn)), 0)
510+ ((bm + makeString([bn, toString(bp), toString(cI)], ":")) + "_")
564511 }
565512
566513 let bs = aV
568515 let bu = ""
569516 func bv (bw,bx) = if ((bx >= bt))
570517 then bw
571- else cv(bw, bs[bx])
518+ else ca(bw, bs[bx])
572519
573520 func by (bw,bx) = if ((bx >= bt))
574521 then bw
576523
577524 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
578525 }
579- $Tuple2(nil, dropRight(cH, 1))
526+ $Tuple2(nil, dropRight(cF, 1))
580527 }
581528
582529
583530
584531 @Callable(bG)
585-func surfStakingSYSREADONLY (cL) = {
586- let cM = aj(S(), 0)
587- let cN = bD(cM)
588- if ((cL == ""))
589- then $Tuple2(nil, [0, cM, 0, cN, 0])
532+func surfStakingSYSREADONLY (cJ) = {
533+ let cK = aj(S(), 0)
534+ let cL = bD(cK)
535+ if ((cJ == ""))
536+ then $Tuple2(nil, [0, cK, 0, cL, 0])
590537 else {
591- let N = an(cL)
592- let cO = valueOrElse(aS(N), $Tuple3(true, 0, 0))
593- let bi = cO._1
594- let cP = cO._2
595- let cu = cO._3
596- let cQ = bD(cP)
597- $Tuple2(nil, [cP, cM, cQ, cN, cu])
538+ let N = an(cJ)
539+ let cM = valueOrElse(aS(N), $Tuple3(true, 0, 0))
540+ let bi = cM._1
541+ let cN = cM._2
542+ let bZ = cM._3
543+ let cO = bD(cN)
544+ $Tuple2(nil, [cN, cK, cO, cL, bZ])
598545 }
599546 }
600547
602549
603550 @Callable(bG)
604551 func configSYSREADONLY () = {
605- let cR = getIntegerValue(K())
606- let cS = (60 * c)
607- let cT = (1440 * 14)
608- let cU = 1200000
609- $Tuple2(nil, [cR, cS, cT, cU])
552+ let cP = getIntegerValue(K())
553+ let cQ = (60 * c)
554+ let cR = (1440 * 14)
555+ let cS = 1200000
556+ $Tuple2(nil, [cP, cQ, cR, cS])
610557 }
611558
612559
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "__"
77
88 let c = 1000000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(1000000000000000000)
1717
1818 let h = "WAVES"
1919
2020 let i = fromBase58String(h)
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 5
3131
3232 let o = 6
3333
3434 let p = 7
3535
3636 let q = 8
3737
3838 let r = 9
3939
4040 let s = 10
4141
4242 let t = 11
4343
4444 func u (v,w) = valueOrErrorMessage(getString(v, w), (((("mandatory " + toString(v)) + ".") + w) + " is not defined"))
4545
4646
4747 func x () = "%s%s__config__controlAddress"
4848
4949
5050 func y () = "%s__controlConfig"
5151
5252
5353 func z (A) = split(u(A, y()), b)
5454
5555
5656 func B (C,D) = valueOrErrorMessage(addressFromString(C[D]), ("Control cfg doesn't contain address at index " + toString(D)))
5757
5858
5959 let E = addressFromStringValue(valueOrElse(getString(this, x()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
6060
6161 let C = z(E)
6262
6363 let F = B(C, m)
6464
6565 let G = B(C, j)
6666
6767 let H = B(C, k)
6868
6969 func I () = "bond_asset_id"
7070
7171
7272 func J () = "auction_contract"
7373
7474
7575 func K () = "%s__minLockAmount"
7676
7777
7878 func L () = "%s__stakedAssetId"
7979
8080
8181 func M (N) = makeString(["%s%s%s", "paramByUser", toString(N), "amount"], a)
8282
8383
8484 func O (N) = makeString(["%s%s%s", "paramByUser", toString(N), "start"], a)
8585
8686
8787 func P (Q,N,R) = makeString(["%s%s%s%s", "history", Q, toString(N), toBase58String(R)], a)
8888
8989
9090 func S () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
9191
9292
9393 func T () = makeString(["%s%s", "stats", "locksCount"], a)
9494
9595
9696 func U () = makeString(["%s%s", "stats", "activeUsersCount"], a)
9797
9898
9999 func V () = "%s__nextPeriod"
100100
101101
102102 func W () = "supportedRewardAssets"
103103
104104
105105 func X () = makeString(["%s%s%s", "dep", "lastNum"], a)
106106
107107
108108 func Y (N) = makeString(["%s%s%s", "userRwdFromDepNum", N], a)
109109
110110
111111 func Z (aa,ab) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(aa), ab], a)
112112
113113
114114 func ac (N,ab) = makeString(["%s%s%s", "rwd", N, ab], a)
115115
116116
117117 func ad (N,ab) = makeString(["%s%s%s", "clm", N, ab], a)
118118
119119
120120 func ae (ab) = makeString(["%s%s", "notDistributed", ab], a)
121121
122122
123123 func af (ag,ah) = fraction(toBigInt(ag), g, ah)
124124
125125
126126 func ai (w) = valueOrElse(getInteger(this, w), 0)
127127
128128
129129 func aj (w,ak) = valueOrElse(getInteger(this, w), ak)
130130
131131
132132 func al (w) = valueOrErrorMessage(getInteger(this, w), (("Mandatory this." + w) + " is not defined"))
133133
134134
135135 func am (w,ak) = valueOrElse(getString(this, w), ak)
136136
137137
138138 func an (ao) = valueOrErrorMessage(addressFromString(ao), ("couldn't parse passed addressStr=" + ao))
139139
140140
141141 func ap (aq) = if ((aq == h))
142142 then unit
143143 else fromBase58String(aq)
144144
145145
146146 func ar (as) = {
147147 let at = as
148148 if ($isInstanceOf(at, "Int"))
149149 then {
150150 let au = at
151151 au
152152 }
153153 else throw("fail to cast into Int")
154154 }
155155
156156
157157 func av (aw,ax,ay,az) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aw), toString(ax), toString(ay), toString(az)], a)
158158
159159
160160 func aA (aB,aC) = makeString(["%s%d%d%s", aB, toString(lastBlock.height), toString(lastBlock.timestamp), aC], a)
161161
162162
163163 func aD (Q,N,R,aw,ax,ay,az) = StringEntry(P(Q, N, R), av(aw, ax, ay, az))
164164
165165
166166 func aE (N,R,aC) = StringEntry(P("claim", N, R), aA(toString(N), aC))
167167
168168
169169 func aF (aG,aH,aI) = {
170170 let aJ = ai(T())
171171 let aK = ai(U())
172172 let aL = ai(S())
173173 let aM = (aL + aG)
174174 $Tuple3([IntegerEntry(T(), (aJ + aH)), IntegerEntry(U(), (aK + aI)), IntegerEntry(S(), aM)], aL, aM)
175175 }
176176
177177
178178 func aN (N,aO,aP) = [IntegerEntry(M(N), aO), IntegerEntry(O(N), aP)]
179179
180180
181181 func aQ () = $Tuple2(fromBase58String(u(this, L())), al(K()))
182182
183183
184184 func aR (N) = (aj(M(N), 0) > 0)
185185
186186
187187 func aS (N) = if (aR(N))
188188 then $Tuple3(false, al(M(N)), al(O(N)))
189189 else unit
190190
191191
192192 func aT (N) = valueOrErrorMessage(aS(N), (("User " + toString(N)) + " is not defined"))
193193
194194
195195 let aU = am(W(), "")
196196
197197 let aV = split(aU, "_")
198198
199199 func aW (N,aX,aY,aZ,ba) = {
200200 let bb = Z(ba, aX)
201201 let bc = parseBigIntValue(am(Z(ba, aX), "0"))
202202 let bd = parseBigIntValue(am(Z(aZ, aX), "0"))
203203 let be = toInt(fraction((bc - bd), aY, g))
204204 let bf = ac(N, aX)
205205 let bg = aj(bf, 0)
206206 $Tuple4((bg + be), bg, be, bf)
207207 }
208208
209209
210210 func bh (bi,N,bj) = {
211211 let aY = toBigInt(bj)
212212 let bk = Y(N)
213213 let aZ = aj(bk, -1)
214214 let ba = aj(X(), -1)
215215 func bl (bm,bn) = {
216216 let bo = aW(N, bn, aY, aZ, ba)
217217 let bp = bo._1
218218 let bq = bo._2
219219 let br = bo._3
220220 let bf = bo._4
221221 (bm :+ IntegerEntry(bf, bp))
222222 }
223223
224224 if (if ((ba == -1))
225225 then (aZ == -1)
226226 else false)
227227 then nil
228228 else if (if ((ba == -1))
229229 then (aZ > -1)
230230 else false)
231231 then throw("invalid depositNumLast and depositNumUser state")
232232 else if (if ((ba > -1))
233- then (aZ == -1)
233+ then (aZ >= -1)
234234 else false)
235235 then if (bi)
236236 then [IntegerEntry(bk, ba)]
237237 else ({
238238 let bs = aV
239239 let bt = size(bs)
240240 let bu = nil
241241 func bv (bw,bx) = if ((bx >= bt))
242242 then bw
243243 else bl(bw, bs[bx])
244244
245245 func by (bw,bx) = if ((bx >= bt))
246246 then bw
247247 else throw("List size exceeds 10")
248248
249249 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
250250 } :+ IntegerEntry(bk, ba))
251- else if (if ((ba > -1))
252- then (aZ > -1)
253- else false)
254- then if (bi)
255- then [IntegerEntry(bk, ba)]
256- else ({
257- let bs = aV
258- let bt = size(bs)
259- let bu = nil
260- func bv (bw,bx) = if ((bx >= bt))
261- then bw
262- else bl(bw, bs[bx])
263-
264- func by (bw,bx) = if ((bx >= bt))
265- then bw
266- else throw("List size exceeds 10")
267-
268- by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
269- } :+ IntegerEntry(bk, ba))
270- else throw(((("uncovered condition: depositNumLast=" + toString(ba)) + " depositNumUser=") + toString(aZ)))
251+ else throw(((("uncovered condition: depositNumLast=" + toString(ba)) + " depositNumUser=") + toString(aZ)))
271252 }
272253
273254
274255 func bz (ab,bA) = {
275256 let bB = ae(ab)
276257 let bC = aj(bB, 0)
277258 [IntegerEntry(bB, (bC + bA))]
278259 }
279260
280261
281262 func bD (bE) = (bE / 60)
282263
283264
284-let bF = "control_contract"
285-
286-@Callable(bG)
287-func constructor (bH,bI,bJ) = if ((bG.caller != this))
288- then throw("Permission denied")
289- else [IntegerEntry(K(), bH), StringEntry(W(), bI), StringEntry(L(), bJ)]
290-
291-
292-
293-@Callable(bG)
294-func stake () = {
295- let bK = aQ()
296- let bJ = bK._1
297- let bH = bK._2
265+func bF (N,bG) = {
266+ let bH = aQ()
267+ let bI = bH._1
268+ let bJ = bH._2
298269 if ((size(bG.payments) != 1))
299270 then throw("Invalid payments size")
300271 else {
301- let bL = bG.payments[0]
302- let aO = bL.amount
303- let bM = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
304- let aX = valueOrErrorMessage(bL.assetId, bM)
305- if ((aX != bJ))
306- then throw(bM)
272+ let bK = bG.payments[0]
273+ let aO = bK.amount
274+ let bL = (("Invalid asset. " + toBase58String(bI)) + " is expected")
275+ let aX = valueOrErrorMessage(bK.assetId, bL)
276+ if ((aX != bI))
277+ then throw(bL)
307278 else {
308- let N = bG.caller
309- let bN = toString(N)
279+ let bM = toString(N)
280+ let bN = 0
310281 let bO = 0
311- let bP = 0
312- let bQ = valueOrElse(aS(N), $Tuple3(true, 0, -1))
313- let bi = bQ._1
314- let bj = bQ._2
315- let bR = bQ._3
316- let bS = if (bi)
282+ let bP = valueOrElse(aS(N), $Tuple3(true, 0, -1))
283+ let bi = bP._1
284+ let bj = bP._2
285+ let bQ = bP._3
286+ let bR = if (bi)
317287 then aO
318288 else (aO + bj)
319- let bT = if (bi)
289+ let bS = if (bi)
320290 then height
321291 else (height + (1440 * 14))
322- if ((bH > bS))
323- then throw(("Min lock amount is " + toString(bH)))
292+ if ((bJ > bR))
293+ then throw(("Min lock amount is " + toString(bJ)))
324294 else {
325- let bU = aF(aO, 1, if (bi)
295+ let bT = aF(aO, 1, if (bi)
326296 then 1
327297 else 0)
328- let bV = bU._1
329- let bW = bU._2
330- let bX = bU._3
331- ((([aD("stake", N, bG.transactionId, bj, bR, bS, bT)] ++ bh(bi, bN, bj)) ++ aN(N, bS, bT)) ++ bV)
298+ let bU = bT._1
299+ let bV = bT._2
300+ let bW = bT._3
301+ ((([aD("stake", N, bG.transactionId, bj, bQ, bR, bS)] ++ bh(bi, bM, bj)) ++ aN(N, bR, bS)) ++ bU)
332302 }
333303 }
334304 }
335305 }
336306
337307
308+func bX (N,bG) = {
309+ let bM = toString(N)
310+ if ((size(bG.payments) > 0))
311+ then throw("payments are not accepted")
312+ else {
313+ let bY = valueOrElse(aS(N), $Tuple3(true, 0, 0))
314+ let bi = bY._1
315+ let bj = bY._2
316+ let bZ = bY._3
317+ let aY = toBigInt(bj)
318+ let bk = Y(bM)
319+ let aZ = aj(bk, -1)
320+ let ba = aj(X(), -1)
321+ func ca (bm,bn) = {
322+ let cb = aW(bM, bn, aY, aZ, ba)
323+ let bp = cb._1
324+ let bq = cb._2
325+ let br = cb._3
326+ let bf = cb._4
327+ let cc = ad(bM, bn)
328+ let cd = bm
329+ let ce = cd._1
330+ let cf = cd._2
331+ let cg = makeString([bn, toString(bp)], ":")
332+ let ch = makeString([cf, cg], "_")
333+ if ((0 >= bp))
334+ then $Tuple2(ce, ch)
335+ else $Tuple2((((ce :+ ScriptTransfer(N, bp, ap(bn))) :+ IntegerEntry(cc, (valueOrElse(getInteger(cc), 0) + bp))) :+ IntegerEntry(bf, 0)), ch)
336+ }
337+
338+ let ci = {
339+ let bs = aV
340+ let bt = size(bs)
341+ let bu = $Tuple2(nil, "")
342+ func bv (bw,bx) = if ((bx >= bt))
343+ then bw
344+ else ca(bw, bs[bx])
345+
346+ func by (bw,bx) = if ((bx >= bt))
347+ then bw
348+ else throw("List size exceeds 10")
349+
350+ by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
351+ }
352+ let cj = ci._1
353+ let ck = ci._2
354+ if ((0 >= size(cj)))
355+ then throw("nothing to claim")
356+ else ((cj :+ IntegerEntry(bk, ba)) :+ aE(N, bG.transactionId, drop(ck, 1)))
357+ }
358+ }
359+
338360
339361 @Callable(bG)
340-func stakeByOriginCaller () = {
341- let bY = aQ()
342- let bJ = bY._1
343- let bH = bY._2
344- if ((size(bG.payments) != 1))
345- then throw("Invalid payments size")
346- else {
347- let bL = bG.payments[0]
348- let aO = bL.amount
349- let bM = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
350- let aX = valueOrErrorMessage(bL.assetId, bM)
351- if ((aX != bJ))
352- then throw(bM)
353- else {
354- let N = bG.originCaller
355- let bN = toString(N)
356- let bO = 0
357- let bP = 0
358- let bZ = valueOrElse(aS(N), $Tuple3(true, 0, -1))
359- let bi = bZ._1
360- let bj = bZ._2
361- let bR = bZ._3
362- let bS = if (bi)
363- then aO
364- else (aO + bj)
365- let bT = if (bi)
366- then height
367- else (height + (1440 * 14))
368- if ((bH > bS))
369- then throw(("Min lock amount is " + toString(bH)))
370- else {
371- let ca = aF(aO, 1, if (bi)
372- then 1
373- else 0)
374- let bV = ca._1
375- let bW = ca._2
376- let bX = ca._3
377- ((([aD("stake", N, bG.transactionId, bj, bR, bS, bT)] ++ bh(bi, bN, bj)) ++ aN(N, bS, bT)) ++ bV)
378- }
379- }
380- }
381- }
362+func constructor (bJ,cl,bI) = if ((bG.caller != this))
363+ then throw("Permission denied")
364+ else [IntegerEntry(K(), bJ), StringEntry(W(), cl), StringEntry(L(), bI)]
365+
366+
367+
368+@Callable(bG)
369+func stake () = bF(bG.caller, bG)
370+
371+
372+
373+@Callable(bG)
374+func stakeByOriginCaller () = bF(bG.originCaller, bG)
382375
383376
384377
385378 @Callable(bG)
386379 func unstake (aO) = if ((size(bG.payments) != 0))
387380 then throw("unstake doesn't require any payment")
388381 else {
389382 let N = bG.caller
390- let bN = toString(N)
391- let cb = aQ()
392- let bJ = cb._1
393- let bH = cb._2
394- let cc = aT(N)
395- let bi = cc._1
396- let cd = cc._2
397- let ce = cc._3
398- if ((0 >= cd))
383+ let bM = toString(N)
384+ let cm = aQ()
385+ let bI = cm._1
386+ let bJ = cm._2
387+ let cn = aT(N)
388+ let bi = cn._1
389+ let co = cn._2
390+ let cp = cn._3
391+ if ((0 >= co))
399392 then throw("Nothing to unstake")
400- else if ((aO > cd))
401- then throw(((("Requested " + toString(aO)) + ", but staked only ") + toString(cd)))
393+ else if ((aO > co))
394+ then throw(((("Requested " + toString(aO)) + ", but staked only ") + toString(co)))
402395 else {
403- let cf = aF(-(aO), if ((aO == cd))
396+ let cq = aF(-(aO), if ((aO == co))
404397 then -1
405- else 0, if ((aO == cd))
398+ else 0, if ((aO == co))
406399 then -1
407400 else 0)
408- let bV = cf._1
409- let bW = cf._2
410- let bX = cf._3
411- ((([ScriptTransfer(N, aO, bJ), aD("unstake", N, bG.transactionId, cd, ce, (cd - aO), ce)] ++ bh(false, bN, cd)) ++ aN(N, (cd - aO), ce)) ++ bV)
401+ let bU = cq._1
402+ let bV = cq._2
403+ let bW = cq._3
404+ ((([ScriptTransfer(N, aO, bI), aD("unstake", N, bG.transactionId, co, cp, (co - aO), cp)] ++ bh(false, bM, co)) ++ aN(N, (co - aO), cp)) ++ bU)
412405 }
413406 }
414407
415408
416409
417410 @Callable(bG)
418411 func deposit () = if ((size(bG.payments) != 1))
419412 then throw("exact 1 payment is allowed only")
420413 else {
421- let cg = bG.payments[0]
422- let aO = cg.amount
423- let ch = valueOrElse(cg.assetId, i)
424- let ci = toBase58String(ch)
425- let cj = if ((ch == i))
414+ let cr = bG.payments[0]
415+ let aO = cr.amount
416+ let cs = valueOrElse(cr.assetId, i)
417+ let ct = toBase58String(cs)
418+ let cu = if ((cs == i))
426419 then f
427420 else e
428- let ck = toBigInt(aO)
429- let bW = aj(S(), 0)
430- let cl = toBigInt(bW)
431- if ((0 > bW))
421+ let cv = toBigInt(aO)
422+ let bV = aj(S(), 0)
423+ let cw = toBigInt(bV)
424+ if ((0 > bV))
432425 then throw("TODO: case is not supported")
433- else if ((bW == 0))
434- then bz(ci, aO)
426+ else if ((bV == 0))
427+ then bz(ct, aO)
435428 else {
436- let cm = fraction(ck, g, cl)
437- let cn = X()
438- let ba = aj(cn, -1)
439- let co = (ba + 1)
440- if (!(contains(aU, ci)))
441- then throw(((aU + " doesn't contain ") + ci))
429+ let cx = fraction(cv, g, cw)
430+ let cy = X()
431+ let ba = aj(cy, -1)
432+ let cz = (ba + 1)
433+ if (!(contains(aU, ct)))
434+ then throw(((aU + " doesn't contain ") + ct))
442435 else {
443- func cp (bm,cq) = {
444- let cr = Z(co, cq)
445- let cs = am(Z(ba, cq), "0")
446- (bm :+ (if ((cq == ci))
447- then StringEntry(cr, toString((parseBigIntValue(cs) + cm)))
448- else StringEntry(cr, cs)))
436+ func cA (bm,cB) = {
437+ let cC = Z(cz, cB)
438+ let cD = am(Z(ba, cB), "0")
439+ (bm :+ (if ((cB == ct))
440+ then StringEntry(cC, toString((parseBigIntValue(cD) + cx)))
441+ else StringEntry(cC, cD)))
449442 }
450443
451444 ({
452445 let bs = aV
453446 let bt = size(bs)
454447 let bu = nil
455448 func bv (bw,bx) = if ((bx >= bt))
456449 then bw
457- else cp(bw, bs[bx])
450+ else cA(bw, bs[bx])
458451
459452 func by (bw,bx) = if ((bx >= bt))
460453 then bw
461454 else throw("List size exceeds 10")
462455
463456 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
464- } :+ IntegerEntry(cn, co))
457+ } :+ IntegerEntry(cy, cz))
465458 }
466459 }
467460 }
468461
469462
470463
471464 @Callable(bG)
472-func claimRewards () = {
473- let N = bG.caller
474- let bN = toString(N)
475- if ((size(bG.payments) > 0))
476- then throw("payments are not accepted")
477- else {
478- let ct = valueOrElse(aS(N), $Tuple3(true, 0, 0))
479- let bi = ct._1
480- let bj = ct._2
481- let cu = ct._3
482- let aY = toBigInt(bj)
483- let bk = Y(bN)
484- let aZ = aj(bk, -1)
485- let ba = aj(X(), -1)
486- func cv (bm,bn) = {
487- let cw = aW(bN, bn, aY, aZ, ba)
488- let bp = cw._1
489- let bq = cw._2
490- let br = cw._3
491- let bf = cw._4
492- let cx = ad(bN, bn)
493- let cy = bm
494- let cz = cy._1
495- let cA = cy._2
496- let cB = makeString([bn, toString(bp)], ":")
497- let cC = makeString([cA, cB], "_")
498- if ((0 >= bp))
499- then $Tuple2(cz, cC)
500- else $Tuple2((((cz :+ ScriptTransfer(N, bp, ap(bn))) :+ IntegerEntry(cx, (valueOrElse(getInteger(cx), 0) + bp))) :+ IntegerEntry(bf, 0)), cC)
501- }
502-
503- let cD = {
504- let bs = aV
505- let bt = size(bs)
506- let bu = $Tuple2(nil, "")
507- func bv (bw,bx) = if ((bx >= bt))
508- then bw
509- else cv(bw, bs[bx])
510-
511- func by (bw,bx) = if ((bx >= bt))
512- then bw
513- else throw("List size exceeds 10")
514-
515- by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
516- }
517- let cE = cD._1
518- let cF = cD._2
519- if ((0 >= size(cE)))
520- then throw("nothing to claim")
521- else ((cE :+ IntegerEntry(bk, ba)) :+ aE(N, bG.transactionId, drop(cF, 1)))
522- }
523- }
465+func claimRewards () = bX(bG.caller, bG)
524466
525467
526468
527469 @Callable(bG)
528-func unclaimedRewardsREADONLY (bN) = {
529- func cG (bm,bn) = ((bm + makeString([bn, "0", "0"], ":")) + "_")
470+func claimRewardsByOriginCaller () = bX(bG.originCaller, bG)
530471
531- let cH = if ((bN == ""))
472+
473+
474+@Callable(bG)
475+func unclaimedRewardsREADONLY (bM) = {
476+ func cE (bm,bn) = ((bm + makeString([bn, "0", "0"], ":")) + "_")
477+
478+ let cF = if ((bM == ""))
532479 then {
533480 let bs = aV
534481 let bt = size(bs)
535482 let bu = ""
536483 func bv (bw,bx) = if ((bx >= bt))
537484 then bw
538- else cG(bw, bs[bx])
485+ else cE(bw, bs[bx])
539486
540487 func by (bw,bx) = if ((bx >= bt))
541488 then bw
542489 else throw("List size exceeds 10")
543490
544491 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
545492 }
546493 else {
547- let N = addressFromStringValue(bN)
548- let cI = valueOrElse(aS(N), $Tuple3(true, 0, 0))
549- let bi = cI._1
550- let bj = cI._2
551- let cu = cI._3
494+ let N = addressFromStringValue(bM)
495+ let cG = valueOrElse(aS(N), $Tuple3(true, 0, 0))
496+ let bi = cG._1
497+ let bj = cG._2
498+ let bZ = cG._3
552499 let aY = toBigInt(bj)
553- let bk = Y(bN)
500+ let bk = Y(bM)
554501 let aZ = aj(bk, -1)
555502 let ba = aj(X(), -1)
556- func cv (bm,bn) = {
557- let cJ = aW(bN, bn, aY, aZ, ba)
558- let bp = cJ._1
559- let bq = cJ._2
560- let br = cJ._3
561- let bf = cJ._4
562- let cK = valueOrElse(getInteger(ad(bN, bn)), 0)
563- ((bm + makeString([bn, toString(bp), toString(cK)], ":")) + "_")
503+ func ca (bm,bn) = {
504+ let cH = aW(bM, bn, aY, aZ, ba)
505+ let bp = cH._1
506+ let bq = cH._2
507+ let br = cH._3
508+ let bf = cH._4
509+ let cI = valueOrElse(getInteger(ad(bM, bn)), 0)
510+ ((bm + makeString([bn, toString(bp), toString(cI)], ":")) + "_")
564511 }
565512
566513 let bs = aV
567514 let bt = size(bs)
568515 let bu = ""
569516 func bv (bw,bx) = if ((bx >= bt))
570517 then bw
571- else cv(bw, bs[bx])
518+ else ca(bw, bs[bx])
572519
573520 func by (bw,bx) = if ((bx >= bt))
574521 then bw
575522 else throw("List size exceeds 10")
576523
577524 by(bv(bv(bv(bv(bv(bv(bv(bv(bv(bv(bu, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
578525 }
579- $Tuple2(nil, dropRight(cH, 1))
526+ $Tuple2(nil, dropRight(cF, 1))
580527 }
581528
582529
583530
584531 @Callable(bG)
585-func surfStakingSYSREADONLY (cL) = {
586- let cM = aj(S(), 0)
587- let cN = bD(cM)
588- if ((cL == ""))
589- then $Tuple2(nil, [0, cM, 0, cN, 0])
532+func surfStakingSYSREADONLY (cJ) = {
533+ let cK = aj(S(), 0)
534+ let cL = bD(cK)
535+ if ((cJ == ""))
536+ then $Tuple2(nil, [0, cK, 0, cL, 0])
590537 else {
591- let N = an(cL)
592- let cO = valueOrElse(aS(N), $Tuple3(true, 0, 0))
593- let bi = cO._1
594- let cP = cO._2
595- let cu = cO._3
596- let cQ = bD(cP)
597- $Tuple2(nil, [cP, cM, cQ, cN, cu])
538+ let N = an(cJ)
539+ let cM = valueOrElse(aS(N), $Tuple3(true, 0, 0))
540+ let bi = cM._1
541+ let cN = cM._2
542+ let bZ = cM._3
543+ let cO = bD(cN)
544+ $Tuple2(nil, [cN, cK, cO, cL, bZ])
598545 }
599546 }
600547
601548
602549
603550 @Callable(bG)
604551 func configSYSREADONLY () = {
605- let cR = getIntegerValue(K())
606- let cS = (60 * c)
607- let cT = (1440 * 14)
608- let cU = 1200000
609- $Tuple2(nil, [cR, cS, cT, cU])
552+ let cP = getIntegerValue(K())
553+ let cQ = (60 * c)
554+ let cR = (1440 * 14)
555+ let cS = 1200000
556+ $Tuple2(nil, [cP, cQ, cR, cS])
610557 }
611558
612559

github/deemru/w8io/169f3d6 
103.88 ms