tx · CgH4buDCd78U4f4CW2aVuTYT8RwtVwUhVKDNTGwy3BNy 3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1: -0.03200000 Waves 2024.02.08 18:23 [2967446] smart account 3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1 > SELF 0.00000000 Waves
{ "type": 13, "id": "CgH4buDCd78U4f4CW2aVuTYT8RwtVwUhVKDNTGwy3BNy", "fee": 3200000, "feeAssetId": null, "timestamp": 1707405690309, "version": 2, "chainId": 84, "sender": "3N6ALE8YyAYnRk9f38mdWRTvW77rFkg5hN1", "senderPublicKey": "HMMF9zUpZPBGLAhpc1yDdcJNJychSarGHS79P2mGvq7J", "proofs": [ "4423DUNdtTMGCsJZNpsUPeuDZHqYkC52H8jKRLEqPnYy9cPFoQstZk6rMvZLGyjdVz8ttAh47cpoJnFRNWoKnMCJ" ], "script": "base64:BgJTCAISBgoECAgICBIHCgUICAgICBIDCgEIEgMKAQESBgoECAEBARIECgIBARIDCgEIEgMKAQgSBAoCCAgSAwoBCBIDCgEIEgASABIDCgEIEgMKAQiDAQAJU0VQQVJBVE9SAgJfXwAFV0FWRVMCBVdBVkVTAAxLRVlfTVVMVElTSUcCCE1VTFRJU0lHAApLRVlfU1RBVFVTAgZTVEFUVVMACEtFWV9JTklUAgRJTklUAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX01BTkFHRVICB01BTkFHRVIAC0tFWV9SRUZFUkVSAgdSRUZFUkVSAAxLRVlfRVhFQ1VUT1ICCEVYRUNVVE9SAApLRVlfT1JBQ0xFAgZPUkFDTEUAE0tFWV9DQUxMRVJfQ09OVFJBQ1QCD0NBTExFUl9DT05UUkFDVAAJS0VZX1BSSUNFAgVQUklDRQAPS0VZX1VOSVRTX0FTU0VUAgtVTklUU19BU1NFVAARS0VZX1VTRVJfUE9TSVRJT04CDVVTRVJfUE9TSVRJT04AFEtFWV9VU0VSX1VTRF9CQUxBTkNFAhBVU0VSX1VTRF9CQUxBTkNFACdLRVlfVVNFUl9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwCI1VTRVJfVU5JVFNfUEVSX1VTRF9CQUxBTkNFX0lOVEVHUkFMAClLRVlfVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAIlVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAAWS0VZX1VTRVJfQ0hFQ0tQT0lOVF9BVAISVVNFUl9DSEVDS1BPSU5UX0FUACJLRVlfVVNFUl9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEAh5VU0VSX1VOSVRTX0JBTEFOQ0VfRElTVFJJQlVURUQAHUtFWV9VU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMAhlVU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMABdLRVlfVVNFUl9TSEFSRVNfUkVGRVJBTAITVVNFUl9TSEFSRVNfUkVGRVJBTAAPS0VZX1NUQVJUX0JMT0NLAgtTVEFSVF9CTE9DSwAQS0VZX0ZJTklTSF9CTE9DSwIMRklOSVNIX0JMT0NLABZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQAhJUT1RBTF9VTklUU19GT1JfTFAAG0tFWV9UT1RBTF9VTklUU19GT1JfUkVGRVJBTAIXVE9UQUxfVU5JVFNfRk9SX1JFRkVSQUwAFUtFWV9UT1RBTF9VU0RfQkFMQU5DRQIRVE9UQUxfVVNEX0JBTEFOQ0UAIktFWV9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwCHlVOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAARS0VZX0NIRUNLUE9JTlRfQVQCDUNIRUNLUE9JTlRfQVQAHUtFWV9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEAhlVTklUU19CQUxBTkNFX0RJU1RSSUJVVEVEABFLRVlfVE9LRU5fQkFMQU5DRQINVE9LRU5fQkFMQU5DRQAPS0VZX1VTRVJTX0NPVU5UAgtVU0VSU19DT1VOVAAkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMAiBVTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAAYS0VZX1VOSVRTX1NIQVJFU19SRUZFUkFMAhRVTklUU19TSEFSRVNfUkVGRVJBTAAYS0VZX1RPVEFMX1NIQVJFU19SRUZFUkFMAhRUT1RBTF9TSEFSRVNfUkVGRVJBTAATS0VZX1NXQVZFU19DT05UUkFDVAIPU1dBVkVTX0NPTlRSQUNUABBLRVlfU1dBVkVTX0FTU0VUAgVBU1NFVAAMRlVOQ19ERVBPU0lUAgdkZXBvc2l0AA1GVU5DX0dFVF9SQVRFAgdnZXRSYXRlAA1GVU5DX1dJVEhEUkFXAgh3aXRoZHJhdwAHTUFYX0lOVAD//////////38ADlBFUkNFTlRfRkFDVE9SCQC2AgEAgKCUpY0dAAtaRVJPX0JJR0lOVAkAtgIBAAAACk9ORV9CSUdJTlQJALYCAQABABJTV0FWRVNfUkFURV9GQUNUT1IJALYCAQCAoJSljR0BEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQxfdmFsaWRhdGVJbnQEBHZhbF8ObG93ZXJCb3VuZGFyeV8OdXBwZXJCb3VuZGFyeV8EZXJyXwMDCQBmAgUObG93ZXJCb3VuZGFyeV8FBHZhbF8GCQBmAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgEPX3ZhbGlkYXRlQmlnSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAvwICBQ5sb3dlckJvdW5kYXJ5XwUEdmFsXwYJAL8CAgUEdmFsXwUOdXBwZXJCb3VuZGFyeV8JAAIBBQRlcnJfBgEVX3ZhbGlkYXRlUGF5bWVudHNTaXplAwlwYXltZW50c18HdGFyZ2V0XwRlcnJfAwkBAiE9AgkAkAMBBQlwYXltZW50c18FB3RhcmdldF8JAAIBBQRlcnJfBgEVX3ZhbGlkYXRlV2F2ZXNQYXltZW50AghwYXltZW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwCQACAQUEZXJyXwMJAAECBQckbWF0Y2gwAgRVbml0BgkAAgECC01hdGNoIGVycm9yARFfdmFsaWRhdGVFcUJpZ0ludAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GAQ5fdmFsaWRhdGVBc3NldAIGYXNzZXRfBGVycl8EByRtYXRjaDAJAOwHAQkA2QQBBQZhc3NldF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEJX2xvYWRJbml0AAQHJG1hdGNoMAkAoAgBBQhLRVlfSU5JVAMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFhBQckbWF0Y2gwBQFhBwEJX3NhdmVJbml0AQdpc0luaXRfCQDMCAIJAQxCb29sZWFuRW50cnkCBQhLRVlfSU5JVAUHaXNJbml0XwUDbmlsAQpfbG9hZFBhdXNlAAQHJG1hdGNoMAkAoAgBBQpLRVlfUEFVU0VEAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDAFAWEHAQpfc2F2ZVBhdXNlAQlpc1BhdXNlZF8JAMwIAgkBDEJvb2xlYW5FbnRyeQIFCktFWV9QQVVTRUQFCWlzUGF1c2VkXwUDbmlsAQtfbG9hZFBhdXNlcgAEByRtYXRjaDAJAKIIAQUKS0VZX1BBVVNFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZVBhdXNlcgEHcGF1c2VyXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfUEFVU0VSCQClCAEFB3BhdXNlcl8FA25pbAENX2xvYWRNdWx0aXNpZwAEByRtYXRjaDAJAKIIAQUMS0VZX01VTFRJU0lHAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlTXVsdGlzaWcBCW11bHRpc2lnXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfTVVMVElTSUcJAKUIAQUJbXVsdGlzaWdfBQNuaWwBDV9sb2FkRXhlY3V0b3IABAckbWF0Y2gwCQCiCAEFDEtFWV9FWEVDVVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQ1fc2F2ZUV4ZWN1dG9yAQlleGVjdXRvcl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUMS0VZX0VYRUNVVE9SCQClCAEFCWV4ZWN1dG9yXwUDbmlsAQtfbG9hZE9yYWNsZQAEByRtYXRjaDAJAKIIAQUKS0VZX09SQUNMRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQtfc2F2ZU9yYWNsZQEHb3JhY2xlXwkAzAgCCQELU3RyaW5nRW50cnkCBQpLRVlfT1JBQ0xFCQClCAEFB29yYWNsZV8FA25pbAETX2xvYWRDYWxsZXJDb250cmFjdAAEByRtYXRjaDAJAKIIAQUTS0VZX0NBTExFUl9DT05UUkFDVAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAETX3NhdmVDYWxsZXJDb250cmFjdAEHY2FsbGVyXwkAzAgCCQELU3RyaW5nRW50cnkCBRNLRVlfQ0FMTEVSX0NPTlRSQUNUBQdjYWxsZXJfBQNuaWwBEV9sb2FkVXNlclBvc2l0aW9uAgZ0b2tlbl8FdXNlcl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEUtFWV9VU0VSX1BPU0lUSU9OCQDMCAIFBnRva2VuXwkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBAZzdHJ1Y3QJAL0JAgUBYQUJU0VQQVJBVE9SCQCUCgIJAKcDAQkAkQMCBQZzdHJ1Y3QAAAkApwMBCQCRAwIFBnN0cnVjdAABCQCUCgIFC1pFUk9fQklHSU5UBQtaRVJPX0JJR0lOVAERX3NhdmVVc2VyUG9zaXRpb24DBnRva2VuXwV1c2VyXwlwb3NpdGlvbl8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEUtFWV9VU0VSX1BPU0lUSU9OCQDMCAIFBnRva2VuXwkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IJALsJAgkAzAgCCQCmAwEIBQlwb3NpdGlvbl8CXzEJAMwIAgkApgMBCAUJcG9zaXRpb25fAl8yBQNuaWwFCVNFUEFSQVRPUgUDbmlsARNfbG9hZFVzZXJVU0RCYWxhbmNlAQV1c2VyXwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUUS0VZX1VTRVJfVVNEX0JBTEFOQ0UJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAETX3NhdmVVc2VyVVNEQmFsYW5jZQIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRRLRVlfVVNFUl9VU0RfQkFMQU5DRQkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IJAKYDAQUGdmFsdWVfBQNuaWwBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRdLRVlfVVNFUl9TSEFSRVNfUkVGRVJBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARZfc2F2ZVVzZXJTaGFyZXNSZWZlcmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFF0tFWV9VU0VSX1NIQVJFU19SRUZFUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEfX2xvYWRVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAAEByRtYXRjaDAJAKIIAQUiS0VZX1VOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBH19zYXZlVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBSJLRVlfVU5JVFNfUEVSX1VTRF9CQUxBTkNFX0lOVEVHUkFMCQCmAwEFBnZhbHVlXwUDbmlsASNfbG9hZFVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAEFdXNlcl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFJ0tFWV9VU0VSX1VOSVRTX1BFUl9VU0RfQkFMQU5DRV9JTlRFR1JBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UASNfc2F2ZVVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBSdLRVlfVVNFUl9VTklUU19QRVJfVVNEX0JBTEFOQ0VfSU5URUdSQUwJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SCQCmAwEFBnZhbHVlXwUDbmlsARFfbG9hZENoZWNrcG9pbnRBdAAEByRtYXRjaDAJAKIIAQURS0VZX0NIRUNLUE9JTlRfQVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARFfc2F2ZUNoZWNrcG9pbnRBdAEGdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIFEUtFWV9DSEVDS1BPSU5UX0FUCQCmAwEFBnZhbHVlXwUDbmlsARVfbG9hZFVzZXJDaGVja3BvaW50QXQBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBRZLRVlfVVNFUl9DSEVDS1BPSU5UX0FUCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBFV9zYXZlVXNlckNoZWNrcG9pbnRBdAIFdXNlcl8GdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIJALkJAgkAzAgCBRZLRVlfVVNFUl9DSEVDS1BPSU5UX0FUCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEPX2xvYWRVbml0c0Fzc2V0AAQHJG1hdGNoMAkAoggBBQ9LRVlfVU5JVFNfQVNTRVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQDZBAEFAWEBAAEPX3NhdmVVbml0c0Fzc2V0AQZhc3NldF8JAMwIAgkBC1N0cmluZ0VudHJ5AgUPS0VZX1VOSVRTX0FTU0VUCQDYBAEFBmFzc2V0XwUDbmlsAQ9fbG9hZFN0YXJ0QmxvY2sABAckbWF0Y2gwCQCiCAEFD0tFWV9TVEFSVF9CTE9DSwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBD19zYXZlU3RhcnRCbG9jawEGdmFsdWVfCQDMCAIJAQtTdHJpbmdFbnRyeQIFD0tFWV9TVEFSVF9CTE9DSwkApgMBBQZ2YWx1ZV8FA25pbAEQX2xvYWRGaW5pc2hCbG9jawAEByRtYXRjaDAJAKIIAQUQS0VZX0ZJTklTSF9CTE9DSwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBEF9zYXZlRmluaXNoQmxvY2sBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRBLRVlfRklOSVNIX0JMT0NLCQCmAwEFBnZhbHVlXwUDbmlsARxfbG9hZFVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAAQHJG1hdGNoMAkAoggBBR1LRVlfVU5JVFNfQkFMQU5DRV9ESVNUUklCVVRFRAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBHF9zYXZlVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBR1LRVlfVU5JVFNfQkFMQU5DRV9ESVNUUklCVVRFRAkApgMBBQZ2YWx1ZV8FA25pbAEgX2xvYWRVc2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBSJLRVlfVVNFUl9VTklUU19CQUxBTkNFX0RJU1RSSUJVVEVECQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJAKcDAQUBYQULWkVST19CSUdJTlQBIF9zYXZlVXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFIktFWV9VU0VSX1VOSVRTX0JBTEFOQ0VfRElTVFJJQlVURUQJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SCQCmAwEFBnZhbHVlXwUDbmlsARRfbG9hZFRvdGFsVVNEQmFsYW5jZQAEByRtYXRjaDAJAKIIAQUVS0VZX1RPVEFMX1VTRF9CQUxBTkNFAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRVLRVlfVE9UQUxfVVNEX0JBTEFOQ0UJAKYDAQUGdmFsdWVfBQNuaWwBE19sb2FkU1dhdmVzQ29udHJhY3QABAckbWF0Y2gwCQCiCAEFE0tFWV9TV0FWRVNfQ09OVFJBQ1QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAETX3NhdmVTV2F2ZXNDb250cmFjdAEJY29udHJhY3RfCQDMCAIJAQtTdHJpbmdFbnRyeQIFE0tFWV9TV0FWRVNfQ09OVFJBQ1QJAKUIAQUJY29udHJhY3RfBQNuaWwBEF9sb2FkU1dhdmVzQXNzZXQBCWNvbnRyYWN0XwQHJG1hdGNoMAkAnQgCBQljb250cmFjdF8FEEtFWV9TV0FWRVNfQVNTRVQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQDZBAEFAWEJAAIBAhhfbG9hZFNXYXZlc0Fzc2V0OiByZXZlcnQBEV9sb2FkVG9rZW5CYWxhbmNlAQZ0b2tlbl8EByRtYXRjaDAJAKIIAQkAuQkCCQDMCAIFEUtFWV9UT0tFTl9CQUxBTkNFCQDMCAIFBnRva2VuXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARFfc2F2ZVRva2VuQmFsYW5jZQIGdG9rZW5fBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgURS0VZX1RPS0VOX0JBTEFOQ0UJAMwIAgUGdG9rZW5fBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEPX2xvYWRVc2Vyc0NvdW50AAQHJG1hdGNoMAkAoggBBQ9LRVlfVVNFUlNfQ09VTlQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UAQ9fc2F2ZVVzZXJzQ291bnQBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBQ9LRVlfVVNFUlNfQ09VTlQJAKYDAQUGdmFsdWVfBQNuaWwBIV9sb2FkVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAAEByRtYXRjaDAJAKIIAQUkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEhX3NhdmVVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsAQZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUkS0VZX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMCQCmAwEFBnZhbHVlXwUDbmlsARdfbG9hZFVuaXRzU2hhcmVzUmVmZXJhbAAEByRtYXRjaDAJAKIIAQUYS0VZX1VOSVRTX1NIQVJFU19SRUZFUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEXX3NhdmVVbml0c1NoYXJlc1JlZmVyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfVU5JVFNfU0hBUkVTX1JFRkVSQUwJAKYDAQUGdmFsdWVfBQNuaWwBFF9sb2FkVG90YWxVbml0c0ZvckxQAAQHJG1hdGNoMAkAoggBBRZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEUX3NhdmVUb3RhbFVuaXRzRm9yTFABBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRZLRVlfVE9UQUxfVU5JVFNfRk9SX0xQCQCmAwEFBnZhbHVlXwUDbmlsARlfbG9hZFRvdGFsVW5pdHNGb3JSZWZlcmFsAAQHJG1hdGNoMAkAoggBBRtLRVlfVE9UQUxfVU5JVFNfRk9SX1JFRkVSQUwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UARlfc2F2ZVRvdGFsVW5pdHNGb3JSZWZlcmFsAQZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgUbS0VZX1RPVEFMX1VOSVRTX0ZPUl9SRUZFUkFMCQCmAwEFBnZhbHVlXwUDbmlsARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAEByRtYXRjaDAJAKIIAQUYS0VZX1RPVEFMX1NIQVJFU19SRUZFUkFMAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEXX3NhdmVUb3RhbFNoYXJlc1JlZmVyYWwBBnZhbHVlXwkAzAgCCQELU3RyaW5nRW50cnkCBRhLRVlfVE9UQUxfU0hBUkVTX1JFRkVSQUwJAKYDAQUGdmFsdWVfBQNuaWwBJV9sb2FkVXNlclVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwBBXVzZXJfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBSlLRVlfVVNFUl9VTklUU19QRVJfUkVGRVJBTF9TSEFSRV9JTlRFR1JBTAkAzAgCBQV1c2VyXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEFC1pFUk9fQklHSU5UASVfc2F2ZVVzZXJVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFKUtFWV9VU0VSX1VOSVRTX1BFUl9SRUZFUkFMX1NIQVJFX0lOVEVHUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEbX2xvYWRVc2VyVW5pdHNTaGFyZXNSZWZlcmFsAQV1c2VyXwQHJG1hdGNoMAkAoggBCQC5CQIJAMwIAgUdS0VZX1VTRVJfVU5JVFNfU0hBUkVTX1JFRkVSQUwJAMwIAgUFdXNlcl8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhBQtaRVJPX0JJR0lOVAEbX3NhdmVVc2VyVW5pdHNTaGFyZXNSZWZlcmFsAgV1c2VyXwZ2YWx1ZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFHUtFWV9VU0VSX1VOSVRTX1NIQVJFU19SRUZFUkFMCQDMCAIFBXVzZXJfBQNuaWwFCVNFUEFSQVRPUgkApgMBBQZ2YWx1ZV8FA25pbAEMX2xvYWRNYW5hZ2VyAAQHJG1hdGNoMAkAoggBBQtLRVlfTUFOQUdFUgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAWEJAQdBZGRyZXNzAQEAAQxfc2F2ZU1hbmFnZXIBCG1hbmFnZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFC0tFWV9NQU5BR0VSCQClCAEFCG1hbmFnZXJfBQNuaWwBDF9sb2FkUmVmZXJlcgEJY29kZWhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBQtLRVlfUkVGRVJFUgkAzAgCBQljb2RlaGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAUBYQkAAgECFF9sb2FkUmVmZXJlcjogcmV2ZXJ0AQxfc2F2ZVJlZmVyZXICCWNvZGVoYXNoXwhhZGRyZXNzXwkAzAgCCQELU3RyaW5nRW50cnkCCQC5CQIJAMwIAgULS0VZX1JFRkVSRVIJAMwIAgUJY29kZWhhc2hfBQNuaWwFCVNFUEFSQVRPUgUIYWRkcmVzc18FA25pbAEWX2NoZWNrUmVmZXJlckV4aXN0ZW5jZQEJY29kZWhhc2hfBAckbWF0Y2gwCQCiCAEJALkJAgkAzAgCBQtLRVlfUkVGRVJFUgkAzAgCBQljb2RlaGFzaF8FA25pbAUJU0VQQVJBVE9SAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAYHARFfb25seVRoaXNDb250cmFjdAEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8FBHRoaXMJAAIBAhlfb25seVRoaXNDb250cmFjdDogcmV2ZXJ0BgEQX3doZW5NdWx0aXNpZ1NldAADCQAAAgkBDV9sb2FkTXVsdGlzaWcACQEHQWRkcmVzcwEBAAkAAgECGF93aGVuTXVsdGlzaWdTZXQ6IHJldmVydAYBE193aGVuTm90SW5pdGlhbGl6ZWQAAwkBCV9sb2FkSW5pdAAJAAIBAhtfd2hlbk5vdEluaXRpYWxpemVkOiByZXZlcnQGARBfd2hlbkluaXRpYWxpemVkAAMJAQEhAQkBCV9sb2FkSW5pdAAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDF9vbmx5TWFuYWdlcgEHY2FsbGVyXwMJAQIhPQIFB2NhbGxlcl8JAQxfbG9hZE1hbmFnZXIACQACAQIUX29ubHlNYW5hZ2VyOiByZXZlcnQGARFfdmFsaWRhdGVFeGVjdXRvcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBDV9sb2FkRXhlY3V0b3IACQACAQUEZXJyXwYBD192YWxpZGF0ZUNhbGxlcgIEdmFsXwRlcnJfAwkBAiE9AgUEdmFsXwkBE19sb2FkQ2FsbGVyQ29udHJhY3QACQACAQUEZXJyXwYBDV9nZXRUb2tlblJhdGUBBnRva2VuXwQHJG1hdGNoMAkAnQgCCQELX2xvYWRPcmFjbGUACQC5CQIJAMwIAgUJS0VZX1BSSUNFCQDMCAIFBnRva2VuXwUDbmlsBQlTRVBBUkFUT1IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQCnAwEFAWEJAAIBCQCsAgICIV9nZXRUb2tlblJhdGU6IG5vIHJhdGUgZm9yIHRva2VuPQUGdG9rZW5fAQtfY2hlY2twb2ludAAEHnByZXZVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAkBH19sb2FkVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwABBBwcmV2Q2hlY2twb2ludEF0CQCYAwEJAMwIAgkBD19sb2FkU3RhcnRCbG9jawAJAMwIAgkBEV9sb2FkQ2hlY2twb2ludEF0AAUDbmlsBBtwcmV2VW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQJARxfbG9hZFVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAAQgcHJldlVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJASFfbG9hZFVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwABBZwcmV2VW5pdHNTaGFyZXNSZWZlcmFsCQEXX2xvYWRVbml0c1NoYXJlc1JlZmVyYWwABAxjdXJyZW50QmxvY2sJAJkDAQkAzAgCCQC2AgEFBmhlaWdodAkAzAgCCQEQX2xvYWRGaW5pc2hCbG9jawAFA25pbAMJAMACAgUQcHJldkNoZWNrcG9pbnRBdAUMY3VycmVudEJsb2NrCQCVCgMFA25pbAUecHJldlVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBSBwcmV2VW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAQYdW5pdHNCYWxhbmNlVG9EaXN0cmlidXRlCQC8AgMJALgCAgkBFF9sb2FkVG90YWxVbml0c0ZvckxQAAUbcHJldlVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkCQC4AgIFDGN1cnJlbnRCbG9jawUQcHJldkNoZWNrcG9pbnRBdAkAuAICCQEQX2xvYWRGaW5pc2hCbG9jawAFEHByZXZDaGVja3BvaW50QXQEGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsCQC3AgIJALoCAgkAuQICBQ5QRVJDRU5UX0ZBQ1RPUgUYdW5pdHNCYWxhbmNlVG9EaXN0cmlidXRlCQEUX2xvYWRUb3RhbFVTREJhbGFuY2UABR5wcmV2VW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwEDSR0MDE3NzQ4MTgzMDEDCQC/AgIJARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAFC1pFUk9fQklHSU5UBBJ1bml0c1NoYXJlc1JlZmVyYWwJALwCAwkAuAICCQEZX2xvYWRUb3RhbFVuaXRzRm9yUmVmZXJhbAAFFnByZXZVbml0c1NoYXJlc1JlZmVyYWwJALgCAgUMY3VycmVudEJsb2NrBRBwcmV2Q2hlY2twb2ludEF0CQC4AgIJARBfbG9hZEZpbmlzaEJsb2NrAAUQcHJldkNoZWNrcG9pbnRBdAQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAkAtwICCQC6AgIJALkCAgUOUEVSQ0VOVF9GQUNUT1IFEnVuaXRzU2hhcmVzUmVmZXJhbAkBF19sb2FkVG90YWxTaGFyZXNSZWZlcmFsAAUgcHJldlVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJAJQKAgUSdW5pdHNTaGFyZXNSZWZlcmFsBRx1bml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsCQCUCgIFC1pFUk9fQklHSU5UBQtaRVJPX0JJR0lOVAQSdW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMTc3NDgxODMwMQJfMQQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAgFDSR0MDE3NzQ4MTgzMDECXzIJAJUKAwkAzggCCQDOCAIJAM4IAgkAzggCCQERX3NhdmVDaGVja3BvaW50QXQBBQxjdXJyZW50QmxvY2sJAR9fc2F2ZVVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsAQUadW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwJARxfc2F2ZVVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAQkAtwICBRh1bml0c0JhbGFuY2VUb0Rpc3RyaWJ1dGUFG3ByZXZVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkBIV9zYXZlVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEFHHVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwJARdfc2F2ZVVuaXRzU2hhcmVzUmVmZXJhbAEJALcCAgUSdW5pdHNTaGFyZXNSZWZlcmFsBRZwcmV2VW5pdHNTaGFyZXNSZWZlcmFsBRp1bml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAUcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEPX3VzZXJDaGVja3BvaW50AwV1c2VyXw91c2VyVVNEQmFsYW5jZV8SdXNlclNoYXJlc1JlZmVyYWxfBA0kdDAxODg4NzE4OTk5CQELX2NoZWNrcG9pbnQABBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDE4ODg3MTg5OTkCXzEEGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsCAUNJHQwMTg4ODcxODk5OQJfMgQcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAgFDSR0MDE4ODg3MTg5OTkCXzMEInByZXZVc2VyVW5pdHNQZXJVU0RCYWxhbmNlSW50ZWdyYWwJASNfbG9hZFVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAEFBXVzZXJfBBRwcmV2VXNlckNoZWNrcG9pbnRBdAkAmAMBCQDMCAIJAQ9fbG9hZFN0YXJ0QmxvY2sACQDMCAIJARVfbG9hZFVzZXJDaGVja3BvaW50QXQBBQV1c2VyXwUDbmlsBB9wcmV2VXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkCQEgX2xvYWRVc2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQBBQV1c2VyXwQkcHJldlVzZXJVbml0c1BlclJlZmVyYWxTaGFyZUludGVncmFsCQElX2xvYWRVc2VyVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAEFBXVzZXJfBBpwcmV2VXNlclVuaXRzU2hhcmVzUmVmZXJhbAkBG19sb2FkVXNlclVuaXRzU2hhcmVzUmVmZXJhbAEFBXVzZXJfBAxjdXJyZW50QmxvY2sJAJkDAQkAzAgCCQC2AgEFBmhlaWdodAkAzAgCCQEQX2xvYWRGaW5pc2hCbG9jawAFA25pbAMJAMACAgUUcHJldlVzZXJDaGVja3BvaW50QXQFDGN1cnJlbnRCbG9jawkAlQoDBRFjaGVja3BvaW50QWN0aW9ucwUfcHJldlVzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAUacHJldlVzZXJVbml0c1NoYXJlc1JlZmVyYWwEG3VzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkAtwICCQC6AgIJALkCAgUPdXNlclVTREJhbGFuY2VfCQC4AgIFGnVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBSJwcmV2VXNlclVuaXRzUGVyVVNEQmFsYW5jZUludGVncmFsBQ5QRVJDRU5UX0ZBQ1RPUgUfcHJldlVzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAQWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAkAtwICCQC6AgIJALkCAgUSdXNlclNoYXJlc1JlZmVyYWxfCQC4AgIFHHVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwFJHByZXZVc2VyVW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAUOUEVSQ0VOVF9GQUNUT1IFGnByZXZVc2VyVW5pdHNTaGFyZXNSZWZlcmFsCQCVCgMJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCBRFjaGVja3BvaW50QWN0aW9ucwkBFV9zYXZlVXNlckNoZWNrcG9pbnRBdAIFBXVzZXJfBQxjdXJyZW50QmxvY2sJASNfc2F2ZVVzZXJVbml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAIFBXVzZXJfBRp1bml0c1BlclVTREJhbGFuY2VJbnRlZ3JhbAkBIF9zYXZlVXNlclVuaXRzQmFsYW5jZURpc3RyaWJ1dGVkAgUFdXNlcl8FG3VzZXJVbml0c0JhbGFuY2VEaXN0cmlidXRlZAkBJV9zYXZlVXNlclVuaXRzUGVyUmVmZXJhbFNoYXJlSW50ZWdyYWwCBQV1c2VyXwUcdW5pdHNQZXJSZWZlcmFsU2hhcmVJbnRlZ3JhbAkBG19zYXZlVXNlclVuaXRzU2hhcmVzUmVmZXJhbAIFBXVzZXJfBRZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsBRt1c2VyVW5pdHNCYWxhbmNlRGlzdHJpYnV0ZWQFFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwPAWkBBGluaXQECWV4ZWN1dG9yXwdvcmFjbGVfB3BhdXNlcl8Pc1dhdmVzQ29udHJhY3RfBANlcnIDAwMDAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBE193aGVuTm90SW5pdGlhbGl6ZWQABwkBEF93aGVuTXVsdGlzaWdTZXQABwkBEF92YWxpZGF0ZUFkZHJlc3MCBQlleGVjdXRvcl8CFmluaXQ6IGludmFsaWQgZXhlY3V0b3IHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB29yYWNsZV8CFGluaXQ6IGludmFsaWQgb3JhY2xlBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcJARBfdmFsaWRhdGVBZGRyZXNzAgUPc1dhdmVzQ29udHJhY3RfAhxpbml0OiBpbnZhbGlkIHNXYXZlc0NvbnRyYWN0BwMJAAACBQNlcnIFA2VycgkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQlfc2F2ZUluaXQBBgkBDV9zYXZlRXhlY3V0b3IBCQERQGV4dHJOYXRpdmUoMTA2MikBBQlleGVjdXRvcl8JAQtfc2F2ZU9yYWNsZQEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB29yYWNsZV8JAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8JARNfc2F2ZVNXYXZlc0NvbnRyYWN0AQkBEUBleHRyTmF0aXZlKDEwNjIpAQUPc1dhdmVzQ29udHJhY3RfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB2RlcG9zaXQFD2NhbGxlckNvbnRyYWN0XwdzZW5kZXJfBnRva2VuXwdhbW91bnRfCXJlZmVycmVyXwQGYW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQUHYW1vdW50XwIaZGVwb3NpdDogYW1vdW50IGlzIG5vdCBJbnQEA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARFfdmFsaWRhdGVFeGVjdXRvcgIIBQFpBmNhbGxlcgIZZGVwb3NpdDogaW52YWxpZCBleGVjdXRvcgcJAQ9fdmFsaWRhdGVDYWxsZXICBQ9jYWxsZXJDb250cmFjdF8CF2RlcG9zaXQ6IGludmFsaWQgY2FsbGVyBwkBDF92YWxpZGF0ZUludAQFBmFtb3VudAAABQdNQVhfSU5UAhdkZXBvc2l0OiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEBHJhdGUJAQ1fZ2V0VG9rZW5SYXRlAQUGdG9rZW5fBA0kdDAyMTkyNjIyMDA4CQERX2xvYWRVc2VyUG9zaXRpb24CBQZ0b2tlbl8FB3NlbmRlcl8EEHVzZXJUb2tlbkJhbGFuY2UIBQ0kdDAyMTkyNjIyMDA4Al8xBBV1c2VyVG9rZW5CYWxhbmNlSW5VU0QIBQ0kdDAyMTkyNjIyMDA4Al8yBA51c2VyVVNEQmFsYW5jZQkBE19sb2FkVXNlclVTREJhbGFuY2UBBQdzZW5kZXJfBBF1c2VyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQdzZW5kZXJfBA0kdDAyMjEyNzIyMjU0CQEPX3VzZXJDaGVja3BvaW50AwUHc2VuZGVyXwUOdXNlclVTREJhbGFuY2UFEXVzZXJTaGFyZXNSZWZlcmFsBBFjaGVja3BvaW50QWN0aW9ucwgFDSR0MDIyMTI3MjIyNTQCXzEEEHVzZXJVbml0c0JhbGFuY2UIBQ0kdDAyMjEyNzIyMjU0Al8yBBZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMjIxMjcyMjI1NAJfMwQTbmV3VXNlclRva2VuQmFsYW5jZQkAtwICBRB1c2VyVG9rZW5CYWxhbmNlCQC2AgEFBmFtb3VudAQYbmV3VXNlclRva2VuQmFsYW5jZUluVVNECQC9AgQFE25ld1VzZXJUb2tlbkJhbGFuY2UFBHJhdGUFDlBFUkNFTlRfRkFDVE9SBQRET1dOBBFuZXdVc2VyVVNEQmFsYW5jZQkAtwICCQC4AgIFDnVzZXJVU0RCYWxhbmNlBRV1c2VyVG9rZW5CYWxhbmNlSW5VU0QFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAQTdG90YWxCYWxhbmNlVXBkYXRlZAkAtwICCQC4AgIJARRfbG9hZFRvdGFsVVNEQmFsYW5jZQAFFXVzZXJUb2tlbkJhbGFuY2VJblVTRAUYbmV3VXNlclRva2VuQmFsYW5jZUluVVNEBAp1c2Vyc0NvdW50AwkAAAIFDnVzZXJVU0RCYWxhbmNlBQtaRVJPX0JJR0lOVAkAtwICCQEPX2xvYWRVc2Vyc0NvdW50AAUKT05FX0JJR0lOVAkBD19sb2FkVXNlcnNDb3VudAAEDnJlZmVyZXJBY3Rpb25zAwMJAGYCCQCxAgEFCXJlZmVycmVyXwAACQEWX2NoZWNrUmVmZXJlckV4aXN0ZW5jZQEFCXJlZmVycmVyXwcEDnJlZmVyZXJBZGRyZXNzCQEMX2xvYWRSZWZlcmVyAQUJcmVmZXJyZXJfBBJzaGFyZXNUb0Rpc3RyaWJ1dGUJAL0CBAkAtgIBBQZhbW91bnQFBHJhdGUFDlBFUkNFTlRfRkFDVE9SBQRET1dOBAxzaGFyZXNUb1VzZXIJAL0CBAUSc2hhcmVzVG9EaXN0cmlidXRlCQC2AgEAFAkAtgIBAGQFBERPV04ED3NoYXJlc1RvUmVmZXJlcgkAuAICBRJzaGFyZXNUb0Rpc3RyaWJ1dGUFDHNoYXJlc1RvVXNlcgQUbmV3VXNlclNoYXJlc1JlZmVyYWwJALcCAgURdXNlclNoYXJlc1JlZmVyYWwFDHNoYXJlc1RvVXNlcgQUcmVmZXJlclNoYXJlc1JlZmVyYWwJARZfbG9hZFVzZXJTaGFyZXNSZWZlcmFsAQUOcmVmZXJlckFkZHJlc3MEF25ld1JlZmVyZXJTaGFyZXNSZWZlcmFsCQC3AgIFFHJlZmVyZXJTaGFyZXNSZWZlcmFsBQ9zaGFyZXNUb1JlZmVyZXIEFW5ld1RvdGFsU2hhcmVzUmVmZXJhbAkAtwICCQEXX2xvYWRUb3RhbFNoYXJlc1JlZmVyYWwABRJzaGFyZXNUb0Rpc3RyaWJ1dGUEDSR0MDIzNTg3MjM3NTgJAQ9fdXNlckNoZWNrcG9pbnQDBQ5yZWZlcmVyQWRkcmVzcwkBE19sb2FkVXNlclVTREJhbGFuY2UBBQ5yZWZlcmVyQWRkcmVzcwUUcmVmZXJlclNoYXJlc1JlZmVyYWwEGHJlZmVyZXJDaGVja3BvaW50QWN0aW9ucwgFDSR0MDIzNTg3MjM3NTgCXzEEE3JlZmVyZXJVbml0c0JhbGFuY2UIBQ0kdDAyMzU4NzIzNzU4Al8yBBlyZWZlcmVyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMjM1ODcyMzc1OAJfMwkAzggCCQDOCAIJAM4IAgUYcmVmZXJlckNoZWNrcG9pbnRBY3Rpb25zCQEWX3NhdmVVc2VyU2hhcmVzUmVmZXJhbAIFB3NlbmRlcl8FFG5ld1VzZXJTaGFyZXNSZWZlcmFsCQEWX3NhdmVVc2VyU2hhcmVzUmVmZXJhbAIFDnJlZmVyZXJBZGRyZXNzBRduZXdSZWZlcmVyU2hhcmVzUmVmZXJhbAkBF19zYXZlVG90YWxTaGFyZXNSZWZlcmFsAQUVbmV3VG90YWxTaGFyZXNSZWZlcmFsBQNuaWwJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgURY2hlY2twb2ludEFjdGlvbnMFDnJlZmVyZXJBY3Rpb25zCQEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBRN0b3RhbEJhbGFuY2VVcGRhdGVkCQERX3NhdmVUb2tlbkJhbGFuY2UCBQZ0b2tlbl8JALcCAgkBEV9sb2FkVG9rZW5CYWxhbmNlAQUGdG9rZW5fCQC2AgEFBmFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQdzZW5kZXJfBRFuZXdVc2VyVVNEQmFsYW5jZQkBD19zYXZlVXNlcnNDb3VudAEFCnVzZXJzQ291bnQJARFfc2F2ZVVzZXJQb3NpdGlvbgMFBnRva2VuXwUHc2VuZGVyXwkAlAoCBRNuZXdVc2VyVG9rZW5CYWxhbmNlBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QFEHVzZXJVbml0c0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMZGVwb3NpdFdhdmVzAQlyZWZlcnJlcl8EA2VycgMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJARVfdmFsaWRhdGVQYXltZW50c1NpemUDCAUBaQhwYXltZW50cwABAhhkZXBvc2l0V2F2ZXM6IG5vIHBheW1lbnQHCQEVX3ZhbGlkYXRlV2F2ZXNQYXltZW50AgkAkQMCCAUBaQhwYXltZW50cwAAAhtkZXBvc2l0V2F2ZXM6IGludmFsaWQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAkAaQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AGQAAAUHTUFYX0lOVAIcZGVwb3NpdFdhdmVzOiBpbnZhbGlkIGFtb3VudAcDCQAAAgUDZXJyBQNlcnIEBmFtb3VudAkAaQIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AGQEBnNlbmRlcgkApQgBCAUBaQZjYWxsZXIEBXRva2VuBQVXQVZFUwQEcmF0ZQkBDV9nZXRUb2tlblJhdGUBBQV0b2tlbgQNJHQwMjY2MzMyNjcxMwkBEV9sb2FkVXNlclBvc2l0aW9uAgUFdG9rZW4FBnNlbmRlcgQQdXNlclRva2VuQmFsYW5jZQgFDSR0MDI2NjMzMjY3MTMCXzEEFXVzZXJUb2tlbkJhbGFuY2VJblVTRAgFDSR0MDI2NjMzMjY3MTMCXzIEDnVzZXJVU0RCYWxhbmNlCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFBnNlbmRlcgQRdXNlclNoYXJlc1JlZmVyYWwJARZfbG9hZFVzZXJTaGFyZXNSZWZlcmFsAQUGc2VuZGVyBA0kdDAyNjgzMDI2OTU2CQEPX3VzZXJDaGVja3BvaW50AwUGc2VuZGVyBQ51c2VyVVNEQmFsYW5jZQURdXNlclNoYXJlc1JlZmVyYWwEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwMjY4MzAyNjk1NgJfMQQQdXNlclVuaXRzQmFsYW5jZQgFDSR0MDI2ODMwMjY5NTYCXzIEFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAyNjgzMDI2OTU2Al8zBBNuZXdVc2VyVG9rZW5CYWxhbmNlCQC3AgIFEHVzZXJUb2tlbkJhbGFuY2UJALYCAQUGYW1vdW50BBhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QJAL0CBAUTbmV3VXNlclRva2VuQmFsYW5jZQUEcmF0ZQUOUEVSQ0VOVF9GQUNUT1IFBERPV04EEW5ld1VzZXJVU0RCYWxhbmNlCQC3AgIJALgCAgUOdXNlclVTREJhbGFuY2UFFXVzZXJUb2tlbkJhbGFuY2VJblVTRAUYbmV3VXNlclRva2VuQmFsYW5jZUluVVNEBBN0b3RhbEJhbGFuY2VVcGRhdGVkCQC3AgIJALgCAgkBFF9sb2FkVG90YWxVU0RCYWxhbmNlAAUVdXNlclRva2VuQmFsYW5jZUluVVNEBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QECnVzZXJzQ291bnQDCQAAAgUOdXNlclVTREJhbGFuY2UFC1pFUk9fQklHSU5UCQC3AgIJAQ9fbG9hZFVzZXJzQ291bnQABQpPTkVfQklHSU5UCQEPX2xvYWRVc2Vyc0NvdW50AAQOcmVmZXJlckFjdGlvbnMDAwkAZgIJALECAQUJcmVmZXJyZXJfAAAJARZfY2hlY2tSZWZlcmVyRXhpc3RlbmNlAQUJcmVmZXJyZXJfBwQOcmVmZXJlckFkZHJlc3MJAQxfbG9hZFJlZmVyZXIBBQlyZWZlcnJlcl8EEnNoYXJlc1RvRGlzdHJpYnV0ZQkAvQIECQC2AgEFBmFtb3VudAUEcmF0ZQUOUEVSQ0VOVF9GQUNUT1IFBERPV04EDHNoYXJlc1RvVXNlcgkAvQIEBRJzaGFyZXNUb0Rpc3RyaWJ1dGUJALYCAQAUCQC2AgEAZAUERE9XTgQPc2hhcmVzVG9SZWZlcmVyCQC4AgIFEnNoYXJlc1RvRGlzdHJpYnV0ZQUMc2hhcmVzVG9Vc2VyBBRuZXdVc2VyU2hhcmVzUmVmZXJhbAkAtwICBRF1c2VyU2hhcmVzUmVmZXJhbAUMc2hhcmVzVG9Vc2VyBBRyZWZlcmVyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQ5yZWZlcmVyQWRkcmVzcwQXbmV3UmVmZXJlclNoYXJlc1JlZmVyYWwJALcCAgUUcmVmZXJlclNoYXJlc1JlZmVyYWwFD3NoYXJlc1RvUmVmZXJlcgQVbmV3VG90YWxTaGFyZXNSZWZlcmFsCQC3AgIJARdfbG9hZFRvdGFsU2hhcmVzUmVmZXJhbAAFEnNoYXJlc1RvRGlzdHJpYnV0ZQQNJHQwMjgyODkyODQ2MAkBD191c2VyQ2hlY2twb2ludAMFDnJlZmVyZXJBZGRyZXNzCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFDnJlZmVyZXJBZGRyZXNzBRRyZWZlcmVyU2hhcmVzUmVmZXJhbAQYcmVmZXJlckNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwMjgyODkyODQ2MAJfMQQTcmVmZXJlclVuaXRzQmFsYW5jZQgFDSR0MDI4Mjg5Mjg0NjACXzIEGXJlZmVyZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAyODI4OTI4NDYwAl8zCQDOCAIJAM4IAgkAzggCBRhyZWZlcmVyQ2hlY2twb2ludEFjdGlvbnMJARZfc2F2ZVVzZXJTaGFyZXNSZWZlcmFsAgUGc2VuZGVyBRRuZXdVc2VyU2hhcmVzUmVmZXJhbAkBFl9zYXZlVXNlclNoYXJlc1JlZmVyYWwCBQ5yZWZlcmVyQWRkcmVzcwUXbmV3UmVmZXJlclNoYXJlc1JlZmVyYWwJARdfc2F2ZVRvdGFsU2hhcmVzUmVmZXJhbAEFFW5ld1RvdGFsU2hhcmVzUmVmZXJhbAUDbmlsBAppbnZvY2F0aW9uCQD8BwQJARNfbG9hZFNXYXZlc0NvbnRyYWN0AAUMRlVOQ19ERVBPU0lUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNuaWwDCQAAAgUKaW52b2NhdGlvbgUKaW52b2NhdGlvbgkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCBRFjaGVja3BvaW50QWN0aW9ucwUOcmVmZXJlckFjdGlvbnMJARRfc2F2ZVRvdGFsVVNEQmFsYW5jZQEFE3RvdGFsQmFsYW5jZVVwZGF0ZWQJARFfc2F2ZVRva2VuQmFsYW5jZQIFBVdBVkVTCQC3AgIJARFfbG9hZFRva2VuQmFsYW5jZQEFBVdBVkVTCQC2AgEFBmFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQZzZW5kZXIFEW5ld1VzZXJVU0RCYWxhbmNlCQEPX3NhdmVVc2Vyc0NvdW50AQUKdXNlcnNDb3VudAkBEV9zYXZlVXNlclBvc2l0aW9uAwUFdG9rZW4FBnNlbmRlcgkAlAoCBRNuZXdVc2VyVG9rZW5CYWxhbmNlBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QFEHVzZXJVbml0c0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENd2l0aGRyYXdXYXZlcwEHYW1vdW50XwQDZXJyAwMDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHCQEMX3ZhbGlkYXRlSW50BAkAaQIFB2Ftb3VudF8AZAAABQdNQVhfSU5UAh13aXRoZHJhd1dhdmVzOiBpbnZhbGlkIGFtb3VudAcDCQDAAgIJARBfbG9hZEZpbmlzaEJsb2NrAAkAtgIBBQZoZWlnaHQJAAIBAhp3aXRoZHJhd1dhdmVzOiBub3QgYWxsb3dlZAYHAwkAAAIFA2VycgUDZXJyBA5pbnRlcm5hbEFtb3VudAkAaQIFB2Ftb3VudF8AZAQGc2VuZGVyCQClCAEIBQFpBmNhbGxlcgQFdG9rZW4FBVdBVkVTBARyYXRlCQENX2dldFRva2VuUmF0ZQEFBXRva2VuBA0kdDAyOTcyODI5ODA4CQERX2xvYWRVc2VyUG9zaXRpb24CBQV0b2tlbgUGc2VuZGVyBBB1c2VyVG9rZW5CYWxhbmNlCAUNJHQwMjk3MjgyOTgwOAJfMQQVdXNlclRva2VuQmFsYW5jZUluVVNECAUNJHQwMjk3MjgyOTgwOAJfMgQOdXNlclVTREJhbGFuY2UJARNfbG9hZFVzZXJVU0RCYWxhbmNlAQUGc2VuZGVyBBF1c2VyU2hhcmVzUmVmZXJhbAkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQZzZW5kZXIEDSR0MDI5OTI1MzAwNTEJAQ9fdXNlckNoZWNrcG9pbnQDBQZzZW5kZXIFDnVzZXJVU0RCYWxhbmNlBRF1c2VyU2hhcmVzUmVmZXJhbAQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDAyOTkyNTMwMDUxAl8xBBB1c2VyVW5pdHNCYWxhbmNlCAUNJHQwMjk5MjUzMDA1MQJfMgQWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAgFDSR0MDI5OTI1MzAwNTECXzMEE25ld1VzZXJUb2tlbkJhbGFuY2UJALgCAgUQdXNlclRva2VuQmFsYW5jZQkAtgIBBQ5pbnRlcm5hbEFtb3VudAQEZXJyMQkBDF92YWxpZGF0ZUludAQJAKADAQUTbmV3VXNlclRva2VuQmFsYW5jZQAABQdNQVhfSU5UAih3aXRoZHJhd1dhdmVzOiBpbnN1ZmZpY2llbnQgdG9rZW4gYW1vdW50AwkAAAIFBGVycjEFBGVycjEEGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAkAvQIEBRNuZXdVc2VyVG9rZW5CYWxhbmNlBQRyYXRlBQ5QRVJDRU5UX0ZBQ1RPUgUERE9XTgQRbmV3VXNlclVTREJhbGFuY2UJALcCAgkAuAICBQ51c2VyVVNEQmFsYW5jZQUVdXNlclRva2VuQmFsYW5jZUluVVNEBRhuZXdVc2VyVG9rZW5CYWxhbmNlSW5VU0QEE3RvdGFsQmFsYW5jZVVwZGF0ZWQJALcCAgkAuAICCQEUX2xvYWRUb3RhbFVTREJhbGFuY2UABRV1c2VyVG9rZW5CYWxhbmNlSW5VU0QFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAQOc1dhdmVzQ29udHJhY3QJARNfbG9hZFNXYXZlc0NvbnRyYWN0AAQLc1dhdmVzQXNzZXQJARBfbG9hZFNXYXZlc0Fzc2V0AQUOc1dhdmVzQ29udHJhY3QECmludm9jYXRpb24JAPwHBAUOc1dhdmVzQ29udHJhY3QFDUZVTkNfR0VUX1JBVEUFA25pbAUDbmlsBApzd2F2ZXNSYXRlBAckbWF0Y2gwBQppbnZvY2F0aW9uAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkApwMBBQFhCQACAQImd2l0aGRyYXdXYXZlczogc1dhdmVzIGdldFJhdGUoKSByZXZlcnQEEHNXYXZlc1RvV2l0aGRyYXcJAKADAQkAvQIECQC2AgEFB2Ftb3VudF8FElNXQVZFU19SQVRFX0ZBQ1RPUgUKc3dhdmVzUmF0ZQUHQ0VJTElORwQLaW52b2NhdGlvbjEJAPwHBAUOc1dhdmVzQ29udHJhY3QFDUZVTkNfV0lUSERSQVcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgULc1dhdmVzQXNzZXQFEHNXYXZlc1RvV2l0aGRyYXcFA25pbAMJAAACBQtpbnZvY2F0aW9uMQULaW52b2NhdGlvbjEJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQdhbW91bnRfBQR1bml0BQNuaWwFEWNoZWNrcG9pbnRBY3Rpb25zCQEUX3NhdmVUb3RhbFVTREJhbGFuY2UBBRN0b3RhbEJhbGFuY2VVcGRhdGVkCQERX3NhdmVUb2tlbkJhbGFuY2UCBQVXQVZFUwkAuAICCQERX2xvYWRUb2tlbkJhbGFuY2UBBQVXQVZFUwkAtgIBBQ5pbnRlcm5hbEFtb3VudAkBE19zYXZlVXNlclVTREJhbGFuY2UCBQZzZW5kZXIFEW5ld1VzZXJVU0RCYWxhbmNlCQERX3NhdmVVc2VyUG9zaXRpb24DBQV0b2tlbgUGc2VuZGVyCQCUCgIFE25ld1VzZXJUb2tlbkJhbGFuY2UFGG5ld1VzZXJUb2tlbkJhbGFuY2VJblVTRAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zdGFydFJldHJvZHJvcAQLdW5pdHNBc3NldF8MYW1vdW50Rm9yTFBfEWFtb3VudEZvclJlZmVyYWxfCWJsb2Nrc0F0XwQDZXJyAwMDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEOX3doZW5Ob3RQYXVzZWQABwkBDl92YWxpZGF0ZUFzc2V0AgULdW5pdHNBc3NldF8CI3N0YXJ0UmV0cm9kcm9wOiBpbnZhbGlkIHVuaXRzIGFzc2V0BwkBDF92YWxpZGF0ZUludAQFDGFtb3VudEZvckxQXwAABQdNQVhfSU5UAiNzdGFydFJldHJvZHJvcDogaW52YWxpZCBhbW91bnRGb3JMUAcJAQxfdmFsaWRhdGVJbnQEBRFhbW91bnRGb3JSZWZlcmFsXwAABQdNQVhfSU5UAihzdGFydFJldHJvZHJvcDogaW52YWxpZCBhbW91bnRGb3JSZWZlcmFsBwkBDF92YWxpZGF0ZUludAQFCWJsb2Nrc0F0XwABBQdNQVhfSU5UAiBzdGFydFJldHJvZHJvcDogaW52YWxpZCBibG9ja3NBdAcJARFfdmFsaWRhdGVFcUJpZ0ludAMJAQ9fbG9hZFN0YXJ0QmxvY2sABQtaRVJPX0JJR0lOVAIfc3RhcnRSZXRyb2Ryb3A6IGFscmVhZHkgc3RhcnRlZAcDCQAAAgUDZXJyBQNlcnIEC3N0YXJ0SGVpZ2h0CQC2AgEFBmhlaWdodAQMZmluaXNoSGVpZ2h0CQC3AgIFC3N0YXJ0SGVpZ2h0CQC2AgEFCWJsb2Nrc0F0XwQEZXJyMQMJAGYCCQBkAgUMYW1vdW50Rm9yTFBfBRFhbW91bnRGb3JSZWZlcmFsXwkA8AcCBQR0aGlzCQDZBAEFC3VuaXRzQXNzZXRfCQACAQIic3RhcnRSZXRyb2Ryb3A6IGluc3VmZmljaWVudCBmdW5kcwYDCQAAAgUEZXJyMQUEZXJyMQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAQ9fc2F2ZVVuaXRzQXNzZXQBCQDZBAEFC3VuaXRzQXNzZXRfCQEPX3NhdmVTdGFydEJsb2NrAQULc3RhcnRIZWlnaHQJARBfc2F2ZUZpbmlzaEJsb2NrAQUMZmluaXNoSGVpZ2h0CQEUX3NhdmVUb3RhbFVuaXRzRm9yTFABCQC2AgEFDGFtb3VudEZvckxQXwkBGV9zYXZlVG90YWxVbml0c0ZvclJlZmVyYWwBCQC2AgEFEWFtb3VudEZvclJlZmVyYWxfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2luY3JlYXNlVW5pdHNTdXBwbHkCDGFtb3VudEZvckxQXxFhbW91bnRGb3JSZWZlcmFsXwQDZXJyAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDF92YWxpZGF0ZUludAQFDGFtb3VudEZvckxQXwAABQdNQVhfSU5UAihpbmNyZWFzZVVuaXRzU3VwcGx5OiBpbnZhbGlkIGFtb3VudEZvckxQBwkBDF92YWxpZGF0ZUludAQFEWFtb3VudEZvclJlZmVyYWxfAAAFB01BWF9JTlQCLWluY3JlYXNlVW5pdHNTdXBwbHk6IGludmFsaWQgYW1vdW50Rm9yUmVmZXJhbAcJAQ9fdmFsaWRhdGVCaWdJbnQECQC2AgEFBmhlaWdodAkAtwICCQEPX2xvYWRTdGFydEJsb2NrAAUKT05FX0JJR0lOVAkAuAICCQEQX2xvYWRGaW5pc2hCbG9jawAFCk9ORV9CSUdJTlQCJGluY3JlYXNlVW5pdHNTdXBwbHk6IGRyb3Agbm90IGFjdGl2ZQcDCQAAAgUDZXJyBQNlcnIEDm5ld0Ftb3VudEZvckxQCQC3AgIJARRfbG9hZFRvdGFsVW5pdHNGb3JMUAAJALYCAQUMYW1vdW50Rm9yTFBfBBNuZXdBbW91bnRGb3JSZWZlcmFsCQC3AgIJARlfbG9hZFRvdGFsVW5pdHNGb3JSZWZlcmFsAAkAtgIBBRFhbW91bnRGb3JSZWZlcmFsXwQEZXJyMQMJAL8CAgkAtwICBQ5uZXdBbW91bnRGb3JMUAUTbmV3QW1vdW50Rm9yUmVmZXJhbAkAtgIBCQDwBwIFBHRoaXMJAQ9fbG9hZFVuaXRzQXNzZXQACQACAQInaW5jcmVhc2VVbml0c1N1cHBseTogaW5zdWZmaWNpZW50IGZ1bmRzBgMJAAACBQRlcnIxBQRlcnIxCQCUCgIJAM4IAgkBFF9zYXZlVG90YWxVbml0c0ZvckxQAQUObmV3QW1vdW50Rm9yTFAJARlfc2F2ZVRvdGFsVW5pdHNGb3JSZWZlcmFsAQUTbmV3QW1vdW50Rm9yUmVmZXJhbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjaGVja3BvaW50AQV1c2VyXwQNJHQwMzM4MjAzMzk1OQkBD191c2VyQ2hlY2twb2ludAMFBXVzZXJfCQETX2xvYWRVc2VyVVNEQmFsYW5jZQEFBXVzZXJfCQEWX2xvYWRVc2VyU2hhcmVzUmVmZXJhbAEFBXVzZXJfBAdhY3Rpb25zCAUNJHQwMzM4MjAzMzk1OQJfMQQQdXNlclVuaXRzQmFsYW5jZQgFDSR0MDMzODIwMzM5NTkCXzIEFnVzZXJVbml0c1NoYXJlc1JlZmVyYWwIBQ0kdDAzMzgyMDMzOTU5Al8zCQCUCgIFB2FjdGlvbnMJAJQKAgUQdXNlclVuaXRzQmFsYW5jZQUWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAFpAQhnZXRVbml0cwEFdXNlcl8EDSR0MDM0MDcyMzQyMTEJAQ9fdXNlckNoZWNrcG9pbnQDBQV1c2VyXwkBE19sb2FkVXNlclVTREJhbGFuY2UBBQV1c2VyXwkBFl9sb2FkVXNlclNoYXJlc1JlZmVyYWwBBQV1c2VyXwQHYWN0aW9ucwgFDSR0MDM0MDcyMzQyMTECXzEEEHVzZXJVbml0c0JhbGFuY2UIBQ0kdDAzNDA3MjM0MjExAl8yBBZ1c2VyVW5pdHNTaGFyZXNSZWZlcmFsCAUNJHQwMzQwNzIzNDIxMQJfMwkAlAoCBQNuaWwJAJQKAgUQdXNlclVuaXRzQmFsYW5jZQUWdXNlclVuaXRzU2hhcmVzUmVmZXJhbAFpAQpzZXRSZWZlcmVyAgljb2RlaGFzaF8IYWRkcmVzc18EA2VycgMJAQxfb25seU1hbmFnZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDF9zYXZlUmVmZXJlcgIFCWNvZGVoYXNoXwUIYWRkcmVzc18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEIbWFuYWdlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUIbWFuYWdlcl8CG3NldE1hbmFnZXI6IGludmFsaWQgbWFuYWdlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDF9zYXZlTWFuYWdlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG1hbmFnZXJfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFHVwZGF0ZUNhbGxlckNvbnRyYWN0AQ9jYWxsZXJDb250cmFjdF8EA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwMJAAACBQNlcnIFA2VycgkAlAoCCQETX3NhdmVDYWxsZXJDb250cmFjdAEFD2NhbGxlckNvbnRyYWN0XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQYFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5wYXVzZQAEA2VycgMDCQELX29ubHlQYXVzZXIBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJAQtfd2hlblBhdXNlZAAHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQpfc2F2ZVBhdXNlAQcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMdXBkYXRlUGF1c2VyAQdwYXVzZXJfBANlcnIDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFB3BhdXNlcl8CHHVwZGF0ZVBhdXNlcjogaW52YWxpZCBwYXVzZXIHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQtfc2F2ZVBhdXNlcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB3BhdXNlcl8FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2V0TXVsdGlzaWcBCW11bHRpc2lnXwQDZXJyAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCW11bHRpc2lnXwIdc2V0TXVsdGlzaWc6IGludmFsaWQgbXVsdGlzaWcHAwkAAAIFA2VycgUDZXJyCQCUCgIJAQ1fc2F2ZU11bHRpc2lnAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUJbXVsdGlzaWdfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAhtdWx0aXNpZwUHJG1hdGNoMAkBC3ZhbHVlT3JFbHNlAgkAmwgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQhtdWx0aXNpZwkAuQkCCQDMCAIFCktFWV9TVEFUVVMJAMwIAgkApQgBBQR0aGlzCQDMCAIJANgEAQgFAnR4AmlkBQNuaWwFCVNFUEFSQVRPUgcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlgIwbR", "height": 2967446, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8kcReFwfsRJrzi6D6hVpGw48Q1gUeegTiGRjbGPWEZTs Next: GJKZ9F3aAnjj3dzt71c98cwobkn3otifNnvpgci5NaKY Diff:
Old | New | Differences | |
---|---|---|---|
15 | 15 | ||
16 | 16 | let g = "PAUSER" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "MANAGER" | |
19 | 19 | ||
20 | - | let i = " | |
20 | + | let i = "REFERER" | |
21 | 21 | ||
22 | - | let j = " | |
22 | + | let j = "EXECUTOR" | |
23 | 23 | ||
24 | - | let k = " | |
24 | + | let k = "ORACLE" | |
25 | 25 | ||
26 | - | let l = " | |
26 | + | let l = "CALLER_CONTRACT" | |
27 | 27 | ||
28 | - | let m = " | |
28 | + | let m = "PRICE" | |
29 | 29 | ||
30 | - | let n = " | |
30 | + | let n = "UNITS_ASSET" | |
31 | 31 | ||
32 | - | let o = "USER_ | |
32 | + | let o = "USER_POSITION" | |
33 | 33 | ||
34 | - | let p = "USER_ | |
34 | + | let p = "USER_USD_BALANCE" | |
35 | 35 | ||
36 | - | let q = " | |
36 | + | let q = "USER_UNITS_PER_USD_BALANCE_INTEGRAL" | |
37 | 37 | ||
38 | - | let r = " | |
38 | + | let r = "USER_UNITS_PER_REFERAL_SHARE_INTEGRAL" | |
39 | 39 | ||
40 | - | let s = " | |
40 | + | let s = "USER_CHECKPOINT_AT" | |
41 | 41 | ||
42 | - | let t = " | |
42 | + | let t = "USER_UNITS_BALANCE_DISTRIBUTED" | |
43 | 43 | ||
44 | - | let u = "UNITS_ | |
44 | + | let u = "USER_UNITS_SHARES_REFERAL" | |
45 | 45 | ||
46 | - | let v = " | |
46 | + | let v = "USER_SHARES_REFERAL" | |
47 | 47 | ||
48 | - | let w = " | |
48 | + | let w = "START_BLOCK" | |
49 | 49 | ||
50 | - | let x = " | |
50 | + | let x = "FINISH_BLOCK" | |
51 | 51 | ||
52 | - | let y = " | |
52 | + | let y = "TOTAL_UNITS_FOR_LP" | |
53 | 53 | ||
54 | - | let z = " | |
54 | + | let z = "TOTAL_UNITS_FOR_REFERAL" | |
55 | 55 | ||
56 | - | let A = " | |
56 | + | let A = "TOTAL_USD_BALANCE" | |
57 | 57 | ||
58 | - | let B = " | |
58 | + | let B = "UNITS_PER_USD_BALANCE_INTEGRAL" | |
59 | 59 | ||
60 | - | let C = " | |
60 | + | let C = "CHECKPOINT_AT" | |
61 | 61 | ||
62 | - | let D = | |
62 | + | let D = "UNITS_BALANCE_DISTRIBUTED" | |
63 | 63 | ||
64 | - | let E = | |
64 | + | let E = "TOKEN_BALANCE" | |
65 | 65 | ||
66 | - | let F = | |
66 | + | let F = "USERS_COUNT" | |
67 | 67 | ||
68 | - | let G = | |
68 | + | let G = "UNITS_PER_REFERAL_SHARE_INTEGRAL" | |
69 | 69 | ||
70 | - | func H (I,J) = { | |
71 | - | let K = addressFromString(I) | |
72 | - | if ($isInstanceOf(K, "Address")) | |
70 | + | let H = "UNITS_SHARES_REFERAL" | |
71 | + | ||
72 | + | let I = "TOTAL_SHARES_REFERAL" | |
73 | + | ||
74 | + | let J = "SWAVES_CONTRACT" | |
75 | + | ||
76 | + | let K = "ASSET" | |
77 | + | ||
78 | + | let L = "deposit" | |
79 | + | ||
80 | + | let M = "getRate" | |
81 | + | ||
82 | + | let N = "withdraw" | |
83 | + | ||
84 | + | let O = 9223372036854775807 | |
85 | + | ||
86 | + | let P = toBigInt(1000000000000) | |
87 | + | ||
88 | + | let Q = toBigInt(0) | |
89 | + | ||
90 | + | let R = toBigInt(1) | |
91 | + | ||
92 | + | let S = toBigInt(1000000000000) | |
93 | + | ||
94 | + | func T (U,V) = { | |
95 | + | let W = addressFromString(U) | |
96 | + | if ($isInstanceOf(W, "Address")) | |
73 | 97 | then { | |
74 | - | let | |
98 | + | let X = W | |
75 | 99 | true | |
76 | 100 | } | |
77 | - | else throw( | |
101 | + | else throw(V) | |
78 | 102 | } | |
79 | 103 | ||
80 | 104 | ||
81 | - | func | |
105 | + | func Y (Z,aa,ab,V) = if (if ((aa > Z)) | |
82 | 106 | then true | |
83 | - | else ( | |
84 | - | then throw( | |
107 | + | else (Z > ab)) | |
108 | + | then throw(V) | |
85 | 109 | else true | |
86 | 110 | ||
87 | 111 | ||
88 | - | func Q (R,S,J) = if ((size(R) != S)) | |
89 | - | then throw(J) | |
112 | + | func ac (Z,aa,ab,V) = if (if ((aa > Z)) | |
113 | + | then true | |
114 | + | else (Z > ab)) | |
115 | + | then throw(V) | |
90 | 116 | else true | |
91 | 117 | ||
92 | 118 | ||
93 | - | func T (U,J) = { | |
94 | - | let K = U.assetId | |
95 | - | if ($isInstanceOf(K, "ByteVector")) | |
119 | + | func ad (ae,af,V) = if ((size(ae) != af)) | |
120 | + | then throw(V) | |
121 | + | else true | |
122 | + | ||
123 | + | ||
124 | + | func ag (ah,V) = { | |
125 | + | let W = ah.assetId | |
126 | + | if ($isInstanceOf(W, "ByteVector")) | |
96 | 127 | then { | |
97 | - | let | |
98 | - | throw( | |
128 | + | let X = W | |
129 | + | throw(V) | |
99 | 130 | } | |
100 | - | else if ($isInstanceOf( | |
131 | + | else if ($isInstanceOf(W, "Unit")) | |
101 | 132 | then true | |
102 | 133 | else throw("Match error") | |
103 | 134 | } | |
104 | 135 | ||
105 | 136 | ||
106 | - | func | |
107 | - | then throw( | |
137 | + | func ai (aj,ak,V) = if ((aj != ak)) | |
138 | + | then throw(V) | |
108 | 139 | else true | |
109 | 140 | ||
110 | 141 | ||
111 | - | func | |
112 | - | let | |
113 | - | if ($isInstanceOf( | |
142 | + | func al (am,V) = { | |
143 | + | let W = assetInfo(fromBase58String(am)) | |
144 | + | if ($isInstanceOf(W, "Asset")) | |
114 | 145 | then { | |
115 | - | let L = K | |
116 | - | L | |
146 | + | let X = W | |
147 | + | true | |
148 | + | } | |
149 | + | else throw(V) | |
150 | + | } | |
151 | + | ||
152 | + | ||
153 | + | func an () = { | |
154 | + | let W = getBoolean(e) | |
155 | + | if ($isInstanceOf(W, "Boolean")) | |
156 | + | then { | |
157 | + | let X = W | |
158 | + | X | |
117 | 159 | } | |
118 | 160 | else false | |
119 | 161 | } | |
120 | 162 | ||
121 | 163 | ||
122 | - | func | |
164 | + | func ao (ap) = [BooleanEntry(e, ap)] | |
123 | 165 | ||
124 | 166 | ||
125 | - | func | |
126 | - | let | |
127 | - | if ($isInstanceOf( | |
167 | + | func aq () = { | |
168 | + | let W = getBoolean(f) | |
169 | + | if ($isInstanceOf(W, "Boolean")) | |
128 | 170 | then { | |
129 | - | let | |
130 | - | | |
171 | + | let X = W | |
172 | + | X | |
131 | 173 | } | |
132 | 174 | else false | |
133 | 175 | } | |
134 | 176 | ||
135 | 177 | ||
136 | - | func | |
178 | + | func ar (as) = [BooleanEntry(f, as)] | |
137 | 179 | ||
138 | 180 | ||
139 | - | func | |
140 | - | let | |
141 | - | if ($isInstanceOf( | |
181 | + | func at () = { | |
182 | + | let W = getString(g) | |
183 | + | if ($isInstanceOf(W, "String")) | |
142 | 184 | then { | |
143 | - | let | |
144 | - | addressFromStringValue( | |
185 | + | let X = W | |
186 | + | addressFromStringValue(X) | |
145 | 187 | } | |
146 | 188 | else Address(base58'') | |
147 | 189 | } | |
148 | 190 | ||
149 | 191 | ||
150 | - | func | |
192 | + | func au (av) = [StringEntry(g, toString(av))] | |
151 | 193 | ||
152 | 194 | ||
153 | - | func | |
154 | - | let | |
155 | - | if ($isInstanceOf( | |
195 | + | func aw () = { | |
196 | + | let W = getString(c) | |
197 | + | if ($isInstanceOf(W, "String")) | |
156 | 198 | then { | |
157 | - | let | |
158 | - | addressFromStringValue( | |
199 | + | let X = W | |
200 | + | addressFromStringValue(X) | |
159 | 201 | } | |
160 | 202 | else Address(base58'') | |
161 | 203 | } | |
162 | 204 | ||
163 | 205 | ||
164 | - | func | |
206 | + | func ax (ay) = [StringEntry(c, toString(ay))] | |
165 | 207 | ||
166 | 208 | ||
167 | - | func | |
168 | - | let | |
169 | - | if ($isInstanceOf( | |
209 | + | func az () = { | |
210 | + | let W = getString(j) | |
211 | + | if ($isInstanceOf(W, "String")) | |
170 | 212 | then { | |
171 | - | let | |
172 | - | addressFromStringValue( | |
213 | + | let X = W | |
214 | + | addressFromStringValue(X) | |
173 | 215 | } | |
174 | 216 | else Address(base58'') | |
175 | 217 | } | |
176 | 218 | ||
177 | 219 | ||
178 | - | func | |
220 | + | func aA (aB) = [StringEntry(j, toString(aB))] | |
179 | 221 | ||
180 | 222 | ||
181 | - | func | |
182 | - | let | |
183 | - | if ($isInstanceOf( | |
223 | + | func aC () = { | |
224 | + | let W = getString(k) | |
225 | + | if ($isInstanceOf(W, "String")) | |
184 | 226 | then { | |
185 | - | let | |
186 | - | addressFromStringValue( | |
227 | + | let X = W | |
228 | + | addressFromStringValue(X) | |
187 | 229 | } | |
188 | 230 | else Address(base58'') | |
189 | 231 | } | |
190 | 232 | ||
191 | 233 | ||
192 | - | func | |
234 | + | func aD (aE) = [StringEntry(k, toString(aE))] | |
193 | 235 | ||
194 | 236 | ||
195 | - | func | |
196 | - | let | |
197 | - | if ($isInstanceOf( | |
237 | + | func aF () = { | |
238 | + | let W = getString(l) | |
239 | + | if ($isInstanceOf(W, "String")) | |
198 | 240 | then { | |
199 | - | let | |
200 | - | | |
241 | + | let X = W | |
242 | + | X | |
201 | 243 | } | |
202 | 244 | else "" | |
203 | 245 | } | |
204 | 246 | ||
205 | 247 | ||
206 | - | func | |
248 | + | func aG (aH) = [StringEntry(l, aH)] | |
207 | 249 | ||
208 | 250 | ||
209 | - | func | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
251 | + | func aI (aJ,aK) = { | |
252 | + | let W = getString(makeString([o, aJ, aK], a)) | |
253 | + | if ($isInstanceOf(W, "String")) | |
212 | 254 | then { | |
213 | - | let | |
214 | - | let | |
215 | - | $Tuple2(parseBigIntValue( | |
255 | + | let X = W | |
256 | + | let aL = split_51C(X, a) | |
257 | + | $Tuple2(parseBigIntValue(aL[0]), parseBigIntValue(aL[1])) | |
216 | 258 | } | |
217 | - | else $Tuple2( | |
259 | + | else $Tuple2(Q, Q) | |
218 | 260 | } | |
219 | 261 | ||
220 | 262 | ||
221 | - | func | |
263 | + | func aM (aJ,aK,aN) = [StringEntry(makeString([o, aJ, aK], a), makeString_11C([toString(aN._1), toString(aN._2)], a))] | |
222 | 264 | ||
223 | 265 | ||
224 | - | func | |
225 | - | let | |
226 | - | if ($isInstanceOf( | |
266 | + | func aO (aK) = { | |
267 | + | let W = getString(makeString([p, aK], a)) | |
268 | + | if ($isInstanceOf(W, "String")) | |
227 | 269 | then { | |
228 | - | let | |
229 | - | parseBigIntValue( | |
270 | + | let X = W | |
271 | + | parseBigIntValue(X) | |
230 | 272 | } | |
231 | - | else | |
273 | + | else Q | |
232 | 274 | } | |
233 | 275 | ||
234 | 276 | ||
235 | - | func | |
277 | + | func aP (aK,aQ) = [StringEntry(makeString([p, aK], a), toString(aQ))] | |
236 | 278 | ||
237 | 279 | ||
238 | - | func | |
239 | - | let | |
240 | - | if ($isInstanceOf( | |
280 | + | func aR (aK) = { | |
281 | + | let W = getString(makeString([v, aK], a)) | |
282 | + | if ($isInstanceOf(W, "String")) | |
241 | 283 | then { | |
242 | - | let | |
243 | - | parseBigIntValue( | |
284 | + | let X = W | |
285 | + | parseBigIntValue(X) | |
244 | 286 | } | |
245 | - | else | |
287 | + | else Q | |
246 | 288 | } | |
247 | 289 | ||
248 | 290 | ||
249 | - | func | |
291 | + | func aS (aK,aQ) = [StringEntry(makeString([v, aK], a), toString(aQ))] | |
250 | 292 | ||
251 | 293 | ||
252 | - | func | |
253 | - | let | |
254 | - | if ($isInstanceOf( | |
294 | + | func aT () = { | |
295 | + | let W = getString(B) | |
296 | + | if ($isInstanceOf(W, "String")) | |
255 | 297 | then { | |
256 | - | let | |
257 | - | parseBigIntValue( | |
298 | + | let X = W | |
299 | + | parseBigIntValue(X) | |
258 | 300 | } | |
259 | - | else | |
301 | + | else Q | |
260 | 302 | } | |
261 | 303 | ||
262 | 304 | ||
263 | - | func | |
305 | + | func aU (aQ) = [StringEntry(B, toString(aQ))] | |
264 | 306 | ||
265 | 307 | ||
266 | - | func | |
267 | - | let | |
268 | - | if ($isInstanceOf( | |
308 | + | func aV (aK) = { | |
309 | + | let W = getString(makeString([q, aK], a)) | |
310 | + | if ($isInstanceOf(W, "String")) | |
269 | 311 | then { | |
270 | - | let | |
271 | - | parseBigIntValue( | |
312 | + | let X = W | |
313 | + | parseBigIntValue(X) | |
272 | 314 | } | |
273 | - | else | |
315 | + | else Q | |
274 | 316 | } | |
275 | 317 | ||
276 | 318 | ||
277 | - | func | |
319 | + | func aW (aK,aQ) = [StringEntry(makeString([q, aK], a), toString(aQ))] | |
278 | 320 | ||
279 | 321 | ||
280 | - | func | |
281 | - | let | |
282 | - | if ($isInstanceOf( | |
322 | + | func aX () = { | |
323 | + | let W = getString(C) | |
324 | + | if ($isInstanceOf(W, "String")) | |
283 | 325 | then { | |
284 | - | let | |
285 | - | parseBigIntValue( | |
326 | + | let X = W | |
327 | + | parseBigIntValue(X) | |
286 | 328 | } | |
287 | - | else | |
329 | + | else Q | |
288 | 330 | } | |
289 | 331 | ||
290 | 332 | ||
291 | - | func | |
333 | + | func aY (aQ) = [StringEntry(C, toString(aQ))] | |
292 | 334 | ||
293 | 335 | ||
294 | - | func | |
295 | - | let | |
296 | - | if ($isInstanceOf( | |
336 | + | func aZ (aK) = { | |
337 | + | let W = getString(makeString([s, aK], a)) | |
338 | + | if ($isInstanceOf(W, "String")) | |
297 | 339 | then { | |
298 | - | let | |
299 | - | parseBigIntValue( | |
340 | + | let X = W | |
341 | + | parseBigIntValue(X) | |
300 | 342 | } | |
301 | - | else | |
343 | + | else Q | |
302 | 344 | } | |
303 | 345 | ||
304 | 346 | ||
305 | - | func | |
347 | + | func ba (aK,aQ) = [StringEntry(makeString([s, aK], a), toString(aQ))] | |
306 | 348 | ||
307 | 349 | ||
308 | - | func | |
309 | - | let | |
310 | - | if ($isInstanceOf( | |
350 | + | func bb () = { | |
351 | + | let W = getString(n) | |
352 | + | if ($isInstanceOf(W, "String")) | |
311 | 353 | then { | |
312 | - | let | |
313 | - | | |
354 | + | let X = W | |
355 | + | fromBase58String(X) | |
314 | 356 | } | |
315 | - | else | |
357 | + | else base58'' | |
316 | 358 | } | |
317 | 359 | ||
318 | 360 | ||
319 | - | func | |
361 | + | func bc (am) = [StringEntry(n, toBase58String(am))] | |
320 | 362 | ||
321 | 363 | ||
322 | - | func | |
323 | - | let | |
324 | - | if ($isInstanceOf( | |
364 | + | func bd () = { | |
365 | + | let W = getString(w) | |
366 | + | if ($isInstanceOf(W, "String")) | |
325 | 367 | then { | |
326 | - | let | |
327 | - | parseBigIntValue( | |
368 | + | let X = W | |
369 | + | parseBigIntValue(X) | |
328 | 370 | } | |
329 | - | else | |
371 | + | else Q | |
330 | 372 | } | |
331 | 373 | ||
332 | 374 | ||
333 | - | func | |
375 | + | func be (aQ) = [StringEntry(w, toString(aQ))] | |
334 | 376 | ||
335 | 377 | ||
336 | - | func | |
337 | - | let | |
338 | - | if ($isInstanceOf( | |
378 | + | func bf () = { | |
379 | + | let W = getString(x) | |
380 | + | if ($isInstanceOf(W, "String")) | |
339 | 381 | then { | |
340 | - | let | |
341 | - | parseBigIntValue( | |
382 | + | let X = W | |
383 | + | parseBigIntValue(X) | |
342 | 384 | } | |
343 | - | else | |
385 | + | else Q | |
344 | 386 | } | |
345 | 387 | ||
346 | 388 | ||
347 | - | func | |
389 | + | func bg (aQ) = [StringEntry(x, toString(aQ))] | |
348 | 390 | ||
349 | 391 | ||
350 | - | func | |
351 | - | let | |
352 | - | if ($isInstanceOf( | |
392 | + | func bh () = { | |
393 | + | let W = getString(D) | |
394 | + | if ($isInstanceOf(W, "String")) | |
353 | 395 | then { | |
354 | - | let | |
355 | - | parseBigIntValue( | |
396 | + | let X = W | |
397 | + | parseBigIntValue(X) | |
356 | 398 | } | |
357 | - | else | |
399 | + | else Q | |
358 | 400 | } | |
359 | 401 | ||
360 | 402 | ||
361 | - | func | |
403 | + | func bi (aQ) = [StringEntry(D, toString(aQ))] | |
362 | 404 | ||
363 | 405 | ||
364 | - | func | |
365 | - | let | |
366 | - | if ($isInstanceOf( | |
406 | + | func bj (aK) = { | |
407 | + | let W = getString(makeString([t, aK], a)) | |
408 | + | if ($isInstanceOf(W, "String")) | |
367 | 409 | then { | |
368 | - | let | |
369 | - | parseBigIntValue( | |
410 | + | let X = W | |
411 | + | parseBigIntValue(X) | |
370 | 412 | } | |
371 | - | else | |
413 | + | else Q | |
372 | 414 | } | |
373 | 415 | ||
374 | 416 | ||
375 | - | func | |
417 | + | func bk (aK,aQ) = [StringEntry(makeString([t, aK], a), toString(aQ))] | |
376 | 418 | ||
377 | 419 | ||
378 | - | func | |
379 | - | let | |
380 | - | if ($isInstanceOf( | |
420 | + | func bl () = { | |
421 | + | let W = getString(A) | |
422 | + | if ($isInstanceOf(W, "String")) | |
381 | 423 | then { | |
382 | - | let L = K | |
383 | - | addressFromStringValue(L) | |
424 | + | let X = W | |
425 | + | parseBigIntValue(X) | |
426 | + | } | |
427 | + | else Q | |
428 | + | } | |
429 | + | ||
430 | + | ||
431 | + | func bm (aQ) = [StringEntry(A, toString(aQ))] | |
432 | + | ||
433 | + | ||
434 | + | func bn () = { | |
435 | + | let W = getString(J) | |
436 | + | if ($isInstanceOf(W, "String")) | |
437 | + | then { | |
438 | + | let X = W | |
439 | + | addressFromStringValue(X) | |
384 | 440 | } | |
385 | 441 | else Address(base58'') | |
386 | 442 | } | |
387 | 443 | ||
388 | 444 | ||
389 | - | func | |
445 | + | func bo (bp) = [StringEntry(J, toString(bp))] | |
390 | 446 | ||
391 | 447 | ||
392 | - | func | |
393 | - | let | |
394 | - | if ($isInstanceOf( | |
448 | + | func bq (bp) = { | |
449 | + | let W = getString(bp, K) | |
450 | + | if ($isInstanceOf(W, "String")) | |
395 | 451 | then { | |
396 | - | let | |
397 | - | fromBase58String( | |
452 | + | let X = W | |
453 | + | fromBase58String(X) | |
398 | 454 | } | |
399 | 455 | else throw("_loadSWavesAsset: revert") | |
400 | 456 | } | |
401 | 457 | ||
402 | 458 | ||
403 | - | func | |
404 | - | let | |
405 | - | if ($isInstanceOf( | |
459 | + | func br (aJ) = { | |
460 | + | let W = getString(makeString([E, aJ], a)) | |
461 | + | if ($isInstanceOf(W, "String")) | |
406 | 462 | then { | |
407 | - | let | |
408 | - | parseBigIntValue( | |
463 | + | let X = W | |
464 | + | parseBigIntValue(X) | |
409 | 465 | } | |
410 | - | else | |
466 | + | else Q | |
411 | 467 | } | |
412 | 468 | ||
413 | 469 | ||
414 | - | func | |
470 | + | func bs (aJ,aQ) = [StringEntry(makeString([E, aJ], a), toString(aQ))] | |
415 | 471 | ||
416 | 472 | ||
417 | - | func bc (as) = if ((as != this)) | |
473 | + | func bt () = { | |
474 | + | let W = getString(F) | |
475 | + | if ($isInstanceOf(W, "String")) | |
476 | + | then { | |
477 | + | let X = W | |
478 | + | parseBigIntValue(X) | |
479 | + | } | |
480 | + | else Q | |
481 | + | } | |
482 | + | ||
483 | + | ||
484 | + | func bu (aQ) = [StringEntry(F, toString(aQ))] | |
485 | + | ||
486 | + | ||
487 | + | func bv () = { | |
488 | + | let W = getString(G) | |
489 | + | if ($isInstanceOf(W, "String")) | |
490 | + | then { | |
491 | + | let X = W | |
492 | + | parseBigIntValue(X) | |
493 | + | } | |
494 | + | else Q | |
495 | + | } | |
496 | + | ||
497 | + | ||
498 | + | func bw (aQ) = [StringEntry(G, toString(aQ))] | |
499 | + | ||
500 | + | ||
501 | + | func bx () = { | |
502 | + | let W = getString(H) | |
503 | + | if ($isInstanceOf(W, "String")) | |
504 | + | then { | |
505 | + | let X = W | |
506 | + | parseBigIntValue(X) | |
507 | + | } | |
508 | + | else Q | |
509 | + | } | |
510 | + | ||
511 | + | ||
512 | + | func by (aQ) = [StringEntry(H, toString(aQ))] | |
513 | + | ||
514 | + | ||
515 | + | func bz () = { | |
516 | + | let W = getString(y) | |
517 | + | if ($isInstanceOf(W, "String")) | |
518 | + | then { | |
519 | + | let X = W | |
520 | + | parseBigIntValue(X) | |
521 | + | } | |
522 | + | else Q | |
523 | + | } | |
524 | + | ||
525 | + | ||
526 | + | func bA (aQ) = [StringEntry(y, toString(aQ))] | |
527 | + | ||
528 | + | ||
529 | + | func bB () = { | |
530 | + | let W = getString(z) | |
531 | + | if ($isInstanceOf(W, "String")) | |
532 | + | then { | |
533 | + | let X = W | |
534 | + | parseBigIntValue(X) | |
535 | + | } | |
536 | + | else Q | |
537 | + | } | |
538 | + | ||
539 | + | ||
540 | + | func bC (aQ) = [StringEntry(z, toString(aQ))] | |
541 | + | ||
542 | + | ||
543 | + | func bD () = { | |
544 | + | let W = getString(I) | |
545 | + | if ($isInstanceOf(W, "String")) | |
546 | + | then { | |
547 | + | let X = W | |
548 | + | parseBigIntValue(X) | |
549 | + | } | |
550 | + | else Q | |
551 | + | } | |
552 | + | ||
553 | + | ||
554 | + | func bE (aQ) = [StringEntry(I, toString(aQ))] | |
555 | + | ||
556 | + | ||
557 | + | func bF (aK) = { | |
558 | + | let W = getString(makeString([r, aK], a)) | |
559 | + | if ($isInstanceOf(W, "String")) | |
560 | + | then { | |
561 | + | let X = W | |
562 | + | parseBigIntValue(X) | |
563 | + | } | |
564 | + | else Q | |
565 | + | } | |
566 | + | ||
567 | + | ||
568 | + | func bG (aK,aQ) = [StringEntry(makeString([r, aK], a), toString(aQ))] | |
569 | + | ||
570 | + | ||
571 | + | func bH (aK) = { | |
572 | + | let W = getString(makeString([u, aK], a)) | |
573 | + | if ($isInstanceOf(W, "String")) | |
574 | + | then { | |
575 | + | let X = W | |
576 | + | parseBigIntValue(X) | |
577 | + | } | |
578 | + | else Q | |
579 | + | } | |
580 | + | ||
581 | + | ||
582 | + | func bI (aK,aQ) = [StringEntry(makeString([u, aK], a), toString(aQ))] | |
583 | + | ||
584 | + | ||
585 | + | func bJ () = { | |
586 | + | let W = getString(h) | |
587 | + | if ($isInstanceOf(W, "String")) | |
588 | + | then { | |
589 | + | let X = W | |
590 | + | addressFromStringValue(X) | |
591 | + | } | |
592 | + | else Address(base58'') | |
593 | + | } | |
594 | + | ||
595 | + | ||
596 | + | func bK (bL) = [StringEntry(h, toString(bL))] | |
597 | + | ||
598 | + | ||
599 | + | func bM (bN) = { | |
600 | + | let W = getString(makeString([i, bN], a)) | |
601 | + | if ($isInstanceOf(W, "String")) | |
602 | + | then { | |
603 | + | let X = W | |
604 | + | X | |
605 | + | } | |
606 | + | else throw("_loadReferer: revert") | |
607 | + | } | |
608 | + | ||
609 | + | ||
610 | + | func bO (bN,U) = [StringEntry(makeString([i, bN], a), U)] | |
611 | + | ||
612 | + | ||
613 | + | func bP (bN) = { | |
614 | + | let W = getString(makeString([i, bN], a)) | |
615 | + | if ($isInstanceOf(W, "String")) | |
616 | + | then { | |
617 | + | let X = W | |
618 | + | true | |
619 | + | } | |
620 | + | else false | |
621 | + | } | |
622 | + | ||
623 | + | ||
624 | + | func bQ (aH) = if ((aH != this)) | |
418 | 625 | then throw("_onlyThisContract: revert") | |
419 | 626 | else true | |
420 | 627 | ||
421 | 628 | ||
422 | - | func | |
629 | + | func bR () = if ((aw() == Address(base58''))) | |
423 | 630 | then throw("_whenMultisigSet: revert") | |
424 | 631 | else true | |
425 | 632 | ||
426 | 633 | ||
427 | - | func | |
634 | + | func bS () = if (an()) | |
428 | 635 | then throw("_whenNotInitialized: revert") | |
429 | 636 | else true | |
430 | 637 | ||
431 | 638 | ||
432 | - | func | |
639 | + | func bT () = if (!(an())) | |
433 | 640 | then throw("_whenInitialized: revert") | |
434 | 641 | else true | |
435 | 642 | ||
436 | 643 | ||
437 | - | func | |
644 | + | func bU () = if (aq()) | |
438 | 645 | then throw("_whenNotPaused: revert") | |
439 | 646 | else true | |
440 | 647 | ||
441 | 648 | ||
442 | - | func | |
649 | + | func bV () = if (!(aq())) | |
443 | 650 | then throw("_whenPaused: revert") | |
444 | 651 | else true | |
445 | 652 | ||
446 | 653 | ||
447 | - | func | |
654 | + | func bW (aH) = if ((aH != at())) | |
448 | 655 | then throw("_onlyPauser: revert") | |
449 | 656 | else true | |
450 | 657 | ||
451 | 658 | ||
452 | - | func | |
453 | - | then throw( | |
659 | + | func bX (aH) = if ((aH != bJ())) | |
660 | + | then throw("_onlyManager: revert") | |
454 | 661 | else true | |
455 | 662 | ||
456 | 663 | ||
457 | - | func | |
458 | - | then throw( | |
664 | + | func bY (Z,V) = if ((Z != az())) | |
665 | + | then throw(V) | |
459 | 666 | else true | |
460 | 667 | ||
461 | 668 | ||
462 | - | func bl (au) = { | |
463 | - | let K = getString(an(), makeString([k, au], a)) | |
464 | - | if ($isInstanceOf(K, "String")) | |
669 | + | func bZ (Z,V) = if ((Z != aF())) | |
670 | + | then throw(V) | |
671 | + | else true | |
672 | + | ||
673 | + | ||
674 | + | func ca (aJ) = { | |
675 | + | let W = getString(aC(), makeString([m, aJ], a)) | |
676 | + | if ($isInstanceOf(W, "String")) | |
465 | 677 | then { | |
466 | - | let | |
467 | - | parseBigIntValue( | |
678 | + | let X = W | |
679 | + | parseBigIntValue(X) | |
468 | 680 | } | |
469 | - | else throw(("_getTokenRate: no rate for token=" + | |
681 | + | else throw(("_getTokenRate: no rate for token=" + aJ)) | |
470 | 682 | } | |
471 | 683 | ||
472 | 684 | ||
473 | - | func bm () = { | |
474 | - | let bn = aC() | |
475 | - | let bo = max([aK(), aG()]) | |
476 | - | let bp = aQ() | |
477 | - | let bq = min([toBigInt(height), aM()]) | |
478 | - | if ((bo >= bq)) | |
479 | - | then $Tuple2(nil, bn) | |
685 | + | func cb () = { | |
686 | + | let cc = aT() | |
687 | + | let cd = max([bd(), aX()]) | |
688 | + | let ce = bh() | |
689 | + | let cf = bv() | |
690 | + | let cg = bx() | |
691 | + | let ch = min([toBigInt(height), bf()]) | |
692 | + | if ((cd >= ch)) | |
693 | + | then $Tuple3(nil, cc, cf) | |
480 | 694 | else { | |
481 | - | let br = (aO() * (bq - aK())) | |
482 | - | let bs = ((((E * (bq - bo)) * (br - bp)) / aU()) + bn) | |
483 | - | $Tuple2(((aD(bs) ++ aH(bq)) ++ aR(br)), bs) | |
695 | + | let ci = fraction((bz() - ce), (ch - cd), (bf() - cd)) | |
696 | + | let cj = (((P * ci) / bl()) + cc) | |
697 | + | let ck = if ((bD() > Q)) | |
698 | + | then { | |
699 | + | let cl = fraction((bB() - cg), (ch - cd), (bf() - cd)) | |
700 | + | let cm = (((P * cl) / bD()) + cf) | |
701 | + | $Tuple2(cl, cm) | |
702 | + | } | |
703 | + | else $Tuple2(Q, Q) | |
704 | + | let cl = ck._1 | |
705 | + | let cm = ck._2 | |
706 | + | $Tuple3(((((aY(ch) ++ aU(cj)) ++ bi((ci + ce))) ++ bw(cm)) ++ by((cl + cg))), cj, cm) | |
484 | 707 | } | |
485 | 708 | } | |
486 | 709 | ||
487 | 710 | ||
488 | - | func bt (av,bu) = { | |
489 | - | let bv = bm() | |
490 | - | let bw = bv._1 | |
491 | - | let bs = bv._2 | |
492 | - | let bx = aE(av) | |
493 | - | let by = max([aK(), aI(av)]) | |
494 | - | let bz = aS(av) | |
495 | - | let bq = min([toBigInt(height), aM()]) | |
496 | - | if ((by >= bq)) | |
497 | - | then $Tuple2(bw, bz) | |
711 | + | func cn (aK,co,cp) = { | |
712 | + | let cq = cb() | |
713 | + | let cr = cq._1 | |
714 | + | let cj = cq._2 | |
715 | + | let cm = cq._3 | |
716 | + | let cs = aV(aK) | |
717 | + | let ct = max([bd(), aZ(aK)]) | |
718 | + | let cu = bj(aK) | |
719 | + | let cv = bF(aK) | |
720 | + | let cw = bH(aK) | |
721 | + | let ch = min([toBigInt(height), bf()]) | |
722 | + | if ((ct >= ch)) | |
723 | + | then $Tuple3(cr, cu, cw) | |
498 | 724 | else { | |
499 | - | let bA = ((((bu * (bs - bx)) / (bq - by)) / E) + bz) | |
500 | - | $Tuple2((((bw ++ aF(av, bs)) ++ aJ(av, bq)) ++ aT(av, bA)), bA) | |
725 | + | let cx = (((co * (cj - cs)) / P) + cu) | |
726 | + | let cy = (((cp * (cm - cv)) / P) + cw) | |
727 | + | $Tuple3((((((cr ++ ba(aK, ch)) ++ aW(aK, cj)) ++ bk(aK, cx)) ++ bG(aK, cm)) ++ bI(aK, cy)), cx, cy) | |
501 | 728 | } | |
502 | 729 | } | |
503 | 730 | ||
504 | 731 | ||
505 | - | @Callable( | |
506 | - | func init ( | |
507 | - | let | |
508 | - | then | |
732 | + | @Callable(cz) | |
733 | + | func init (aB,aE,av,cA) = { | |
734 | + | let cB = if (if (if (if (if (if (bQ(cz.caller)) | |
735 | + | then bS() | |
509 | 736 | else false) | |
510 | - | then | |
737 | + | then bR() | |
511 | 738 | else false) | |
512 | - | then | |
739 | + | then T(aB, "init: invalid executor") | |
513 | 740 | else false) | |
514 | - | then | |
741 | + | then T(aE, "init: invalid oracle") | |
515 | 742 | else false) | |
516 | - | then | |
743 | + | then T(av, "init: invalid pauser") | |
517 | 744 | else false) | |
518 | - | then | |
745 | + | then T(cA, "init: invalid sWavesContract") | |
519 | 746 | else false | |
520 | - | if (( | |
521 | - | then $Tuple2((((( | |
747 | + | if ((cB == cB)) | |
748 | + | then $Tuple2(((((ao(true) ++ aA(addressFromStringValue(aB))) ++ aD(addressFromStringValue(aE))) ++ au(addressFromStringValue(av))) ++ bo(addressFromStringValue(cA))), unit) | |
522 | 749 | else throw("Strict value is not equal to itself.") | |
523 | 750 | } | |
524 | 751 | ||
525 | 752 | ||
526 | 753 | ||
527 | - | @Callable( | |
528 | - | func deposit ( | |
529 | - | let | |
530 | - | let | |
531 | - | then | |
754 | + | @Callable(cz) | |
755 | + | func deposit (cC,cD,aJ,cE,cF) = { | |
756 | + | let cG = valueOrErrorMessage(parseInt(cE), "deposit: amount is not Int") | |
757 | + | let cB = if (if (if (if (bT()) | |
758 | + | then bU() | |
532 | 759 | else false) | |
533 | - | then | |
760 | + | then bY(cz.caller, "deposit: invalid executor") | |
534 | 761 | else false) | |
535 | - | then | |
762 | + | then bZ(cC, "deposit: invalid caller") | |
536 | 763 | else false) | |
537 | - | then | |
764 | + | then Y(cG, 0, O, "deposit: invalid amount") | |
538 | 765 | else false | |
539 | - | if (( | |
766 | + | if ((cB == cB)) | |
540 | 767 | then { | |
541 | - | let bJ = bl(au) | |
542 | - | let bK = at(au, bF) | |
543 | - | let bL = bK._1 | |
544 | - | let bM = bK._2 | |
545 | - | let bN = az(bF) | |
546 | - | let bO = bt(bF, bN) | |
547 | - | let bw = bO._1 | |
548 | - | let bA = bO._2 | |
549 | - | let bP = (bL + toBigInt(bI)) | |
550 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
551 | - | let bR = ((bN - bM) + bQ) | |
552 | - | let bS = ((aU() - bM) + bQ) | |
553 | - | $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) + toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), bA) | |
768 | + | let cH = ca(aJ) | |
769 | + | let cI = aI(aJ, cD) | |
770 | + | let cJ = cI._1 | |
771 | + | let cK = cI._2 | |
772 | + | let cL = aO(cD) | |
773 | + | let cM = aR(cD) | |
774 | + | let cN = cn(cD, cL, cM) | |
775 | + | let cr = cN._1 | |
776 | + | let cO = cN._2 | |
777 | + | let cy = cN._3 | |
778 | + | let cP = (cJ + toBigInt(cG)) | |
779 | + | let cQ = fraction(cP, cH, P, DOWN) | |
780 | + | let cR = ((cL - cK) + cQ) | |
781 | + | let cS = ((bl() - cK) + cQ) | |
782 | + | let cT = if ((cL == Q)) | |
783 | + | then (bt() + R) | |
784 | + | else bt() | |
785 | + | let cU = if (if ((size(cF) > 0)) | |
786 | + | then bP(cF) | |
787 | + | else false) | |
788 | + | then { | |
789 | + | let cV = bM(cF) | |
790 | + | let cW = fraction(toBigInt(cG), cH, P, DOWN) | |
791 | + | let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN) | |
792 | + | let cY = (cW - cX) | |
793 | + | let cZ = (cM + cX) | |
794 | + | let da = aR(cV) | |
795 | + | let db = (da + cY) | |
796 | + | let dc = (bD() + cW) | |
797 | + | let dd = cn(cV, aO(cV), da) | |
798 | + | let de = dd._1 | |
799 | + | let df = dd._2 | |
800 | + | let dg = dd._3 | |
801 | + | (((de ++ aS(cD, cZ)) ++ aS(cV, db)) ++ bE(dc)) | |
802 | + | } | |
803 | + | else nil | |
804 | + | $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(aJ, (br(aJ) + toBigInt(cG)))) ++ aP(cD, cR)) ++ bu(cT)) ++ aM(aJ, cD, $Tuple2(cP, cQ))), cO) | |
554 | 805 | } | |
555 | 806 | else throw("Strict value is not equal to itself.") | |
556 | 807 | } | |
557 | 808 | ||
558 | 809 | ||
559 | 810 | ||
560 | - | @Callable(bB) | |
561 | - | func withdraw (bE,bF,au,bG) = { | |
562 | - | let bI = valueOrErrorMessage(parseInt(bG), "withdraw: amount is not Int") | |
563 | - | let bD = if (if (if (if (bf()) | |
564 | - | then bg() | |
811 | + | @Callable(cz) | |
812 | + | func depositWaves (cF) = { | |
813 | + | let cB = if (if (if (if (bT()) | |
814 | + | then bU() | |
565 | 815 | else false) | |
566 | - | then | |
816 | + | then ad(cz.payments, 1, "depositWaves: no payment") | |
567 | 817 | else false) | |
568 | - | then | |
818 | + | then ag(cz.payments[0], "depositWaves: invalid asset") | |
569 | 819 | else false) | |
570 | - | then | |
820 | + | then Y((cz.payments[0].amount / 100), 0, O, "depositWaves: invalid amount") | |
571 | 821 | else false | |
572 | - | if (( | |
822 | + | if ((cB == cB)) | |
573 | 823 | then { | |
574 | - | let bJ = bl(au) | |
575 | - | let bT = at(au, bF) | |
576 | - | let bL = bT._1 | |
577 | - | let bM = bT._2 | |
578 | - | let bN = az(bF) | |
579 | - | let bU = bt(bF, bN) | |
580 | - | let bw = bU._1 | |
581 | - | let bA = bU._2 | |
582 | - | let bP = (bL - toBigInt(bI)) | |
583 | - | let bV = M(toInt(bP), 0, D, "withdraw: insufficient token amount") | |
584 | - | if ((bV == bV)) | |
824 | + | let cG = (cz.payments[0].amount / 100) | |
825 | + | let dh = toString(cz.caller) | |
826 | + | let di = b | |
827 | + | let cH = ca(di) | |
828 | + | let dj = aI(di, dh) | |
829 | + | let cJ = dj._1 | |
830 | + | let cK = dj._2 | |
831 | + | let cL = aO(dh) | |
832 | + | let cM = aR(dh) | |
833 | + | let dk = cn(dh, cL, cM) | |
834 | + | let cr = dk._1 | |
835 | + | let cO = dk._2 | |
836 | + | let cy = dk._3 | |
837 | + | let cP = (cJ + toBigInt(cG)) | |
838 | + | let cQ = fraction(cP, cH, P, DOWN) | |
839 | + | let cR = ((cL - cK) + cQ) | |
840 | + | let cS = ((bl() - cK) + cQ) | |
841 | + | let cT = if ((cL == Q)) | |
842 | + | then (bt() + R) | |
843 | + | else bt() | |
844 | + | let cU = if (if ((size(cF) > 0)) | |
845 | + | then bP(cF) | |
846 | + | else false) | |
585 | 847 | then { | |
586 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
587 | - | let bR = ((bN - bM) + bQ) | |
588 | - | let bS = ((aU() - bM) + bQ) | |
589 | - | $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) - toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), unit) | |
848 | + | let cV = bM(cF) | |
849 | + | let cW = fraction(toBigInt(cG), cH, P, DOWN) | |
850 | + | let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN) | |
851 | + | let cY = (cW - cX) | |
852 | + | let cZ = (cM + cX) | |
853 | + | let da = aR(cV) | |
854 | + | let db = (da + cY) | |
855 | + | let dc = (bD() + cW) | |
856 | + | let dl = cn(cV, aO(cV), da) | |
857 | + | let de = dl._1 | |
858 | + | let df = dl._2 | |
859 | + | let dg = dl._3 | |
860 | + | (((de ++ aS(dh, cZ)) ++ aS(cV, db)) ++ bE(dc)) | |
590 | 861 | } | |
862 | + | else nil | |
863 | + | let dm = invoke(bn(), L, nil, [AttachedPayment(unit, cz.payments[0].amount)]) | |
864 | + | if ((dm == dm)) | |
865 | + | then $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(b, (br(b) + toBigInt(cG)))) ++ aP(dh, cR)) ++ bu(cT)) ++ aM(di, dh, $Tuple2(cP, cQ))), cO) | |
591 | 866 | else throw("Strict value is not equal to itself.") | |
592 | 867 | } | |
593 | 868 | else throw("Strict value is not equal to itself.") | |
595 | 870 | ||
596 | 871 | ||
597 | 872 | ||
598 | - | @Callable( | |
599 | - | func | |
600 | - | let | |
601 | - | then | |
873 | + | @Callable(cz) | |
874 | + | func withdrawWaves (cE) = { | |
875 | + | let cB = if (if (if (bT()) | |
876 | + | then bU() | |
602 | 877 | else false) | |
603 | - | then | |
878 | + | then Y((cE / 100), 0, O, "withdrawWaves: invalid amount") | |
604 | 879 | else false) | |
605 | - | then | |
606 | - | | |
607 | - | | |
880 | + | then if ((bf() >= toBigInt(height))) | |
881 | + | then throw("withdrawWaves: not allowed") | |
882 | + | else true | |
608 | 883 | else false | |
609 | - | if (( | |
884 | + | if ((cB == cB)) | |
610 | 885 | then { | |
611 | - | let bI = bB.payments[0].amount | |
612 | - | let bW = toString(bB.caller) | |
613 | - | let bX = b | |
614 | - | let bJ = bl(bX) | |
615 | - | let bY = at(bX, bW) | |
616 | - | let bL = bY._1 | |
617 | - | let bM = bY._2 | |
618 | - | let bN = az(bW) | |
619 | - | let bZ = bt(bW, bN) | |
620 | - | let bw = bZ._1 | |
621 | - | let bA = bZ._2 | |
622 | - | let bP = (bL + toBigInt(bI)) | |
623 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
624 | - | let bR = ((bN - bM) + bQ) | |
625 | - | let bS = ((aU() - bM) + bQ) | |
626 | - | let ca = invoke(aW(), A, nil, [AttachedPayment(unit, bI)]) | |
627 | - | if ((ca == ca)) | |
628 | - | then $Tuple2(((((bw ++ aV(bS)) ++ bb(b, (ba(b) + toBigInt(bI)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), bA) | |
629 | - | else throw("Strict value is not equal to itself.") | |
630 | - | } | |
631 | - | else throw("Strict value is not equal to itself.") | |
632 | - | } | |
633 | - | ||
634 | - | ||
635 | - | ||
636 | - | @Callable(bB) | |
637 | - | func withdrawWaves (bG) = { | |
638 | - | let bD = if (if (bf()) | |
639 | - | then bg() | |
640 | - | else false) | |
641 | - | then M(bG, 0, D, "withdrawWaves: invalid amount") | |
642 | - | else false | |
643 | - | if ((bD == bD)) | |
644 | - | then { | |
645 | - | let bW = toString(bB.caller) | |
646 | - | let bX = b | |
647 | - | let bJ = bl(bX) | |
648 | - | let cb = at(bX, bW) | |
649 | - | let bL = cb._1 | |
650 | - | let bM = cb._2 | |
651 | - | let bN = az(bW) | |
652 | - | let cc = bt(bW, bN) | |
653 | - | let bw = cc._1 | |
654 | - | let bA = cc._2 | |
655 | - | let bP = (bL - toBigInt(bG)) | |
656 | - | let bV = M(toInt(bP), 0, D, "withdrawWaves: insufficient token amount") | |
657 | - | if ((bV == bV)) | |
886 | + | let dn = (cE / 100) | |
887 | + | let dh = toString(cz.caller) | |
888 | + | let di = b | |
889 | + | let cH = ca(di) | |
890 | + | let do = aI(di, dh) | |
891 | + | let cJ = do._1 | |
892 | + | let cK = do._2 | |
893 | + | let cL = aO(dh) | |
894 | + | let cM = aR(dh) | |
895 | + | let dp = cn(dh, cL, cM) | |
896 | + | let cr = dp._1 | |
897 | + | let cO = dp._2 | |
898 | + | let cy = dp._3 | |
899 | + | let cP = (cJ - toBigInt(dn)) | |
900 | + | let dq = Y(toInt(cP), 0, O, "withdrawWaves: insufficient token amount") | |
901 | + | if ((dq == dq)) | |
658 | 902 | then { | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | let | |
665 | - | let | |
666 | - | let | |
667 | - | if ($isInstanceOf( | |
903 | + | let cQ = fraction(cP, cH, P, DOWN) | |
904 | + | let cR = ((cL - cK) + cQ) | |
905 | + | let cS = ((bl() - cK) + cQ) | |
906 | + | let dr = bn() | |
907 | + | let ds = bq(dr) | |
908 | + | let dm = invoke(dr, M, nil, nil) | |
909 | + | let dt = { | |
910 | + | let W = dm | |
911 | + | if ($isInstanceOf(W, "String")) | |
668 | 912 | then { | |
669 | - | let | |
670 | - | parseBigIntValue( | |
913 | + | let X = W | |
914 | + | parseBigIntValue(X) | |
671 | 915 | } | |
672 | 916 | else throw("withdrawWaves: sWaves getRate() revert") | |
673 | 917 | } | |
674 | - | let | |
675 | - | let | |
676 | - | if (( | |
677 | - | then $Tuple2(((((([ScriptTransfer( | |
918 | + | let du = toInt(fraction(toBigInt(cE), S, dt, CEILING)) | |
919 | + | let dv = invoke(dr, N, nil, [AttachedPayment(ds, du)]) | |
920 | + | if ((dv == dv)) | |
921 | + | then $Tuple2(((((([ScriptTransfer(cz.caller, cE, unit)] ++ cr) ++ bm(cS)) ++ bs(b, (br(b) - toBigInt(dn)))) ++ aP(dh, cR)) ++ aM(di, dh, $Tuple2(cP, cQ))), unit) | |
678 | 922 | else throw("Strict value is not equal to itself.") | |
679 | 923 | } | |
680 | 924 | else throw("Strict value is not equal to itself.") | |
684 | 928 | ||
685 | 929 | ||
686 | 930 | ||
687 | - | @Callable( | |
688 | - | func startRetrodrop ( | |
689 | - | let | |
690 | - | then | |
931 | + | @Callable(cz) | |
932 | + | func startRetrodrop (dw,dx,dy,dz) = { | |
933 | + | let cB = if (if (if (if (if (if (if (bQ(cz.caller)) | |
934 | + | then bT() | |
691 | 935 | else false) | |
692 | - | then | |
936 | + | then bU() | |
693 | 937 | else false) | |
694 | - | then | |
938 | + | then al(dw, "startRetrodrop: invalid units asset") | |
695 | 939 | else false) | |
696 | - | then | |
940 | + | then Y(dx, 0, O, "startRetrodrop: invalid amountForLP") | |
697 | 941 | else false) | |
698 | - | then V(aK(), F, "startRetrodrop: already started") | |
942 | + | then Y(dy, 0, O, "startRetrodrop: invalid amountForReferal") | |
943 | + | else false) | |
944 | + | then Y(dz, 1, O, "startRetrodrop: invalid blocksAt") | |
945 | + | else false) | |
946 | + | then ai(bd(), Q, "startRetrodrop: already started") | |
699 | 947 | else false | |
700 | - | if (( | |
948 | + | if ((cB == cB)) | |
701 | 949 | then { | |
702 | - | let cj = toBigInt(height) | |
703 | - | let ck = (cj + toBigInt(ci)) | |
704 | - | let cl = fraction(toBigInt(bG), E, toBigInt(ci)) | |
705 | - | $Tuple2(((aL(cj) ++ aN(ck)) ++ aP(cl)), unit) | |
950 | + | let dA = toBigInt(height) | |
951 | + | let dB = (dA + toBigInt(dz)) | |
952 | + | let dq = if (((dx + dy) > assetBalance(this, fromBase58String(dw)))) | |
953 | + | then throw("startRetrodrop: insufficient funds") | |
954 | + | else true | |
955 | + | if ((dq == dq)) | |
956 | + | then $Tuple2(((((bc(fromBase58String(dw)) ++ be(dA)) ++ bg(dB)) ++ bA(toBigInt(dx))) ++ bC(toBigInt(dy))), unit) | |
957 | + | else throw("Strict value is not equal to itself.") | |
706 | 958 | } | |
707 | 959 | else throw("Strict value is not equal to itself.") | |
708 | 960 | } | |
709 | 961 | ||
710 | 962 | ||
711 | 963 | ||
712 | - | @Callable(bB) | |
713 | - | func getUnits (av) = { | |
714 | - | let cm = bt(av, az(av)) | |
715 | - | let cn = cm._1 | |
716 | - | let bA = cm._2 | |
717 | - | $Tuple2(nil, bA) | |
718 | - | } | |
719 | - | ||
720 | - | ||
721 | - | ||
722 | - | @Callable(bB) | |
723 | - | func updateCallerContract (bE) = { | |
724 | - | let bD = if (bc(bB.caller)) | |
725 | - | then bf() | |
964 | + | @Callable(cz) | |
965 | + | func increaseUnitsSupply (dx,dy) = { | |
966 | + | let cB = if (if (if (if (bT()) | |
967 | + | then bU() | |
968 | + | else false) | |
969 | + | then Y(dx, 0, O, "increaseUnitsSupply: invalid amountForLP") | |
970 | + | else false) | |
971 | + | then Y(dy, 0, O, "increaseUnitsSupply: invalid amountForReferal") | |
972 | + | else false) | |
973 | + | then ac(toBigInt(height), (bd() + R), (bf() - R), "increaseUnitsSupply: drop not active") | |
726 | 974 | else false | |
727 | - | if ((bD == bD)) | |
728 | - | then $Tuple2(ar(bE), unit) | |
975 | + | if ((cB == cB)) | |
976 | + | then { | |
977 | + | let dC = (bz() + toBigInt(dx)) | |
978 | + | let dD = (bB() + toBigInt(dy)) | |
979 | + | let dq = if (((dC + dD) > toBigInt(assetBalance(this, bb())))) | |
980 | + | then throw("increaseUnitsSupply: insufficient funds") | |
981 | + | else true | |
982 | + | if ((dq == dq)) | |
983 | + | then $Tuple2((bA(dC) ++ bC(dD)), unit) | |
984 | + | else throw("Strict value is not equal to itself.") | |
985 | + | } | |
729 | 986 | else throw("Strict value is not equal to itself.") | |
730 | 987 | } | |
731 | 988 | ||
732 | 989 | ||
733 | 990 | ||
734 | - | @Callable(bB) | |
735 | - | func pause () = { | |
736 | - | let bD = if (if (bi(bB.caller)) | |
737 | - | then bf() | |
738 | - | else false) | |
739 | - | then bg() | |
991 | + | @Callable(cz) | |
992 | + | func checkpoint (aK) = { | |
993 | + | let dE = cn(aK, aO(aK), aR(aK)) | |
994 | + | let dF = dE._1 | |
995 | + | let cO = dE._2 | |
996 | + | let cy = dE._3 | |
997 | + | $Tuple2(dF, $Tuple2(cO, cy)) | |
998 | + | } | |
999 | + | ||
1000 | + | ||
1001 | + | ||
1002 | + | @Callable(cz) | |
1003 | + | func getUnits (aK) = { | |
1004 | + | let dG = cn(aK, aO(aK), aR(aK)) | |
1005 | + | let dF = dG._1 | |
1006 | + | let cO = dG._2 | |
1007 | + | let cy = dG._3 | |
1008 | + | $Tuple2(nil, $Tuple2(cO, cy)) | |
1009 | + | } | |
1010 | + | ||
1011 | + | ||
1012 | + | ||
1013 | + | @Callable(cz) | |
1014 | + | func setReferer (bN,U) = { | |
1015 | + | let cB = if (bX(cz.caller)) | |
1016 | + | then bT() | |
740 | 1017 | else false | |
741 | - | if (( | |
742 | - | then $Tuple2( | |
1018 | + | if ((cB == cB)) | |
1019 | + | then $Tuple2(bO(bN, U), unit) | |
743 | 1020 | else throw("Strict value is not equal to itself.") | |
744 | 1021 | } | |
745 | 1022 | ||
746 | 1023 | ||
747 | 1024 | ||
748 | - | @Callable( | |
749 | - | func | |
750 | - | let | |
751 | - | then | |
1025 | + | @Callable(cz) | |
1026 | + | func setManager (bL) = { | |
1027 | + | let cB = if (if (bQ(cz.caller)) | |
1028 | + | then bT() | |
752 | 1029 | else false) | |
753 | - | then | |
1030 | + | then T(bL, "setManager: invalid manager") | |
754 | 1031 | else false | |
755 | - | if (( | |
756 | - | then $Tuple2( | |
1032 | + | if ((cB == cB)) | |
1033 | + | then $Tuple2(bK(addressFromStringValue(bL)), unit) | |
757 | 1034 | else throw("Strict value is not equal to itself.") | |
758 | 1035 | } | |
759 | 1036 | ||
760 | 1037 | ||
761 | 1038 | ||
762 | - | @Callable(bB) | |
763 | - | func updatePauser (ag) = { | |
764 | - | let bD = if (if (bc(bB.caller)) | |
765 | - | then bf() | |
766 | - | else false) | |
767 | - | then H(ag, "updatePauser: invalid pauser") | |
1039 | + | @Callable(cz) | |
1040 | + | func updateCallerContract (cC) = { | |
1041 | + | let cB = if (bQ(cz.caller)) | |
1042 | + | then bT() | |
768 | 1043 | else false | |
769 | - | if (( | |
770 | - | then $Tuple2( | |
1044 | + | if ((cB == cB)) | |
1045 | + | then $Tuple2(aG(cC), unit) | |
771 | 1046 | else throw("Strict value is not equal to itself.") | |
772 | 1047 | } | |
773 | 1048 | ||
774 | 1049 | ||
775 | 1050 | ||
776 | - | @Callable(bB) | |
777 | - | func setMultisig (aj) = { | |
778 | - | let bD = if (bc(bB.caller)) | |
779 | - | then H(aj, "setMultisig: invalid multisig") | |
1051 | + | @Callable(cz) | |
1052 | + | func pause () = { | |
1053 | + | let cB = if (if (bW(cz.caller)) | |
1054 | + | then bT() | |
1055 | + | else false) | |
1056 | + | then bU() | |
780 | 1057 | else false | |
781 | - | if (( | |
782 | - | then $Tuple2( | |
1058 | + | if ((cB == cB)) | |
1059 | + | then $Tuple2(ar(true), unit) | |
783 | 1060 | else throw("Strict value is not equal to itself.") | |
784 | 1061 | } | |
785 | 1062 | ||
786 | 1063 | ||
787 | - | @Verifier(co) | |
788 | - | func cp () = { | |
789 | - | let K = getString(c) | |
790 | - | if ($isInstanceOf(K, "String")) | |
1064 | + | ||
1065 | + | @Callable(cz) | |
1066 | + | func unpause () = { | |
1067 | + | let cB = if (if (bW(cz.caller)) | |
1068 | + | then bT() | |
1069 | + | else false) | |
1070 | + | then bV() | |
1071 | + | else false | |
1072 | + | if ((cB == cB)) | |
1073 | + | then $Tuple2(ar(false), unit) | |
1074 | + | else throw("Strict value is not equal to itself.") | |
1075 | + | } | |
1076 | + | ||
1077 | + | ||
1078 | + | ||
1079 | + | @Callable(cz) | |
1080 | + | func updatePauser (av) = { | |
1081 | + | let cB = if (if (bQ(cz.caller)) | |
1082 | + | then bT() | |
1083 | + | else false) | |
1084 | + | then T(av, "updatePauser: invalid pauser") | |
1085 | + | else false | |
1086 | + | if ((cB == cB)) | |
1087 | + | then $Tuple2(au(addressFromStringValue(av)), unit) | |
1088 | + | else throw("Strict value is not equal to itself.") | |
1089 | + | } | |
1090 | + | ||
1091 | + | ||
1092 | + | ||
1093 | + | @Callable(cz) | |
1094 | + | func setMultisig (ay) = { | |
1095 | + | let cB = if (bQ(cz.caller)) | |
1096 | + | then T(ay, "setMultisig: invalid multisig") | |
1097 | + | else false | |
1098 | + | if ((cB == cB)) | |
1099 | + | then $Tuple2(ax(addressFromStringValue(ay)), unit) | |
1100 | + | else throw("Strict value is not equal to itself.") | |
1101 | + | } | |
1102 | + | ||
1103 | + | ||
1104 | + | @Verifier(dH) | |
1105 | + | func dI () = { | |
1106 | + | let W = getString(c) | |
1107 | + | if ($isInstanceOf(W, "String")) | |
791 | 1108 | then { | |
792 | - | let | |
793 | - | valueOrElse(getBoolean(addressFromStringValue( | |
1109 | + | let dJ = W | |
1110 | + | valueOrElse(getBoolean(addressFromStringValue(dJ), makeString([d, toString(this), toBase58String(dH.id)], a)), false) | |
794 | 1111 | } | |
795 | - | else sigVerify( | |
1112 | + | else sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey) | |
796 | 1113 | } | |
797 | 1114 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "__" | |
5 | 5 | ||
6 | 6 | let b = "WAVES" | |
7 | 7 | ||
8 | 8 | let c = "MULTISIG" | |
9 | 9 | ||
10 | 10 | let d = "STATUS" | |
11 | 11 | ||
12 | 12 | let e = "INIT" | |
13 | 13 | ||
14 | 14 | let f = "PAUSED" | |
15 | 15 | ||
16 | 16 | let g = "PAUSER" | |
17 | 17 | ||
18 | - | let h = " | |
18 | + | let h = "MANAGER" | |
19 | 19 | ||
20 | - | let i = " | |
20 | + | let i = "REFERER" | |
21 | 21 | ||
22 | - | let j = " | |
22 | + | let j = "EXECUTOR" | |
23 | 23 | ||
24 | - | let k = " | |
24 | + | let k = "ORACLE" | |
25 | 25 | ||
26 | - | let l = " | |
26 | + | let l = "CALLER_CONTRACT" | |
27 | 27 | ||
28 | - | let m = " | |
28 | + | let m = "PRICE" | |
29 | 29 | ||
30 | - | let n = " | |
30 | + | let n = "UNITS_ASSET" | |
31 | 31 | ||
32 | - | let o = "USER_ | |
32 | + | let o = "USER_POSITION" | |
33 | 33 | ||
34 | - | let p = "USER_ | |
34 | + | let p = "USER_USD_BALANCE" | |
35 | 35 | ||
36 | - | let q = " | |
36 | + | let q = "USER_UNITS_PER_USD_BALANCE_INTEGRAL" | |
37 | 37 | ||
38 | - | let r = " | |
38 | + | let r = "USER_UNITS_PER_REFERAL_SHARE_INTEGRAL" | |
39 | 39 | ||
40 | - | let s = " | |
40 | + | let s = "USER_CHECKPOINT_AT" | |
41 | 41 | ||
42 | - | let t = " | |
42 | + | let t = "USER_UNITS_BALANCE_DISTRIBUTED" | |
43 | 43 | ||
44 | - | let u = "UNITS_ | |
44 | + | let u = "USER_UNITS_SHARES_REFERAL" | |
45 | 45 | ||
46 | - | let v = " | |
46 | + | let v = "USER_SHARES_REFERAL" | |
47 | 47 | ||
48 | - | let w = " | |
48 | + | let w = "START_BLOCK" | |
49 | 49 | ||
50 | - | let x = " | |
50 | + | let x = "FINISH_BLOCK" | |
51 | 51 | ||
52 | - | let y = " | |
52 | + | let y = "TOTAL_UNITS_FOR_LP" | |
53 | 53 | ||
54 | - | let z = " | |
54 | + | let z = "TOTAL_UNITS_FOR_REFERAL" | |
55 | 55 | ||
56 | - | let A = " | |
56 | + | let A = "TOTAL_USD_BALANCE" | |
57 | 57 | ||
58 | - | let B = " | |
58 | + | let B = "UNITS_PER_USD_BALANCE_INTEGRAL" | |
59 | 59 | ||
60 | - | let C = " | |
60 | + | let C = "CHECKPOINT_AT" | |
61 | 61 | ||
62 | - | let D = | |
62 | + | let D = "UNITS_BALANCE_DISTRIBUTED" | |
63 | 63 | ||
64 | - | let E = | |
64 | + | let E = "TOKEN_BALANCE" | |
65 | 65 | ||
66 | - | let F = | |
66 | + | let F = "USERS_COUNT" | |
67 | 67 | ||
68 | - | let G = | |
68 | + | let G = "UNITS_PER_REFERAL_SHARE_INTEGRAL" | |
69 | 69 | ||
70 | - | func H (I,J) = { | |
71 | - | let K = addressFromString(I) | |
72 | - | if ($isInstanceOf(K, "Address")) | |
70 | + | let H = "UNITS_SHARES_REFERAL" | |
71 | + | ||
72 | + | let I = "TOTAL_SHARES_REFERAL" | |
73 | + | ||
74 | + | let J = "SWAVES_CONTRACT" | |
75 | + | ||
76 | + | let K = "ASSET" | |
77 | + | ||
78 | + | let L = "deposit" | |
79 | + | ||
80 | + | let M = "getRate" | |
81 | + | ||
82 | + | let N = "withdraw" | |
83 | + | ||
84 | + | let O = 9223372036854775807 | |
85 | + | ||
86 | + | let P = toBigInt(1000000000000) | |
87 | + | ||
88 | + | let Q = toBigInt(0) | |
89 | + | ||
90 | + | let R = toBigInt(1) | |
91 | + | ||
92 | + | let S = toBigInt(1000000000000) | |
93 | + | ||
94 | + | func T (U,V) = { | |
95 | + | let W = addressFromString(U) | |
96 | + | if ($isInstanceOf(W, "Address")) | |
73 | 97 | then { | |
74 | - | let | |
98 | + | let X = W | |
75 | 99 | true | |
76 | 100 | } | |
77 | - | else throw( | |
101 | + | else throw(V) | |
78 | 102 | } | |
79 | 103 | ||
80 | 104 | ||
81 | - | func | |
105 | + | func Y (Z,aa,ab,V) = if (if ((aa > Z)) | |
82 | 106 | then true | |
83 | - | else ( | |
84 | - | then throw( | |
107 | + | else (Z > ab)) | |
108 | + | then throw(V) | |
85 | 109 | else true | |
86 | 110 | ||
87 | 111 | ||
88 | - | func Q (R,S,J) = if ((size(R) != S)) | |
89 | - | then throw(J) | |
112 | + | func ac (Z,aa,ab,V) = if (if ((aa > Z)) | |
113 | + | then true | |
114 | + | else (Z > ab)) | |
115 | + | then throw(V) | |
90 | 116 | else true | |
91 | 117 | ||
92 | 118 | ||
93 | - | func T (U,J) = { | |
94 | - | let K = U.assetId | |
95 | - | if ($isInstanceOf(K, "ByteVector")) | |
119 | + | func ad (ae,af,V) = if ((size(ae) != af)) | |
120 | + | then throw(V) | |
121 | + | else true | |
122 | + | ||
123 | + | ||
124 | + | func ag (ah,V) = { | |
125 | + | let W = ah.assetId | |
126 | + | if ($isInstanceOf(W, "ByteVector")) | |
96 | 127 | then { | |
97 | - | let | |
98 | - | throw( | |
128 | + | let X = W | |
129 | + | throw(V) | |
99 | 130 | } | |
100 | - | else if ($isInstanceOf( | |
131 | + | else if ($isInstanceOf(W, "Unit")) | |
101 | 132 | then true | |
102 | 133 | else throw("Match error") | |
103 | 134 | } | |
104 | 135 | ||
105 | 136 | ||
106 | - | func | |
107 | - | then throw( | |
137 | + | func ai (aj,ak,V) = if ((aj != ak)) | |
138 | + | then throw(V) | |
108 | 139 | else true | |
109 | 140 | ||
110 | 141 | ||
111 | - | func | |
112 | - | let | |
113 | - | if ($isInstanceOf( | |
142 | + | func al (am,V) = { | |
143 | + | let W = assetInfo(fromBase58String(am)) | |
144 | + | if ($isInstanceOf(W, "Asset")) | |
114 | 145 | then { | |
115 | - | let L = K | |
116 | - | L | |
146 | + | let X = W | |
147 | + | true | |
148 | + | } | |
149 | + | else throw(V) | |
150 | + | } | |
151 | + | ||
152 | + | ||
153 | + | func an () = { | |
154 | + | let W = getBoolean(e) | |
155 | + | if ($isInstanceOf(W, "Boolean")) | |
156 | + | then { | |
157 | + | let X = W | |
158 | + | X | |
117 | 159 | } | |
118 | 160 | else false | |
119 | 161 | } | |
120 | 162 | ||
121 | 163 | ||
122 | - | func | |
164 | + | func ao (ap) = [BooleanEntry(e, ap)] | |
123 | 165 | ||
124 | 166 | ||
125 | - | func | |
126 | - | let | |
127 | - | if ($isInstanceOf( | |
167 | + | func aq () = { | |
168 | + | let W = getBoolean(f) | |
169 | + | if ($isInstanceOf(W, "Boolean")) | |
128 | 170 | then { | |
129 | - | let | |
130 | - | | |
171 | + | let X = W | |
172 | + | X | |
131 | 173 | } | |
132 | 174 | else false | |
133 | 175 | } | |
134 | 176 | ||
135 | 177 | ||
136 | - | func | |
178 | + | func ar (as) = [BooleanEntry(f, as)] | |
137 | 179 | ||
138 | 180 | ||
139 | - | func | |
140 | - | let | |
141 | - | if ($isInstanceOf( | |
181 | + | func at () = { | |
182 | + | let W = getString(g) | |
183 | + | if ($isInstanceOf(W, "String")) | |
142 | 184 | then { | |
143 | - | let | |
144 | - | addressFromStringValue( | |
185 | + | let X = W | |
186 | + | addressFromStringValue(X) | |
145 | 187 | } | |
146 | 188 | else Address(base58'') | |
147 | 189 | } | |
148 | 190 | ||
149 | 191 | ||
150 | - | func | |
192 | + | func au (av) = [StringEntry(g, toString(av))] | |
151 | 193 | ||
152 | 194 | ||
153 | - | func | |
154 | - | let | |
155 | - | if ($isInstanceOf( | |
195 | + | func aw () = { | |
196 | + | let W = getString(c) | |
197 | + | if ($isInstanceOf(W, "String")) | |
156 | 198 | then { | |
157 | - | let | |
158 | - | addressFromStringValue( | |
199 | + | let X = W | |
200 | + | addressFromStringValue(X) | |
159 | 201 | } | |
160 | 202 | else Address(base58'') | |
161 | 203 | } | |
162 | 204 | ||
163 | 205 | ||
164 | - | func | |
206 | + | func ax (ay) = [StringEntry(c, toString(ay))] | |
165 | 207 | ||
166 | 208 | ||
167 | - | func | |
168 | - | let | |
169 | - | if ($isInstanceOf( | |
209 | + | func az () = { | |
210 | + | let W = getString(j) | |
211 | + | if ($isInstanceOf(W, "String")) | |
170 | 212 | then { | |
171 | - | let | |
172 | - | addressFromStringValue( | |
213 | + | let X = W | |
214 | + | addressFromStringValue(X) | |
173 | 215 | } | |
174 | 216 | else Address(base58'') | |
175 | 217 | } | |
176 | 218 | ||
177 | 219 | ||
178 | - | func | |
220 | + | func aA (aB) = [StringEntry(j, toString(aB))] | |
179 | 221 | ||
180 | 222 | ||
181 | - | func | |
182 | - | let | |
183 | - | if ($isInstanceOf( | |
223 | + | func aC () = { | |
224 | + | let W = getString(k) | |
225 | + | if ($isInstanceOf(W, "String")) | |
184 | 226 | then { | |
185 | - | let | |
186 | - | addressFromStringValue( | |
227 | + | let X = W | |
228 | + | addressFromStringValue(X) | |
187 | 229 | } | |
188 | 230 | else Address(base58'') | |
189 | 231 | } | |
190 | 232 | ||
191 | 233 | ||
192 | - | func | |
234 | + | func aD (aE) = [StringEntry(k, toString(aE))] | |
193 | 235 | ||
194 | 236 | ||
195 | - | func | |
196 | - | let | |
197 | - | if ($isInstanceOf( | |
237 | + | func aF () = { | |
238 | + | let W = getString(l) | |
239 | + | if ($isInstanceOf(W, "String")) | |
198 | 240 | then { | |
199 | - | let | |
200 | - | | |
241 | + | let X = W | |
242 | + | X | |
201 | 243 | } | |
202 | 244 | else "" | |
203 | 245 | } | |
204 | 246 | ||
205 | 247 | ||
206 | - | func | |
248 | + | func aG (aH) = [StringEntry(l, aH)] | |
207 | 249 | ||
208 | 250 | ||
209 | - | func | |
210 | - | let | |
211 | - | if ($isInstanceOf( | |
251 | + | func aI (aJ,aK) = { | |
252 | + | let W = getString(makeString([o, aJ, aK], a)) | |
253 | + | if ($isInstanceOf(W, "String")) | |
212 | 254 | then { | |
213 | - | let | |
214 | - | let | |
215 | - | $Tuple2(parseBigIntValue( | |
255 | + | let X = W | |
256 | + | let aL = split_51C(X, a) | |
257 | + | $Tuple2(parseBigIntValue(aL[0]), parseBigIntValue(aL[1])) | |
216 | 258 | } | |
217 | - | else $Tuple2( | |
259 | + | else $Tuple2(Q, Q) | |
218 | 260 | } | |
219 | 261 | ||
220 | 262 | ||
221 | - | func | |
263 | + | func aM (aJ,aK,aN) = [StringEntry(makeString([o, aJ, aK], a), makeString_11C([toString(aN._1), toString(aN._2)], a))] | |
222 | 264 | ||
223 | 265 | ||
224 | - | func | |
225 | - | let | |
226 | - | if ($isInstanceOf( | |
266 | + | func aO (aK) = { | |
267 | + | let W = getString(makeString([p, aK], a)) | |
268 | + | if ($isInstanceOf(W, "String")) | |
227 | 269 | then { | |
228 | - | let | |
229 | - | parseBigIntValue( | |
270 | + | let X = W | |
271 | + | parseBigIntValue(X) | |
230 | 272 | } | |
231 | - | else | |
273 | + | else Q | |
232 | 274 | } | |
233 | 275 | ||
234 | 276 | ||
235 | - | func | |
277 | + | func aP (aK,aQ) = [StringEntry(makeString([p, aK], a), toString(aQ))] | |
236 | 278 | ||
237 | 279 | ||
238 | - | func | |
239 | - | let | |
240 | - | if ($isInstanceOf( | |
280 | + | func aR (aK) = { | |
281 | + | let W = getString(makeString([v, aK], a)) | |
282 | + | if ($isInstanceOf(W, "String")) | |
241 | 283 | then { | |
242 | - | let | |
243 | - | parseBigIntValue( | |
284 | + | let X = W | |
285 | + | parseBigIntValue(X) | |
244 | 286 | } | |
245 | - | else | |
287 | + | else Q | |
246 | 288 | } | |
247 | 289 | ||
248 | 290 | ||
249 | - | func | |
291 | + | func aS (aK,aQ) = [StringEntry(makeString([v, aK], a), toString(aQ))] | |
250 | 292 | ||
251 | 293 | ||
252 | - | func | |
253 | - | let | |
254 | - | if ($isInstanceOf( | |
294 | + | func aT () = { | |
295 | + | let W = getString(B) | |
296 | + | if ($isInstanceOf(W, "String")) | |
255 | 297 | then { | |
256 | - | let | |
257 | - | parseBigIntValue( | |
298 | + | let X = W | |
299 | + | parseBigIntValue(X) | |
258 | 300 | } | |
259 | - | else | |
301 | + | else Q | |
260 | 302 | } | |
261 | 303 | ||
262 | 304 | ||
263 | - | func | |
305 | + | func aU (aQ) = [StringEntry(B, toString(aQ))] | |
264 | 306 | ||
265 | 307 | ||
266 | - | func | |
267 | - | let | |
268 | - | if ($isInstanceOf( | |
308 | + | func aV (aK) = { | |
309 | + | let W = getString(makeString([q, aK], a)) | |
310 | + | if ($isInstanceOf(W, "String")) | |
269 | 311 | then { | |
270 | - | let | |
271 | - | parseBigIntValue( | |
312 | + | let X = W | |
313 | + | parseBigIntValue(X) | |
272 | 314 | } | |
273 | - | else | |
315 | + | else Q | |
274 | 316 | } | |
275 | 317 | ||
276 | 318 | ||
277 | - | func | |
319 | + | func aW (aK,aQ) = [StringEntry(makeString([q, aK], a), toString(aQ))] | |
278 | 320 | ||
279 | 321 | ||
280 | - | func | |
281 | - | let | |
282 | - | if ($isInstanceOf( | |
322 | + | func aX () = { | |
323 | + | let W = getString(C) | |
324 | + | if ($isInstanceOf(W, "String")) | |
283 | 325 | then { | |
284 | - | let | |
285 | - | parseBigIntValue( | |
326 | + | let X = W | |
327 | + | parseBigIntValue(X) | |
286 | 328 | } | |
287 | - | else | |
329 | + | else Q | |
288 | 330 | } | |
289 | 331 | ||
290 | 332 | ||
291 | - | func | |
333 | + | func aY (aQ) = [StringEntry(C, toString(aQ))] | |
292 | 334 | ||
293 | 335 | ||
294 | - | func | |
295 | - | let | |
296 | - | if ($isInstanceOf( | |
336 | + | func aZ (aK) = { | |
337 | + | let W = getString(makeString([s, aK], a)) | |
338 | + | if ($isInstanceOf(W, "String")) | |
297 | 339 | then { | |
298 | - | let | |
299 | - | parseBigIntValue( | |
340 | + | let X = W | |
341 | + | parseBigIntValue(X) | |
300 | 342 | } | |
301 | - | else | |
343 | + | else Q | |
302 | 344 | } | |
303 | 345 | ||
304 | 346 | ||
305 | - | func | |
347 | + | func ba (aK,aQ) = [StringEntry(makeString([s, aK], a), toString(aQ))] | |
306 | 348 | ||
307 | 349 | ||
308 | - | func | |
309 | - | let | |
310 | - | if ($isInstanceOf( | |
350 | + | func bb () = { | |
351 | + | let W = getString(n) | |
352 | + | if ($isInstanceOf(W, "String")) | |
311 | 353 | then { | |
312 | - | let | |
313 | - | | |
354 | + | let X = W | |
355 | + | fromBase58String(X) | |
314 | 356 | } | |
315 | - | else | |
357 | + | else base58'' | |
316 | 358 | } | |
317 | 359 | ||
318 | 360 | ||
319 | - | func | |
361 | + | func bc (am) = [StringEntry(n, toBase58String(am))] | |
320 | 362 | ||
321 | 363 | ||
322 | - | func | |
323 | - | let | |
324 | - | if ($isInstanceOf( | |
364 | + | func bd () = { | |
365 | + | let W = getString(w) | |
366 | + | if ($isInstanceOf(W, "String")) | |
325 | 367 | then { | |
326 | - | let | |
327 | - | parseBigIntValue( | |
368 | + | let X = W | |
369 | + | parseBigIntValue(X) | |
328 | 370 | } | |
329 | - | else | |
371 | + | else Q | |
330 | 372 | } | |
331 | 373 | ||
332 | 374 | ||
333 | - | func | |
375 | + | func be (aQ) = [StringEntry(w, toString(aQ))] | |
334 | 376 | ||
335 | 377 | ||
336 | - | func | |
337 | - | let | |
338 | - | if ($isInstanceOf( | |
378 | + | func bf () = { | |
379 | + | let W = getString(x) | |
380 | + | if ($isInstanceOf(W, "String")) | |
339 | 381 | then { | |
340 | - | let | |
341 | - | parseBigIntValue( | |
382 | + | let X = W | |
383 | + | parseBigIntValue(X) | |
342 | 384 | } | |
343 | - | else | |
385 | + | else Q | |
344 | 386 | } | |
345 | 387 | ||
346 | 388 | ||
347 | - | func | |
389 | + | func bg (aQ) = [StringEntry(x, toString(aQ))] | |
348 | 390 | ||
349 | 391 | ||
350 | - | func | |
351 | - | let | |
352 | - | if ($isInstanceOf( | |
392 | + | func bh () = { | |
393 | + | let W = getString(D) | |
394 | + | if ($isInstanceOf(W, "String")) | |
353 | 395 | then { | |
354 | - | let | |
355 | - | parseBigIntValue( | |
396 | + | let X = W | |
397 | + | parseBigIntValue(X) | |
356 | 398 | } | |
357 | - | else | |
399 | + | else Q | |
358 | 400 | } | |
359 | 401 | ||
360 | 402 | ||
361 | - | func | |
403 | + | func bi (aQ) = [StringEntry(D, toString(aQ))] | |
362 | 404 | ||
363 | 405 | ||
364 | - | func | |
365 | - | let | |
366 | - | if ($isInstanceOf( | |
406 | + | func bj (aK) = { | |
407 | + | let W = getString(makeString([t, aK], a)) | |
408 | + | if ($isInstanceOf(W, "String")) | |
367 | 409 | then { | |
368 | - | let | |
369 | - | parseBigIntValue( | |
410 | + | let X = W | |
411 | + | parseBigIntValue(X) | |
370 | 412 | } | |
371 | - | else | |
413 | + | else Q | |
372 | 414 | } | |
373 | 415 | ||
374 | 416 | ||
375 | - | func | |
417 | + | func bk (aK,aQ) = [StringEntry(makeString([t, aK], a), toString(aQ))] | |
376 | 418 | ||
377 | 419 | ||
378 | - | func | |
379 | - | let | |
380 | - | if ($isInstanceOf( | |
420 | + | func bl () = { | |
421 | + | let W = getString(A) | |
422 | + | if ($isInstanceOf(W, "String")) | |
381 | 423 | then { | |
382 | - | let L = K | |
383 | - | addressFromStringValue(L) | |
424 | + | let X = W | |
425 | + | parseBigIntValue(X) | |
426 | + | } | |
427 | + | else Q | |
428 | + | } | |
429 | + | ||
430 | + | ||
431 | + | func bm (aQ) = [StringEntry(A, toString(aQ))] | |
432 | + | ||
433 | + | ||
434 | + | func bn () = { | |
435 | + | let W = getString(J) | |
436 | + | if ($isInstanceOf(W, "String")) | |
437 | + | then { | |
438 | + | let X = W | |
439 | + | addressFromStringValue(X) | |
384 | 440 | } | |
385 | 441 | else Address(base58'') | |
386 | 442 | } | |
387 | 443 | ||
388 | 444 | ||
389 | - | func | |
445 | + | func bo (bp) = [StringEntry(J, toString(bp))] | |
390 | 446 | ||
391 | 447 | ||
392 | - | func | |
393 | - | let | |
394 | - | if ($isInstanceOf( | |
448 | + | func bq (bp) = { | |
449 | + | let W = getString(bp, K) | |
450 | + | if ($isInstanceOf(W, "String")) | |
395 | 451 | then { | |
396 | - | let | |
397 | - | fromBase58String( | |
452 | + | let X = W | |
453 | + | fromBase58String(X) | |
398 | 454 | } | |
399 | 455 | else throw("_loadSWavesAsset: revert") | |
400 | 456 | } | |
401 | 457 | ||
402 | 458 | ||
403 | - | func | |
404 | - | let | |
405 | - | if ($isInstanceOf( | |
459 | + | func br (aJ) = { | |
460 | + | let W = getString(makeString([E, aJ], a)) | |
461 | + | if ($isInstanceOf(W, "String")) | |
406 | 462 | then { | |
407 | - | let | |
408 | - | parseBigIntValue( | |
463 | + | let X = W | |
464 | + | parseBigIntValue(X) | |
409 | 465 | } | |
410 | - | else | |
466 | + | else Q | |
411 | 467 | } | |
412 | 468 | ||
413 | 469 | ||
414 | - | func | |
470 | + | func bs (aJ,aQ) = [StringEntry(makeString([E, aJ], a), toString(aQ))] | |
415 | 471 | ||
416 | 472 | ||
417 | - | func bc (as) = if ((as != this)) | |
473 | + | func bt () = { | |
474 | + | let W = getString(F) | |
475 | + | if ($isInstanceOf(W, "String")) | |
476 | + | then { | |
477 | + | let X = W | |
478 | + | parseBigIntValue(X) | |
479 | + | } | |
480 | + | else Q | |
481 | + | } | |
482 | + | ||
483 | + | ||
484 | + | func bu (aQ) = [StringEntry(F, toString(aQ))] | |
485 | + | ||
486 | + | ||
487 | + | func bv () = { | |
488 | + | let W = getString(G) | |
489 | + | if ($isInstanceOf(W, "String")) | |
490 | + | then { | |
491 | + | let X = W | |
492 | + | parseBigIntValue(X) | |
493 | + | } | |
494 | + | else Q | |
495 | + | } | |
496 | + | ||
497 | + | ||
498 | + | func bw (aQ) = [StringEntry(G, toString(aQ))] | |
499 | + | ||
500 | + | ||
501 | + | func bx () = { | |
502 | + | let W = getString(H) | |
503 | + | if ($isInstanceOf(W, "String")) | |
504 | + | then { | |
505 | + | let X = W | |
506 | + | parseBigIntValue(X) | |
507 | + | } | |
508 | + | else Q | |
509 | + | } | |
510 | + | ||
511 | + | ||
512 | + | func by (aQ) = [StringEntry(H, toString(aQ))] | |
513 | + | ||
514 | + | ||
515 | + | func bz () = { | |
516 | + | let W = getString(y) | |
517 | + | if ($isInstanceOf(W, "String")) | |
518 | + | then { | |
519 | + | let X = W | |
520 | + | parseBigIntValue(X) | |
521 | + | } | |
522 | + | else Q | |
523 | + | } | |
524 | + | ||
525 | + | ||
526 | + | func bA (aQ) = [StringEntry(y, toString(aQ))] | |
527 | + | ||
528 | + | ||
529 | + | func bB () = { | |
530 | + | let W = getString(z) | |
531 | + | if ($isInstanceOf(W, "String")) | |
532 | + | then { | |
533 | + | let X = W | |
534 | + | parseBigIntValue(X) | |
535 | + | } | |
536 | + | else Q | |
537 | + | } | |
538 | + | ||
539 | + | ||
540 | + | func bC (aQ) = [StringEntry(z, toString(aQ))] | |
541 | + | ||
542 | + | ||
543 | + | func bD () = { | |
544 | + | let W = getString(I) | |
545 | + | if ($isInstanceOf(W, "String")) | |
546 | + | then { | |
547 | + | let X = W | |
548 | + | parseBigIntValue(X) | |
549 | + | } | |
550 | + | else Q | |
551 | + | } | |
552 | + | ||
553 | + | ||
554 | + | func bE (aQ) = [StringEntry(I, toString(aQ))] | |
555 | + | ||
556 | + | ||
557 | + | func bF (aK) = { | |
558 | + | let W = getString(makeString([r, aK], a)) | |
559 | + | if ($isInstanceOf(W, "String")) | |
560 | + | then { | |
561 | + | let X = W | |
562 | + | parseBigIntValue(X) | |
563 | + | } | |
564 | + | else Q | |
565 | + | } | |
566 | + | ||
567 | + | ||
568 | + | func bG (aK,aQ) = [StringEntry(makeString([r, aK], a), toString(aQ))] | |
569 | + | ||
570 | + | ||
571 | + | func bH (aK) = { | |
572 | + | let W = getString(makeString([u, aK], a)) | |
573 | + | if ($isInstanceOf(W, "String")) | |
574 | + | then { | |
575 | + | let X = W | |
576 | + | parseBigIntValue(X) | |
577 | + | } | |
578 | + | else Q | |
579 | + | } | |
580 | + | ||
581 | + | ||
582 | + | func bI (aK,aQ) = [StringEntry(makeString([u, aK], a), toString(aQ))] | |
583 | + | ||
584 | + | ||
585 | + | func bJ () = { | |
586 | + | let W = getString(h) | |
587 | + | if ($isInstanceOf(W, "String")) | |
588 | + | then { | |
589 | + | let X = W | |
590 | + | addressFromStringValue(X) | |
591 | + | } | |
592 | + | else Address(base58'') | |
593 | + | } | |
594 | + | ||
595 | + | ||
596 | + | func bK (bL) = [StringEntry(h, toString(bL))] | |
597 | + | ||
598 | + | ||
599 | + | func bM (bN) = { | |
600 | + | let W = getString(makeString([i, bN], a)) | |
601 | + | if ($isInstanceOf(W, "String")) | |
602 | + | then { | |
603 | + | let X = W | |
604 | + | X | |
605 | + | } | |
606 | + | else throw("_loadReferer: revert") | |
607 | + | } | |
608 | + | ||
609 | + | ||
610 | + | func bO (bN,U) = [StringEntry(makeString([i, bN], a), U)] | |
611 | + | ||
612 | + | ||
613 | + | func bP (bN) = { | |
614 | + | let W = getString(makeString([i, bN], a)) | |
615 | + | if ($isInstanceOf(W, "String")) | |
616 | + | then { | |
617 | + | let X = W | |
618 | + | true | |
619 | + | } | |
620 | + | else false | |
621 | + | } | |
622 | + | ||
623 | + | ||
624 | + | func bQ (aH) = if ((aH != this)) | |
418 | 625 | then throw("_onlyThisContract: revert") | |
419 | 626 | else true | |
420 | 627 | ||
421 | 628 | ||
422 | - | func | |
629 | + | func bR () = if ((aw() == Address(base58''))) | |
423 | 630 | then throw("_whenMultisigSet: revert") | |
424 | 631 | else true | |
425 | 632 | ||
426 | 633 | ||
427 | - | func | |
634 | + | func bS () = if (an()) | |
428 | 635 | then throw("_whenNotInitialized: revert") | |
429 | 636 | else true | |
430 | 637 | ||
431 | 638 | ||
432 | - | func | |
639 | + | func bT () = if (!(an())) | |
433 | 640 | then throw("_whenInitialized: revert") | |
434 | 641 | else true | |
435 | 642 | ||
436 | 643 | ||
437 | - | func | |
644 | + | func bU () = if (aq()) | |
438 | 645 | then throw("_whenNotPaused: revert") | |
439 | 646 | else true | |
440 | 647 | ||
441 | 648 | ||
442 | - | func | |
649 | + | func bV () = if (!(aq())) | |
443 | 650 | then throw("_whenPaused: revert") | |
444 | 651 | else true | |
445 | 652 | ||
446 | 653 | ||
447 | - | func | |
654 | + | func bW (aH) = if ((aH != at())) | |
448 | 655 | then throw("_onlyPauser: revert") | |
449 | 656 | else true | |
450 | 657 | ||
451 | 658 | ||
452 | - | func | |
453 | - | then throw( | |
659 | + | func bX (aH) = if ((aH != bJ())) | |
660 | + | then throw("_onlyManager: revert") | |
454 | 661 | else true | |
455 | 662 | ||
456 | 663 | ||
457 | - | func | |
458 | - | then throw( | |
664 | + | func bY (Z,V) = if ((Z != az())) | |
665 | + | then throw(V) | |
459 | 666 | else true | |
460 | 667 | ||
461 | 668 | ||
462 | - | func bl (au) = { | |
463 | - | let K = getString(an(), makeString([k, au], a)) | |
464 | - | if ($isInstanceOf(K, "String")) | |
669 | + | func bZ (Z,V) = if ((Z != aF())) | |
670 | + | then throw(V) | |
671 | + | else true | |
672 | + | ||
673 | + | ||
674 | + | func ca (aJ) = { | |
675 | + | let W = getString(aC(), makeString([m, aJ], a)) | |
676 | + | if ($isInstanceOf(W, "String")) | |
465 | 677 | then { | |
466 | - | let | |
467 | - | parseBigIntValue( | |
678 | + | let X = W | |
679 | + | parseBigIntValue(X) | |
468 | 680 | } | |
469 | - | else throw(("_getTokenRate: no rate for token=" + | |
681 | + | else throw(("_getTokenRate: no rate for token=" + aJ)) | |
470 | 682 | } | |
471 | 683 | ||
472 | 684 | ||
473 | - | func bm () = { | |
474 | - | let bn = aC() | |
475 | - | let bo = max([aK(), aG()]) | |
476 | - | let bp = aQ() | |
477 | - | let bq = min([toBigInt(height), aM()]) | |
478 | - | if ((bo >= bq)) | |
479 | - | then $Tuple2(nil, bn) | |
685 | + | func cb () = { | |
686 | + | let cc = aT() | |
687 | + | let cd = max([bd(), aX()]) | |
688 | + | let ce = bh() | |
689 | + | let cf = bv() | |
690 | + | let cg = bx() | |
691 | + | let ch = min([toBigInt(height), bf()]) | |
692 | + | if ((cd >= ch)) | |
693 | + | then $Tuple3(nil, cc, cf) | |
480 | 694 | else { | |
481 | - | let br = (aO() * (bq - aK())) | |
482 | - | let bs = ((((E * (bq - bo)) * (br - bp)) / aU()) + bn) | |
483 | - | $Tuple2(((aD(bs) ++ aH(bq)) ++ aR(br)), bs) | |
695 | + | let ci = fraction((bz() - ce), (ch - cd), (bf() - cd)) | |
696 | + | let cj = (((P * ci) / bl()) + cc) | |
697 | + | let ck = if ((bD() > Q)) | |
698 | + | then { | |
699 | + | let cl = fraction((bB() - cg), (ch - cd), (bf() - cd)) | |
700 | + | let cm = (((P * cl) / bD()) + cf) | |
701 | + | $Tuple2(cl, cm) | |
702 | + | } | |
703 | + | else $Tuple2(Q, Q) | |
704 | + | let cl = ck._1 | |
705 | + | let cm = ck._2 | |
706 | + | $Tuple3(((((aY(ch) ++ aU(cj)) ++ bi((ci + ce))) ++ bw(cm)) ++ by((cl + cg))), cj, cm) | |
484 | 707 | } | |
485 | 708 | } | |
486 | 709 | ||
487 | 710 | ||
488 | - | func bt (av,bu) = { | |
489 | - | let bv = bm() | |
490 | - | let bw = bv._1 | |
491 | - | let bs = bv._2 | |
492 | - | let bx = aE(av) | |
493 | - | let by = max([aK(), aI(av)]) | |
494 | - | let bz = aS(av) | |
495 | - | let bq = min([toBigInt(height), aM()]) | |
496 | - | if ((by >= bq)) | |
497 | - | then $Tuple2(bw, bz) | |
711 | + | func cn (aK,co,cp) = { | |
712 | + | let cq = cb() | |
713 | + | let cr = cq._1 | |
714 | + | let cj = cq._2 | |
715 | + | let cm = cq._3 | |
716 | + | let cs = aV(aK) | |
717 | + | let ct = max([bd(), aZ(aK)]) | |
718 | + | let cu = bj(aK) | |
719 | + | let cv = bF(aK) | |
720 | + | let cw = bH(aK) | |
721 | + | let ch = min([toBigInt(height), bf()]) | |
722 | + | if ((ct >= ch)) | |
723 | + | then $Tuple3(cr, cu, cw) | |
498 | 724 | else { | |
499 | - | let bA = ((((bu * (bs - bx)) / (bq - by)) / E) + bz) | |
500 | - | $Tuple2((((bw ++ aF(av, bs)) ++ aJ(av, bq)) ++ aT(av, bA)), bA) | |
725 | + | let cx = (((co * (cj - cs)) / P) + cu) | |
726 | + | let cy = (((cp * (cm - cv)) / P) + cw) | |
727 | + | $Tuple3((((((cr ++ ba(aK, ch)) ++ aW(aK, cj)) ++ bk(aK, cx)) ++ bG(aK, cm)) ++ bI(aK, cy)), cx, cy) | |
501 | 728 | } | |
502 | 729 | } | |
503 | 730 | ||
504 | 731 | ||
505 | - | @Callable( | |
506 | - | func init ( | |
507 | - | let | |
508 | - | then | |
732 | + | @Callable(cz) | |
733 | + | func init (aB,aE,av,cA) = { | |
734 | + | let cB = if (if (if (if (if (if (bQ(cz.caller)) | |
735 | + | then bS() | |
509 | 736 | else false) | |
510 | - | then | |
737 | + | then bR() | |
511 | 738 | else false) | |
512 | - | then | |
739 | + | then T(aB, "init: invalid executor") | |
513 | 740 | else false) | |
514 | - | then | |
741 | + | then T(aE, "init: invalid oracle") | |
515 | 742 | else false) | |
516 | - | then | |
743 | + | then T(av, "init: invalid pauser") | |
517 | 744 | else false) | |
518 | - | then | |
745 | + | then T(cA, "init: invalid sWavesContract") | |
519 | 746 | else false | |
520 | - | if (( | |
521 | - | then $Tuple2((((( | |
747 | + | if ((cB == cB)) | |
748 | + | then $Tuple2(((((ao(true) ++ aA(addressFromStringValue(aB))) ++ aD(addressFromStringValue(aE))) ++ au(addressFromStringValue(av))) ++ bo(addressFromStringValue(cA))), unit) | |
522 | 749 | else throw("Strict value is not equal to itself.") | |
523 | 750 | } | |
524 | 751 | ||
525 | 752 | ||
526 | 753 | ||
527 | - | @Callable( | |
528 | - | func deposit ( | |
529 | - | let | |
530 | - | let | |
531 | - | then | |
754 | + | @Callable(cz) | |
755 | + | func deposit (cC,cD,aJ,cE,cF) = { | |
756 | + | let cG = valueOrErrorMessage(parseInt(cE), "deposit: amount is not Int") | |
757 | + | let cB = if (if (if (if (bT()) | |
758 | + | then bU() | |
532 | 759 | else false) | |
533 | - | then | |
760 | + | then bY(cz.caller, "deposit: invalid executor") | |
534 | 761 | else false) | |
535 | - | then | |
762 | + | then bZ(cC, "deposit: invalid caller") | |
536 | 763 | else false) | |
537 | - | then | |
764 | + | then Y(cG, 0, O, "deposit: invalid amount") | |
538 | 765 | else false | |
539 | - | if (( | |
766 | + | if ((cB == cB)) | |
540 | 767 | then { | |
541 | - | let bJ = bl(au) | |
542 | - | let bK = at(au, bF) | |
543 | - | let bL = bK._1 | |
544 | - | let bM = bK._2 | |
545 | - | let bN = az(bF) | |
546 | - | let bO = bt(bF, bN) | |
547 | - | let bw = bO._1 | |
548 | - | let bA = bO._2 | |
549 | - | let bP = (bL + toBigInt(bI)) | |
550 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
551 | - | let bR = ((bN - bM) + bQ) | |
552 | - | let bS = ((aU() - bM) + bQ) | |
553 | - | $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) + toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), bA) | |
768 | + | let cH = ca(aJ) | |
769 | + | let cI = aI(aJ, cD) | |
770 | + | let cJ = cI._1 | |
771 | + | let cK = cI._2 | |
772 | + | let cL = aO(cD) | |
773 | + | let cM = aR(cD) | |
774 | + | let cN = cn(cD, cL, cM) | |
775 | + | let cr = cN._1 | |
776 | + | let cO = cN._2 | |
777 | + | let cy = cN._3 | |
778 | + | let cP = (cJ + toBigInt(cG)) | |
779 | + | let cQ = fraction(cP, cH, P, DOWN) | |
780 | + | let cR = ((cL - cK) + cQ) | |
781 | + | let cS = ((bl() - cK) + cQ) | |
782 | + | let cT = if ((cL == Q)) | |
783 | + | then (bt() + R) | |
784 | + | else bt() | |
785 | + | let cU = if (if ((size(cF) > 0)) | |
786 | + | then bP(cF) | |
787 | + | else false) | |
788 | + | then { | |
789 | + | let cV = bM(cF) | |
790 | + | let cW = fraction(toBigInt(cG), cH, P, DOWN) | |
791 | + | let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN) | |
792 | + | let cY = (cW - cX) | |
793 | + | let cZ = (cM + cX) | |
794 | + | let da = aR(cV) | |
795 | + | let db = (da + cY) | |
796 | + | let dc = (bD() + cW) | |
797 | + | let dd = cn(cV, aO(cV), da) | |
798 | + | let de = dd._1 | |
799 | + | let df = dd._2 | |
800 | + | let dg = dd._3 | |
801 | + | (((de ++ aS(cD, cZ)) ++ aS(cV, db)) ++ bE(dc)) | |
802 | + | } | |
803 | + | else nil | |
804 | + | $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(aJ, (br(aJ) + toBigInt(cG)))) ++ aP(cD, cR)) ++ bu(cT)) ++ aM(aJ, cD, $Tuple2(cP, cQ))), cO) | |
554 | 805 | } | |
555 | 806 | else throw("Strict value is not equal to itself.") | |
556 | 807 | } | |
557 | 808 | ||
558 | 809 | ||
559 | 810 | ||
560 | - | @Callable(bB) | |
561 | - | func withdraw (bE,bF,au,bG) = { | |
562 | - | let bI = valueOrErrorMessage(parseInt(bG), "withdraw: amount is not Int") | |
563 | - | let bD = if (if (if (if (bf()) | |
564 | - | then bg() | |
811 | + | @Callable(cz) | |
812 | + | func depositWaves (cF) = { | |
813 | + | let cB = if (if (if (if (bT()) | |
814 | + | then bU() | |
565 | 815 | else false) | |
566 | - | then | |
816 | + | then ad(cz.payments, 1, "depositWaves: no payment") | |
567 | 817 | else false) | |
568 | - | then | |
818 | + | then ag(cz.payments[0], "depositWaves: invalid asset") | |
569 | 819 | else false) | |
570 | - | then | |
820 | + | then Y((cz.payments[0].amount / 100), 0, O, "depositWaves: invalid amount") | |
571 | 821 | else false | |
572 | - | if (( | |
822 | + | if ((cB == cB)) | |
573 | 823 | then { | |
574 | - | let bJ = bl(au) | |
575 | - | let bT = at(au, bF) | |
576 | - | let bL = bT._1 | |
577 | - | let bM = bT._2 | |
578 | - | let bN = az(bF) | |
579 | - | let bU = bt(bF, bN) | |
580 | - | let bw = bU._1 | |
581 | - | let bA = bU._2 | |
582 | - | let bP = (bL - toBigInt(bI)) | |
583 | - | let bV = M(toInt(bP), 0, D, "withdraw: insufficient token amount") | |
584 | - | if ((bV == bV)) | |
824 | + | let cG = (cz.payments[0].amount / 100) | |
825 | + | let dh = toString(cz.caller) | |
826 | + | let di = b | |
827 | + | let cH = ca(di) | |
828 | + | let dj = aI(di, dh) | |
829 | + | let cJ = dj._1 | |
830 | + | let cK = dj._2 | |
831 | + | let cL = aO(dh) | |
832 | + | let cM = aR(dh) | |
833 | + | let dk = cn(dh, cL, cM) | |
834 | + | let cr = dk._1 | |
835 | + | let cO = dk._2 | |
836 | + | let cy = dk._3 | |
837 | + | let cP = (cJ + toBigInt(cG)) | |
838 | + | let cQ = fraction(cP, cH, P, DOWN) | |
839 | + | let cR = ((cL - cK) + cQ) | |
840 | + | let cS = ((bl() - cK) + cQ) | |
841 | + | let cT = if ((cL == Q)) | |
842 | + | then (bt() + R) | |
843 | + | else bt() | |
844 | + | let cU = if (if ((size(cF) > 0)) | |
845 | + | then bP(cF) | |
846 | + | else false) | |
585 | 847 | then { | |
586 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
587 | - | let bR = ((bN - bM) + bQ) | |
588 | - | let bS = ((aU() - bM) + bQ) | |
589 | - | $Tuple2(((((bw ++ aV(bS)) ++ bb(au, (ba(au) - toBigInt(bI)))) ++ aA(bF, bR)) ++ ax(au, bF, $Tuple2(bP, bQ))), unit) | |
848 | + | let cV = bM(cF) | |
849 | + | let cW = fraction(toBigInt(cG), cH, P, DOWN) | |
850 | + | let cX = fraction(cW, toBigInt(20), toBigInt(100), DOWN) | |
851 | + | let cY = (cW - cX) | |
852 | + | let cZ = (cM + cX) | |
853 | + | let da = aR(cV) | |
854 | + | let db = (da + cY) | |
855 | + | let dc = (bD() + cW) | |
856 | + | let dl = cn(cV, aO(cV), da) | |
857 | + | let de = dl._1 | |
858 | + | let df = dl._2 | |
859 | + | let dg = dl._3 | |
860 | + | (((de ++ aS(dh, cZ)) ++ aS(cV, db)) ++ bE(dc)) | |
590 | 861 | } | |
862 | + | else nil | |
863 | + | let dm = invoke(bn(), L, nil, [AttachedPayment(unit, cz.payments[0].amount)]) | |
864 | + | if ((dm == dm)) | |
865 | + | then $Tuple2(((((((cr ++ cU) ++ bm(cS)) ++ bs(b, (br(b) + toBigInt(cG)))) ++ aP(dh, cR)) ++ bu(cT)) ++ aM(di, dh, $Tuple2(cP, cQ))), cO) | |
591 | 866 | else throw("Strict value is not equal to itself.") | |
592 | 867 | } | |
593 | 868 | else throw("Strict value is not equal to itself.") | |
594 | 869 | } | |
595 | 870 | ||
596 | 871 | ||
597 | 872 | ||
598 | - | @Callable( | |
599 | - | func | |
600 | - | let | |
601 | - | then | |
873 | + | @Callable(cz) | |
874 | + | func withdrawWaves (cE) = { | |
875 | + | let cB = if (if (if (bT()) | |
876 | + | then bU() | |
602 | 877 | else false) | |
603 | - | then | |
878 | + | then Y((cE / 100), 0, O, "withdrawWaves: invalid amount") | |
604 | 879 | else false) | |
605 | - | then | |
606 | - | | |
607 | - | | |
880 | + | then if ((bf() >= toBigInt(height))) | |
881 | + | then throw("withdrawWaves: not allowed") | |
882 | + | else true | |
608 | 883 | else false | |
609 | - | if (( | |
884 | + | if ((cB == cB)) | |
610 | 885 | then { | |
611 | - | let bI = bB.payments[0].amount | |
612 | - | let bW = toString(bB.caller) | |
613 | - | let bX = b | |
614 | - | let bJ = bl(bX) | |
615 | - | let bY = at(bX, bW) | |
616 | - | let bL = bY._1 | |
617 | - | let bM = bY._2 | |
618 | - | let bN = az(bW) | |
619 | - | let bZ = bt(bW, bN) | |
620 | - | let bw = bZ._1 | |
621 | - | let bA = bZ._2 | |
622 | - | let bP = (bL + toBigInt(bI)) | |
623 | - | let bQ = fraction(bP, bJ, E, DOWN) | |
624 | - | let bR = ((bN - bM) + bQ) | |
625 | - | let bS = ((aU() - bM) + bQ) | |
626 | - | let ca = invoke(aW(), A, nil, [AttachedPayment(unit, bI)]) | |
627 | - | if ((ca == ca)) | |
628 | - | then $Tuple2(((((bw ++ aV(bS)) ++ bb(b, (ba(b) + toBigInt(bI)))) ++ aA(bW, bR)) ++ ax(bX, bW, $Tuple2(bP, bQ))), bA) | |
629 | - | else throw("Strict value is not equal to itself.") | |
630 | - | } | |
631 | - | else throw("Strict value is not equal to itself.") | |
632 | - | } | |
633 | - | ||
634 | - | ||
635 | - | ||
636 | - | @Callable(bB) | |
637 | - | func withdrawWaves (bG) = { | |
638 | - | let bD = if (if (bf()) | |
639 | - | then bg() | |
640 | - | else false) | |
641 | - | then M(bG, 0, D, "withdrawWaves: invalid amount") | |
642 | - | else false | |
643 | - | if ((bD == bD)) | |
644 | - | then { | |
645 | - | let bW = toString(bB.caller) | |
646 | - | let bX = b | |
647 | - | let bJ = bl(bX) | |
648 | - | let cb = at(bX, bW) | |
649 | - | let bL = cb._1 | |
650 | - | let bM = cb._2 | |
651 | - | let bN = az(bW) | |
652 | - | let cc = bt(bW, bN) | |
653 | - | let bw = cc._1 | |
654 | - | let bA = cc._2 | |
655 | - | let bP = (bL - toBigInt(bG)) | |
656 | - | let bV = M(toInt(bP), 0, D, "withdrawWaves: insufficient token amount") | |
657 | - | if ((bV == bV)) | |
886 | + | let dn = (cE / 100) | |
887 | + | let dh = toString(cz.caller) | |
888 | + | let di = b | |
889 | + | let cH = ca(di) | |
890 | + | let do = aI(di, dh) | |
891 | + | let cJ = do._1 | |
892 | + | let cK = do._2 | |
893 | + | let cL = aO(dh) | |
894 | + | let cM = aR(dh) | |
895 | + | let dp = cn(dh, cL, cM) | |
896 | + | let cr = dp._1 | |
897 | + | let cO = dp._2 | |
898 | + | let cy = dp._3 | |
899 | + | let cP = (cJ - toBigInt(dn)) | |
900 | + | let dq = Y(toInt(cP), 0, O, "withdrawWaves: insufficient token amount") | |
901 | + | if ((dq == dq)) | |
658 | 902 | then { | |
659 | - | let | |
660 | - | let | |
661 | - | let | |
662 | - | let | |
663 | - | let | |
664 | - | let | |
665 | - | let | |
666 | - | let | |
667 | - | if ($isInstanceOf( | |
903 | + | let cQ = fraction(cP, cH, P, DOWN) | |
904 | + | let cR = ((cL - cK) + cQ) | |
905 | + | let cS = ((bl() - cK) + cQ) | |
906 | + | let dr = bn() | |
907 | + | let ds = bq(dr) | |
908 | + | let dm = invoke(dr, M, nil, nil) | |
909 | + | let dt = { | |
910 | + | let W = dm | |
911 | + | if ($isInstanceOf(W, "String")) | |
668 | 912 | then { | |
669 | - | let | |
670 | - | parseBigIntValue( | |
913 | + | let X = W | |
914 | + | parseBigIntValue(X) | |
671 | 915 | } | |
672 | 916 | else throw("withdrawWaves: sWaves getRate() revert") | |
673 | 917 | } | |
674 | - | let | |
675 | - | let | |
676 | - | if (( | |
677 | - | then $Tuple2(((((([ScriptTransfer( | |
918 | + | let du = toInt(fraction(toBigInt(cE), S, dt, CEILING)) | |
919 | + | let dv = invoke(dr, N, nil, [AttachedPayment(ds, du)]) | |
920 | + | if ((dv == dv)) | |
921 | + | then $Tuple2(((((([ScriptTransfer(cz.caller, cE, unit)] ++ cr) ++ bm(cS)) ++ bs(b, (br(b) - toBigInt(dn)))) ++ aP(dh, cR)) ++ aM(di, dh, $Tuple2(cP, cQ))), unit) | |
678 | 922 | else throw("Strict value is not equal to itself.") | |
679 | 923 | } | |
680 | 924 | else throw("Strict value is not equal to itself.") | |
681 | 925 | } | |
682 | 926 | else throw("Strict value is not equal to itself.") | |
683 | 927 | } | |
684 | 928 | ||
685 | 929 | ||
686 | 930 | ||
687 | - | @Callable( | |
688 | - | func startRetrodrop ( | |
689 | - | let | |
690 | - | then | |
931 | + | @Callable(cz) | |
932 | + | func startRetrodrop (dw,dx,dy,dz) = { | |
933 | + | let cB = if (if (if (if (if (if (if (bQ(cz.caller)) | |
934 | + | then bT() | |
691 | 935 | else false) | |
692 | - | then | |
936 | + | then bU() | |
693 | 937 | else false) | |
694 | - | then | |
938 | + | then al(dw, "startRetrodrop: invalid units asset") | |
695 | 939 | else false) | |
696 | - | then | |
940 | + | then Y(dx, 0, O, "startRetrodrop: invalid amountForLP") | |
697 | 941 | else false) | |
698 | - | then V(aK(), F, "startRetrodrop: already started") | |
942 | + | then Y(dy, 0, O, "startRetrodrop: invalid amountForReferal") | |
943 | + | else false) | |
944 | + | then Y(dz, 1, O, "startRetrodrop: invalid blocksAt") | |
945 | + | else false) | |
946 | + | then ai(bd(), Q, "startRetrodrop: already started") | |
699 | 947 | else false | |
700 | - | if (( | |
948 | + | if ((cB == cB)) | |
701 | 949 | then { | |
702 | - | let cj = toBigInt(height) | |
703 | - | let ck = (cj + toBigInt(ci)) | |
704 | - | let cl = fraction(toBigInt(bG), E, toBigInt(ci)) | |
705 | - | $Tuple2(((aL(cj) ++ aN(ck)) ++ aP(cl)), unit) | |
950 | + | let dA = toBigInt(height) | |
951 | + | let dB = (dA + toBigInt(dz)) | |
952 | + | let dq = if (((dx + dy) > assetBalance(this, fromBase58String(dw)))) | |
953 | + | then throw("startRetrodrop: insufficient funds") | |
954 | + | else true | |
955 | + | if ((dq == dq)) | |
956 | + | then $Tuple2(((((bc(fromBase58String(dw)) ++ be(dA)) ++ bg(dB)) ++ bA(toBigInt(dx))) ++ bC(toBigInt(dy))), unit) | |
957 | + | else throw("Strict value is not equal to itself.") | |
706 | 958 | } | |
707 | 959 | else throw("Strict value is not equal to itself.") | |
708 | 960 | } | |
709 | 961 | ||
710 | 962 | ||
711 | 963 | ||
712 | - | @Callable(bB) | |
713 | - | func getUnits (av) = { | |
714 | - | let cm = bt(av, az(av)) | |
715 | - | let cn = cm._1 | |
716 | - | let bA = cm._2 | |
717 | - | $Tuple2(nil, bA) | |
718 | - | } | |
719 | - | ||
720 | - | ||
721 | - | ||
722 | - | @Callable(bB) | |
723 | - | func updateCallerContract (bE) = { | |
724 | - | let bD = if (bc(bB.caller)) | |
725 | - | then bf() | |
964 | + | @Callable(cz) | |
965 | + | func increaseUnitsSupply (dx,dy) = { | |
966 | + | let cB = if (if (if (if (bT()) | |
967 | + | then bU() | |
968 | + | else false) | |
969 | + | then Y(dx, 0, O, "increaseUnitsSupply: invalid amountForLP") | |
970 | + | else false) | |
971 | + | then Y(dy, 0, O, "increaseUnitsSupply: invalid amountForReferal") | |
972 | + | else false) | |
973 | + | then ac(toBigInt(height), (bd() + R), (bf() - R), "increaseUnitsSupply: drop not active") | |
726 | 974 | else false | |
727 | - | if ((bD == bD)) | |
728 | - | then $Tuple2(ar(bE), unit) | |
975 | + | if ((cB == cB)) | |
976 | + | then { | |
977 | + | let dC = (bz() + toBigInt(dx)) | |
978 | + | let dD = (bB() + toBigInt(dy)) | |
979 | + | let dq = if (((dC + dD) > toBigInt(assetBalance(this, bb())))) | |
980 | + | then throw("increaseUnitsSupply: insufficient funds") | |
981 | + | else true | |
982 | + | if ((dq == dq)) | |
983 | + | then $Tuple2((bA(dC) ++ bC(dD)), unit) | |
984 | + | else throw("Strict value is not equal to itself.") | |
985 | + | } | |
729 | 986 | else throw("Strict value is not equal to itself.") | |
730 | 987 | } | |
731 | 988 | ||
732 | 989 | ||
733 | 990 | ||
734 | - | @Callable(bB) | |
735 | - | func pause () = { | |
736 | - | let bD = if (if (bi(bB.caller)) | |
737 | - | then bf() | |
738 | - | else false) | |
739 | - | then bg() | |
991 | + | @Callable(cz) | |
992 | + | func checkpoint (aK) = { | |
993 | + | let dE = cn(aK, aO(aK), aR(aK)) | |
994 | + | let dF = dE._1 | |
995 | + | let cO = dE._2 | |
996 | + | let cy = dE._3 | |
997 | + | $Tuple2(dF, $Tuple2(cO, cy)) | |
998 | + | } | |
999 | + | ||
1000 | + | ||
1001 | + | ||
1002 | + | @Callable(cz) | |
1003 | + | func getUnits (aK) = { | |
1004 | + | let dG = cn(aK, aO(aK), aR(aK)) | |
1005 | + | let dF = dG._1 | |
1006 | + | let cO = dG._2 | |
1007 | + | let cy = dG._3 | |
1008 | + | $Tuple2(nil, $Tuple2(cO, cy)) | |
1009 | + | } | |
1010 | + | ||
1011 | + | ||
1012 | + | ||
1013 | + | @Callable(cz) | |
1014 | + | func setReferer (bN,U) = { | |
1015 | + | let cB = if (bX(cz.caller)) | |
1016 | + | then bT() | |
740 | 1017 | else false | |
741 | - | if (( | |
742 | - | then $Tuple2( | |
1018 | + | if ((cB == cB)) | |
1019 | + | then $Tuple2(bO(bN, U), unit) | |
743 | 1020 | else throw("Strict value is not equal to itself.") | |
744 | 1021 | } | |
745 | 1022 | ||
746 | 1023 | ||
747 | 1024 | ||
748 | - | @Callable( | |
749 | - | func | |
750 | - | let | |
751 | - | then | |
1025 | + | @Callable(cz) | |
1026 | + | func setManager (bL) = { | |
1027 | + | let cB = if (if (bQ(cz.caller)) | |
1028 | + | then bT() | |
752 | 1029 | else false) | |
753 | - | then | |
1030 | + | then T(bL, "setManager: invalid manager") | |
754 | 1031 | else false | |
755 | - | if (( | |
756 | - | then $Tuple2( | |
1032 | + | if ((cB == cB)) | |
1033 | + | then $Tuple2(bK(addressFromStringValue(bL)), unit) | |
757 | 1034 | else throw("Strict value is not equal to itself.") | |
758 | 1035 | } | |
759 | 1036 | ||
760 | 1037 | ||
761 | 1038 | ||
762 | - | @Callable(bB) | |
763 | - | func updatePauser (ag) = { | |
764 | - | let bD = if (if (bc(bB.caller)) | |
765 | - | then bf() | |
766 | - | else false) | |
767 | - | then H(ag, "updatePauser: invalid pauser") | |
1039 | + | @Callable(cz) | |
1040 | + | func updateCallerContract (cC) = { | |
1041 | + | let cB = if (bQ(cz.caller)) | |
1042 | + | then bT() | |
768 | 1043 | else false | |
769 | - | if (( | |
770 | - | then $Tuple2( | |
1044 | + | if ((cB == cB)) | |
1045 | + | then $Tuple2(aG(cC), unit) | |
771 | 1046 | else throw("Strict value is not equal to itself.") | |
772 | 1047 | } | |
773 | 1048 | ||
774 | 1049 | ||
775 | 1050 | ||
776 | - | @Callable(bB) | |
777 | - | func setMultisig (aj) = { | |
778 | - | let bD = if (bc(bB.caller)) | |
779 | - | then H(aj, "setMultisig: invalid multisig") | |
1051 | + | @Callable(cz) | |
1052 | + | func pause () = { | |
1053 | + | let cB = if (if (bW(cz.caller)) | |
1054 | + | then bT() | |
1055 | + | else false) | |
1056 | + | then bU() | |
780 | 1057 | else false | |
781 | - | if (( | |
782 | - | then $Tuple2( | |
1058 | + | if ((cB == cB)) | |
1059 | + | then $Tuple2(ar(true), unit) | |
783 | 1060 | else throw("Strict value is not equal to itself.") | |
784 | 1061 | } | |
785 | 1062 | ||
786 | 1063 | ||
787 | - | @Verifier(co) | |
788 | - | func cp () = { | |
789 | - | let K = getString(c) | |
790 | - | if ($isInstanceOf(K, "String")) | |
1064 | + | ||
1065 | + | @Callable(cz) | |
1066 | + | func unpause () = { | |
1067 | + | let cB = if (if (bW(cz.caller)) | |
1068 | + | then bT() | |
1069 | + | else false) | |
1070 | + | then bV() | |
1071 | + | else false | |
1072 | + | if ((cB == cB)) | |
1073 | + | then $Tuple2(ar(false), unit) | |
1074 | + | else throw("Strict value is not equal to itself.") | |
1075 | + | } | |
1076 | + | ||
1077 | + | ||
1078 | + | ||
1079 | + | @Callable(cz) | |
1080 | + | func updatePauser (av) = { | |
1081 | + | let cB = if (if (bQ(cz.caller)) | |
1082 | + | then bT() | |
1083 | + | else false) | |
1084 | + | then T(av, "updatePauser: invalid pauser") | |
1085 | + | else false | |
1086 | + | if ((cB == cB)) | |
1087 | + | then $Tuple2(au(addressFromStringValue(av)), unit) | |
1088 | + | else throw("Strict value is not equal to itself.") | |
1089 | + | } | |
1090 | + | ||
1091 | + | ||
1092 | + | ||
1093 | + | @Callable(cz) | |
1094 | + | func setMultisig (ay) = { | |
1095 | + | let cB = if (bQ(cz.caller)) | |
1096 | + | then T(ay, "setMultisig: invalid multisig") | |
1097 | + | else false | |
1098 | + | if ((cB == cB)) | |
1099 | + | then $Tuple2(ax(addressFromStringValue(ay)), unit) | |
1100 | + | else throw("Strict value is not equal to itself.") | |
1101 | + | } | |
1102 | + | ||
1103 | + | ||
1104 | + | @Verifier(dH) | |
1105 | + | func dI () = { | |
1106 | + | let W = getString(c) | |
1107 | + | if ($isInstanceOf(W, "String")) | |
791 | 1108 | then { | |
792 | - | let | |
793 | - | valueOrElse(getBoolean(addressFromStringValue( | |
1109 | + | let dJ = W | |
1110 | + | valueOrElse(getBoolean(addressFromStringValue(dJ), makeString([d, toString(this), toBase58String(dH.id)], a)), false) | |
794 | 1111 | } | |
795 | - | else sigVerify( | |
1112 | + | else sigVerify(dH.bodyBytes, dH.proofs[0], dH.senderPublicKey) | |
796 | 1113 | } | |
797 | 1114 |
github/deemru/w8io/c3f4982 777.40 ms ◑