tx · C8LccekTEpZcFWNcUGip8cbgLtFFpdbFwzutUUSzMwzB

3MsHk4t1vpYbvsDWWwj2cm8gqG7GERaviUF:  -0.06000000 Waves

2024.01.12 12:14 [2928101] smart account 3MsHk4t1vpYbvsDWWwj2cm8gqG7GERaviUF > SELF 0.00000000 Waves

{ "type": 13, "id": "C8LccekTEpZcFWNcUGip8cbgLtFFpdbFwzutUUSzMwzB", "fee": 6000000, "feeAssetId": null, "timestamp": 1705050848390, "version": 2, "chainId": 84, "sender": "3MsHk4t1vpYbvsDWWwj2cm8gqG7GERaviUF", "senderPublicKey": "6sLckkgqPVBTaF1VsERJTmHJVcTFKGxiB1vwY6hUC2T7", "proofs": [ "3guJiRE4rfXyaYR32dofvjXUDSdyRAy5a188JCqCSxGVxLG6whPHJGPhTDvQCxxs1BbHgUpVwB4qCYm79smL5Qv1" ], "script": "base64:BgKMAQgCEhAKDhgYAQEICAEBAQEBCAEIEgMKAQESAwoBARIAEgQKAggBEgQKAggBEgMKAQESBAoCCAESAwoBARIECgIIARIFCgMICAESAwoBCBIAEgASAwoBCBIAEgMKAQESAwoBCBIDCgEIEgQKAgEBEgYKBAEBAQESABIAEgASAwoBCBIECgIIARIDCgEIfwADU0VQAgJfXwAFV0FWRVMCBXdhdmVzAAdNQVhfSU5UAP//////////fwAHTUFYX0ZFRQDAhD0ADU1BWF9BTVBMSUZJRVIAwIQ9ABRNQVhfV0VJR0hUX0FNUExJRklFUgDAhD0ACk1BWF9XRUlHSFQAwIQ9AA9GRUVfUkFURV9GQUNUT1IAwIQ9AAtSQVRFX0ZBQ1RPUgDAhD0ADlBFUkNFTlRfRkFDVE9SCQC2AgEAgICQu7rWrfANABdESVNCQWxBTkNFX0NPRUZGX0ZBQ1RPUgkAtgIBAICglKWNHQAQWkVST19JTlRfTElTVF8xMAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAkAzAgCAAAFA25pbAAQWkVST19JTlRfTElTVF8xMQkAzQgCBRBaRVJPX0lOVF9MSVNUXzEwAAAACklOREVYX0xJU1QJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJBQNuaWwAC1pFUk9fQklHSU5UCQC2AgEAAAATWkVST19CSUdJTlRfTElTVF8xMQkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAkAzAgCBQtaRVJPX0JJR0lOVAUDbmlsAAxJTlRfREVDSU1BTFMACAAPQklHSU5UX0RFQ0lNQUxTABIAB0xJU1RfNjQJAL0JAgJ/MF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMF8wXzBfMAIBXwAMS0VZX01VTFRJU0lHAghNVUxUSVNJRwAKS0VZX1NUQVRVUwIGU1RBVFVTAApLRVlfUEFVU0VEAgZQQVVTRUQACktFWV9QQVVTRVICBlBBVVNFUgALS0VZX1NUT1JBR0UCB1NUT1JBR0UACktFWV9BU1NFVFMCBkFTU0VUUwASS0VZX0FTU0VUX0JBTEFOQ0VTAg5BU1NFVF9CQUxBTkNFUwATS0VZX1JFV0FSRF9CQUxBTkNFUwIPUkVXQVJEX0JBTEFOQ0VTABFLRVlfQVNTRVRfV0VJR0hUUwINQVNTRVRfV0VJR0hUUwAKS0VZX0xQX0ZFRQIGTFBfRkVFABBLRVlfUFJPVE9DT0xfRkVFAgxQUk9UT0NPTF9GRUUADUtFWV9QUkVDSVNJT04CCVBSRUNJU0lPTgAUS0VZX1NJR01BX0ZFRV9QRVJfTFACEFNJR01BX0ZFRV9QRVJfTFAAGUtFWV9VU0VSX1NJR01BX0ZFRV9QRVJfTFACFVVTRVJfU0lHTUFfRkVFX1BFUl9MUAALS0VZX1VTRVJfTFACB1VTRVJfTFAADEtFWV9UT1RBTF9MUAIIVE9UQUxfTFAAEEtFWV9VU0VSX1BST0ZJVFMCDFVTRVJfUFJPRklUUwAMS0VZX1dBVENIRE9HAghXQVRDSERPRwATS0VZX1dBVENIRE9HX09GRlNFVAIPV0FUQ0hET0dfT0ZGU0VUABNLRVlfV0FUQ0hET0dfSEVJR0hUAg9XQVRDSERPR19IRUlHSFQBEF92YWxpZGF0ZUFkZHJlc3MCCGFkZHJlc3NfBGVycl8EByRtYXRjaDAJAKYIAQUIYWRkcmVzc18DCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYJAAIBBQRlcnJfAQ5fdmFsaWRhdGVBc3NldAIIYXNzZXRJZF8EZXJyXwMJAAACBQhhc3NldElkXwUFV0FWRVMGBAckbWF0Y2gwCQDsBwEJANkEAQUIYXNzZXRJZF8DCQABAgUHJG1hdGNoMAIFQXNzZXQEAWEFByRtYXRjaDAGCQACAQUEZXJyXwEMX3ZhbGlkYXRlSW50BAR2YWxfDmxvd2VyQm91bmRhcnlfDnVwcGVyQm91bmRhcnlfBGVycl8DAwkAZgIFDmxvd2VyQm91bmRhcnlfBQR2YWxfBgkAZgIFBHZhbF8FDnVwcGVyQm91bmRhcnlfCQACAQUEZXJyXwYBDV92YWxpZGF0ZUJvb2wDBHZhbF8HdGFyZ2V0XwRlcnJfAwkBAiE9AgUEdmFsXwUHdGFyZ2V0XwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARRfdmFsaWRhdGVTdHJpbmdOb3RFcQMFdmFsMV8FdmFsMl8EZXJyXwMJAAACBQV2YWwxXwUFdmFsMl8JAAIBBQRlcnJfBgEQX3ZhbGlkYXRlSW50TGlzdAQEdmFsXw5sb3dlckJvdW5kYXJ5Xw51cHBlckJvdW5kYXJ5XwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAckbWF0Y2gwCQC2CQEFBGVsZW0DCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwAwUDYWNjCQEMX3ZhbGlkYXRlSW50BAUBYQUObG93ZXJCb3VuZGFyeV8FDnVwcGVyQm91bmRhcnlfBQRlcnJfBwkAAgEFBGVycl8KAAIkbAUEdmFsXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAGCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEPX3ZhbGlkYXRlQXNzZXRzAgdhc3NldHNfBGVycl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0DBQNhY2MJAQ5fdmFsaWRhdGVBc3NldAIFBGVsZW0FBGVycl8HCgACJGwFB2Fzc2V0c18KAAIkcwkAkAMBBQIkbAoABSRhY2MwBgoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEl92YWxpZGF0ZUludEVxdWFscwMFdmFsMV8FdmFsMl8EZXJyXwMJAQIhPQIFBXZhbDFfBQV2YWwyXwkAAgEFBGVycl8GARJfdmFsaWRhdGVUb2tlbk5hbWUCBHZhbF8EZXJyXwMDCQBmAgAECQCxAgEFBHZhbF8GCQBmAgkAsQIBBQR2YWxfABAJAAIBBQRlcnJfBgETX3ZhbGlkYXRlVG9rZW5EZXNjcgIEdmFsXwRlcnJfAwkAZgIJALECAQUEdmFsXwDoBwkAAgEFBGVycl8GARFfdmFsaWRhdGVEZWNpbWFscwIEdmFsXwRlcnJfAwMJAGYCAAAFBHZhbF8GCQBmAgUEdmFsXwAICQACAQUEZXJyXwYBEF92YWxpZGF0ZVBheW1lbnQECHBheW1lbnRfCGFzc2V0SWRfD3JlcXVpcmVkQW1vdW50XwRlcnJfBAckbWF0Y2gwCAUIcGF5bWVudF8HYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFhBQckbWF0Y2gwAwkBAiE9AgUIYXNzZXRJZF8JANgEAQUBYQkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAMJAGYCBQ9yZXF1aXJlZEFtb3VudF8IBQhwYXltZW50XwZhbW91bnQJAAIBCQCsAgIFBGVycl8CCDogYW1vdW50BgkAAgEJAKwCAgUEZXJyXwIHOiBhc3NldAEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwVsaXN0XwR2YWxfBGVycl8DCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBQVsaXN0XwUEdmFsXwkAAgEFBGVycl8GAQtfYXNzZXRUb1N0cgEGYXNzZXRfBAckbWF0Y2gwBQZhc3NldF8DCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYQUHJG1hdGNoMAkA2AQBBQFhBQVXQVZFUwELX3N0clRvQXNzZXQBBmFzc2V0XwMDCQAAAgUGYXNzZXRfBQVXQVZFUwYJAAACBQZhc3NldF8CAAUEdW5pdAkA2QQBBQZhc3NldF8BCl9sb2FkUGF1c2UABAckbWF0Y2gwCQCgCAEFCktFWV9QQVVTRUQDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQBYQUHJG1hdGNoMAUBYQcBCl9zYXZlUGF1c2UBCWlzUGF1c2VkXwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUKS0VZX1BBVVNFRAUJaXNQYXVzZWRfBQNuaWwBC19sb2FkUGF1c2VyAAQHJG1hdGNoMAkAoggBBQpLRVlfUEFVU0VSAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABC19zYXZlUGF1c2VyAQdwYXVzZXJfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9QQVVTRVIJAKUIAQUHcGF1c2VyXwUDbmlsAQ1fbG9hZE11bHRpc2lnAAQHJG1hdGNoMAkAoggBBQxLRVlfTVVMVElTSUcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFhCQEHQWRkcmVzcwEBAAENX3NhdmVNdWx0aXNpZwEJbXVsdGlzaWdfCQDMCAIJAQtTdHJpbmdFbnRyeQIFDEtFWV9NVUxUSVNJRwkApQgBBQltdWx0aXNpZ18FA25pbAEMX2xvYWRTdG9yYWdlAAQHJG1hdGNoMAkAoggBBQtLRVlfU1RPUkFHRQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAEBnN0cnVjdAkAtQkCBQFhBQNTRVAJAJwKCgkA2QQBCQCRAwIFBnN0cnVjdAAACQAAAgkAkQMCBQZzdHJ1Y3QAAQIBMQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUGc3RydWN0AAYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQZzdHJ1Y3QABwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBnN0cnVjdAAICQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBnN0cnVjdAAJCQCcCgoBAAcAAAAAAAAAAAAAAAAAAAkBB0FkZHJlc3MBAQABDF9zYXZlU3RvcmFnZQEIc3RvcmFnZV8JAMwIAgkBC1N0cmluZ0VudHJ5AgULS0VZX1NUT1JBR0UJALkJAgkAzAgCCQDYBAEIBQhzdG9yYWdlXwJfMQkAzAgCAwgFCHN0b3JhZ2VfAl8yAgExAgEwCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl8zCQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl80CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl81CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl82CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl83CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl84CQDMCAIJAKQDAQgFCHN0b3JhZ2VfAl85CQDMCAIJAKUIAQgFCHN0b3JhZ2VfA18xMAUDbmlsBQNTRVAFA25pbAELX2xvYWRBc3NldHMABAckbWF0Y2gwCQCiCAEFCktFWV9BU1NFVFMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAZgIJALECAQUBYQAACQC9CQIFAWEFA1NFUAUDbmlsBQNuaWwBC19zYXZlQXNzZXRzAQdhc3NldHNfCQDMCAIJAQtTdHJpbmdFbnRyeQIFCktFWV9BU1NFVFMJALsJAgUHYXNzZXRzXwUDU0VQBQNuaWwBEl9sb2FkQXNzZXRCYWxhbmNlcwAKAQhmb2xkRnVuYwIDYWNjBGVsZW0EB2JhbGFuY2UJAQ1wYXJzZUludFZhbHVlAQUEZWxlbQkAlAoCCQDNCAIIBQNhY2MCXzEFB2JhbGFuY2UJAGQCCAUD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BGVsZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkAuQkCCQDMCAIFEEtFWV9VU0VSX1BST0ZJVFMJAMwIAgkApQgBBQV1c2VyXwUDbmlsBQNTRVAJALsJAgoAAiRsBQR2YWxfCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTEJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALBQNTRVAFA25pbAENX2xvYWRXYXRjaGRvZwAEByRtYXRjaDAJAKIIAQUMS0VZX1dBVENIRE9HAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAkBEUBleHRyTmF0aXZlKDEwNjIpAQUBYQkBB0FkZHJlc3MBAQABDV9zYXZlV2F0Y2hkb2cBCXdhdGNoZG9nXwkAzAgCCQELU3RyaW5nRW50cnkCBQxLRVlfV0FUQ0hET0cJAKUIAQUJd2F0Y2hkb2dfBQNuaWwBE19sb2FkV2F0Y2hkb2dPZmZzZXQABAckbWF0Y2gwCQCfCAEFE0tFWV9XQVRDSERPR19PRkZTRVQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABE19zYXZlV2F0Y2hkb2dPZmZzZXQBB29mZnNldF8JAMwIAgkBDEludGVnZXJFbnRyeQIFE0tFWV9XQVRDSERPR19PRkZTRVQFB29mZnNldF8FA25pbAERX29ubHlUaGlzQ29udHJhY3QBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfBQR0aGlzCQACAQIZX29ubHlUaGlzQ29udHJhY3Q6IHJldmVydAYBEF93aGVuTXVsdGlzaWdTZXQAAwkAAAIJAQ1fbG9hZE11bHRpc2lnAAkBB0FkZHJlc3MBAQAJAAIBAhhfd2hlbk11bHRpc2lnU2V0OiByZXZlcnQGARNfd2hlbk5vdEluaXRpYWxpemVkAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQADCQECIT0CCAUHc3RvcmFnZQJfMQEACQACAQIbX3doZW5Ob3RJbml0aWFsaXplZDogcmV2ZXJ0BgEQX3doZW5Jbml0aWFsaXplZAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UAAwkAAAIIBQdzdG9yYWdlAl8xAQAJAAIBAhhfd2hlbkluaXRpYWxpemVkOiByZXZlcnQGAQ5fd2hlbk5vdFBhdXNlZAADCQEKX2xvYWRQYXVzZQAJAAIBAhZfd2hlbk5vdFBhdXNlZDogcmV2ZXJ0BgELX3doZW5QYXVzZWQAAwkBASEBCQEKX2xvYWRQYXVzZQAJAAIBAhNfd2hlblBhdXNlZDogcmV2ZXJ0BgELX29ubHlQYXVzZXIBB2NhbGxlcl8DCQECIT0CBQdjYWxsZXJfCQELX2xvYWRQYXVzZXIACQACAQITX29ubHlQYXVzZXI6IHJldmVydAYBDl9jaGVja1dhdGNoZG9nAAQCd2QEByRtYXRjaDAJAJoIAgkBDV9sb2FkV2F0Y2hkb2cABRNLRVlfV0FUQ0hET0dfSEVJR0hUAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAkAZAIFAWEJARNfbG9hZFdhdGNoZG9nT2Zmc2V0AAAAAwkAZgIFBmhlaWdodAUCd2QJAAIBAhZfY2hlY2tXYXRjaGRvZzogcmV2ZXJ0BgEMX2dldERlY2ltYWxzAQhhc3NldElkXwQHJG1hdGNoMAkA7AcBCQDZBAEFCGFzc2V0SWRfAwkAAQIFByRtYXRjaDACBUFzc2V0BAFhBQckbWF0Y2gwCAUBYQhkZWNpbWFscwkAAgEJAKwCAgIXX2dldERlY2ltYWxzOiBubyBhc3NldD0FCGFzc2V0SWRfARJfbm9ybWFsaXplRGVjaW1hbHMEB2Ftb3VudF8Pc291cmNlRGVjaW1hbHNfD3RhcmdldERlY2ltYWxzXwZyb3VuZF8DCQBnAgUPc291cmNlRGVjaW1hbHNfBQ90YXJnZXREZWNpbWFsc18JAG4EBQdhbW91bnRfAAEJAGwGAAoAAAkAZQIFD3NvdXJjZURl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AwIFCGFtb3VudHNfBQVpbmRleAQKbmV3QmFsYW5jZQkAZAIFBGVsZW0FBmFtb3VudAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBQpuZXdCYWxhbmNlCQBkAggFA2FjYwJfMwUKbmV3QmFsYW5jZQQGcmVzdWx0CgACJGwFCWJhbGFuY2VzXwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwAABQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAggFBnJlc3VsdAJfMggFBnJlc3VsdAJfMwEcX2luY3JlbWVudEJhbGFuY2VzQnlQYXltZW50cwUJYmFsYW5jZXNfCXBheW1lbnRzXwdhc3NldHNfCWRlY2ltYWxzXwRlcnJfCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQHcGF5bWVudAkAkQMCBQlwYXltZW50c18FBWluZGV4BA9wYXltZW50QXNzZXRTdHIJAQtfYXNzZXRUb1N0cgEIBQdwYXltZW50B2Fzc2V0SWQEA2VycgMJAQIhPQIFD3BheW1lbnRBc3NldFN0cgkAkQMCBQdhc3NldHNfBQVpbmRleAkAAgEJAKwCAgkArAICBQRlcnJfAgg6IGluZGV4PQkApAMBBQVpbmRleAUEdW5pdAMJAAACBQNlcnIFA2VycgQNYXNzZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFD3BheW1lbnRBc3NldFN0cgQKbmV3QmFsYW5jZQkAZAIFBGVsZW0JARJfbm9ybWFsaXplRGVjaW1hbHMECAkAkQMCBQlwYXltZW50c18FBWluZGV4BmFtb3VudAUNYXNzZXREZWNpbWFscwUJ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AgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoIBQZyZXN1bHQCXzIBEl9jYWxjdWxhdGVNaW51c0ZlZQUIYmFsYW5jZV8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8ECXRocmVzaG9sZAkAawMFDGVxdWlsaWJyaXVtXwkAZQIFFE1BWF9XRUlHSFRfQU1QTElGSUVSBRB3ZWlnaHRBbXBsaWZpZXJfBRRNQVhfV0VJR0hUX0FNUExJRklFUgMJAGYCBQhiYWxhbmNlXwUJdGhyZXNob2xkAAAJAKADAQkAvQIECQC8AgMJALYCAQUJbHBBbW91bnRfCQC2AgEFEGRpc2JhbGFuY2VDb2VmZl8FF0RJU0JBbEFOQ0VfQ09FRkZfRkFDVE9SCQC2AgEJAGUCBQl0aHJlc2hvbGQFCGJhbGFuY2VfCQC2AgEFCXRocmVzaG9sZAUHQ0VJTElORwEXX2NhbGN1bGF0ZU1pbnVzRmVlRGVsdGEGDmJhbGFuY2VCZWZvcmVfDWJhbGFuY2VBZnRlcl8MZXF1aWxpYnJpdW1fCWxwQW1vdW50XxB3ZWlnaHRBbXBsaWZpZXJfEGRpc2JhbGFuY2VDb2VmZl8DCQBmAgUNYmFsYW5jZUFmdGVyXwUOYmFsYW5jZUJlZm9yZV8AAAkAZQIJARJfY2FsY3VsYXRlTWludXNGZWUFBQ1iYWxhbmNlQWZ0ZXJfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwkBEl9jYWxjdWxhdGVNaW51c0ZlZQUFDmJhbGFuY2VCZWZvcmVfBQxlcXVpbGlicml1bV8FCWxwQW1vdW50XwUQd2VpZ2h0QW1wbGlmaWVyXwUQZGlzYmFsYW5jZUNvZWZmXwERX2NhbGN1bGF0ZVBsdXNGZWUECGJhbGFuY2VfDGVxdWlsaWJyaXVtXw5yZXdhcmRCYWxhbmNlXxB3ZWlnaHRBbXBsaWZpZXJfBAl0aHJlc2hvbGQJAGsDBQxlcXVpbGlicml1bV8JAGUCBRRNQVhfV0VJR0hUX0FNUExJRklFUgUQd2VpZ2h0QW1wbGlmaWVyXwUUTUFYX1dFSUdIVF9BTVBMSUZJRVIEEGRpc2JhbGFuY2VSZXdhcmQJAGsDBQ5yZXdhcmRCYWxhbmNlXwUJdGhyZXNob2xkBQxlcXVpbGlicml1bV8DCQBmAgUIYmFsYW5jZV8FCXRocmVzaG9sZAUQZGlzYmFsYW5jZVJld2FyZAkAbgQFEGRpc2JhbGFuY2VSZXdhcmQFCGJhbGFuY2VfBQl0aHJlc2hvbGQFBUZMT09SARZfY2FsY3VsYXRlUGx1c0ZlZURlbHRhBQ5iYWxhbmNlQmVmb3JlXw1iYWxhbmNlQWZ0ZXJfDGVxdWlsaWJyaXVtXw5yZXdhcmRCYWxhbmNlXxB3ZWlnaHRBbXBsaWZpZXJfAwkAZgIFDmJhbGFuY2VCZWZvcmVfBQ1iYWxhbmNlQWZ0ZXJfAAAJAGUCCQERX2NhbGN1bGF0ZVBsdXNGZWUEBQ1iYWxhbmNlQWZ0ZXJfBQxlcXVpbGlicml1bV8FDnJld2FyZEJhbGFuY2VfBRB3ZWlnaHRBbXBsaWZpZXJfCQERX2NhbGN1bGF0ZVBsdXNGZWUEBQ5iYWxhbmNlQmVmb3JlXwUMZXF1aWxpYnJpdW1fBQ5yZXdhcmRCYWxhbmNlXwUQd2VpZ2h0QW1wbGlmaWVyXwEQX2ZlZUNvbXBlbnNhdGlvbgIOcmV3YXJkQmFsYW5jZV8EZmVlXwMJAGYCBQRmZWVfBQ5yZXdhcmRCYWxhbmNlXwUOcmV3YXJkQmFsYW5jZV8FBGZlZV8BE192YWxpZGF0ZUFsbG9jYXRpb24CDmFzc2V0QmFsYW5jZXNfD3Jld2FyZEJhbGFuY2VzXwQIbWF4SW5kZXgJAJADAQUOYXNzZXRCYWxhbmNlc18KAQhmb2xkRnVuYwIDYWNjBWluZGV4AwkAZwIFBWluZGV4BQhtYXhJbmRleAUDYWNjAwkAZgIAAAkAkQMCBQ5hc3NldEJhbGFuY2VzXwUFaW5kZXgJAAIBAitfdmFsaWRhdGVBbGxvY2F0aW9uOiBuZWdhdGl2ZSBhc3NldEJhbGFuY2VzAwkAZgIAAAkAkQMCBQ9yZXdhcmRCYWxhbmNlc18FBWluZGV4CQACAQIsX3ZhbGlkYXRlQWxsb2NhdGlvbjogbmVnYXRpdmUgcmV3YXJkQmFsYW5jZXMFA2FjYwoAAiRsBQpJTkRFWF9MSVNUCgACJHMJAJADAQUCJGwKAAUkYWNjMAYKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQtfY2hlY2twb2ludAEFdXNlcl8EBnVzZXJMcAkBC19sb2FkVXNlckxwAQUFdXNlcl8EC3VzZXJQcm9maXRzCQEQX2xvYWRVc2VyUHJvZml0cwEFBXVzZXJfBA1zaWdtYUZlZVBlckxwCQESX2xvYWRTaWdtYUZlZVBlckxwAAQRdXNlclNpZ21hRmVlUGVyTHAJARZfbG9hZFVzZXJTaWdtYUZlZVBlckxwAQUFdXNlcl8KAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBA1wcm9maXRVcGRhdGVkCQBkAgkAkQMCBQt1c2VyUHJvZml0cwUFaW5kZXgJAKADAQkAvAIDCQC2AgEFBnVzZXJMcAkAuAICCQCRAwIFDXNpZ21hRmVlUGVyTHAFBWluZGV4CQCRAwIFEXVzZXJTaWdtYUZlZVBlckxwBQVpbmRleAUOUEVSQ0VOVF9GQUNUT1IJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUNcHJvZml0VXBkYXRlZAQNJHQwMjI3MDAyMjc3MwoAAiRsBRBaRVJPX0lOVF9MSVNUXzExCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDExCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwQDaWR4CAUNJHQwMjI3MDAyMjc3MwJfMQQOcHJvZml0c1VwZGF0ZWQIBQ0kdDAyMjcwMDIyNzczAl8yCQCUCgIJAM4IAgkBEF9zYXZlVXNlclByb2ZpdHMCBQV1c2VyXwUOcHJvZml0c1VwZGF0ZWQJARZfc2F2ZVVzZXJTaWdtYUZlZVBlckxwAgUFdXNlcl8FDXNpZ21hRmVlUGVyTHAFDnByb2ZpdHNVcGRhdGVkARRfdXBkYXRlU2lnbWFGZWVQZXJMcAQOc2lnbWFGZWVQZXJMcF8IdG90YWxMcF8GaW5kZXhfBmxwRmVlXwoBCGZvbGRGdW5jAgNhY2MEZWxlbQQFaW5kZXgIBQNhY2MCXzEEFHNpZ21hRmVlUGVyTHBVcGRhdGVkAwkAAAIFBmluZGV4XwUFaW5kZXgJALcCAgkAkQMCBQ5zaWdtYUZlZVBlckxwXwUFaW5kZXgJALwCAwkAtgIBBQZscEZlZV8FDlBFUkNFTlRfRkFDVE9SCQC2AgEFCHRvdGFsTHBfCQCRAwIFDnNpZ21hRmVlUGVyTHBfBQVpbmRleAkAlAoCCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBRRzaWdtYUZlZVBlckxwVXBkYXRlZAQNJHQwMjM0MjMyMzUwMgoAAiRsBRBaRVJPX0lOVF9MSVNUXzExCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDExCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwQDaWR4CAUNJHQwMjM0MjMyMzUwMgJfMQQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAyMzQyMzIzNTAyAl8yBRRzaWdtYUZlZVBlckxwVXBkYXRlZAEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAthc3NldEluZGV4XwdhbW91bnRfCmxwRmVlUmF0ZV8QcHJvdG9jb2xGZWVSYXRlXwQNc2lnbWFGZWVQZXJMcAkBEl9sb2FkU2lnbWFGZWVQZXJMcAAEB3RvdGFsTHAJAQxfbG9hZFRvdGFsTHAABA0kdDAyMzcyMzIzOTk4AwkAAAIFB3RvdGFsTHAAAAkAlAoCAAAJAGsDBQdhbW91bnRfBRBwcm90b2NvbEZlZVJhdGVfBQdNQVhfRkVFCQCUCgIJAGsDBQdhbW91bnRfBQpscEZlZVJhdGVfBQdNQVhfRkVFCQBrAwUHYW1vdW50XwUQcHJvdG9jb2xGZWVSYXRlXwUHTUFYX0ZFRQQFbHBGZWUIBQ0kdDAyMzcyMzIzOTk4Al8xBAtwcm90b2NvbEZlZQgFDSR0MDIzNzIzMjM5OTgCXzIEFHNpZ21hRmVlUGVyTHBVcGRhdGVkAwkAAAIFBWxwRmVlAAAFDXNpZ21hRmVlUGVyTHAJARRfdXBkYXRlU2lnbWFGZWVQZXJMcAQFDXNpZ21hRmVlUGVyTHAFB3RvdGFsTHAFC2Fzc2V0SW5kZXhfBQVscEZlZQkAlQoDBQVscEZlZQULcHJvdG9jb2xGZWUFFHNpZ21hRmVlUGVyTHBVcGRhdGVkAQtfZGVwb3NpdEFsbAEHYW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEDSR0MDI0NDA0MjQ0NTcJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDI0NDA0MjQ0NTcCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMjQ0MDQyNDQ1NwJfMgQNJHQwMjQ0NjIyNDUzMAkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjQ0NjIyNDUzMAJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNDQ2MjI0NTMwAl8yBA0kdDAyNDUzNjI1NzY2AwkAAAIFFHByZXZBc3NldFRvdGFsU3VwcGx5AAAKAQhmb2xkRnVuYwIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBBhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQJAGsDCQCRAwIFDGFzc2V0V2VpZ2h0cwUFaW5kZXgFB2Ftb3VudF8FC3NpZ21hV2VpZ2h0CQCUCgIJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIFGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAQNJHQwMjQ5NzgyNTA1MgoAAiRsBQZhc3NldHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQDaWR4CAUNJHQwMjQ5NzgyNTA1MgJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDI0OTc4MjUwNTICXzIJAJQKAgUHYW1vdW50XwUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAQFcmF0aW8JALwCAwkAtgIBBQdhbW91bnRfBQ5QRVJDRU5UX0ZBQ1RPUgkAtgIBBRRwcmV2QXNzZXRUb3RhbFN1cHBseQoBCWZvbGRGdW5jMQIDYWNjBGVsZW0EBWluZGV4CAUDYWNjAl8xBBhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQJAKADAQkAvAIDBQVyYXRpbwkAtgIBCQCRAwIFEXByZXZBc3NldEJhbGFuY2VzBQVpbmRleAUOUEVSQ0VOVF9GQUNUT1IJAJQKAgkAZAIFBWluZGV4AAEJAM0IAggFA2FjYwJfMgUYcmVxdWlyZWRBbW91bnROb3JtYWxpemVkBA0kdDAyNTU5NTI1NjcwCgACJGwFBmFzc2V0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAABQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWZvbGRGdW5jMQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQDaWR4CAUNJHQwMjU1OTUyNTY3MAJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDI1NTk1MjU2NzACXzIJAJQKAgkAawMFB2Ftb3VudF8FDWxwVG90YWxTdXBwbHkFFHByZXZBc3NldFRvdGFsU3VwcGx5BRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkBA5scFRva2Vuc1RvTWludAgFDSR0MDI0NTM2MjU3NjYCXzEEGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQIBQ0kdDAyNDUzNjI1NzY2Al8yBA0kdDAyNTc3MjI1ODg1CQEbX2luY3JlbWVudEJhbGFuY2VzQnlBbW91bnRzAgURcHJldkFzc2V0QmFsYW5jZXMFGXJlcXVpcmVkQW1vdW50c05vcm1hbGl6ZWQEDWFzc2V0QmFsYW5jZXMIBQ0kdDAyNTc3MjI1ODg1Al8xBBBhc3NldFRvdGFsU3VwcGx5CAUNJHQwMjU3NzIyNTg4NQJfMgkAlQoDBQ5scFRva2Vuc1RvTWludAUZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAUNYXNzZXRCYWxhbmNlcwEIX2RlcG9zaXQCCGFzc2V0SWRfB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQJbHBGZWVSYXRlCAUHc3RvcmFnZQJfNAQPcHJvdG9jb2xGZWVSYXRlCAUHc3RvcmFnZQJfNQQRbWF4QWxsb2NBbXBsaWZpZXIIBQdzdG9yYWdlAl82BA93ZWlnaHRBbXBsaWZpZXIIBQdzdG9yYWdlAl83BAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEDSR0MDI2MjUxMjYzMDQJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDI2MjUxMjYzMDQCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMjYyNTEyNjMwNAJfMgQNJHQwMjYzMDkyNjM3NwkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjYzMDkyNjM3NwJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNjMwOTI2Mzc3Al8yBBJwcmV2UmV3YXJkQmFsYW5jZXMJARNfbG9hZFJld2FyZEJhbGFuY2VzAAQDZXJyAwMJAAACBRRwcmV2QXNzZXRUb3RhbFN1cHBseQAABgkAAAIFDWxwVG90YWxTdXBwbHkAAAkAAgECFF9kZXBvc2l0OiBlbXB0eSBwb29sBgMJAAACBQNlcnIFA2VycgQQc291cmNlQXNzZXRJbmRleAkBBXZhbHVlAQkAzwgCBQZhc3NldHMFCGFzc2V0SWRfBBFzb3VyY2VFcXVpbGlicml1bQkAawMFFHByZXZBc3NldFRvdGFsU3VwcGx5CQCRAwIFDGFzc2V0V2VpZ2h0cwUQc291cmNlQXNzZXRJbmRleAULc2lnbWFXZWlnaHQEE3NvdXJjZUJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEHNvdXJjZUFzc2V0SW5kZXgEE3NvdXJjZVJld2FyZEJhbGFuY2UJAJEDAgUScHJldlJld2FyZEJhbGFuY2VzBRBzb3VyY2VBc3NldEluZGV4BBJzb3VyY2VQbHVzRmVlRGVsdGEJARZfY2FsY3VsYXRlUGx1c0ZlZURlbHRhBQUTc291cmNlQmFsYW5jZUJlZm9yZQkAZAIFE3NvdXJjZUJhbGFuY2VCZWZvcmUFB2Ftb3VudF8FEXNvdXJjZUVxdWlsaWJyaXVtBRNzb3VyY2VSZXdhcmRCYWxhbmNlBQ93ZWlnaHRBbXBsaWZpZXIEDmxwVG9rZW5zVG9NaW50CQBkAgUHYW1vdW50XwUSc291cmNlUGx1c0ZlZURlbHRhBA0kdDAyNzE3NzI3MzA4CQEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAAABQ5scFRva2Vuc1RvTWludAkAaQIFCWxwRmVlUmF0ZQACCQBpAgUPcHJvdG9jb2xGZWVSYXRlAAIEBWxwRmVlCAUNJHQwMjcxNzcyNzMwOAJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAyNzE3NzI3MzA4Al8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDI3MTc3MjczMDgCXzMED2ZlZUNvbXBlbnNhdGlvbgkBEF9mZWVDb21wZW5zYXRpb24CCQBlAgUTc291cmNlUmV3YXJkQmFsYW5jZQUSc291cmNlUGx1c0ZlZURlbHRhCQBkAgUFbHBGZWUFC3Byb3RvY29sRmVlBBFuZXdSZXdhcmRCYWxhbmNlcwkBGF9kZWNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEnByZXZSZXdhcmRCYWxhbmNlcwUQc291cmNlQXNzZXRJbmRleAkAZAIFEnNvdXJjZVBsdXNGZWVEZWx0YQUPZmVlQ29tcGVuc2F0aW9uBBBuZXdBc3NldEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEHNvdXJjZUFzc2V0SW5kZXgJAGQCBQ5scFRva2Vuc1RvTWludAUPZmVlQ29tcGVuc2F0aW9uBARlcnIxCQETX3ZhbGlkYXRlQWxsb2NhdGlvbgIFEG5ld0Fzc2V0QmFsYW5jZXMFEW5ld1Jld2FyZEJhbGFuY2VzAwkAAAIFBGVycjEFBGVycjEJAJgKBgkAZAIFDmxwVG9rZW5zVG9NaW50BQ9mZWVDb21wZW5zYXRpb24FEG5ld0Fzc2V0QmFsYW5jZXMFEW5ld1Jld2FyZEJhbGFuY2VzBQVscEZlZQULcHJvdG9jb2xGZWUFFHNpZ21hRmVlUGVyTHBVcGRhdGVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxfd2l0aGRyYXdBbGwBB2Ftb3VudF8EB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQNJHQwMjc5NzYyODA0NAkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjc5NzYyODA0NAJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyNzk3NjI4MDQ0Al8yBA0kdDAyODA0OTI4MTAyCQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyODA0OTI4MTAyAl8xBAtzaWdtYVdlaWdodAgFDSR0MDI4MDQ5MjgxMDICXzIEDmxwVG9rZW5zVG9CdXJuBQdhbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQ5scFRva2Vuc1RvQnVybgAABQ1scFRvdGFsU3VwcGx5AiRfd2l0aGRyYXdBbGw6IGludmFsaWQgbHBUb2tlbnNUb0J1cm4DCQAAAgUDZXJyBQNlcnIEDSR0MDI4MjQ2MjgzNzkJARxfZGVjcmVtZW50QmFsYW5jZXNCeUxwQW1vdW50AwURcHJldkFzc2V0QmFsYW5jZXMFDmxwVG9rZW5zVG9CdXJuBQ1scFRvdGFsU3VwcGx5BA1hc3NldEJhbGFuY2VzCAUNJHQwMjgyNDYyODM3OQJfMQQQYXNzZXRUb3RhbFN1cHBseQgFDSR0MDI4MjQ2MjgzNzkCXzIEDWJhbGFuY2VzVG9QYXkIBQ0kdDAyODI0NjI4Mzc5Al8zCQCVCgMFDmxwVG9rZW5zVG9CdXJuBQ1iYWxhbmNlc1RvUGF5BQ1hc3NldEJhbGFuY2VzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQlfd2l0aGRyYXcCCGFzc2V0SWRfCWxwQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG90YWxTdXBwbHkIBQdzdG9yYWdlAl8zBAlscEZlZVJhdGUIBQdzdG9yYWdlAl80BA9wcm90b2NvbEZlZVJhdGUIBQdzdG9yYWdlAl81BBFtYXhBbGxvY0FtcGxpZmllcggFB3N0b3JhZ2UCXzYED3dlaWdodEFtcGxpZmllcggFB3N0b3JhZ2UCXzcED2Rpc2JhbGFuY2VDb2VmZggFB3N0b3JhZ2UCXzgEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQNJHQwMjg3NzMyODg0MQkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEEXByZXZBc3NldEJhbGFuY2VzCAUNJHQwMjg3NzMyODg0MQJfMQQUcHJldkFzc2V0VG90YWxTdXBwbHkIBQ0kdDAyODc3MzI4ODQxAl8yBA0kdDAyODg0NjI4ODk5CQERX2xvYWRBc3NldFdlaWdodHMABAxhc3NldFdlaWdodHMIBQ0kdDAyODg0NjI4ODk5Al8xBAtzaWdtYVdlaWdodAgFDSR0MDI4ODQ2Mjg4OTkCXzIEEnByZXZSZXdhcmRCYWxhbmNlcwkBE19sb2FkUmV3YXJkQmFsYW5jZXMABBB0YXJnZXRBc3NldEluZGV4CQEFdmFsdWUBCQDPCAIFBmFzc2V0cwUIYXNzZXRJZF8EE3RhcmdldEJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEEXRhcmdldEVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRB0YXJnZXRBc3NldEluZGV4BQtzaWdtYVdlaWdodAQTdGFyZ2V0UmV3YXJkQmFsYW5jZQkAkQMCBRJwcmV2UmV3YXJkQmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgEE3RhcmdldE1pbnVzRmVlRGVsdGEJARdfY2FsY3VsYXRlTWludXNGZWVEZWx0YQYFE3RhcmdldEJhbGFuY2VCZWZvcmUJAGUCBRN0YXJnZXRCYWxhbmNlQmVmb3JlBQlscEFtb3VudF8FEXRhcmdldEVxdWlsaWJyaXVtBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUPd2VpZ2h0QW1wbGlmaWVyBQ9kaXNiYWxhbmNlQ29lZmYEDnJld2FyZEJhbGFuY2VzCQEYX2luY3JlbWVudEJhbGFuY2VCeUluZGV4AwUScHJldlJld2FyZEJhbGFuY2VzBRB0YXJnZXRBc3NldEluZGV4BRN0YXJnZXRNaW51c0ZlZURlbHRhBA1hc3NldEJhbGFuY2VzCQEYX2RlY3JlbWVudEJhbGFuY2VCeUluZGV4AwURcHJldkFzc2V0QmFsYW5jZXMFEHRhcmdldEFzc2V0SW5kZXgFCWxwQW1vdW50XwQMdGFyZ2V0QW1vdW50CQBlAgUJbHBBbW91bnRfBRN0YXJnZXRNaW51c0ZlZURlbHRhBANlcnIJARNfdmFsaWRhdGVBbGxvY2F0aW9uAgUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMDCQAAAgUDZXJyBQNlcnIEDSR0MDI5ODg1MzAwMzMJARtfY2FsY3VsYXRlTHBBbmRQcm90b2NvbEZlZXMECQBkAgUQdGFyZ2V0QXNzZXRJbmRleAABBQx0YXJnZXRBbW91bnQJAGkCBQlscEZlZVJhdGUAAgkAaQIFD3Byb3RvY29sRmVlUmF0ZQACBAVscEZlZQgFDSR0MDI5ODg1MzAwMzMCXzEEC3Byb3RvY29sRmVlCAUNJHQwMjk4ODUzMDAzMwJfMgQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDAyOTg4NTMwMDMzAl8zCQCYCgYFDHRhcmdldEFtb3VudAUNYXNzZXRCYWxhbmNlcwUOcmV3YXJkQmFsYW5jZXMFBWxwRmVlBQtwcm90b2NvbEZlZQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BBV9zd2FwAxFzb3VyY2VBc3NldEluZGV4XxF0YXJnZXRBc3NldEluZGV4Xw1zb3VyY2VBbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA1scFRvdGFsU3VwcGx5CAUHc3RvcmFnZQJfMwQJbHBGZWVSYXRlCAUHc3RvcmFnZQJfNAQPcHJvdG9jb2xGZWVSYXRlCAUHc3RvcmFnZQJfNQQRbWF4QWxsb2NBbXBsaWZpZXIIBQdzdG9yYWdlAl82BA93ZWlnaHRBbXBsaWZpZXIIBQdzdG9yYWdlAl83BA9kaXNiYWxhbmNlQ29lZmYIBQdzdG9yYWdlAl84BA0kdDAzMDU2MDMwNjI4CQESX2xvYWRBc3NldEJhbGFuY2VzAAQRcHJldkFzc2V0QmFsYW5jZXMIBQ0kdDAzMDU2MDMwNjI4Al8xBBRwcmV2QXNzZXRUb3RhbFN1cHBseQgFDSR0MDMwNTYwMzA2MjgCXzIEDSR0MDMwNjMzMzA2ODYJARFfbG9hZEFzc2V0V2VpZ2h0cwAEDGFzc2V0V2VpZ2h0cwgFDSR0MDMwNjMzMzA2ODYCXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMzA2MzMzMDY4NgJfMgQScHJldlJld2FyZEJhbGFuY2VzCQETX2xvYWRSZXdhcmRCYWxhbmNlcwAEEXNvdXJjZUVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRFzb3VyY2VBc3NldEluZGV4XwULc2lnbWFXZWlnaHQEE3NvdXJjZUJhbGFuY2VCZWZvcmUJAJEDAgURcHJldkFzc2V0QmFsYW5jZXMFEXNvdXJjZUFzc2V0SW5kZXhfBBNzb3VyY2VSZXdhcmRCYWxhbmNlCQCRAwIFEnByZXZSZXdhcmRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8EEnNvdXJjZVBsdXNGZWVEZWx0YQkBFl9jYWxjdWxhdGVQbHVzRmVlRGVsdGEFBRNzb3VyY2VCYWxhbmNlQmVmb3JlCQBkAgUTc291cmNlQmFsYW5jZUJlZm9yZQUNc291cmNlQW1vdW50XwURc291cmNlRXF1aWxpYnJpdW0FE3NvdXJjZVJld2FyZEJhbGFuY2UFD3dlaWdodEFtcGxpZmllcgQTdGFyZ2V0QmFsYW5jZUJlZm9yZQkAkQMCBRFwcmV2QXNzZXRCYWxhbmNlcwURdGFyZ2V0QXNzZXRJbmRleF8EEXRhcmdldEVxdWlsaWJyaXVtCQBrAwUUcHJldkFzc2V0VG90YWxTdXBwbHkJAJEDAgUMYXNzZXRXZWlnaHRzBRF0YXJnZXRBc3NldEluZGV4XwULc2lnbWFXZWlnaHQEE3RhcmdldFJld2FyZEJhbGFuY2UJAJEDAgUScHJldlJld2FyZEJhbGFuY2VzBRF0YXJnZXRBc3NldEluZGV4XwQTdGFyZ2V0TWludXNGZWVEZWx0YQkBF19jYWxjdWxhdGVNaW51c0ZlZURlbHRhBgUTdGFyZ2V0QmFsYW5jZUJlZm9yZQkAZQIFE3RhcmdldEJhbGFuY2VCZWZvcmUFDXNvdXJjZUFtb3VudF8FEXRhcmdldEVxdWlsaWJyaXVtBRRwcmV2QXNzZXRUb3RhbFN1cHBseQUPd2VpZ2h0QW1wbGlmaWVyBQ9kaXNiYWxhbmNlQ29lZmYEEnRlbXBSZXdhcmRCYWxhbmNlcwkBGF9kZWNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEnByZXZSZXdhcmRCYWxhbmNlcwURc291cmNlQXNzZXRJbmRleF8FEnNvdXJjZVBsdXNGZWVEZWx0YQQRbmV3UmV3YXJkQmFsYW5jZXMJARhfaW5jcmVtZW50QmFsYW5jZUJ5SW5kZXgDBRJ0ZW1wUmV3YXJkQmFsYW5jZXMFEXRhcmdldEFzc2V0SW5kZXhfBRN0YXJnZXRNaW51c0ZlZURlbHRhBBF0ZW1wQXNzZXRCYWxhbmNlcwkBGF9pbmNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEXByZXZBc3NldEJhbGFuY2VzBRFzb3VyY2VBc3NldEluZGV4XwkAZAIFDXNvdXJjZUFtb3VudF8FEnNvdXJjZVBsdXNGZWVEZWx0YQQQbmV3QXNzZXRCYWxhbmNlcwkBGF9kZWNyZW1lbnRCYWxhbmNlQnlJbmRleAMFEXRlbXBBc3NldEJhbGFuY2VzBRF0YXJnZXRBc3NldEluZGV4XwkAZAIFDXNvdXJjZUFtb3VudF8FEnNvdXJjZVBsdXNGZWVEZWx0YQQMdGFyZ2V0QW1vdW50CQBlAgkAZAIFDXNvdXJjZUFtb3VudF8FEnNvdXJjZVBsdXNGZWVEZWx0YQUTdGFyZ2V0TWludXNGZWVEZWx0YQQDZXJyCQETX3ZhbGlkYXRlQWxsb2NhdGlvbgIFEG5ld0Fzc2V0QmFsYW5jZXMFEW5ld1Jld2FyZEJhbGFuY2VzAwkAAAIFA2VycgUDZXJyBA0kdDAzMjI4MjMyNDIzCQEbX2NhbGN1bGF0ZUxwQW5kUHJvdG9jb2xGZWVzBAkAZAIFEXRhcmdldEFzc2V0SW5kZXhfAAEFDHRhcmdldEFtb3VudAUJbHBGZWVSYXRlBQ9wcm90b2NvbEZlZVJhdGUEBWxwRmVlCAUNJHQwMzIyODIzMjQyMwJfMQQLcHJvdG9jb2xGZWUIBQ0kdDAzMjI4MjMyNDIzAl8yBBRzaWdtYUZlZVBlckxwVXBkYXRlZAgFDSR0MDMyMjgyMzI0MjMCXzMJAJgKBgUMdGFyZ2V0QW1vdW50BRBuZXdBc3NldEJhbGFuY2VzBRFuZXdSZXdhcmRCYWxhbmNlcwUFbHBGZWUFC3Byb3RvY29sRmVlBRRzaWdtYUZlZVBlckxwVXBkYXRlZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhsBaQEEaW5pdA4HYXNzZXRzXw1hc3NldFdlaWdodHNfCmxwRmVlUmF0ZV8QcHJvdG9jb2xGZWVSYXRlXwxscFRva2VuTmFtZV8NbHBUb2tlbkRlc2NyXxBscFRva2VuRGVjaW1hbHNfF21heEFsbG9jYXRpb25BbXBsaWZpZXJfEHdlaWdodEFtcGxpZmllcl8QZGlzYmFsYW5jZUNvZWZmXwtmZWVNYXhSYXRlXxRwcm90b2NvbEZlZUNvbnRyYWN0XwpwcmVjaXNpb25fB3BhdXNlcl8EA2VycgMDAwMDAwMDAwMDAwMDAwMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARNfd2hlbk5vdEluaXRpYWxpemVkAAcJARBfd2hlbk11bHRpc2lnU2V0AAcJAQ9fdmFsaWRhdGVBc3NldHMCBQdhc3NldHNfAhRpbml0OiBpbnZhbGlkIGFzc2V0cwcJARBfdmFsaWRhdGVJbnRMaXN0BAUNYXNzZXRXZWlnaHRzXwABBQpNQVhfV0VJR0hUAhppbml0OiBpbnZhbGlkIGFzc2V0V2VpZ2h0cwcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEFB2Fzc2V0c18JAJADAQUNYXNzZXRXZWlnaHRzXwIfaW5pdDogaW52YWxpZCBhc3NldFdlaWdodHMgc2l6ZQcJAQxfdmFsaWRhdGVJbnQEBQpscEZlZVJhdGVfAAAFB01BWF9GRUUCFGluaXQ6IGludmFsaWQgbHAgZmVlBwkBDF92YWxpZGF0ZUludAQFEHByb3RvY29sRmVlUmF0ZV8AAAUHTUFYX0ZFRQIaaW5pdDogaW52YWxpZCBwcm90b2NvbCBmZWUHCQESX3ZhbGlkYXRlVG9rZW5OYW1lAgUMbHBUb2tlbk5hbWVfAhJpbml0OiBpbnZhbGlkIG5hbWUHCQETX3ZhbGlkYXRlVG9rZW5EZXNjcgIFDWxwVG9rZW5EZXNjcl8CE2luaXQ6IGludmFsaWQgZGVzY3IHCQERX3ZhbGlkYXRlRGVjaW1hbHMCBRBscFRva2VuRGVjaW1hbHNfAhZpbml0OiBpbnZhbGlkIGRlY2ltYWxzBwkBDF92YWxpZGF0ZUludAQFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAAAFDU1BWF9BTVBMSUZJRVICJGluaXQ6IGludmFsaWQgbWF4QWxsb2NhdGlvbkFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRB3ZWlnaHRBbXBsaWZpZXJfAAAFF21heEFsbG9jYXRpb25BbXBsaWZpZXJfAh1pbml0OiBpbnZhbGlkIHdlaWdodEFtcGxpZmllcgcJAQxfdmFsaWRhdGVJbnQEBRBkaXNiYWxhbmNlQ29lZmZfAAAFB01BWF9JTlQCHWluaXQ6IGludmFsaWQgZGlzYmFsYW5jZUNvZWZmBwkBDF92YWxpZGF0ZUludAQFC2ZlZU1heFJhdGVfAAAFB01BWF9JTlQCGGluaXQ6IGludmFsaWQgZmVlTWF4UmF0ZQcJARBfdmFsaWRhdGVBZGRyZXNzAgUUcHJvdG9jb2xGZWVDb250cmFjdF8CIWluaXQ6IGludmFsaWQgcHJvdG9jb2xGZWVDb250cmFjdAcJAQxfdmFsaWRhdGVJbnQEBQpwcmVjaXNpb25fAAEFB01BWF9JTlQCF2luaXQ6IGludmFsaWQgcHJlY2lzaW9uBwkBEF92YWxpZGF0ZUFkZHJlc3MCBQdwYXVzZXJfAhRpbml0OiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIEDSR0MDM0MzEyMzQzODEJARRfcHJlcGFyZUFzc2V0V2VpZ2h0cwEFDWFzc2V0V2VpZ2h0c18EDGFzc2V0V2VpZ2h0cwgFDSR0MDM0MzEyMzQzODECXzEEC3NpZ21hV2VpZ2h0CAUNJHQwMzQzMTIzNDM4MQJfMgQNYXNzZXRCYWxhbmNlcwkBFV9wcmVwYXJlQXNzZXRCYWxhbmNlcwEFB2Fzc2V0c18EBWlzc3VlCQDCCAUFDGxwVG9rZW5OYW1lXwUNbHBUb2tlbkRlc2NyXwAABRBscFRva2VuRGVjaW1hbHNfBgQJbHBBc3NldElkCQC4CAEFBWlzc3VlBA5zdG9yYWdlVXBkYXRlZAkAnAoKBQlscEFzc2V0SWQGAAAFCmxwRmVlUmF0ZV8FEHByb3RvY29sRmVlUmF0ZV8FF21heEFsbG9jYXRpb25BbXBsaWZpZXJfBRB3ZWlnaHRBbXBsaWZpZXJfBRBkaXNiYWxhbmNlQ29lZmZfBQtmZWVNYXhSYXRlXwkBEUBleHRyTmF0aXZlKDEwNjIpAQUUcHJvdG9jb2xGZWVDb250cmFjdF8JAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAMwIAgUFaXNzdWUFA25pbAkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQELX3NhdmVBc3NldHMBBQdhc3NldHNfCQESX3NhdmVBc3NldEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwkBE19zYXZlUmV3YXJkQmFsYW5jZXMBBQ1hc3NldEJhbGFuY2VzCQERX3NhdmVBc3NldFdlaWdodHMBBQxhc3NldFdlaWdodHMJAQ5fc2F2ZVByZWNpc2lvbgEFCnByZWNpc2lvbl8JARJfc2F2ZVNpZ21hRmVlUGVyTHABCQESX2xvYWRTaWdtYUZlZVBlckxwAAkBC19zYXZlUGF1c2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUHcGF1c2VyXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpkZXBvc2l0QWxsAQdhbW91bnRfBANlcnIDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAAUHTUFYX0lOVAIaZGVwb3NpdEFsbDogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEDSR0MDM2MTgwMzYyNjUJAQtfZGVwb3NpdEFsbAEFB2Ftb3VudF8EDmxwVG9rZW5zVG9NaW50CAUNJHQwMzYxODAzNjI2NQJfMQQZcmVxdWlyZWRBbW91bnRzTm9ybWFsaXplZAgFDSR0MDM2MTgwMzYyNjUCXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDAzNjE4MDM2MjY1Al8zCgEIZm9sZEZ1bmMCA2FjYwRlbGVtBAVpbmRleAgFA2FjYwJfMQQPcGF5bWVudEFzc2V0U3RyCQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgHYXNzZXRJZAQUcGF5bWVudEFzc2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQ9wYXltZW50QXNzZXRTdHIEGHJlcXVpcmVkQW1vdW50Tm9ybWFsaXplZAkAkQMCBRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkBQVpbmRleAQOcmVxdWlyZWRBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRhyZXF1aXJlZEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFFHBheW1lbnRBc3NldERlY2ltYWxzBQdDRUlMSU5HBARlcnIxAwkBAiE9AgUPcGF5bWVudEFzc2V0U3RyBQRlbGVtCQACAQkArAICAiNkZXBvc2l0QWxsOiBpbnZhbGlkIHBheW1lbnQ6IGluZGV4PQkApAMBBQVpbmRleAMJAGcCAAAFDnJlcXVpcmVkQW1vdW50CQACAQImZGVwb3NpdEFsbDogdG9vIGxpdHRsZSBhbW91bnQgcmVxdWlyZWQFBHVuaXQDCQAAAgUEZXJyMQUEZXJyMQQGY2hhbmdlAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzBQVpbmRleAZhbW91bnQFDnJlcXVpcmVkQW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZQIICQCRAwIIBQFpCHBheW1lbnRzBQVpbmRleAZhbW91bnQFDnJlcXVpcmVkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgHYXNzZXRJZAUDbmlsAwkAZgIFDnJlcXVpcmVkQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwUFaW5kZXgGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIoZGVwb3NpdEFsbDogaW5zdWZmaWNpZW50IHBheW1lbnQsIGluZGV4PQkApAMBBQVpbmRleAILLCByZXF1aXJlZD0JAKQDAQUOcmVxdWlyZWRBbW91bnQFA25pbAkAlAoCCQBkAgUFaW5kZXgAAQkAzggCCAUDYWNjAl8yBQZjaGFuZ2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDM3NDA4Mzc0NzAKAAIkbAUGYXNzZXRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZm9sZEZ1bmMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoEA2lkeAgFDSR0MDM3NDA4Mzc0NzACXzEEDWNoYW5nZUFjdGlvbnMIBQ0kdDAzNzQwODM3NDcwAl8yBA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIJAGQCCAUHc3RvcmFnZQJfMwUObHBUb2tlbnNUb01pbnQIBQdzdG9yYWdlAl80CAUHc3RvcmFnZQJfNQgFB3N0b3JhZ2UCXzYIBQdzdG9yYWdlAl83CAUHc3RvcmFnZQJfOAgFB3N0b3JhZ2UCXzkIBQdzdG9yYWdlA18xMAkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQdSZWlzc3VlAwUJbHBBc3NldElkBQ5scFRva2Vuc1RvTWludAYJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQ5scFRva2Vuc1RvTWludAUJbHBBc3NldElkBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFDWFzc2V0QmFsYW5jZXMFDWNoYW5nZUFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHZGVwb3NpdAEMbWluTHBBbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQxtaW5McEFtb3VudF8AAAUHTUFYX0lOVAIeZGVwb3NpdDogaW52YWxpZCBtaW4gbHAgYW1vdW50AwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBBQlscEFzc2V0SWQECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQxscEFzc2V0SWRTdHIEBGVycjEDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDl9jaGVja1dhdGNoZG9nAAcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEIBQFpCHBheW1lbnRzAAECHmRlcG9zaXQ6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcJARVfdmFsaWRhdGVMaXN0Q29udGFpbnMDCQELX2xvYWRBc3NldHMACQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCHmRlcG9zaXQ6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBQdNQVhfSU5UAh9kZXBvc2l0OiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQRlcnIxBQRlcnIxBAhhc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUIYXNzZXRTdHIEEGFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUNYXNzZXREZWNpbWFscwUKbHBEZWNpbWFscwUERE9XTgQNJHQwMzg5MTAzOTA0MgkBCF9kZXBvc2l0AgUIYXNzZXRTdHIFEGFtb3VudE5vcm1hbGl6ZWQEDmxwVG9rZW5zVG9NaW50CAUNJHQwMzg5MTAzOTA0MgJfMQQNYXNzZXRCYWxhbmNlcwgFDSR0MDM4OTEwMzkwNDICXzIEDnJld2FyZEJhbGFuY2VzCAUNJHQwMzg5MTAzOTA0MgJfMwQFbHBGZWUIBQ0kdDAzODkxMDM5MDQyAl80BAtwcm90b2NvbEZlZQgFDSR0MDM4OTEwMzkwNDICXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwMzg5MTAzOTA0MgJfNgQObHBUb2tlbnNUb1NlbmQJAGUCCQBlAgUObHBUb2tlbnNUb01pbnQFBWxwRmVlBQtwcm90b2NvbEZlZQQEZXJyMgkBDF92YWxpZGF0ZUludAQFDmxwVG9rZW5zVG9TZW5kBQxtaW5McEFtb3VudF8FB01BWF9JTlQCFmRlcG9zaXQ6IGxlc3MgdGhhbiBtaW4DCQAAAgUEZXJyMgUEZXJyMgQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBkAggFB3N0b3JhZ2UCXzMFDmxwVG9rZW5zVG9NaW50CAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEHUmVpc3N1ZQMFCWxwQXNzZXRJZAUObHBUb2tlbnNUb01pbnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUObHBUb2tlbnNUb1NlbmQFCWxwQXNzZXRJZAUDbmlsCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQJARJfc2F2ZUFzc2V0QmFsYW5jZXMBBQ1hc3NldEJhbGFuY2VzCQETX3NhdmVSZXdhcmRCYWxhbmNlcwEFDnJld2FyZEJhbGFuY2VzCQEKX3NhdmVMcEZlZQIFDGxwQXNzZXRJZFN0cgkAZAIFBWxwRmVlCQEKX2xvYWRMcEZlZQEFDGxwQXNzZXRJZFN0cgkBEF9zYXZlUHJvdG9jb2xGZWUCBQxscEFzc2V0SWRTdHIJAGQCBQtwcm90b2NvbEZlZQkBEF9sb2FkUHJvdG9jb2xGZWUBBQxscEFzc2V0SWRTdHIJARJfc2F2ZVNpZ21hRmVlUGVyTHABBRRzaWdtYUZlZVBlckxwVXBkYXRlZAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt3aXRoZHJhd0FsbAAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUMbHBBc3NldElkU3RyBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEA2VycgMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQESX3ZhbGlkYXRlSW50RXF1YWxzAwkAkAMBCAUBaQhwYXltZW50cwABAiJ3aXRoZHJhd0FsbDogaW52YWxpZCBwYXltZW50cyBzaXplBwkBFF92YWxpZGF0ZVN0cmluZ0VxdWFsAwUMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQCIndpdGhkcmF3QWxsOiBpbnZhbGlkIHBheW1lbnQgYXNzZXQHCQEMX3ZhbGlkYXRlSW50BAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQUHTUFYX0lOVAIjd2l0aGRyYXdBbGw6IGludmFsaWQgcGF5bWVudCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBA0kdDA0MDU1MDQwNjM3CQEMX3dpdGhkcmF3QWxsAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDmxwVG9rZW5zVG9CdXJuCAUNJHQwNDA1NTA0MDYzNwJfMQQNYmFsYW5jZXNUb1BheQgFDSR0MDQwNTUwNDA2MzcCXzIEDWFzc2V0QmFsYW5jZXMIBQ0kdDA0MDU1MDQwNjM3Al8zBA5wYXltZW50QWN0aW9ucwkBGF9nZXRQYXltZW50c0Zyb21CYWxhbmNlcwQFBmFzc2V0cwUNYmFsYW5jZXNUb1BheQgFAWkGY2FsbGVyBQpscERlY2ltYWxzBA5zdG9yYWdlVXBkYXRlZAkAnAoKCAUHc3RvcmFnZQJfMQgFB3N0b3JhZ2UCXzIJAGUCCAUHc3RvcmFnZQJfMwUObHBUb2tlbnNUb0J1cm4IBQdzdG9yYWdlAl80CAUHc3RvcmFnZQJfNQgFB3N0b3JhZ2UCXzYIBQdzdG9yYWdlAl83CAUHc3RvcmFnZQJfOAgFB3N0b3JhZ2UCXzkIBQdzdG9yYWdlA18xMAkAlAoCCQDOCAIJAM4IAgkAzggCCQDMCAIJAQRCdXJuAgUJbHBBc3NldElkBQ5scFRva2Vuc1RvQnVybgUDbmlsBQ5wYXltZW50QWN0aW9ucwkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQESX3NhdmVBc3NldEJhbGFuY2VzAQUNYXNzZXRCYWxhbmNlcwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQh3aXRoZHJhdwIIYXNzZXRJZF8KbWluQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEDGxwQXNzZXRJZFN0cgkA2AQBBQlscEFzc2V0SWQECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQxscEFzc2V0SWRTdHIEBmFzc2V0cwkBC19sb2FkQXNzZXRzAAQDZXJyAwMDAwMDAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwkBDl9jaGVja1dhdGNoZG9nAAcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEIBQFpCHBheW1lbnRzAAECH3dpdGhkcmF3OiBpbnZhbGlkIHBheW1lbnRzIHNpemUHCQEUX3ZhbGlkYXRlU3RyaW5nRXF1YWwDBQxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAIfd2l0aGRyYXc6IGludmFsaWQgcGF5bWVudCBhc3NldAcJAQxfdmFsaWRhdGVJbnQECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBQdNQVhfSU5UAiB3aXRoZHJhdzogaW52YWxpZCBwYXltZW50IGFtb3VudAcJARVfdmFsaWRhdGVMaXN0Q29udGFpbnMDBQZhc3NldHMFCGFzc2V0SWRfAhl3aXRoZHJhdzogaW52YWxpZCBhc3NldElkBwkBDF92YWxpZGF0ZUludAQFCm1pbkFtb3VudF8AAAUHTUFYX0lOVAIbd2l0aGRyYXc6IGludmFsaWQgbWluQW1vdW50BwMJAAACBQNlcnIFA2VycgQNJHQwNDE5OTE0MjE0NgkBCV93aXRoZHJhdwIFCGFzc2V0SWRfCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAgFDSR0MDQxOTkxNDIxNDYCXzEEEmZpbmFsQXNzZXRCYWxhbmNlcwgFDSR0MDQxOTkxNDIxNDYCXzIEE2ZpbmFsUmV3YXJkQmFsYW5jZXMIBQ0kdDA0MTk5MTQyMTQ2Al8zBAVscEZlZQgFDSR0MDQxOTkxNDIxNDYCXzQEC3Byb3RvY29sRmVlCAUNJHQwNDE5OTE0MjE0NgJfNQQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA0MTk5MTQyMTQ2Al82BBVmaW5hbEFtb3VudE5vcm1hbGl6ZWQJAGUCCQBlAgUWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAUFbHBGZWUFC3Byb3RvY29sRmVlBA50YXJnZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0SWRfBAtmaW5hbEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwQFFWZpbmFsQW1vdW50Tm9ybWFsaXplZAUKbHBEZWNpbWFscwUOdGFyZ2V0RGVjaW1hbHMFBERPV04EBGVycjEJAQxfdmFsaWRhdGVJbnQEBQtmaW5hbEFtb3VudAUKbWluQW1vdW50XwUHTUFYX0lOVAIXd2l0aGRyYXc6IGxlc3MgdGhhbiBtaW4DCQAAAgUEZXJyMQUEZXJyMQQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBlAggFB3N0b3JhZ2UCXzMICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEEQnVybgIFCWxwQXNzZXRJZAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQtmaW5hbEFtb3VudAkBC19zdHJUb0Fzc2V0AQUIYXNzZXRJZF8FA25pbAkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkCQESX3NhdmVBc3NldEJhbGFuY2VzAQUSZmluYWxBc3NldEJhbGFuY2VzCQETX3NhdmVSZXdhcmRCYWxhbmNlcwEFE2ZpbmFsUmV3YXJkQmFsYW5jZXMJAQpfc2F2ZUxwRmVlAgUIYXNzZXRJZF8JAGQCBQVscEZlZQkBCl9sb2FkTHBGZWUBBQhhc3NldElkXwkBEF9zYXZlUHJvdG9jb2xGZWUCBQhhc3NldElkXwkAZAIFC3Byb3RvY29sRmVlCQEQX2xvYWRQcm90b2NvbEZlZQEFCGFzc2V0SWRfCQESX3NhdmVTaWdtYUZlZVBlckxwAQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEc3dhcAIOdGFyZ2V0QXNzZXRJZF8KbWluQW1vdW50XwQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEECmxwRGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBCQDYBAEFCWxwQXNzZXRJZAQGYXNzZXRzCQELX2xvYWRBc3NldHMABA5zb3VyY2VBc3NldFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBBZzb3VyY2VBbW91bnROb3JtYWxpemVkCQESX25vcm1hbGl6ZURlY2ltYWxzBAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAQxfZ2V0RGVjaW1hbHMBBQ5zb3VyY2VBc3NldFN0cgUKbHBEZWNpbWFscwUERE9XTgQQc291cmNlQXNzZXRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFBmFzc2V0cwUOc291cmNlQXNzZXRTdHICGnN3YXA6IGludmFsaWQgc291cmNlIGFzc2V0AwkAAAIFEHNvdXJjZUFzc2V0SW5kZXgFEHNvdXJjZUFzc2V0SW5kZXgEEHRhcmdldEFzc2V0SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQZhc3NldHMFDnRhcmdldEFzc2V0SWRfAhpzd2FwOiBpbnZhbGlkIHRhcmdldCBhc3NldAMJAAACBRB0YXJnZXRBc3NldEluZGV4BRB0YXJnZXRBc3NldEluZGV4BANlcnIDAwMDAwMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcJAQ5fY2hlY2tXYXRjaGRvZwAHCQEMX3ZhbGlkYXRlSW50BAUKbWluQW1vdW50XwAABQdNQVhfSU5UAh9zd2FwOiBpbnZhbGlkIG1pbiB0YXJnZXQgYW1vdW50BwkBDF92YWxpZGF0ZUludAQFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQAAQUHTUFYX0lOVAIbc3dhcDogaW52YWxpZCBzb3VyY2UgYW1vdW50BwkBFF92YWxpZGF0ZVN0cmluZ05vdEVxAwUOc291cmNlQXNzZXRTdHIFDnRhcmdldEFzc2V0SWRfAhFzd2FwOiBzYW1lIGFzc2V0cwcJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEIBQFpCHBheW1lbnRzAAECG3N3YXA6IGludmFsaWQgcGF5bWVudHMgc2l6ZQcDCQAAAgUDZXJyBQNlcnIEDSR0MDQ0MzExNDQ0OTAJAQVfc3dhcAMFEHNvdXJjZUFzc2V0SW5kZXgFEHRhcmdldEFzc2V0SW5kZXgFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQEFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0NDMxMTQ0NDkwAl8xBBJmaW5hbEFzc2V0QmFsYW5jZXMIBQ0kdDA0NDMxMTQ0NDkwAl8yBBNmaW5hbFJld2FyZEJhbGFuY2VzCAUNJHQwNDQzMTE0NDQ5MAJfMwQFbHBGZWUIBQ0kdDA0NDMxMTQ0NDkwAl80BAtwcm90b2NvbEZlZQgFDSR0MDQ0MzExNDQ0OTACXzUEFHNpZ21hRmVlUGVyTHBVcGRhdGVkCAUNJHQwNDQzMTE0NDQ5MAJfNgQVZmluYWxBbW91bnROb3JtYWxpemVkCQBlAgkAZQIFFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQFBWxwRmVlBQtwcm90b2NvbEZlZQQOdGFyZ2V0RGVjaW1hbHMJAQxfZ2V0RGVjaW1hbHMBBQ50YXJnZXRBc3NldElkXwQLZmluYWxBbW91bnQJARJfbm9ybWFsaXplRGVjaW1hbHMEBRVmaW5hbEFtb3VudE5vcm1hbGl6ZWQFCmxwRGVjaW1hbHMFDnRhcmdldERlY2ltYWxzBQRET1dOBARlcnIxCQEMX3ZhbGlkYXRlSW50BAULZmluYWxBbW91bnQFCm1pbkFtb3VudF8FB01BWF9JTlQCE3N3YXA6IGxlc3MgdGhhbiBtaW4DCQAAAgUEZXJyMQUEZXJyMQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ZpbmFsQW1vdW50CQELX3N0clRvQXNzZXQBBQ50YXJnZXRBc3NldElkXwUDbmlsCQESX3NhdmVBc3NldEJhbGFuY2VzAQUSZmluYWxBc3NldEJhbGFuY2VzCQETX3NhdmVSZXdhcmRCYWxhbmNlcwEFE2ZpbmFsUmV3YXJkQmFsYW5jZXMJAQpfc2F2ZUxwRmVlAgUOdGFyZ2V0QXNzZXRJZF8JAGQCBQVscEZlZQkBCl9sb2FkTHBGZWUBBQ50YXJnZXRBc3NldElkXwkBEF9zYXZlUHJvdG9jb2xGZWUCBQ50YXJnZXRBc3NldElkXwkAZAIFC3Byb3RvY29sRmVlCQEQX2xvYWRQcm90b2NvbEZlZQEFDnRhcmdldEFzc2V0SWRfCQESX3NhdmVTaWdtYUZlZVBlckxwAQUUc2lnbWFGZWVQZXJMcFVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENZ2V0RGVwb3NpdEFsbAEJbHBBbW91bnRfBANlcnIJAQxfdmFsaWRhdGVJbnQEBQlscEFtb3VudF8AAQUHTUFYX0lOVAIdZ2V0RGVwb3NpdEFsbDogaW52YWxpZCBhbW91bnQDCQAAAgUDZXJyBQNlcnIEDSR0MDQ1NjYyNDU3NDkJAQtfZGVwb3NpdEFsbAEFCWxwQW1vdW50XwQObHBUb2tlbnNUb01pbnQIBQ0kdDA0NTY2MjQ1NzQ5Al8xBBlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCAUNJHQwNDU2NjI0NTc0OQJfMgQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ1NjYyNDU3NDkCXzMJAJQKAgUDbmlsCQCUCgIFDmxwVG9rZW5zVG9NaW50BRlyZXF1aXJlZEFtb3VudHNOb3JtYWxpemVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmdldERlcG9zaXQCCGFzc2V0SWRfB2Ftb3VudF8EA2VycgMJARVfdmFsaWRhdGVMaXN0Q29udGFpbnMDCQELX2xvYWRBc3NldHMABQhhc3NldElkXwIZZ2V0RGVwb3NpdDogaW52YWxpZCBhc3NldAkBDF92YWxpZGF0ZUludAQFB2Ftb3VudF8AAQUHTUFYX0lOVAIaZ2V0RGVwb3NpdDogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA1hc3NldERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQUIYXNzZXRJZF8EEGFtb3VudE5vcm1hbGl6ZWQJARJfbm9ybWFsaXplRGVjaW1hbHMEBQdhbW91bnRfBQ1hc3NldERlY2ltYWxzBQpscERlY2ltYWxzBQRET1dOBA0kdDA0NjUwODQ2NjQwCQEIX2RlcG9zaXQCBQhhc3NldElkXwUQYW1vdW50Tm9ybWFsaXplZAQObHBUb2tlbnNUb01pbnQIBQ0kdDA0NjUwODQ2NjQwAl8xBA1hc3NldEJhbGFuY2VzCAUNJHQwNDY1MDg0NjY0MAJfMgQOcmV3YXJkQmFsYW5jZXMIBQ0kdDA0NjUwODQ2NjQwAl8zBAVscEZlZQgFDSR0MDQ2NTA4NDY2NDACXzQEC3Byb3RvY29sRmVlCAUNJHQwNDY1MDg0NjY0MAJfNQQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA0NjUwODQ2NjQwAl82BA5scFRva2Vuc1RvU2VuZAkAZQIJAGUCBQ5scFRva2Vuc1RvTWludAUFbHBGZWUFC3Byb3RvY29sRmVlCQCUCgIFA25pbAUObHBUb2tlbnNUb1NlbmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOZ2V0V2l0aGRyYXdBbGwBCWxwQW1vdW50XwQDZXJyCQEMX3ZhbGlkYXRlSW50BAUJbHBBbW91bnRfAAAFB01BWF9JTlQCHmdldFdpdGhkcmF3QWxsOiBpbnZhbGlkIGFtb3VudAMJAAACBQNlcnIFA2VycgQNJHQwNDcwNzk0NzE1NQkBDF93aXRoZHJhd0FsbAEFCWxwQW1vdW50XwQObHBUb2tlbnNUb0J1cm4IBQ0kdDA0NzA3OTQ3MTU1Al8xBA1iYWxhbmNlc1RvR2V0CAUNJHQwNDcwNzk0NzE1NQJfMgQNYXNzZXRCYWxhbmNlcwgFDSR0MDQ3MDc5NDcxNTUCXzMJAJQKAgUDbmlsBQ1iYWxhbmNlc1RvR2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2dldFdpdGhkcmF3Aghhc3NldElkXwdhbW91bnRfBANlcnIDCQEVX3ZhbGlkYXRlTGlzdENvbnRhaW5zAwkBC19sb2FkQXNzZXRzAAUIYXNzZXRJZF8CGmdldFdpdGhkcmF3OiBpbnZhbGlkIGFzc2V0CQEMX3ZhbGlkYXRlSW50BAUHYW1vdW50XwABBQdNQVhfSU5UAhtnZXRXaXRoZHJhdzogaW52YWxpZCBhbW91bnQHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBA0kdDA0NzgwNjQ3OTM4CQEJX3dpdGhkcmF3AgUIYXNzZXRJZF8FB2Ftb3VudF8EFnRhcmdldEFtb3VudE5vcm1hbGl6ZWQIBQ0kdDA0NzgwNjQ3OTM4Al8xBA1hc3NldEJhbGFuY2VzCAUNJHQwNDc4MDY0NzkzOAJfMgQOcmV3YXJkQmFsYW5jZXMIBQ0kdDA0NzgwNjQ3OTM4Al8zBAVscEZlZQgFDSR0MDQ3ODA2NDc5MzgCXzQEC3Byb3RvY29sRmVlCAUNJHQwNDc4MDY0NzkzOAJfNQQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA0NzgwNjQ3OTM4Al82BBVmaW5hbEFtb3VudE5vcm1hbGl6ZWQJAGUCCQBlAgUWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAUFbHBGZWUFC3Byb3RvY29sRmVlBA50YXJnZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFCGFzc2V0SWRfBAtmaW5hbEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwQFFWZpbmFsQW1vdW50Tm9ybWFsaXplZAUKbHBEZWNpbWFscwUOdGFyZ2V0RGVjaW1hbHMFBERPV04JAJQKAgUDbmlsBQtmaW5hbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdnZXRTd2FwAw5zb3VyY2VBc3NldElkXw50YXJnZXRBc3NldElkXw1zb3VyY2VBbW91bnRfBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQKbHBEZWNpbWFscwkBDF9nZXREZWNpbWFscwEJANgEAQUJbHBBc3NldElkBAZhc3NldHMJAQtfbG9hZEFzc2V0cwAEEHNvdXJjZUFzc2V0SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQZhc3NldHMFDnNvdXJjZUFzc2V0SWRfAhpzd2FwOiBpbnZhbGlkIHNvdXJjZSBhc3NldAMJAAACBRBzb3VyY2VBc3NldEluZGV4BRBzb3VyY2VBc3NldEluZGV4BBB0YXJnZXRBc3NldEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUGYXNzZXRzBQ50YXJnZXRBc3NldElkXwIac3dhcDogaW52YWxpZCB0YXJnZXQgYXNzZXQDCQAAAgUQdGFyZ2V0QXNzZXRJbmRleAUQdGFyZ2V0QXNzZXRJbmRleAQWc291cmNlQW1vdW50Tm9ybWFsaXplZAkBEl9ub3JtYWxpemVEZWNpbWFscwQFDXNvdXJjZUFtb3VudF8JAQxfZ2V0RGVjaW1hbHMBBQ5zb3VyY2VBc3NldElkXwUKbHBEZWNpbWFscwUERE9XTgQDZXJyAwkBDF92YWxpZGF0ZUludAQFFnNvdXJjZUFtb3VudE5vcm1hbGl6ZWQAAQUHTUFYX0lOVAIbc3dhcDogaW52YWxpZCBzb3VyY2UgYW1vdW50CQEUX3ZhbGlkYXRlU3RyaW5nTm90RXEDBQ5zb3VyY2VBc3NldElkXwUOdGFyZ2V0QXNzZXRJZF8CEXN3YXA6IHNhbWUgYXNzZXRzBwMJAAACBQNlcnIFA2VycgQNJHQwNDkzNDg0OTUyNwkBBV9zd2FwAwUQc291cmNlQXNzZXRJbmRleAUQdGFyZ2V0QXNzZXRJbmRleAUWc291cmNlQW1vdW50Tm9ybWFsaXplZAQWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAgFDSR0MDQ5MzQ4NDk1MjcCXzEEEmZpbmFsQXNzZXRCYWxhbmNlcwgFDSR0MDQ5MzQ4NDk1MjcCXzIEE2ZpbmFsUmV3YXJkQmFsYW5jZXMIBQ0kdDA0OTM0ODQ5NTI3Al8zBAVscEZlZQgFDSR0MDQ5MzQ4NDk1MjcCXzQEC3Byb3RvY29sRmVlCAUNJHQwNDkzNDg0OTUyNwJfNQQUc2lnbWFGZWVQZXJMcFVwZGF0ZWQIBQ0kdDA0OTM0ODQ5NTI3Al82BBVmaW5hbEFtb3VudE5vcm1hbGl6ZWQJAGUCCQBlAgUWdGFyZ2V0QW1vdW50Tm9ybWFsaXplZAUFbHBGZWUFC3Byb3RvY29sRmVlBA50YXJnZXREZWNpbWFscwkBDF9nZXREZWNpbWFscwEFDnRhcmdldEFzc2V0SWRfBAtmaW5hbEFtb3VudAkBEl9ub3JtYWxpemVEZWNpbWFscwQFFWZpbmFsQW1vdW50Tm9ybWFsaXplZAUKbHBEZWNpbWFscwUOdGFyZ2V0RGVjaW1hbHMFBERPV04JAJQKAgUDbmlsBQtmaW5hbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhnZXRDbGFpbQEFdXNlcl8EBHVzZXIDCQBmAgkAsQIBBQV1c2VyXwAACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUFdXNlcl8CFmdldENsYWltOiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgQNJHQwNTAxNjk1MDIyNQkBC19jaGVja3BvaW50AQUEdXNlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1MDE2OTUwMjI1Al8xBAt1c2VyUHJvZml0cwgFDSR0MDUwMTY5NTAyMjUCXzIJAJQKAgUDbmlsBQt1c2VyUHJvZml0cwFpAQpnZXRBc3NldElkAAQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEJAJQKAgUDbmlsCQDYBAEFCWxwQXNzZXRJZAFpAQtnZXREZWNpbWFscwAEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAlscEFzc2V0SWQIBQdzdG9yYWdlAl8xBApscERlY2ltYWxzCQEMX2dldERlY2ltYWxzAQkA2AQBBQlscEFzc2V0SWQJAJQKAgUDbmlsBQpscERlY2ltYWxzAWkBCmNoZWNrcG9pbnQBBXVzZXJfBANlcnIDCQEQX3doZW5Jbml0aWFsaXplZAAJAQ5fd2hlbk5vdFBhdXNlZAAHAwkAAAIFA2VycgUDZXJyBAR1c2VyAwkAZgIJALECAQUFdXNlcl8AAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBXVzZXJfAhhjaGVja3BvaW50OiBpbnZhbGlkIHVzZXIIBQFpBmNhbGxlcgkBC19jaGVja3BvaW50AQUEdXNlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAEA2VycgMJARBfd2hlbkluaXRpYWxpemVkAAkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIEB3N0b3JhZ2UJAQxfbG9hZFN0b3JhZ2UABAxscEFzc2V0SWRTdHIJAQtfYXNzZXRUb1N0cgEIBQdzdG9yYWdlAl8xBARlcnIxAwMJARJfdmFsaWRhdGVJbnRFcXVhbHMDCQCQAwEIBQFpCHBheW1lbnRzAAECHHN0YWtlOiBpbnZhbGlkIHBheW1lbnRzIHNpemUJARRfdmFsaWRhdGVTdHJpbmdFcXVhbAMFDGxwQXNzZXRJZFN0cgkBC19hc3NldFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAhxzdGFrZTogaW52YWxpZCBwYXltZW50IGFzc2V0BwkBDF92YWxpZGF0ZUludAQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAFB01BWF9JTlQCHXN0YWtlOiBpbnZhbGlkIHBheW1lbnQgYW1vdW50BwMJAAACBQRlcnIxBQRlcnIxBA0kdDA1MTQzNzUxNDk3CQELX2NoZWNrcG9pbnQBCAUBaQZjYWxsZXIEEWNoZWNrcG9pbnRBY3Rpb25zCAUNJHQwNTE0Mzc1MTQ5NwJfMQQLdXNlclByb2ZpdHMIBQ0kdDA1MTQzNzUxNDk3Al8yCQCUCgIJAM4IAgkAzggCBRFjaGVja3BvaW50QWN0aW9ucwkBC19zYXZlVXNlckxwAggFAWkGY2FsbGVyCQBkAgkBC19sb2FkVXNlckxwAQgFAWkGY2FsbGVyCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkBDF9zYXZlVG90YWxMcAEJAGQCCQEMX2xvYWRUb3RhbExwAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHdW5zdGFrZQEHYW1vdW50XwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAECWxwQXNzZXRJZAgFB3N0b3JhZ2UCXzEEBnVzZXJMcAkBC19sb2FkVXNlckxwAQgFAWkGY2FsbGVyBARlcnIxCQEMX3ZhbGlkYXRlSW50BAUHYW1vdW50XwAABQZ1c2VyTHACF3Vuc3Rha2U6IGludmFsaWQgYW1vdW50AwkAAAIFBGVycjEFBGVycjEEDSR0MDUyMDA4NTIwNjgJAQtfY2hlY2twb2ludAEIBQFpBmNhbGxlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1MjAwODUyMDY4Al8xBAt1c2VyUHJvZml0cwgFDSR0MDUyMDA4NTIwNjgCXzIJAJQKAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2Ftb3VudF8FCWxwQXNzZXRJZAUDbmlsBRFjaGVja3BvaW50QWN0aW9ucwkBC19zYXZlVXNlckxwAggFAWkGY2FsbGVyCQBlAgUGdXNlckxwBQdhbW91bnRfCQEMX3NhdmVUb3RhbExwAQkAZQIJAQxfbG9hZFRvdGFsTHAABQdhbW91bnRfBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBWNsYWltAQV1c2VyXwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQEdXNlcgMJAGYCCQCxAgEFBXVzZXJfAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQV1c2VyXwITY2xhaW06IGludmFsaWQgdXNlcggFAWkGY2FsbGVyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBBQlscEFzc2V0SWQEBmFzc2V0cwkAzAgCBQxscEFzc2V0SWRTdHIJAQtfbG9hZEFzc2V0cwAECG1heEluZGV4CQBlAgkAkAMBBQZhc3NldHMAAQQNJHQwNTI3NTY1MjgxMgkBC19jaGVja3BvaW50AQUEdXNlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1Mjc1NjUyODEyAl8xBAt1c2VyUHJvZml0cwgFDSR0MDUyNzU2NTI4MTICXzIKAQhmb2xkRnVuYwIDYWNjBnByb2ZpdAQFaW5kZXgIBQNhY2MCXzEDAwkAZwIFCG1heEluZGV4BQVpbmRleAkAZgIFBnByb2ZpdAAABwQFYXNzZXQJAJEDAgUGYXNzZXRzBQVpbmRleAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAJAM0IAggFA2FjYwJfMwkBDlNjcmlwdFRyYW5zZmVyAwUEdXNlcgUGcHJvZml0CQELX3N0clRvQXNzZXQBBQVhc3NldAkAlQoDCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yBQZwcm9maXQIBQNhY2MCXzMEDSR0MDUzMTkwNTMyODEKAAIkbAULdXNlclByb2ZpdHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCVCgMAAAUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDUzMTkwNTMyODECXzEEEnVzZXJQcm9maXRzVXBkYXRlZAgFDSR0MDUzMTkwNTMyODECXzIEDXByb2ZpdEFjdGlvbnMIBQ0kdDA1MzE5MDUzMjgxAl8zCQCUCgIJAM4IAgkAzggCBQ1wcm9maXRBY3Rpb25zCQDRCAIFEWNoZWNrcG9pbnRBY3Rpb25zAAAJARBfc2F2ZVVzZXJQcm9maXRzAgUEdXNlcgUSdXNlclByb2ZpdHNVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGNsYWltQWxsAQV1c2VyXwQDZXJyAwkBEF93aGVuSW5pdGlhbGl6ZWQACQEOX3doZW5Ob3RQYXVzZWQABwMJAAACBQNlcnIFA2VycgQEdXNlcgMJAGYCCQCxAgEFBXVzZXJfAAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQV1c2VyXwIWY2xhaW1BbGw6IGludmFsaWQgdXNlcggFAWkGY2FsbGVyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQJbHBBc3NldElkCAUHc3RvcmFnZQJfMQQMbHBBc3NldElkU3RyCQELX2Fzc2V0VG9TdHIBBQlscEFzc2V0SWQEBmFzc2V0cwkAzAgCBQxscEFzc2V0SWRTdHIJAQtfbG9hZEFzc2V0cwAECG1heEluZGV4CQBlAgkAkAMBBQZhc3NldHMAAQQNJHQwNTM5MTE1Mzk3MQkBEl9sb2FkQXNzZXRCYWxhbmNlcwAEDWFzc2V0QmFsYW5jZXMIBQ0kdDA1MzkxMTUzOTcxAl8xBBBhc3NldFRvdGFsU3VwcGx5CAUNJHQwNTM5MTE1Mzk3MQJfMgQNJHQwNTM5Nzc1NDAzMwkBC19jaGVja3BvaW50AQUEdXNlcgQRY2hlY2twb2ludEFjdGlvbnMIBQ0kdDA1Mzk3NzU0MDMzAl8xBAt1c2VyUHJvZml0cwgFDSR0MDUzOTc3NTQwMzMCXzIKAQhmb2xkRnVuYwIDYWNjBnByb2ZpdAQFaW5kZXgIBQNhY2MCXzEDCQAAAgUFaW5kZXgAAAkAlwoFCQBkAgUFaW5kZXgAAQkAzQgCCAUDYWNjAl8yAAAIBQNhY2MCXzMIBQNhY2MCXzQJAGQCCAUDYWNjAl81BQZwcm9maXQDAwkAZgIFBWluZGV4AAAJAGcCBQhtYXhJbmRleAUFaW5kZXgHBAphc3NldEluZGV4CQBlAgUFaW5kZXgAAQQHYmFsYW5jZQkAkQMCBQ1hc3NldEJhbGFuY2VzBQphc3NldEluZGV4CQCXCgUJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIAAAkAzQgCCAUDYWNjAl8zCQBkAgUHYmFsYW5jZQUGcHJvZml0CQBkAggFA2FjYwJfNAUGcHJvZml0CAUDYWNjAl81CQCXCgUJAGQCBQVpbmRleAABCQDNCAIIBQNhY2MCXzIAAAgFA2FjYwJfMwgFA2FjYwJfNAgFA2FjYwJfNQQNJHQwNTQ1Njk1NDcwNQoAAiRsBQt1c2VyUHJvZml0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJcKBQAABQNuaWwFA25pbAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsEA2lkeAgFDSR0MDU0NTY5NTQ3MDUCXzEEEnVzZXJQcm9maXRzVXBkYXRlZAgFDSR0MDU0NTY5NTQ3MDUCXzIEFGFzc2V0QmFsYW5jZXNVcGRhdGVkCAUNJHQwNTQ1Njk1NDcwNQJfMwQObHBUb2tlbnNUb01pbnQIBQ0kdDA1NDU2OTU0NzA1Al80BA5scFRva2Vuc1Byb2ZpdAgFDSR0MDU0NTY5NTQ3MDUCXzUEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMgkAZAIIBQdzdG9yYWdlAl8zBQ5scFRva2Vuc1RvTWludAgFB3N0b3JhZ2UCXzQIBQdzdG9yYWdlAl81CAUHc3RvcmFnZQJfNggFB3N0b3JhZ2UCXzcIBQdzdG9yYWdlAl84CAUHc3RvcmFnZQJfOQgFB3N0b3JhZ2UDXzEwCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgkAzAgCCQEHUmVpc3N1ZQMFCWxwQXNzZXRJZAUObHBUb2tlbnNUb01pbnQGCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgkAZAIFDmxwVG9rZW5zVG9NaW50BQ5scFRva2Vuc1Byb2ZpdAUJbHBBc3NldElkBQNuaWwJAQxfc2F2ZVN0b3JhZ2UBBQ5zdG9yYWdlVXBkYXRlZAkBEl9zYXZlQXNzZXRCYWxhbmNlcwEFFGFzc2V0QmFsYW5jZXNVcGRhdGVkCQDRCAIFEWNoZWNrcG9pbnRBY3Rpb25zAAAJARBfc2F2ZVVzZXJQcm9maXRzAgUEdXNlcgUSdXNlclByb2ZpdHNVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnVwZGF0ZVBvb2xGZWVzAgpscEZlZVJhdGVfEHByb3RvY29sRmVlUmF0ZV8EA2VycgMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEMX3ZhbGlkYXRlSW50BAUKbHBGZWVSYXRlXwAABQdNQVhfRkVFAh51cGRhdGVQb29sRmVlczogaW52YWxpZCBscCBmZWUHCQEMX3ZhbGlkYXRlSW50BAUQcHJvdG9jb2xGZWVSYXRlXwAABQdNQVhfRkVFAiR1cGRhdGVQb29sRmVlczogaW52YWxpZCBwcm90b2NvbCBmZWUHAwkAAAIFA2VycgUDZXJyBAdzdG9yYWdlCQEMX2xvYWRTdG9yYWdlAAQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCAUHc3RvcmFnZQJfMwUKbHBGZWVSYXRlXwUQcHJvdG9jb2xGZWVSYXRlXwgFB3N0b3JhZ2UCXzYIBQdzdG9yYWdlAl83CAUHc3RvcmFnZQJfOAgFB3N0b3JhZ2UCXzkIBQdzdG9yYWdlA18xMAkAlAoCCQEMX3NhdmVTdG9yYWdlAQUOc3RvcmFnZVVwZGF0ZWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQdXBkYXRlUG9vbFBhcmFtcwQXbWF4QWxsb2NhdGlvbkFtcGxpZmllcl8Qd2VpZ2h0QW1wbGlmaWVyXxBkaXNiYWxhbmNlQ29lZmZfC2ZlZU1heFJhdGVfBANlcnIDAwMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEMX3ZhbGlkYXRlSW50BAUXbWF4QWxsb2NhdGlvbkFtcGxpZmllcl8AAAUNTUFYX0FNUExJRklFUgIwdXBkYXRlUG9vbFBhcmFtczogaW52YWxpZCBtYXhBbGxvY2F0aW9uQW1wbGlmaWVyBwkBDF92YWxpZGF0ZUludAQFEHdlaWdodEFtcGxpZmllcl8AAAUXbWF4QWxsb2NhdGlvbkFtcGxpZmllcl8CKXVwZGF0ZVBvb2xQYXJhbXM6IGludmFsaWQgd2VpZ2h0QW1wbGlmaWVyBwkBDF92YWxpZGF0ZUludAQFEGRpc2JhbGFuY2VDb2VmZl8AAAUHTUFYX0lOVAIpdXBkYXRlUG9vbFBhcmFtczogaW52YWxpZCBkaXNiYWxhbmNlQ29lZmYHCQEMX3ZhbGlkYXRlSW50BAULZmVlTWF4UmF0ZV8AAAUHTUFYX0lOVAIkdXBkYXRlUG9vbFBhcmFtczogaW52YWxpZCBmZWVNYXhSYXRlBwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDnN0b3JhZ2VVcGRhdGVkCQCcCgoIBQdzdG9yYWdlAl8xCAUHc3RvcmFnZQJfMggFB3N0b3JhZ2UCXzMIBQdzdG9yYWdlAl80CAUHc3RvcmFnZQJfNQUXbWF4QWxsb2NhdGlvbkFtcGxpZmllcl8FEHdlaWdodEFtcGxpZmllcl8FEGRpc2JhbGFuY2VDb2VmZl8FC2ZlZU1heFJhdGVfCAUHc3RvcmFnZQNfMTAJAJQKAgkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBD21pZ3JhdGVCYWxhbmNlcwAEA2VycgMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwMJAAACBQNlcnIFA2VycgQHc3RvcmFnZQkBDF9sb2FkU3RvcmFnZQAEDWxwVG9rZW5TdXBwbHkIBQdzdG9yYWdlAl8zBA0kdDA1NzI0MDU3MzAwCQESX2xvYWRBc3NldEJhbGFuY2VzAAQNYXNzZXRCYWxhbmNlcwgFDSR0MDU3MjQwNTczMDACXzEEEGFzc2V0VG90YWxTdXBwbHkIBQ0kdDA1NzI0MDU3MzAwAl8yBAxiYWxhbmNlc0RpZmYJAJYDAQkAzAgCCQBlAgUQYXNzZXRUb3RhbFN1cHBseQUNbHBUb2tlblN1cHBseQkAzAgCAAAFA25pbAQOc3RvcmFnZVVwZGF0ZWQJAJwKCggFB3N0b3JhZ2UCXzEIBQdzdG9yYWdlAl8yCQBkAgUNbHBUb2tlblN1cHBseQUMYmFsYW5jZXNEaWZmCAUHc3RvcmFnZQJfNAgFB3N0b3JhZ2UCXzUIBQdzdG9yYWdlAl82CAUHc3RvcmFnZQJfNwgFB3N0b3JhZ2UCXzgIBQdzdG9yYWdlAl85CAUHc3RvcmFnZQNfMTAJAJQKAgkBDF9zYXZlU3RvcmFnZQEFDnN0b3JhZ2VVcGRhdGVkBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXBhdXNlAAQDZXJyAwMJAQtfb25seVBhdXNlcgEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBDl93aGVuTm90UGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQd1bnBhdXNlAAQDZXJyAwMJARFfb25seVRoaXNDb250cmFjdAEIBQFpBmNhbGxlcgkBEF93aGVuSW5pdGlhbGl6ZWQABwkBC193aGVuUGF1c2VkAAcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBCl9zYXZlUGF1c2UBBwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQx1cGRhdGVQYXVzZXIBB3BhdXNlcl8EA2VycgMDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfd2hlbkluaXRpYWxpemVkAAcJARBfdmFsaWRhdGVBZGRyZXNzAgUHcGF1c2VyXwIcdXBkYXRlUGF1c2VyOiBpbnZhbGlkIHBhdXNlcgcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBC19zYXZlUGF1c2VyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUHcGF1c2VyXwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ51cGRhdGVXYXRjaGRvZwIJd2F0Y2hkb2dfB29mZnNldF8EA2VycgMDAwkBEV9vbmx5VGhpc0NvbnRyYWN0AQgFAWkGY2FsbGVyCQEQX3doZW5Jbml0aWFsaXplZAAHCQEQX3ZhbGlkYXRlQWRkcmVzcwIFCXdhdGNoZG9nXwIgdXBkYXRlV2F0Y2hkb2c6IGludmFsaWQgd2F0Y2hkb2cHCQEMX3ZhbGlkYXRlSW50BAUHb2Zmc2V0XwAABQdNQVhfSU5UAh51cGRhdGVXYXRjaGRvZzogaW52YWxpZCBvZmZzZXQHAwkAAAIFA2VycgUDZXJyCQCUCgIJAM4IAgkBDV9zYXZlV2F0Y2hkb2cBCQERQGV4dHJOYXRpdmUoMTA2MikBBQl3YXRjaGRvZ18JARNfc2F2ZVdhdGNoZG9nT2Zmc2V0AQUHb2Zmc2V0XwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNdWx0aXNpZwEJbXVsdGlzaWdfBANlcnIDCQERX29ubHlUaGlzQ29udHJhY3QBCAUBaQZjYWxsZXIJARBfdmFsaWRhdGVBZGRyZXNzAgUJbXVsdGlzaWdfAh1zZXRNdWx0aXNpZzogaW52YWxpZCBtdWx0aXNpZwcDCQAAAgUDZXJyBQNlcnIJAJQKAgkBDV9zYXZlTXVsdGlzaWcBCQERQGV4dHJOYXRpdmUoMTA2MikBBQltdWx0aXNpZ18FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABAckbWF0Y2gwCQCiCAEFDEtFWV9NVUxUSVNJRwMJAAECBQckbWF0Y2gwAgZTdHJpbmcECG11bHRpc2lnBQckbWF0Y2gwCQELdmFsdWVPckVsc2UCCQCbCAIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCG11bHRpc2lnCQC5CQIJAMwIAgUKS0VZX1NUQVRVUwkAzAgCCQClCAEFBHRoaXMJAMwIAgkA2AQBCAUCdHgCaWQFA25pbAUDU0VQBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQclOBQ=", "height": 2928101, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EFhg6AytVjyfb4BYaf4sEgPYRPyU6DgtaTzX3hbFH7G4 Next: A61RdRwG6T1Sp1NGMBNZWH4WZJoRQz7whW3KEhpfVogj Diff:
OldNewDifferences
10781078 else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA))
10791079
10801080
1081-func cF (cw,cx,cG) = if ((cw > cx))
1081+func cF (cw,cx,cG,cz) = {
1082+ let cB = fraction(cx, (f - cz), f)
1083+ let cH = fraction(cG, cB, cx)
1084+ if ((cw > cB))
1085+ then cH
1086+ else fraction(cH, cw, cB, FLOOR)
1087+ }
1088+
1089+
1090+func cI (cD,cE,cx,cG,cz) = if ((cD > cE))
1091+ then 0
1092+ else (cF(cE, cx, cG, cz) - cF(cD, cx, cG, cz))
1093+
1094+
1095+func cJ (cG,cK) = if ((cK > cG))
10821096 then cG
1083- else fraction(cG, cw, cx, FLOOR)
1084-
1085-
1086-func cH (cD,cE,cx,cG) = if ((cD > cE))
1087- then 0
1088- else (cF(cE, cx, cG) - cF(cD, cx, cG))
1089-
1090-
1091-func cI (cJ,cK) = {
1092- let cL = size(cJ)
1093- func af (ag,cd) = if ((cd >= cL))
1097+ else cK
1098+
1099+
1100+func cL (cM,cN) = {
1101+ let cO = size(cM)
1102+ func af (ag,cd) = if ((cd >= cO))
10941103 then ag
1095- else if ((0 > cJ[cd]))
1104+ else if ((0 > cM[cd]))
10961105 then throw("_validateAllocation: negative assetBalances")
1097- else if ((0 > cK[cd]))
1106+ else if ((0 > cN[cd]))
10981107 then throw("_validateAllocation: negative rewardBalances")
10991108 else ag
11001109
11131122 }
11141123
11151124
1116-func cM (bl) = {
1117- let cN = bn(bl)
1118- let cO = br(bl)
1119- let cP = bi()
1120- let cQ = bk(bl)
1125+func cP (bl) = {
1126+ let cQ = bn(bl)
1127+ let cR = br(bl)
1128+ let cS = bi()
1129+ let cT = bk(bl)
11211130 func af (ag,ah) = {
11221131 let cd = ag._1
1123- let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j)))
1124- $Tuple2((cd + 1), (ag._2 :+ cR))
1132+ let cU = (cR[cd] + toInt(fraction(toBigInt(cQ), (cS[cd] - cT[cd]), j)))
1133+ $Tuple2((cd + 1), (ag._2 :+ cU))
11251134 }
11261135
1127- let cS = {
1136+ let cV = {
11281137 let ai = m
11291138 let aj = size(ai)
11301139 let ak = $Tuple2(0, nil)
11381147
11391148 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11401149 }
1141- let cT = cS._1
1142- let cU = cS._2
1143- $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU)
1144- }
1145-
1146-
1147-func cV (cW,cX,cn,cY) = {
1150+ let cW = cV._1
1151+ let cX = cV._2
1152+ $Tuple2((bs(bl, cX) ++ bm(bl, cS)), cX)
1153+ }
1154+
1155+
1156+func cY (cZ,da,cn,db) = {
11481157 func af (ag,ah) = {
11491158 let cd = ag._1
1150- let cZ = if ((cn == cd))
1151- then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX)))
1152- else cW[cd]
1153- $Tuple2((cd + 1), (ag._2 :+ cZ))
1159+ let dc = if ((cn == cd))
1160+ then (cZ[cd] + fraction(toBigInt(db), j, toBigInt(da)))
1161+ else cZ[cd]
1162+ $Tuple2((cd + 1), (ag._2 :+ dc))
11541163 }
11551164
1156- let da = {
1165+ let dd = {
11571166 let ai = m
11581167 let aj = size(ai)
11591168 let ak = $Tuple2(0, nil)
11671176
11681177 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11691178 }
1170- let cT = da._1
1171- let cZ = da._2
1172- cZ
1173- }
1174-
1175-
1176-func db (dc,bM,dd,de) = {
1177- let cP = bi()
1178- let df = bp()
1179- let dg = if ((df == 0))
1180- then $Tuple2(0, fraction(bM, de, d))
1181- else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d))
1182- let dh = dg._1
1183- let di = dg._2
1184- let cZ = if ((dh == 0))
1185- then cP
1186- else cV(cP, df, dc, dh)
1187- $Tuple3(dh, di, cZ)
1188- }
1189-
1190-
1191-func dj (bM) = {
1179+ let cW = dd._1
1180+ let dc = dd._2
1181+ dc
1182+ }
1183+
1184+
1185+func de (df,bM,dg,dh) = {
1186+ let cS = bi()
1187+ let di = bp()
1188+ let dj = if ((di == 0))
1189+ then $Tuple2(0, fraction(bM, dh, d))
1190+ else $Tuple2(fraction(bM, dg, d), fraction(bM, dh, d))
1191+ let dk = dj._1
1192+ let dl = dj._2
1193+ let dc = if ((dk == 0))
1194+ then cS
1195+ else cY(cS, di, df, dk)
1196+ $Tuple3(dk, dl, dc)
1197+ }
1198+
1199+
1200+func dm (bM) = {
11921201 let bD = aM()
1193- let dk = bD._3
1194- let dl = aQ()
1195- let dm = aY()
1196- let dn = dm._1
1197- let do = dm._2
1198- let dp = aS()
1202+ let dn = bD._3
1203+ let do = aQ()
1204+ let dp = aY()
11991205 let dq = dp._1
12001206 let dr = dp._2
1201- let ds = if ((dr == 0))
1207+ let ds = aS()
1208+ let dt = ds._1
1209+ let du = ds._2
1210+ let dv = if ((du == 0))
12021211 then {
12031212 func af (ag,ah) = {
12041213 let cd = ag._1
1205- let dt = fraction(dn[cd], bM, do)
1206- $Tuple2((cd + 1), (ag._2 :+ dt))
1214+ let dw = fraction(dq[cd], bM, dr)
1215+ $Tuple2((cd + 1), (ag._2 :+ dw))
12071216 }
12081217
1209- let du = {
1210- let ai = dl
1218+ let dx = {
1219+ let ai = do
12111220 let aj = size(ai)
12121221 let ak = $Tuple2(0, nil)
12131222 func al (am,an) = if ((an >= aj))
12201229
12211230 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
12221231 }
1223- let cT = du._1
1224- let dv = du._2
1225- $Tuple2(bM, dv)
1232+ let cW = dx._1
1233+ let dy = dx._2
1234+ $Tuple2(bM, dy)
12261235 }
12271236 else {
1228- let dw = fraction(toBigInt(bM), j, toBigInt(dr))
1229- func dx (ag,ah) = {
1237+ let dz = fraction(toBigInt(bM), j, toBigInt(du))
1238+ func dA (ag,ah) = {
12301239 let cd = ag._1
1231- let dt = toInt(fraction(dw, toBigInt(dq[cd]), j))
1232- $Tuple2((cd + 1), (ag._2 :+ dt))
1240+ let dw = toInt(fraction(dz, toBigInt(dt[cd]), j))
1241+ $Tuple2((cd + 1), (ag._2 :+ dw))
12331242 }
12341243
1235- let dy = {
1236- let ai = dl
1244+ let dB = {
1245+ let ai = do
12371246 let aj = size(ai)
12381247 let ak = $Tuple2(0, nil)
12391248 func al (am,an) = if ((an >= aj))
12401249 then am
1241- else dx(am, ai[an])
1250+ else dA(am, ai[an])
12421251
12431252 func ao (am,an) = if ((an >= aj))
12441253 then am
12461255
12471256 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
12481257 }
1249- let cT = dy._1
1250- let dv = dy._2
1251- $Tuple2(fraction(bM, dk, dr), dv)
1252- }
1253- let dz = ds._1
1254- let dv = ds._2
1255- let dA = cb(dq, dv)
1256- let dB = dA._1
1257- let dC = dA._2
1258- $Tuple3(dz, dv, dB)
1259- }
1260-
1261-
1262-func dD (T,bM) = {
1258+ let cW = dB._1
1259+ let dy = dB._2
1260+ $Tuple2(fraction(bM, dn, du), dy)
1261+ }
1262+ let dC = dv._1
1263+ let dy = dv._2
1264+ let dD = cb(dt, dy)
1265+ let dE = dD._1
1266+ let dF = dD._2
1267+ $Tuple3(dC, dy, dE)
1268+ }
1269+
1270+
1271+func dG (T,bM) = {
12631272 let bD = aM()
1264- let dk = bD._3
1265- let dE = bD._4
1266- let dF = bD._5
1267- let dG = bD._6
1268- let dH = bD._7
1269- let dl = aQ()
1270- let dI = aY()
1271- let dn = dI._1
1272- let do = dI._2
1273- let dJ = aS()
1274- let dq = dJ._1
1275- let dr = dJ._2
1276- let dK = aW()
1277- let cl = if (if ((dr == 0))
1273+ let dn = bD._3
1274+ let dH = bD._4
1275+ let dI = bD._5
1276+ let dJ = bD._6
1277+ let dK = bD._7
1278+ let do = aQ()
1279+ let dL = aY()
1280+ let dq = dL._1
1281+ let dr = dL._2
1282+ let dM = aS()
1283+ let dt = dM._1
1284+ let du = dM._2
1285+ let dN = aW()
1286+ let cl = if (if ((du == 0))
12781287 then true
1279- else (dk == 0))
1288+ else (dn == 0))
12801289 then throw("_deposit: empty pool")
12811290 else true
12821291 if ((cl == cl))
12831292 then {
1284- let dL = value(indexOf(dl, T))
1285- let dM = fraction(dr, dn[dL], do)
1286- let dN = dq[dL]
1287- let dO = dK[dL]
1288- let dP = cH(dN, (dN + bM), dM, dO)
1289- let dQ = co(dK, dL, dP)
1290- let dR = cm(dq, dL, (bM + dP))
1291- let dz = (bM + dP)
1292- let dS = cI(dR, dQ)
1293- if ((dS == dS))
1294- then {
1295- let dT = db(0, dz, (dE / 2), (dF / 2))
1296- let dh = dT._1
1297- let di = dT._2
1298- let cZ = dT._3
1299- $Tuple6(dz, dR, dQ, dh, di, cZ)
1300- }
1293+ let dO = value(indexOf(do, T))
1294+ let dP = fraction(du, dq[dO], dr)
1295+ let dQ = dt[dO]
1296+ let dR = dN[dO]
1297+ let dS = cI(dQ, (dQ + bM), dP, dR, dK)
1298+ let dC = (bM + dS)
1299+ let dT = de(0, dC, (dH / 2), (dI / 2))
1300+ let dk = dT._1
1301+ let dl = dT._2
1302+ let dc = dT._3
1303+ let dU = cJ((dR - dS), (dk + dl))
1304+ let dV = co(dN, dO, (dS + dU))
1305+ let dW = cm(dt, dO, (dC + dU))
1306+ let dX = cL(dW, dV)
1307+ if ((dX == dX))
1308+ then $Tuple6((dC + dU), dW, dV, dk, dl, dc)
13011309 else throw("Strict value is not equal to itself.")
13021310 }
13031311 else throw("Strict value is not equal to itself.")
13041312 }
13051313
13061314
1307-func dU (bM) = {
1315+func dY (bM) = {
13081316 let bD = aM()
1309- let dk = bD._3
1310- let dV = aS()
1311- let dq = dV._1
1312- let dr = dV._2
1313- let dW = aY()
1314- let dn = dW._1
1315- let do = dW._2
1316- let dX = bM
1317- let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn")
1318- if ((cl == cl))
1319- then {
1320- let dY = cp(dq, dX, dk)
1321- let dB = dY._1
1322- let dC = dY._2
1323- let dZ = dY._3
1324- $Tuple3(dX, dZ, dB)
1325- }
1326- else throw("Strict value is not equal to itself.")
1327- }
1328-
1329-
1330-func ea (T,cy) = {
1317+ let dn = bD._3
1318+ let dZ = aS()
1319+ let dt = dZ._1
1320+ let du = dZ._2
1321+ let ea = aY()
1322+ let dq = ea._1
1323+ let dr = ea._2
1324+ let eb = bM
1325+ let cl = U(eb, 0, dn, "_withdrawAll: invalid lpTokensToBurn")
1326+ if ((cl == cl))
1327+ then {
1328+ let ec = cp(dt, eb, dn)
1329+ let dE = ec._1
1330+ let dF = ec._2
1331+ let ed = ec._3
1332+ $Tuple3(eb, ed, dE)
1333+ }
1334+ else throw("Strict value is not equal to itself.")
1335+ }
1336+
1337+
1338+func ee (T,cy) = {
13311339 let bD = aM()
1332- let dk = bD._3
1333- let dE = bD._4
1334- let dF = bD._5
1335- let dG = bD._6
1336- let dH = bD._7
1337- let eb = bD._8
1338- let dl = aQ()
1339- let ec = aS()
1340- let dq = ec._1
1341- let dr = ec._2
1342- let ed = aY()
1343- let dn = ed._1
1344- let do = ed._2
1345- let dK = aW()
1346- let ee = value(indexOf(dl, T))
1347- let ef = dq[ee]
1348- let eg = fraction(dr, dn[ee], do)
1349- let eh = dK[ee]
1350- let ei = cC(ef, (ef - cy), eg, dr, dH, eb)
1351- let ej = cm(dK, ee, ei)
1352- let dB = co(dq, ee, cy)
1353- let ek = (cy - ei)
1354- let cl = cI(dB, ej)
1355- if ((cl == cl))
1356- then {
1357- let el = db((ee + 1), ek, (dE / 2), (dF / 2))
1358- let dh = el._1
1359- let di = el._2
1360- let cZ = el._3
1361- $Tuple6(ek, dB, ej, dh, di, cZ)
1362- }
1363- else throw("Strict value is not equal to itself.")
1364- }
1365-
1366-
1367-func em (en,eo,ep) = {
1340+ let dn = bD._3
1341+ let dH = bD._4
1342+ let dI = bD._5
1343+ let dJ = bD._6
1344+ let dK = bD._7
1345+ let ef = bD._8
1346+ let do = aQ()
1347+ let eg = aS()
1348+ let dt = eg._1
1349+ let du = eg._2
1350+ let eh = aY()
1351+ let dq = eh._1
1352+ let dr = eh._2
1353+ let dN = aW()
1354+ let ei = value(indexOf(do, T))
1355+ let ej = dt[ei]
1356+ let ek = fraction(du, dq[ei], dr)
1357+ let el = dN[ei]
1358+ let em = cC(ej, (ej - cy), ek, du, dK, ef)
1359+ let en = cm(dN, ei, em)
1360+ let dE = co(dt, ei, cy)
1361+ let eo = (cy - em)
1362+ let cl = cL(dE, en)
1363+ if ((cl == cl))
1364+ then {
1365+ let ep = de((ei + 1), eo, (dH / 2), (dI / 2))
1366+ let dk = ep._1
1367+ let dl = ep._2
1368+ let dc = ep._3
1369+ $Tuple6(eo, dE, en, dk, dl, dc)
1370+ }
1371+ else throw("Strict value is not equal to itself.")
1372+ }
1373+
1374+
1375+func eq (er,es,et) = {
13681376 let bD = aM()
1369- let eq = bD._1
1370- let er = bK(toBase58String(eq))
1371- let dk = bD._3
1372- let dE = bD._4
1373- let dF = bD._5
1374- let dG = bD._6
1375- let dH = bD._7
1376- let eb = bD._8
1377- let es = aS()
1378- let dq = es._1
1379- let dr = es._2
1380- let et = aY()
1381- let dn = et._1
1382- let do = et._2
1383- let dK = aW()
1384- let dM = fraction(dr, dn[en], do)
1385- let dN = dq[en]
1386- let dO = dK[en]
1387- let dP = cH(dN, (dN + ep), dM, dO)
1388- let ef = dq[eo]
1389- let eg = fraction(dr, dn[eo], do)
1390- let eh = dK[eo]
1391- let ei = cC(ef, (ef - ep), eg, dr, dH, eb)
1392- let eu = co(dK, en, dP)
1393- let dQ = cm(eu, eo, ei)
1394- let ev = cm(dq, en, (ep + dP))
1395- let dR = co(ev, eo, (ep + dP))
1396- let ek = ((ep + dP) - ei)
1397- let cl = cI(dR, dQ)
1398- if ((cl == cl))
1399- then {
1400- let ew = db((eo + 1), ek, dE, dF)
1401- let dh = ew._1
1402- let di = ew._2
1403- let cZ = ew._3
1404- $Tuple6(ek, dR, dQ, dh, di, cZ)
1405- }
1406- else throw("Strict value is not equal to itself.")
1407- }
1408-
1409-
1410-@Callable(ex)
1411-func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = {
1412- let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller))
1377+ let eu = bD._1
1378+ let ev = bK(toBase58String(eu))
1379+ let dn = bD._3
1380+ let dH = bD._4
1381+ let dI = bD._5
1382+ let dJ = bD._6
1383+ let dK = bD._7
1384+ let ef = bD._8
1385+ let ew = aS()
1386+ let dt = ew._1
1387+ let du = ew._2
1388+ let ex = aY()
1389+ let dq = ex._1
1390+ let dr = ex._2
1391+ let dN = aW()
1392+ let dP = fraction(du, dq[er], dr)
1393+ let dQ = dt[er]
1394+ let dR = dN[er]
1395+ let dS = cI(dQ, (dQ + et), dP, dR, dK)
1396+ let ej = dt[es]
1397+ let ek = fraction(du, dq[es], dr)
1398+ let el = dN[es]
1399+ let em = cC(ej, (ej - et), ek, du, dK, ef)
1400+ let ey = co(dN, er, dS)
1401+ let dV = cm(ey, es, em)
1402+ let ez = cm(dt, er, (et + dS))
1403+ let dW = co(ez, es, (et + dS))
1404+ let eo = ((et + dS) - em)
1405+ let cl = cL(dW, dV)
1406+ if ((cl == cl))
1407+ then {
1408+ let eA = de((es + 1), eo, dH, dI)
1409+ let dk = eA._1
1410+ let dl = eA._2
1411+ let dc = eA._3
1412+ $Tuple6(eo, dW, dV, dk, dl, dc)
1413+ }
1414+ else throw("Strict value is not equal to itself.")
1415+ }
1416+
1417+
1418+@Callable(eB)
1419+func init (aq,bS,dg,dh,eC,eD,eE,eF,cz,cA,eG,eH,eI,aI) = {
1420+ let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(eB.caller))
14131421 then bC()
14141422 else false)
14151423 then bB()
14201428 else false)
14211429 then ar(size(aq), size(bS), "init: invalid assetWeights size")
14221430 else false)
1423- then U(dd, 0, d, "init: invalid lp fee")
1424- else false)
1425- then U(de, 0, d, "init: invalid protocol fee")
1426- else false)
1427- then as(ey, "init: invalid name")
1428- else false)
1429- then at(ez, "init: invalid descr")
1430- else false)
1431- then au(eA, "init: invalid decimals")
1432- else false)
1433- then U(eB, 0, e, "init: invalid maxAllocationAmplifier")
1434- else false)
1435- then U(cz, 0, eB, "init: invalid weightAmplifier")
1431+ then U(dg, 0, d, "init: invalid lp fee")
1432+ else false)
1433+ then U(dh, 0, d, "init: invalid protocol fee")
1434+ else false)
1435+ then as(eC, "init: invalid name")
1436+ else false)
1437+ then at(eD, "init: invalid descr")
1438+ else false)
1439+ then au(eE, "init: invalid decimals")
1440+ else false)
1441+ then U(eF, 0, e, "init: invalid maxAllocationAmplifier")
1442+ else false)
1443+ then U(cz, 0, eF, "init: invalid weightAmplifier")
14361444 else false)
14371445 then U(cA, 0, c, "init: invalid disbalanceCoeff")
14381446 else false)
1439- then U(eC, 0, c, "init: invalid feeMaxRate")
1440- else false)
1441- then N(eD, "init: invalid protocolFeeContract")
1442- else false)
1443- then U(eE, 1, c, "init: invalid precision")
1447+ then U(eG, 0, c, "init: invalid feeMaxRate")
1448+ else false)
1449+ then N(eH, "init: invalid protocolFeeContract")
1450+ else false)
1451+ then U(eI, 1, c, "init: invalid precision")
14441452 else false)
14451453 then N(aI, "init: invalid pauser")
14461454 else false
14471455 if ((cl == cl))
14481456 then {
1449- let eF = bR(bS)
1450- let dn = eF._1
1451- let do = eF._2
1452- let dB = bQ(aq)
1453- let eG = Issue(ey, ez, 0, eA, true)
1454- let eq = calculateAssetId(eG)
1455- let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD))
1456- $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1457- }
1458- else throw("Strict value is not equal to itself.")
1459- }
1460-
1461-
1462-
1463-@Callable(ex)
1457+ let eJ = bR(bS)
1458+ let dq = eJ._1
1459+ let dr = eJ._2
1460+ let dE = bQ(aq)
1461+ let eK = Issue(eC, eD, 0, eE, true)
1462+ let eu = calculateAssetId(eK)
1463+ let eL = $Tuple10(eu, true, 0, dg, dh, eF, cz, cA, eG, addressFromStringValue(eH))
1464+ $Tuple2((((((((([eK] ++ aO(eL)) ++ aR(aq)) ++ aU(dE)) ++ aX(dE)) ++ ba(dq)) ++ bh(eI)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1465+ }
1466+ else throw("Strict value is not equal to itself.")
1467+ }
1468+
1469+
1470+
1471+@Callable(eB)
14641472 func depositAll (bM) = {
14651473 let cl = if (if (bE())
14661474 then bF()
14701478 if ((cl == cl))
14711479 then {
14721480 let bD = aM()
1473- let eq = bD._1
1474- let er = bK(toBase58String(eq))
1475- let dl = aQ()
1476- let eI = dj(bM)
1477- let dz = eI._1
1478- let dv = eI._2
1479- let dB = eI._3
1481+ let eu = bD._1
1482+ let ev = bK(toBase58String(eu))
1483+ let do = aQ()
1484+ let eM = dm(bM)
1485+ let dC = eM._1
1486+ let dy = eM._2
1487+ let dE = eM._3
14801488 func af (ag,ah) = {
14811489 let cd = ag._1
1482- let ck = aA(ex.payments[cd].assetId)
1483- let eJ = bK(ck)
1484- let dt = dv[cd]
1485- let eK = bL(dt, er, eJ, CEILING)
1486- let dS = if ((ck != ah))
1490+ let ck = aA(eB.payments[cd].assetId)
1491+ let eN = bK(ck)
1492+ let dw = dy[cd]
1493+ let eO = bL(dw, ev, eN, CEILING)
1494+ let dX = if ((ck != ah))
14871495 then throw(("depositAll: invalid payment: index=" + toString(cd)))
1488- else if ((0 >= eK))
1496+ else if ((0 >= eO))
14891497 then throw("depositAll: too little amount required")
14901498 else unit
1491- if ((dS == dS))
1499+ if ((dX == dX))
14921500 then {
1493- let eL = if ((ex.payments[cd].amount > eK))
1494- then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)]
1495- else if ((eK > ex.payments[cd].amount))
1496- then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK)))
1501+ let eP = if ((eB.payments[cd].amount > eO))
1502+ then [ScriptTransfer(eB.caller, (eB.payments[cd].amount - eO), eB.payments[cd].assetId)]
1503+ else if ((eO > eB.payments[cd].amount))
1504+ then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eO)))
14971505 else nil
1498- $Tuple2((cd + 1), (ag._2 ++ eL))
1506+ $Tuple2((cd + 1), (ag._2 ++ eP))
14991507 }
15001508 else throw("Strict value is not equal to itself.")
15011509 }
15021510
1503- let eM = {
1504- let ai = dl
1511+ let eQ = {
1512+ let ai = do
15051513 let aj = size(ai)
15061514 let ak = $Tuple2(0, nil)
15071515 func al (am,an) = if ((an >= aj))
15141522
15151523 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
15161524 }
1517- let cT = eM._1
1518- let eN = eM._2
1519- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1520- $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit)
1521- }
1522- else throw("Strict value is not equal to itself.")
1523- }
1524-
1525-
1526-
1527-@Callable(ex)
1528-func deposit (eO) = {
1529- let cl = U(eO, 0, c, "deposit: invalid min lp amount")
1525+ let cW = eQ._1
1526+ let eR = eQ._2
1527+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1528+ $Tuple2(((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, dC, eu)] ++ aO(eL)) ++ aU(dE)) ++ eR), unit)
1529+ }
1530+ else throw("Strict value is not equal to itself.")
1531+ }
1532+
1533+
1534+
1535+@Callable(eB)
1536+func deposit (eS) = {
1537+ let cl = U(eS, 0, c, "deposit: invalid min lp amount")
15301538 if ((cl == cl))
15311539 then {
15321540 let bD = aM()
1533- let eq = bD._1
1534- let eP = aA(eq)
1535- let er = bK(eP)
1536- let dS = if (if (if (if (if (bE())
1541+ let eu = bD._1
1542+ let eT = aA(eu)
1543+ let ev = bK(eT)
1544+ let dX = if (if (if (if (if (bE())
15371545 then bF()
15381546 else false)
15391547 then bI()
15401548 else false)
1541- then ar(size(ex.payments), 1, "deposit: invalid payments size")
1549+ then ar(size(eB.payments), 1, "deposit: invalid payments size")
15421550 else false)
1543- then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset")
1551+ then ay(aQ(), aA(eB.payments[0].assetId), "deposit: invalid payment asset")
15441552 else false)
1545- then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount")
1553+ then U(eB.payments[0].amount, 1, c, "deposit: invalid payment amount")
15461554 else false
1547- if ((dS == dS))
1555+ if ((dX == dX))
15481556 then {
1549- let eQ = aA(ex.payments[0].assetId)
1550- let bV = bK(eQ)
1551- let eR = bL(ex.payments[0].amount, bV, er, DOWN)
1552- let eS = dD(eQ, eR)
1553- let dz = eS._1
1554- let dB = eS._2
1555- let ej = eS._3
1556- let dh = eS._4
1557- let di = eS._5
1558- let cZ = eS._6
1559- let eT = ((dz - dh) - di)
1560- let eU = U(eT, eO, c, "deposit: less than min")
1561- if ((eU == eU))
1557+ let eU = aA(eB.payments[0].assetId)
1558+ let bV = bK(eU)
1559+ let eV = bL(eB.payments[0].amount, bV, ev, DOWN)
1560+ let eW = dG(eU, eV)
1561+ let dC = eW._1
1562+ let dE = eW._2
1563+ let en = eW._3
1564+ let dk = eW._4
1565+ let dl = eW._5
1566+ let dc = eW._6
1567+ let eX = ((dC - dk) - dl)
1568+ let eY = U(eX, eS, c, "deposit: less than min")
1569+ if ((eY == eY))
15621570 then {
1563- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1564- $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit)
1571+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1572+ $Tuple2((((((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, eX, eu)] ++ aO(eL)) ++ aU(dE)) ++ aX(en)) ++ bd(eT, (dk + bc(eT)))) ++ bf(eT, (dl + be(eT)))) ++ bj(dc)), unit)
15651573 }
15661574 else throw("Strict value is not equal to itself.")
15671575 }
15721580
15731581
15741582
1575-@Callable(ex)
1583+@Callable(eB)
15761584 func withdrawAll () = {
15771585 let bD = aM()
1578- let eq = bD._1
1579- let eP = toBase58String(eq)
1580- let er = bK(eP)
1581- let dl = aQ()
1586+ let eu = bD._1
1587+ let eT = toBase58String(eu)
1588+ let ev = bK(eT)
1589+ let do = aQ()
15821590 let cl = if (if (if (bE())
1583- then ar(size(ex.payments), 1, "withdrawAll: invalid payments size")
1584- else false)
1585- then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset")
1586- else false)
1587- then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
1591+ then ar(size(eB.payments), 1, "withdrawAll: invalid payments size")
1592+ else false)
1593+ then aa(eT, aA(eB.payments[0].assetId), "withdrawAll: invalid payment asset")
1594+ else false)
1595+ then U(eB.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
15881596 else false
15891597 if ((cl == cl))
15901598 then {
1591- let eV = dU(ex.payments[0].amount)
1592- let dX = eV._1
1593- let dZ = eV._2
1594- let dB = eV._3
1595- let eW = ct(dl, dZ, ex.caller, er)
1596- let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1597- $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit)
1598- }
1599- else throw("Strict value is not equal to itself.")
1600- }
1601-
1602-
1603-
1604-@Callable(ex)
1605-func withdraw (T,eX) = {
1599+ let eZ = dY(eB.payments[0].amount)
1600+ let eb = eZ._1
1601+ let ed = eZ._2
1602+ let dE = eZ._3
1603+ let fa = ct(do, ed, eB.caller, ev)
1604+ let eL = $Tuple10(bD._1, bD._2, (bD._3 - eb), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1605+ $Tuple2(((([Burn(eu, eb)] ++ fa) ++ aO(eL)) ++ aU(dE)), unit)
1606+ }
1607+ else throw("Strict value is not equal to itself.")
1608+ }
1609+
1610+
1611+
1612+@Callable(eB)
1613+func withdraw (T,fb) = {
16061614 let bD = aM()
1607- let eq = bD._1
1608- let eP = toBase58String(eq)
1609- let er = bK(eP)
1610- let dl = aQ()
1615+ let eu = bD._1
1616+ let eT = toBase58String(eu)
1617+ let ev = bK(eT)
1618+ let do = aQ()
16111619 let cl = if (if (if (if (if (if (if (bE())
16121620 then bF()
16131621 else false)
16141622 then bI()
16151623 else false)
1616- then ar(size(ex.payments), 1, "withdraw: invalid payments size")
1617- else false)
1618- then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset")
1619- else false)
1620- then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1621- else false)
1622- then ay(dl, T, "withdraw: invalid assetId")
1623- else false)
1624- then U(eX, 0, c, "withdraw: invalid minAmount")
1624+ then ar(size(eB.payments), 1, "withdraw: invalid payments size")
1625+ else false)
1626+ then aa(eT, aA(eB.payments[0].assetId), "withdraw: invalid payment asset")
1627+ else false)
1628+ then U(eB.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1629+ else false)
1630+ then ay(do, T, "withdraw: invalid assetId")
1631+ else false)
1632+ then U(fb, 0, c, "withdraw: invalid minAmount")
16251633 else false
16261634 if ((cl == cl))
16271635 then {
1628- let eY = ea(T, ex.payments[0].amount)
1629- let eZ = eY._1
1630- let fa = eY._2
1631- let fb = eY._3
1632- let dh = eY._4
1633- let di = eY._5
1634- let cZ = eY._6
1635- let fc = ((eZ - dh) - di)
1636- let fd = bK(T)
1637- let fe = bL(fc, er, fd, DOWN)
1638- let dS = U(fe, eX, c, "withdraw: less than min")
1639- if ((dS == dS))
1636+ let fc = ee(T, eB.payments[0].amount)
1637+ let fd = fc._1
1638+ let fe = fc._2
1639+ let ff = fc._3
1640+ let dk = fc._4
1641+ let dl = fc._5
1642+ let dc = fc._6
1643+ let fg = ((fd - dk) - dl)
1644+ let fh = bK(T)
1645+ let fi = bL(fg, ev, fh, DOWN)
1646+ let dX = U(fi, fb, c, "withdraw: less than min")
1647+ if ((dX == dX))
16401648 then {
1641- let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1642- $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit)
1649+ let eL = $Tuple10(bD._1, bD._2, (bD._3 - eB.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1650+ $Tuple2((((((([Burn(eu, eB.payments[0].amount), ScriptTransfer(eB.caller, fi, aC(T))] ++ aO(eL)) ++ aU(fe)) ++ aX(ff)) ++ bd(T, (dk + bc(T)))) ++ bf(T, (dl + be(T)))) ++ bj(dc)), unit)
16431651 }
16441652 else throw("Strict value is not equal to itself.")
16451653 }
16481656
16491657
16501658
1651-@Callable(ex)
1652-func swap (ff,eX) = {
1659+@Callable(eB)
1660+func swap (fj,fb) = {
16531661 let bD = aM()
1654- let eq = bD._1
1655- let er = bK(toBase58String(eq))
1656- let dl = aQ()
1657- let fg = aA(ex.payments[0].assetId)
1658- let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN)
1659- let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset")
1660- if ((dL == dL))
1661- then {
1662- let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1663- if ((ee == ee))
1662+ let eu = bD._1
1663+ let ev = bK(toBase58String(eu))
1664+ let do = aQ()
1665+ let fk = aA(eB.payments[0].assetId)
1666+ let fl = bL(eB.payments[0].amount, bK(fk), ev, DOWN)
1667+ let dO = valueOrErrorMessage(indexOf(do, fk), "swap: invalid source asset")
1668+ if ((dO == dO))
1669+ then {
1670+ let ei = valueOrErrorMessage(indexOf(do, fj), "swap: invalid target asset")
1671+ if ((ei == ei))
16641672 then {
16651673 let cl = if (if (if (if (if (if (bE())
16661674 then bF()
16671675 else false)
16681676 then bI()
16691677 else false)
1670- then U(eX, 0, c, "swap: invalid min target amount")
1678+ then U(fb, 0, c, "swap: invalid min target amount")
16711679 else false)
1672- then U(fh, 1, c, "swap: invalid source amount")
1680+ then U(fl, 1, c, "swap: invalid source amount")
16731681 else false)
1674- then ad(fg, ff, "swap: same assets")
1682+ then ad(fk, fj, "swap: same assets")
16751683 else false)
1676- then ar(size(ex.payments), 1, "swap: invalid payments size")
1684+ then ar(size(eB.payments), 1, "swap: invalid payments size")
16771685 else false
16781686 if ((cl == cl))
16791687 then {
1680- let fi = em(dL, ee, fh)
1681- let eZ = fi._1
1682- let fa = fi._2
1683- let fb = fi._3
1684- let dh = fi._4
1685- let di = fi._5
1686- let cZ = fi._6
1687- let fc = ((eZ - dh) - di)
1688- let fd = bK(ff)
1689- let fe = bL(fc, er, fd, DOWN)
1690- let dS = U(fe, eX, c, "swap: less than min")
1691- if ((dS == dS))
1692- then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit)
1688+ let fm = eq(dO, ei, fl)
1689+ let fd = fm._1
1690+ let fe = fm._2
1691+ let ff = fm._3
1692+ let dk = fm._4
1693+ let dl = fm._5
1694+ let dc = fm._6
1695+ let fg = ((fd - dk) - dl)
1696+ let fh = bK(fj)
1697+ let fi = bL(fg, ev, fh, DOWN)
1698+ let dX = U(fi, fb, c, "swap: less than min")
1699+ if ((dX == dX))
1700+ then $Tuple2(((((([ScriptTransfer(eB.caller, fi, aC(fj))] ++ aU(fe)) ++ aX(ff)) ++ bd(fj, (dk + bc(fj)))) ++ bf(fj, (dl + be(fj)))) ++ bj(dc)), unit)
16931701 else throw("Strict value is not equal to itself.")
16941702 }
16951703 else throw("Strict value is not equal to itself.")
17011709
17021710
17031711
1704-@Callable(ex)
1712+@Callable(eB)
17051713 func getDepositAll (cy) = {
17061714 let cl = U(cy, 1, c, "getDepositAll: invalid amount")
17071715 if ((cl == cl))
17081716 then {
1709- let fj = dj(cy)
1710- let dz = fj._1
1711- let dv = fj._2
1712- let dB = fj._3
1713- $Tuple2(nil, $Tuple2(dz, dv))
1714- }
1715- else throw("Strict value is not equal to itself.")
1716- }
1717-
1718-
1719-
1720-@Callable(ex)
1717+ let fn = dm(cy)
1718+ let dC = fn._1
1719+ let dy = fn._2
1720+ let dE = fn._3
1721+ $Tuple2(nil, $Tuple2(dC, dy))
1722+ }
1723+ else throw("Strict value is not equal to itself.")
1724+ }
1725+
1726+
1727+
1728+@Callable(eB)
17211729 func getDeposit (T,bM) = {
17221730 let cl = if (ay(aQ(), T, "getDeposit: invalid asset"))
17231731 then U(bM, 1, c, "getDeposit: invalid amount")
17251733 if ((cl == cl))
17261734 then {
17271735 let bD = aM()
1728- let eq = bD._1
1729- let er = bK(toBase58String(eq))
1736+ let eu = bD._1
1737+ let ev = bK(toBase58String(eu))
17301738 let bV = bK(T)
1731- let eR = bL(bM, bV, er, DOWN)
1732- let fk = dD(T, eR)
1733- let dz = fk._1
1734- let dB = fk._2
1735- let ej = fk._3
1736- let dh = fk._4
1737- let di = fk._5
1738- let cZ = fk._6
1739- let eT = ((dz - dh) - di)
1740- $Tuple2(nil, eT)
1741- }
1742- else throw("Strict value is not equal to itself.")
1743- }
1744-
1745-
1746-
1747-@Callable(ex)
1739+ let eV = bL(bM, bV, ev, DOWN)
1740+ let fo = dG(T, eV)
1741+ let dC = fo._1
1742+ let dE = fo._2
1743+ let en = fo._3
1744+ let dk = fo._4
1745+ let dl = fo._5
1746+ let dc = fo._6
1747+ let eX = ((dC - dk) - dl)
1748+ $Tuple2(nil, eX)
1749+ }
1750+ else throw("Strict value is not equal to itself.")
1751+ }
1752+
1753+
1754+
1755+@Callable(eB)
17481756 func getWithdrawAll (cy) = {
17491757 let cl = U(cy, 0, c, "getWithdrawAll: invalid amount")
17501758 if ((cl == cl))
17511759 then {
1752- let fl = dU(cy)
1753- let dX = fl._1
1754- let fm = fl._2
1755- let dB = fl._3
1756- $Tuple2(nil, fm)
1757- }
1758- else throw("Strict value is not equal to itself.")
1759- }
1760-
1761-
1762-
1763-@Callable(ex)
1760+ let fp = dY(cy)
1761+ let eb = fp._1
1762+ let fq = fp._2
1763+ let dE = fp._3
1764+ $Tuple2(nil, fq)
1765+ }
1766+ else throw("Strict value is not equal to itself.")
1767+ }
1768+
1769+
1770+
1771+@Callable(eB)
17641772 func getWithdraw (T,bM) = {
17651773 let cl = if (ay(aQ(), T, "getWithdraw: invalid asset"))
17661774 then U(bM, 1, c, "getWithdraw: invalid amount")
17681776 if ((cl == cl))
17691777 then {
17701778 let bD = aM()
1771- let eq = bD._1
1772- let er = bK(toBase58String(eq))
1773- let fn = ea(T, bM)
1774- let eZ = fn._1
1775- let dB = fn._2
1776- let ej = fn._3
1777- let dh = fn._4
1778- let di = fn._5
1779- let cZ = fn._6
1780- let fc = ((eZ - dh) - di)
1781- let fd = bK(T)
1782- let fe = bL(fc, er, fd, DOWN)
1783- $Tuple2(nil, fe)
1784- }
1785- else throw("Strict value is not equal to itself.")
1786- }
1787-
1788-
1789-
1790-@Callable(ex)
1791-func getSwap (fo,ff,ep) = {
1779+ let eu = bD._1
1780+ let ev = bK(toBase58String(eu))
1781+ let fr = ee(T, bM)
1782+ let fd = fr._1
1783+ let dE = fr._2
1784+ let en = fr._3
1785+ let dk = fr._4
1786+ let dl = fr._5
1787+ let dc = fr._6
1788+ let fg = ((fd - dk) - dl)
1789+ let fh = bK(T)
1790+ let fi = bL(fg, ev, fh, DOWN)
1791+ $Tuple2(nil, fi)
1792+ }
1793+ else throw("Strict value is not equal to itself.")
1794+ }
1795+
1796+
1797+
1798+@Callable(eB)
1799+func getSwap (fs,fj,et) = {
17921800 let bD = aM()
1793- let eq = bD._1
1794- let er = bK(toBase58String(eq))
1795- let dl = aQ()
1796- let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset")
1797- if ((dL == dL))
1798- then {
1799- let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1800- if ((ee == ee))
1801+ let eu = bD._1
1802+ let ev = bK(toBase58String(eu))
1803+ let do = aQ()
1804+ let dO = valueOrErrorMessage(indexOf(do, fs), "swap: invalid source asset")
1805+ if ((dO == dO))
1806+ then {
1807+ let ei = valueOrErrorMessage(indexOf(do, fj), "swap: invalid target asset")
1808+ if ((ei == ei))
18011809 then {
1802- let fh = bL(ep, bK(fo), er, DOWN)
1803- let cl = if (U(fh, 1, c, "swap: invalid source amount"))
1804- then ad(fo, ff, "swap: same assets")
1810+ let fl = bL(et, bK(fs), ev, DOWN)
1811+ let cl = if (U(fl, 1, c, "swap: invalid source amount"))
1812+ then ad(fs, fj, "swap: same assets")
18051813 else false
18061814 if ((cl == cl))
18071815 then {
1808- let fp = em(dL, ee, fh)
1809- let eZ = fp._1
1810- let fa = fp._2
1811- let fb = fp._3
1812- let dh = fp._4
1813- let di = fp._5
1814- let cZ = fp._6
1815- let fc = ((eZ - dh) - di)
1816- let fd = bK(ff)
1817- let fe = bL(fc, er, fd, DOWN)
1818- $Tuple2(nil, fe)
1816+ let ft = eq(dO, ei, fl)
1817+ let fd = ft._1
1818+ let fe = ft._2
1819+ let ff = ft._3
1820+ let dk = ft._4
1821+ let dl = ft._5
1822+ let dc = ft._6
1823+ let fg = ((fd - dk) - dl)
1824+ let fh = bK(fj)
1825+ let fi = bL(fg, ev, fh, DOWN)
1826+ $Tuple2(nil, fi)
18191827 }
18201828 else throw("Strict value is not equal to itself.")
18211829 }
18261834
18271835
18281836
1829-@Callable(ex)
1837+@Callable(eB)
18301838 func getClaim (bl) = {
1831- let fq = if ((size(bl) > 0))
1839+ let fu = if ((size(bl) > 0))
18321840 then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user")
1833- else ex.caller
1834- let fr = cM(fq)
1835- let fs = fr._1
1836- let cO = fr._2
1837- $Tuple2(nil, cO)
1838- }
1839-
1840-
1841-
1842-@Callable(ex)
1841+ else eB.caller
1842+ let fv = cP(fu)
1843+ let fw = fv._1
1844+ let cR = fv._2
1845+ $Tuple2(nil, cR)
1846+ }
1847+
1848+
1849+
1850+@Callable(eB)
18431851 func getAssetId () = {
18441852 let bD = aM()
1845- let eq = bD._1
1846- $Tuple2(nil, toBase58String(eq))
1847- }
1848-
1849-
1850-
1851-@Callable(ex)
1853+ let eu = bD._1
1854+ $Tuple2(nil, toBase58String(eu))
1855+ }
1856+
1857+
1858+
1859+@Callable(eB)
18521860 func getDecimals () = {
18531861 let bD = aM()
1854- let eq = bD._1
1855- let er = bK(toBase58String(eq))
1856- $Tuple2(nil, er)
1857- }
1858-
1859-
1860-
1861-@Callable(ex)
1862+ let eu = bD._1
1863+ let ev = bK(toBase58String(eu))
1864+ $Tuple2(nil, ev)
1865+ }
1866+
1867+
1868+
1869+@Callable(eB)
18621870 func checkpoint (bl) = {
18631871 let cl = if (bE())
18641872 then bF()
18651873 else false
18661874 if ((cl == cl))
18671875 then {
1868- let fq = if ((size(bl) > 0))
1876+ let fu = if ((size(bl) > 0))
18691877 then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user")
1870- else ex.caller
1871- cM(fq)
1872- }
1873- else throw("Strict value is not equal to itself.")
1874- }
1875-
1876-
1877-
1878-@Callable(ex)
1878+ else eB.caller
1879+ cP(fu)
1880+ }
1881+ else throw("Strict value is not equal to itself.")
1882+ }
1883+
1884+
1885+
1886+@Callable(eB)
18791887 func stake () = {
18801888 let cl = if (bE())
18811889 then bF()
18831891 if ((cl == cl))
18841892 then {
18851893 let bD = aM()
1886- let eP = aA(bD._1)
1887- let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size"))
1888- then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset")
1894+ let eT = aA(bD._1)
1895+ let dX = if (if (ar(size(eB.payments), 1, "stake: invalid payments size"))
1896+ then aa(eT, aA(eB.payments[0].assetId), "stake: invalid payment asset")
18891897 else false)
1890- then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount")
1898+ then U(eB.payments[0].amount, 0, c, "stake: invalid payment amount")
18911899 else false
1892- if ((dS == dS))
1900+ if ((dX == dX))
18931901 then {
1894- let ft = cM(ex.caller)
1895- let fs = ft._1
1896- let cO = ft._2
1897- $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit)
1902+ let fx = cP(eB.caller)
1903+ let fw = fx._1
1904+ let cR = fx._2
1905+ $Tuple2(((fw ++ bo(eB.caller, (bn(eB.caller) + eB.payments[0].amount))) ++ bq((bp() + eB.payments[0].amount))), unit)
18981906 }
18991907 else throw("Strict value is not equal to itself.")
19001908 }
19031911
19041912
19051913
1906-@Callable(ex)
1914+@Callable(eB)
19071915 func unstake (bM) = {
19081916 let cl = if (bE())
19091917 then bF()
19111919 if ((cl == cl))
19121920 then {
19131921 let bD = aM()
1914- let eq = bD._1
1915- let cN = bn(ex.caller)
1916- let dS = U(bM, 0, cN, "unstake: invalid amount")
1917- if ((dS == dS))
1922+ let eu = bD._1
1923+ let cQ = bn(eB.caller)
1924+ let dX = U(bM, 0, cQ, "unstake: invalid amount")
1925+ if ((dX == dX))
19181926 then {
1919- let fu = cM(ex.caller)
1920- let fs = fu._1
1921- let cO = fu._2
1922- $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit)
1927+ let fy = cP(eB.caller)
1928+ let fw = fy._1
1929+ let cR = fy._2
1930+ $Tuple2(((([ScriptTransfer(eB.caller, bM, eu)] ++ fw) ++ bo(eB.caller, (cQ - bM))) ++ bq((bp() - bM))), unit)
19231931 }
19241932 else throw("Strict value is not equal to itself.")
19251933 }
19281936
19291937
19301938
1931-@Callable(ex)
1939+@Callable(eB)
19321940 func claim (bl) = {
19331941 let cl = if (bE())
19341942 then bF()
19351943 else false
19361944 if ((cl == cl))
19371945 then {
1938- let fq = if ((size(bl) > 0))
1946+ let fu = if ((size(bl) > 0))
19391947 then valueOrErrorMessage(addressFromString(bl), "claim: invalid user")
1940- else ex.caller
1948+ else eB.caller
19411949 let bD = aM()
1942- let eq = bD._1
1943- let eP = aA(eq)
1944- let dl = [eP, aQ()]
1945- let cL = (size(dl) - 1)
1946- let fv = cM(fq)
1947- let fs = fv._1
1948- let cO = fv._2
1949- func af (ag,fw) = {
1950+ let eu = bD._1
1951+ let eT = aA(eu)
1952+ let do = [eT, aQ()]
1953+ let cO = (size(do) - 1)
1954+ let fz = cP(fu)
1955+ let fw = fz._1
1956+ let cR = fz._2
1957+ func af (ag,fA) = {
19501958 let cd = ag._1
1951- if (if ((cL >= cd))
1952- then (fw > 0)
1959+ if (if ((cO >= cd))
1960+ then (fA > 0)
19531961 else false)
19541962 then {
1955- let fx = dl[cd]
1956- $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx))))
1963+ let fB = do[cd]
1964+ $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fu, fA, aC(fB))))
19571965 }
1958- else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3)
1966+ else $Tuple3((cd + 1), (ag._2 :+ fA), ag._3)
19591967 }
19601968
1961- let fy = {
1962- let ai = cO
1969+ let fC = {
1970+ let ai = cR
19631971 let aj = size(ai)
19641972 let ak = $Tuple3(0, nil, nil)
19651973 func al (am,an) = if ((an >= aj))
19721980
19731981 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
19741982 }
1975- let cT = fy._1
1976- let fz = fy._2
1977- let fA = fy._3
1978- $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
1979- }
1980- else throw("Strict value is not equal to itself.")
1981- }
1982-
1983-
1984-
1985-@Callable(ex)
1983+ let cW = fC._1
1984+ let fD = fC._2
1985+ let fE = fC._3
1986+ $Tuple2(((fE ++ removeByIndex(fw, 0)) ++ bs(fu, fD)), unit)
1987+ }
1988+ else throw("Strict value is not equal to itself.")
1989+ }
1990+
1991+
1992+
1993+@Callable(eB)
19861994 func claimAll (bl) = {
19871995 let cl = if (bE())
19881996 then bF()
19891997 else false
19901998 if ((cl == cl))
19911999 then {
1992- let fq = if ((size(bl) > 0))
2000+ let fu = if ((size(bl) > 0))
19932001 then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user")
1994- else ex.caller
2002+ else eB.caller
19952003 let bD = aM()
1996- let eq = bD._1
1997- let eP = aA(eq)
1998- let dl = [eP, aQ()]
1999- let cL = (size(dl) - 1)
2000- let fB = aS()
2001- let dB = fB._1
2002- let dC = fB._2
2003- let fC = cM(fq)
2004- let fs = fC._1
2005- let cO = fC._2
2006- func af (ag,fw) = {
2004+ let eu = bD._1
2005+ let eT = aA(eu)
2006+ let do = [eT, aQ()]
2007+ let cO = (size(do) - 1)
2008+ let fF = aS()
2009+ let dE = fF._1
2010+ let dF = fF._2
2011+ let fG = cP(fu)
2012+ let fw = fG._1
2013+ let cR = fG._2
2014+ func af (ag,fA) = {
20072015 let cd = ag._1
20082016 if ((cd == 0))
2009- then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw))
2017+ then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fA))
20102018 else if (if ((cd > 0))
2011- then (cL >= cd)
2019+ then (cO >= cd)
20122020 else false)
20132021 then {
2014- let fD = (cd - 1)
2015- let aT = dB[fD]
2016- $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5)
2022+ let fH = (cd - 1)
2023+ let aT = dE[fH]
2024+ $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fA)), (ag._4 + fA), ag._5)
20172025 }
20182026 else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5)
20192027 }
20202028
2021- let fE = {
2022- let ai = cO
2029+ let fI = {
2030+ let ai = cR
20232031 let aj = size(ai)
20242032 let ak = $Tuple5(0, nil, nil, 0, 0)
20252033 func al (am,an) = if ((an >= aj))
20322040
20332041 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20342042 }
2035- let cT = fE._1
2036- let fz = fE._2
2037- let fF = fE._3
2038- let dz = fE._4
2039- let fG = fE._5
2040- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2041- $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
2042- }
2043- else throw("Strict value is not equal to itself.")
2044- }
2045-
2046-
2047-
2048-@Callable(ex)
2049-func updatePoolFees (dd,de) = {
2050- let cl = if (if (if (bz(ex.caller))
2043+ let cW = fI._1
2044+ let fD = fI._2
2045+ let fJ = fI._3
2046+ let dC = fI._4
2047+ let fK = fI._5
2048+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2049+ $Tuple2((((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, (dC + fK), eu)] ++ aO(eL)) ++ aU(fJ)) ++ removeByIndex(fw, 0)) ++ bs(fu, fD)), unit)
2050+ }
2051+ else throw("Strict value is not equal to itself.")
2052+ }
2053+
2054+
2055+
2056+@Callable(eB)
2057+func updatePoolFees (dg,dh) = {
2058+ let cl = if (if (if (bz(eB.caller))
20512059 then bE()
20522060 else false)
2053- then U(dd, 0, d, "updatePoolFees: invalid lp fee")
2054- else false)
2055- then U(de, 0, d, "updatePoolFees: invalid protocol fee")
2061+ then U(dg, 0, d, "updatePoolFees: invalid lp fee")
2062+ else false)
2063+ then U(dh, 0, d, "updatePoolFees: invalid protocol fee")
20562064 else false
20572065 if ((cl == cl))
20582066 then {
20592067 let bD = aM()
2060- let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10)
2061- $Tuple2(aO(eH), unit)
2062- }
2063- else throw("Strict value is not equal to itself.")
2064- }
2065-
2066-
2067-
2068-@Callable(ex)
2069-func updatePoolParams (eB,cz,cA,eC) = {
2070- let cl = if (if (if (if (if (bz(ex.caller))
2068+ let eL = $Tuple10(bD._1, bD._2, bD._3, dg, dh, bD._6, bD._7, bD._8, bD._9, bD._10)
2069+ $Tuple2(aO(eL), unit)
2070+ }
2071+ else throw("Strict value is not equal to itself.")
2072+ }
2073+
2074+
2075+
2076+@Callable(eB)
2077+func updatePoolParams (eF,cz,cA,eG) = {
2078+ let cl = if (if (if (if (if (bz(eB.caller))
20712079 then bE()
20722080 else false)
2073- then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2074- else false)
2075- then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier")
2081+ then U(eF, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2082+ else false)
2083+ then U(cz, 0, eF, "updatePoolParams: invalid weightAmplifier")
20762084 else false)
20772085 then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff")
20782086 else false)
2079- then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate")
2087+ then U(eG, 0, c, "updatePoolParams: invalid feeMaxRate")
20802088 else false
20812089 if ((cl == cl))
20822090 then {
20832091 let bD = aM()
2084- let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10)
2085- $Tuple2(aO(eH), unit)
2086- }
2087- else throw("Strict value is not equal to itself.")
2088- }
2089-
2090-
2091-
2092-@Callable(ex)
2092+ let eL = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eF, cz, cA, eG, bD._10)
2093+ $Tuple2(aO(eL), unit)
2094+ }
2095+ else throw("Strict value is not equal to itself.")
2096+ }
2097+
2098+
2099+
2100+@Callable(eB)
20932101 func migrateBalances () = {
2094- let cl = if (bz(ex.caller))
2102+ let cl = if (bz(eB.caller))
20952103 then bE()
20962104 else false
20972105 if ((cl == cl))
20982106 then {
20992107 let bD = aM()
2100- let fH = bD._3
2101- let fI = aS()
2102- let dB = fI._1
2103- let dC = fI._2
2104- let fJ = max([(dC - fH), 0])
2105- let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2106- $Tuple2(aO(eH), unit)
2107- }
2108- else throw("Strict value is not equal to itself.")
2109- }
2110-
2111-
2112-
2113-@Callable(ex)
2108+ let fL = bD._3
2109+ let fM = aS()
2110+ let dE = fM._1
2111+ let dF = fM._2
2112+ let fN = max([(dF - fL), 0])
2113+ let eL = $Tuple10(bD._1, bD._2, (fL + fN), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2114+ $Tuple2(aO(eL), unit)
2115+ }
2116+ else throw("Strict value is not equal to itself.")
2117+ }
2118+
2119+
2120+
2121+@Callable(eB)
21142122 func pause () = {
2115- let cl = if (if (bH(ex.caller))
2123+ let cl = if (if (bH(eB.caller))
21162124 then bE()
21172125 else false)
21182126 then bF()
21242132
21252133
21262134
2127-@Callable(ex)
2135+@Callable(eB)
21282136 func unpause () = {
2129- let cl = if (if (bz(ex.caller))
2137+ let cl = if (if (bz(eB.caller))
21302138 then bE()
21312139 else false)
21322140 then bG()
21382146
21392147
21402148
2141-@Callable(ex)
2149+@Callable(eB)
21422150 func updatePauser (aI) = {
2143- let cl = if (if (bz(ex.caller))
2151+ let cl = if (if (bz(eB.caller))
21442152 then bE()
21452153 else false)
21462154 then N(aI, "updatePauser: invalid pauser")
21522160
21532161
21542162
2155-@Callable(ex)
2163+@Callable(eB)
21562164 func updateWatchdog (bv,by) = {
2157- let cl = if (if (if (bz(ex.caller))
2165+ let cl = if (if (if (bz(eB.caller))
21582166 then bE()
21592167 else false)
21602168 then N(bv, "updateWatchdog: invalid watchdog")
21682176
21692177
21702178
2171-@Callable(ex)
2179+@Callable(eB)
21722180 func setMultisig (aL) = {
2173- let cl = if (bz(ex.caller))
2181+ let cl = if (bz(eB.caller))
21742182 then N(aL, "setMultisig: invalid multisig")
21752183 else false
21762184 if ((cl == cl))
21792187 }
21802188
21812189
2182-@Verifier(fK)
2183-func fL () = {
2190+@Verifier(fO)
2191+func fP () = {
21842192 let Q = getString(t)
21852193 if ($isInstanceOf(Q, "String"))
21862194 then {
2187- let fM = Q
2188- valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false)
2189- }
2190- else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey)
2195+ let fQ = Q
2196+ valueOrElse(getBoolean(addressFromStringValue(fQ), makeString([u, toString(this), toBase58String(fO.id)], a)), false)
2197+ }
2198+ else sigVerify(fO.bodyBytes, fO.proofs[0], fO.senderPublicKey)
21912199 }
21922200
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "waves"
77
88 let c = 9223372036854775807
99
1010 let d = 1000000
1111
1212 let e = 1000000
1313
1414 let f = 1000000
1515
1616 let g = 1000000
1717
1818 let h = 1000000
1919
2020 let i = 1000000
2121
2222 let j = toBigInt(1000000000000000000)
2323
2424 let k = toBigInt(1000000000000)
2525
2626 let l = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2727
2828 let m = (l :+ 0)
2929
3030 let n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
3131
3232 let o = toBigInt(0)
3333
3434 let p = [o, o, o, o, o, o, o, o, o, o, o]
3535
3636 let q = 8
3737
3838 let r = 18
3939
4040 let s = split_51C("0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0", "_")
4141
4242 let t = "MULTISIG"
4343
4444 let u = "STATUS"
4545
4646 let v = "PAUSED"
4747
4848 let w = "PAUSER"
4949
5050 let x = "STORAGE"
5151
5252 let y = "ASSETS"
5353
5454 let z = "ASSET_BALANCES"
5555
5656 let A = "REWARD_BALANCES"
5757
5858 let B = "ASSET_WEIGHTS"
5959
6060 let C = "LP_FEE"
6161
6262 let D = "PROTOCOL_FEE"
6363
6464 let E = "PRECISION"
6565
6666 let F = "SIGMA_FEE_PER_LP"
6767
6868 let G = "USER_SIGMA_FEE_PER_LP"
6969
7070 let H = "USER_LP"
7171
7272 let I = "TOTAL_LP"
7373
7474 let J = "USER_PROFITS"
7575
7676 let K = "WATCHDOG"
7777
7878 let L = "WATCHDOG_OFFSET"
7979
8080 let M = "WATCHDOG_HEIGHT"
8181
8282 func N (O,P) = {
8383 let Q = addressFromString(O)
8484 if ($isInstanceOf(Q, "Address"))
8585 then {
8686 let R = Q
8787 true
8888 }
8989 else throw(P)
9090 }
9191
9292
9393 func S (T,P) = if ((T == b))
9494 then true
9595 else {
9696 let Q = assetInfo(fromBase58String(T))
9797 if ($isInstanceOf(Q, "Asset"))
9898 then {
9999 let R = Q
100100 true
101101 }
102102 else throw(P)
103103 }
104104
105105
106106 func U (V,W,X,P) = if (if ((W > V))
107107 then true
108108 else (V > X))
109109 then throw(P)
110110 else true
111111
112112
113113 func Y (V,Z,P) = if ((V != Z))
114114 then throw(P)
115115 else true
116116
117117
118118 func aa (ab,ac,P) = if ((ab != ac))
119119 then throw(P)
120120 else true
121121
122122
123123 func ad (ab,ac,P) = if ((ab == ac))
124124 then throw(P)
125125 else true
126126
127127
128128 func ae (V,W,X,P) = {
129129 func af (ag,ah) = {
130130 let Q = parseInt(ah)
131131 if ($isInstanceOf(Q, "Int"))
132132 then {
133133 let R = Q
134134 if (ag)
135135 then U(R, W, X, P)
136136 else false
137137 }
138138 else throw(P)
139139 }
140140
141141 let ai = V
142142 let aj = size(ai)
143143 let ak = true
144144 func al (am,an) = if ((an >= aj))
145145 then am
146146 else af(am, ai[an])
147147
148148 func ao (am,an) = if ((an >= aj))
149149 then am
150150 else throw("List size exceeds 10")
151151
152152 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
153153 }
154154
155155
156156 func ap (aq,P) = {
157157 func af (ag,ah) = if (ag)
158158 then S(ah, P)
159159 else false
160160
161161 let ai = aq
162162 let aj = size(ai)
163163 let ak = true
164164 func al (am,an) = if ((an >= aj))
165165 then am
166166 else af(am, ai[an])
167167
168168 func ao (am,an) = if ((an >= aj))
169169 then am
170170 else throw("List size exceeds 10")
171171
172172 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
173173 }
174174
175175
176176 func ar (ab,ac,P) = if ((ab != ac))
177177 then throw(P)
178178 else true
179179
180180
181181 func as (V,P) = if (if ((4 > size(V)))
182182 then true
183183 else (size(V) > 16))
184184 then throw(P)
185185 else true
186186
187187
188188 func at (V,P) = if ((size(V) > 1000))
189189 then throw(P)
190190 else true
191191
192192
193193 func au (V,P) = if (if ((0 > V))
194194 then true
195195 else (V > 8))
196196 then throw(P)
197197 else true
198198
199199
200200 func av (aw,T,ax,P) = {
201201 let Q = aw.assetId
202202 if ($isInstanceOf(Q, "ByteVector"))
203203 then {
204204 let R = Q
205205 if ((T != toBase58String(R)))
206206 then throw((P + ": asset"))
207207 else if ((ax > aw.amount))
208208 then throw((P + ": amount"))
209209 else true
210210 }
211211 else throw((P + ": asset"))
212212 }
213213
214214
215215 func ay (az,V,P) = if (!(containsElement(az, V)))
216216 then throw(P)
217217 else true
218218
219219
220220 func aA (aB) = {
221221 let Q = aB
222222 if ($isInstanceOf(Q, "ByteVector"))
223223 then {
224224 let R = Q
225225 toBase58String(R)
226226 }
227227 else b
228228 }
229229
230230
231231 func aC (aB) = if (if ((aB == b))
232232 then true
233233 else (aB == ""))
234234 then unit
235235 else fromBase58String(aB)
236236
237237
238238 func aD () = {
239239 let Q = getBoolean(v)
240240 if ($isInstanceOf(Q, "Boolean"))
241241 then {
242242 let R = Q
243243 R
244244 }
245245 else false
246246 }
247247
248248
249249 func aE (aF) = [BooleanEntry(v, aF)]
250250
251251
252252 func aG () = {
253253 let Q = getString(w)
254254 if ($isInstanceOf(Q, "String"))
255255 then {
256256 let R = Q
257257 addressFromStringValue(R)
258258 }
259259 else Address(base58'')
260260 }
261261
262262
263263 func aH (aI) = [StringEntry(w, toString(aI))]
264264
265265
266266 func aJ () = {
267267 let Q = getString(t)
268268 if ($isInstanceOf(Q, "String"))
269269 then {
270270 let R = Q
271271 addressFromStringValue(R)
272272 }
273273 else Address(base58'')
274274 }
275275
276276
277277 func aK (aL) = [StringEntry(t, toString(aL))]
278278
279279
280280 func aM () = {
281281 let Q = getString(x)
282282 if ($isInstanceOf(Q, "String"))
283283 then {
284284 let R = Q
285285 let aN = split(R, a)
286286 $Tuple10(fromBase58String(aN[0]), (aN[1] == "1"), parseIntValue(aN[2]), parseIntValue(aN[3]), parseIntValue(aN[4]), parseIntValue(aN[5]), parseIntValue(aN[6]), parseIntValue(aN[7]), parseIntValue(aN[8]), addressFromStringValue(aN[9]))
287287 }
288288 else $Tuple10(base58'', false, 0, 0, 0, 0, 0, 0, 0, Address(base58''))
289289 }
290290
291291
292292 func aO (aP) = [StringEntry(x, makeString([toBase58String(aP._1), if (aP._2)
293293 then "1"
294294 else "0", toString(aP._3), toString(aP._4), toString(aP._5), toString(aP._6), toString(aP._7), toString(aP._8), toString(aP._9), toString(aP._10)], a))]
295295
296296
297297 func aQ () = {
298298 let Q = getString(y)
299299 if ($isInstanceOf(Q, "String"))
300300 then {
301301 let R = Q
302302 if ((size(R) > 0))
303303 then split_51C(R, a)
304304 else nil
305305 }
306306 else nil
307307 }
308308
309309
310310 func aR (aq) = [StringEntry(y, makeString_11C(aq, a))]
311311
312312
313313 func aS () = {
314314 func af (ag,ah) = {
315315 let aT = parseIntValue(ah)
316316 $Tuple2((ag._1 :+ aT), (ag._2 + aT))
317317 }
318318
319319 let Q = getString(z)
320320 if ($isInstanceOf(Q, "String"))
321321 then {
322322 let R = Q
323323 if ((size(R) > 0))
324324 then {
325325 let ai = split_51C(R, a)
326326 let aj = size(ai)
327327 let ak = $Tuple2(nil, 0)
328328 func al (am,an) = if ((an >= aj))
329329 then am
330330 else af(am, ai[an])
331331
332332 func ao (am,an) = if ((an >= aj))
333333 then am
334334 else throw("List size exceeds 10")
335335
336336 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
337337 }
338338 else $Tuple2(l, 0)
339339 }
340340 else $Tuple2(l, 0)
341341 }
342342
343343
344344 func aU (aV) = {
345345 func af (ag,ah) = (ag :+ toString(ah))
346346
347347 [StringEntry(z, makeString_11C({
348348 let ai = aV
349349 let aj = size(ai)
350350 let ak = nil
351351 func al (am,an) = if ((an >= aj))
352352 then am
353353 else af(am, ai[an])
354354
355355 func ao (am,an) = if ((an >= aj))
356356 then am
357357 else throw("List size exceeds 10")
358358
359359 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
360360 }, a))]
361361 }
362362
363363
364364 func aW () = {
365365 func af (ag,ah) = {
366366 let aT = parseIntValue(ah)
367367 (ag :+ aT)
368368 }
369369
370370 let Q = getString(A)
371371 if ($isInstanceOf(Q, "String"))
372372 then {
373373 let R = Q
374374 if ((size(R) > 0))
375375 then {
376376 let ai = split_51C(R, a)
377377 let aj = size(ai)
378378 let ak = nil
379379 func al (am,an) = if ((an >= aj))
380380 then am
381381 else af(am, ai[an])
382382
383383 func ao (am,an) = if ((an >= aj))
384384 then am
385385 else throw("List size exceeds 10")
386386
387387 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
388388 }
389389 else l
390390 }
391391 else l
392392 }
393393
394394
395395 func aX (aV) = {
396396 func af (ag,ah) = (ag :+ toString(ah))
397397
398398 [StringEntry(A, makeString_11C({
399399 let ai = aV
400400 let aj = size(ai)
401401 let ak = nil
402402 func al (am,an) = if ((an >= aj))
403403 then am
404404 else af(am, ai[an])
405405
406406 func ao (am,an) = if ((an >= aj))
407407 then am
408408 else throw("List size exceeds 10")
409409
410410 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
411411 }, a))]
412412 }
413413
414414
415415 func aY () = {
416416 func af (ag,ah) = {
417417 let aZ = parseIntValue(ah)
418418 $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
419419 }
420420
421421 let Q = getString(B)
422422 if ($isInstanceOf(Q, "String"))
423423 then {
424424 let R = Q
425425 if ((size(R) > 0))
426426 then {
427427 let ai = split_51C(R, a)
428428 let aj = size(ai)
429429 let ak = $Tuple2(nil, 0)
430430 func al (am,an) = if ((an >= aj))
431431 then am
432432 else af(am, ai[an])
433433
434434 func ao (am,an) = if ((an >= aj))
435435 then am
436436 else throw("List size exceeds 10")
437437
438438 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
439439 }
440440 else $Tuple2(l, 0)
441441 }
442442 else $Tuple2(l, 0)
443443 }
444444
445445
446446 func ba (bb) = {
447447 func af (ag,ah) = (ag :+ toString(ah))
448448
449449 [StringEntry(B, makeString_11C({
450450 let ai = bb
451451 let aj = size(ai)
452452 let ak = nil
453453 func al (am,an) = if ((an >= aj))
454454 then am
455455 else af(am, ai[an])
456456
457457 func ao (am,an) = if ((an >= aj))
458458 then am
459459 else throw("List size exceeds 10")
460460
461461 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
462462 }, a))]
463463 }
464464
465465
466466 func bc (T) = {
467467 let Q = getInteger(makeString([C, T], a))
468468 if ($isInstanceOf(Q, "Int"))
469469 then {
470470 let R = Q
471471 R
472472 }
473473 else 0
474474 }
475475
476476
477477 func bd (T,V) = [IntegerEntry(makeString([C, T], a), V)]
478478
479479
480480 func be (T) = {
481481 let Q = getInteger(makeString([D, T], a))
482482 if ($isInstanceOf(Q, "Int"))
483483 then {
484484 let R = Q
485485 R
486486 }
487487 else 0
488488 }
489489
490490
491491 func bf (T,V) = [IntegerEntry(makeString([D, T], a), V)]
492492
493493
494494 func bg () = {
495495 let Q = getInteger(E)
496496 if ($isInstanceOf(Q, "Int"))
497497 then {
498498 let R = Q
499499 R
500500 }
501501 else 0
502502 }
503503
504504
505505 func bh (V) = [IntegerEntry(E, V)]
506506
507507
508508 func bi () = {
509509 func af (ag,ah) = (ag :+ parseBigIntValue(ah))
510510
511511 let Q = getString(F)
512512 if ($isInstanceOf(Q, "String"))
513513 then {
514514 let R = Q
515515 if ((size(R) > 0))
516516 then {
517517 let ai = split_51C(R, a)
518518 let aj = size(ai)
519519 let ak = nil
520520 func al (am,an) = if ((an >= aj))
521521 then am
522522 else af(am, ai[an])
523523
524524 func ao (am,an) = if ((an >= aj))
525525 then am
526526 else throw("List size exceeds 11")
527527
528528 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
529529 }
530530 else p
531531 }
532532 else p
533533 }
534534
535535
536536 func bj (V) = {
537537 func af (ag,ah) = (ag :+ toString(ah))
538538
539539 [StringEntry(F, makeString_11C({
540540 let ai = V
541541 let aj = size(ai)
542542 let ak = nil
543543 func al (am,an) = if ((an >= aj))
544544 then am
545545 else af(am, ai[an])
546546
547547 func ao (am,an) = if ((an >= aj))
548548 then am
549549 else throw("List size exceeds 11")
550550
551551 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
552552 }, a))]
553553 }
554554
555555
556556 func bk (bl) = {
557557 func af (ag,ah) = (ag :+ parseBigIntValue(ah))
558558
559559 let Q = getString(makeString([G, toString(bl)], a))
560560 if ($isInstanceOf(Q, "String"))
561561 then {
562562 let R = Q
563563 if ((size(R) > 0))
564564 then {
565565 let ai = split_51C(R, a)
566566 let aj = size(ai)
567567 let ak = nil
568568 func al (am,an) = if ((an >= aj))
569569 then am
570570 else af(am, ai[an])
571571
572572 func ao (am,an) = if ((an >= aj))
573573 then am
574574 else throw("List size exceeds 11")
575575
576576 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
577577 }
578578 else p
579579 }
580580 else p
581581 }
582582
583583
584584 func bm (bl,V) = {
585585 func af (ag,ah) = (ag :+ toString(ah))
586586
587587 [StringEntry(makeString([G, toString(bl)], a), makeString_11C({
588588 let ai = V
589589 let aj = size(ai)
590590 let ak = nil
591591 func al (am,an) = if ((an >= aj))
592592 then am
593593 else af(am, ai[an])
594594
595595 func ao (am,an) = if ((an >= aj))
596596 then am
597597 else throw("List size exceeds 11")
598598
599599 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
600600 }, a))]
601601 }
602602
603603
604604 func bn (O) = {
605605 let Q = getInteger(makeString([H, toString(O)], a))
606606 if ($isInstanceOf(Q, "Int"))
607607 then {
608608 let R = Q
609609 R
610610 }
611611 else 0
612612 }
613613
614614
615615 func bo (O,V) = [IntegerEntry(makeString([H, toString(O)], a), V)]
616616
617617
618618 func bp () = {
619619 let Q = getInteger(I)
620620 if ($isInstanceOf(Q, "Int"))
621621 then {
622622 let R = Q
623623 R
624624 }
625625 else 0
626626 }
627627
628628
629629 func bq (V) = [IntegerEntry(I, V)]
630630
631631
632632 func br (bl) = {
633633 func af (ag,ah) = (ag :+ parseIntValue(ah))
634634
635635 let Q = getString(makeString([J, toString(bl)], a))
636636 if ($isInstanceOf(Q, "String"))
637637 then {
638638 let R = Q
639639 if ((size(R) > 0))
640640 then {
641641 let ai = split_51C(R, a)
642642 let aj = size(ai)
643643 let ak = nil
644644 func al (am,an) = if ((an >= aj))
645645 then am
646646 else af(am, ai[an])
647647
648648 func ao (am,an) = if ((an >= aj))
649649 then am
650650 else throw("List size exceeds 11")
651651
652652 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
653653 }
654654 else m
655655 }
656656 else m
657657 }
658658
659659
660660 func bs (bl,V) = {
661661 func af (ag,ah) = (ag :+ toString(ah))
662662
663663 [StringEntry(makeString([J, toString(bl)], a), makeString_11C({
664664 let ai = V
665665 let aj = size(ai)
666666 let ak = nil
667667 func al (am,an) = if ((an >= aj))
668668 then am
669669 else af(am, ai[an])
670670
671671 func ao (am,an) = if ((an >= aj))
672672 then am
673673 else throw("List size exceeds 11")
674674
675675 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
676676 }, a))]
677677 }
678678
679679
680680 func bt () = {
681681 let Q = getString(K)
682682 if ($isInstanceOf(Q, "String"))
683683 then {
684684 let R = Q
685685 addressFromStringValue(R)
686686 }
687687 else Address(base58'')
688688 }
689689
690690
691691 func bu (bv) = [StringEntry(K, toString(bv))]
692692
693693
694694 func bw () = {
695695 let Q = getInteger(L)
696696 if ($isInstanceOf(Q, "Int"))
697697 then {
698698 let R = Q
699699 R
700700 }
701701 else 0
702702 }
703703
704704
705705 func bx (by) = [IntegerEntry(L, by)]
706706
707707
708708 func bz (bA) = if ((bA != this))
709709 then throw("_onlyThisContract: revert")
710710 else true
711711
712712
713713 func bB () = if ((aJ() == Address(base58'')))
714714 then throw("_whenMultisigSet: revert")
715715 else true
716716
717717
718718 func bC () = {
719719 let bD = aM()
720720 if ((bD._1 != base58''))
721721 then throw("_whenNotInitialized: revert")
722722 else true
723723 }
724724
725725
726726 func bE () = {
727727 let bD = aM()
728728 if ((bD._1 == base58''))
729729 then throw("_whenInitialized: revert")
730730 else true
731731 }
732732
733733
734734 func bF () = if (aD())
735735 then throw("_whenNotPaused: revert")
736736 else true
737737
738738
739739 func bG () = if (!(aD()))
740740 then throw("_whenPaused: revert")
741741 else true
742742
743743
744744 func bH (bA) = if ((bA != aG()))
745745 then throw("_onlyPauser: revert")
746746 else true
747747
748748
749749 func bI () = {
750750 let bJ = {
751751 let Q = getInteger(bt(), M)
752752 if ($isInstanceOf(Q, "Int"))
753753 then {
754754 let R = Q
755755 (R + bw())
756756 }
757757 else 0
758758 }
759759 if ((height > bJ))
760760 then throw("_checkWatchdog: revert")
761761 else true
762762 }
763763
764764
765765 func bK (T) = {
766766 let Q = assetInfo(fromBase58String(T))
767767 if ($isInstanceOf(Q, "Asset"))
768768 then {
769769 let R = Q
770770 R.decimals
771771 }
772772 else throw(("_getDecimals: no asset=" + T))
773773 }
774774
775775
776776 func bL (bM,bN,bO,bP) = if ((bN >= bO))
777777 then fraction(bM, 1, pow(10, 0, (bN - bO), 0, 0, DOWN), bP)
778778 else (bM * pow(10, 0, (bO - bN), 0, 0, DOWN))
779779
780780
781781 func bQ (aq) = {
782782 func af (ag,ah) = (ag :+ 0)
783783
784784 let ai = aq
785785 let aj = size(ai)
786786 let ak = nil
787787 func al (am,an) = if ((an >= aj))
788788 then am
789789 else af(am, ai[an])
790790
791791 func ao (am,an) = if ((an >= aj))
792792 then am
793793 else throw("List size exceeds 10")
794794
795795 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
796796 }
797797
798798
799799 func bR (bS) = {
800800 func af (ag,ah) = {
801801 let aZ = parseIntValue(ah)
802802 $Tuple2((ag._1 :+ aZ), (ag._2 + aZ))
803803 }
804804
805805 let ai = bS
806806 let aj = size(ai)
807807 let ak = $Tuple2(nil, 0)
808808 func al (am,an) = if ((an >= aj))
809809 then am
810810 else af(am, ai[an])
811811
812812 func ao (am,an) = if ((an >= aj))
813813 then am
814814 else throw("List size exceeds 10")
815815
816816 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
817817 }
818818
819819
820820 func bT (aq,bU) = {
821821 func af (ag,ah) = {
822822 let bV = bK(ah)
823823 let aT = bL(assetBalance(this, fromBase58String(ah)), bV, bU, DOWN)
824824 $Tuple2((ag._1 :+ aT), (ag._2 + aT))
825825 }
826826
827827 let ai = aq
828828 let aj = size(ai)
829829 let ak = $Tuple2(nil, 0)
830830 func al (am,an) = if ((an >= aj))
831831 then am
832832 else af(am, ai[an])
833833
834834 func ao (am,an) = if ((an >= aj))
835835 then am
836836 else throw("List size exceeds 10")
837837
838838 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
839839 }
840840
841841
842842 func bW (aq) = {
843843 func af (ag,ah) = (ag :+ toString(ah))
844844
845845 makeString({
846846 let ai = aq
847847 let aj = size(ai)
848848 let ak = nil
849849 func al (am,an) = if ((an >= aj))
850850 then am
851851 else af(am, ai[an])
852852
853853 func ao (am,an) = if ((an >= aj))
854854 then am
855855 else throw("List size exceeds 11")
856856
857857 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
858858 }, a)
859859 }
860860
861861
862862 func bX (aq) = {
863863 func af (ag,ah) = (ag :+ toString(ah))
864864
865865 makeString({
866866 let ai = aq
867867 let aj = size(ai)
868868 let ak = nil
869869 func al (am,an) = if ((an >= aj))
870870 then am
871871 else af(am, ai[an])
872872
873873 func ao (am,an) = if ((an >= aj))
874874 then am
875875 else throw("List size exceeds 11")
876876
877877 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
878878 }, a)
879879 }
880880
881881
882882 func bY (bZ,bb,ca) = {
883883 func af (ag,ah) = (ag :+ fraction(bZ, ah, ca))
884884
885885 let ai = bb
886886 let aj = size(ai)
887887 let ak = nil
888888 func al (am,an) = if ((an >= aj))
889889 then am
890890 else af(am, ai[an])
891891
892892 func ao (am,an) = if ((an >= aj))
893893 then am
894894 else throw("List size exceeds 10")
895895
896896 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
897897 }
898898
899899
900900 func cb (aV,cc) = {
901901 func af (ag,ah) = {
902902 let cd = ag._1
903903 let ce = cc[cd]
904904 let cf = (ah + ce)
905905 $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
906906 }
907907
908908 let cg = {
909909 let ai = aV
910910 let aj = size(ai)
911911 let ak = $Tuple3(0, nil, 0)
912912 func al (am,an) = if ((an >= aj))
913913 then am
914914 else af(am, ai[an])
915915
916916 func ao (am,an) = if ((an >= aj))
917917 then am
918918 else throw("List size exceeds 10")
919919
920920 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
921921 }
922922 $Tuple2(cg._2, cg._3)
923923 }
924924
925925
926926 func ch (aV,ci,aq,bU,P) = {
927927 func af (ag,ah) = {
928928 let cd = ag._1
929929 let cj = ci[cd]
930930 let ck = aA(cj.assetId)
931931 let cl = if ((ck != aq[cd]))
932932 then throw(((P + ": index=") + toString(cd)))
933933 else unit
934934 if ((cl == cl))
935935 then {
936936 let bV = bK(ck)
937937 let cf = (ah + bL(ci[cd].amount, bV, bU, DOWN))
938938 $Tuple3((cd + 1), (ag._2 :+ cf), (ag._3 + cf))
939939 }
940940 else throw("Strict value is not equal to itself.")
941941 }
942942
943943 let cg = {
944944 let ai = aV
945945 let aj = size(ai)
946946 let ak = $Tuple3(0, nil, 0)
947947 func al (am,an) = if ((an >= aj))
948948 then am
949949 else af(am, ai[an])
950950
951951 func ao (am,an) = if ((an >= aj))
952952 then am
953953 else throw("List size exceeds 10")
954954
955955 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
956956 }
957957 $Tuple2(cg._2, cg._3)
958958 }
959959
960960
961961 func cm (aV,cn,bM) = {
962962 func af (ag,ah) = {
963963 let cd = ag._1
964964 if ((cd == cn))
965965 then $Tuple2((cd + 1), (ag._2 :+ (ah + bM)))
966966 else $Tuple2((cd + 1), (ag._2 :+ ah))
967967 }
968968
969969 let cg = {
970970 let ai = aV
971971 let aj = size(ai)
972972 let ak = $Tuple2(0, nil)
973973 func al (am,an) = if ((an >= aj))
974974 then am
975975 else af(am, ai[an])
976976
977977 func ao (am,an) = if ((an >= aj))
978978 then am
979979 else throw("List size exceeds 10")
980980
981981 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
982982 }
983983 cg._2
984984 }
985985
986986
987987 func co (aV,cn,bM) = {
988988 func af (ag,ah) = {
989989 let cd = ag._1
990990 if (if ((cd == cn))
991991 then (bM > ah)
992992 else false)
993993 then throw("insufficient balance")
994994 else if (if ((cd == cn))
995995 then (ah >= bM)
996996 else false)
997997 then $Tuple2((cd + 1), (ag._2 :+ (ah - bM)))
998998 else $Tuple2((cd + 1), (ag._2 :+ ah))
999999 }
10001000
10011001 let cg = {
10021002 let ai = aV
10031003 let aj = size(ai)
10041004 let ak = $Tuple2(0, nil)
10051005 func al (am,an) = if ((an >= aj))
10061006 then am
10071007 else af(am, ai[an])
10081008
10091009 func ao (am,an) = if ((an >= aj))
10101010 then am
10111011 else throw("List size exceeds 10")
10121012
10131013 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10141014 }
10151015 cg._2
10161016 }
10171017
10181018
10191019 func cp (aV,bM,cq) = {
10201020 let cr = fraction((cq - bM), i, cq, CEILING)
10211021 func af (ag,ah) = {
10221022 let cf = fraction(ah, cr, i, CEILING)
10231023 let cs = (ah - cf)
10241024 if ((0 > cs))
10251025 then throw("insufficient delta balance")
10261026 else $Tuple3((ag._1 :+ cf), (ag._2 + cf), (ag._3 :+ cs))
10271027 }
10281028
10291029 let ai = aV
10301030 let aj = size(ai)
10311031 let ak = $Tuple3(nil, 0, nil)
10321032 func al (am,an) = if ((an >= aj))
10331033 then am
10341034 else af(am, ai[an])
10351035
10361036 func ao (am,an) = if ((an >= aj))
10371037 then am
10381038 else throw("List size exceeds 10")
10391039
10401040 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10411041 }
10421042
10431043
10441044 func ct (aq,aV,cu,bN) = {
10451045 func af (ag,ah) = {
10461046 let cd = ag._1
10471047 $Tuple2((cd + 1), (ag._2 :+ ScriptTransfer(cu, bL(aV[cd], bN, bK(ah), DOWN), aC(ah))))
10481048 }
10491049
10501050 let cg = {
10511051 let ai = aq
10521052 let aj = size(ai)
10531053 let ak = $Tuple2(0, nil)
10541054 func al (am,an) = if ((an >= aj))
10551055 then am
10561056 else af(am, ai[an])
10571057
10581058 func ao (am,an) = if ((an >= aj))
10591059 then am
10601060 else throw("List size exceeds 10")
10611061
10621062 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
10631063 }
10641064 cg._2
10651065 }
10661066
10671067
10681068 func cv (cw,cx,cy,cz,cA) = {
10691069 let cB = fraction(cx, (f - cz), f)
10701070 if ((cw > cB))
10711071 then 0
10721072 else toInt(fraction(fraction(toBigInt(cy), toBigInt(cA), k), toBigInt((cB - cw)), toBigInt(cB), CEILING))
10731073 }
10741074
10751075
10761076 func cC (cD,cE,cx,cy,cz,cA) = if ((cE > cD))
10771077 then 0
10781078 else (cv(cE, cx, cy, cz, cA) - cv(cD, cx, cy, cz, cA))
10791079
10801080
1081-func cF (cw,cx,cG) = if ((cw > cx))
1081+func cF (cw,cx,cG,cz) = {
1082+ let cB = fraction(cx, (f - cz), f)
1083+ let cH = fraction(cG, cB, cx)
1084+ if ((cw > cB))
1085+ then cH
1086+ else fraction(cH, cw, cB, FLOOR)
1087+ }
1088+
1089+
1090+func cI (cD,cE,cx,cG,cz) = if ((cD > cE))
1091+ then 0
1092+ else (cF(cE, cx, cG, cz) - cF(cD, cx, cG, cz))
1093+
1094+
1095+func cJ (cG,cK) = if ((cK > cG))
10821096 then cG
1083- else fraction(cG, cw, cx, FLOOR)
1084-
1085-
1086-func cH (cD,cE,cx,cG) = if ((cD > cE))
1087- then 0
1088- else (cF(cE, cx, cG) - cF(cD, cx, cG))
1089-
1090-
1091-func cI (cJ,cK) = {
1092- let cL = size(cJ)
1093- func af (ag,cd) = if ((cd >= cL))
1097+ else cK
1098+
1099+
1100+func cL (cM,cN) = {
1101+ let cO = size(cM)
1102+ func af (ag,cd) = if ((cd >= cO))
10941103 then ag
1095- else if ((0 > cJ[cd]))
1104+ else if ((0 > cM[cd]))
10961105 then throw("_validateAllocation: negative assetBalances")
1097- else if ((0 > cK[cd]))
1106+ else if ((0 > cN[cd]))
10981107 then throw("_validateAllocation: negative rewardBalances")
10991108 else ag
11001109
11011110 let ai = n
11021111 let aj = size(ai)
11031112 let ak = true
11041113 func al (am,an) = if ((an >= aj))
11051114 then am
11061115 else af(am, ai[an])
11071116
11081117 func ao (am,an) = if ((an >= aj))
11091118 then am
11101119 else throw("List size exceeds 10")
11111120
11121121 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
11131122 }
11141123
11151124
1116-func cM (bl) = {
1117- let cN = bn(bl)
1118- let cO = br(bl)
1119- let cP = bi()
1120- let cQ = bk(bl)
1125+func cP (bl) = {
1126+ let cQ = bn(bl)
1127+ let cR = br(bl)
1128+ let cS = bi()
1129+ let cT = bk(bl)
11211130 func af (ag,ah) = {
11221131 let cd = ag._1
1123- let cR = (cO[cd] + toInt(fraction(toBigInt(cN), (cP[cd] - cQ[cd]), j)))
1124- $Tuple2((cd + 1), (ag._2 :+ cR))
1132+ let cU = (cR[cd] + toInt(fraction(toBigInt(cQ), (cS[cd] - cT[cd]), j)))
1133+ $Tuple2((cd + 1), (ag._2 :+ cU))
11251134 }
11261135
1127- let cS = {
1136+ let cV = {
11281137 let ai = m
11291138 let aj = size(ai)
11301139 let ak = $Tuple2(0, nil)
11311140 func al (am,an) = if ((an >= aj))
11321141 then am
11331142 else af(am, ai[an])
11341143
11351144 func ao (am,an) = if ((an >= aj))
11361145 then am
11371146 else throw("List size exceeds 11")
11381147
11391148 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11401149 }
1141- let cT = cS._1
1142- let cU = cS._2
1143- $Tuple2((bs(bl, cU) ++ bm(bl, cP)), cU)
1144- }
1145-
1146-
1147-func cV (cW,cX,cn,cY) = {
1150+ let cW = cV._1
1151+ let cX = cV._2
1152+ $Tuple2((bs(bl, cX) ++ bm(bl, cS)), cX)
1153+ }
1154+
1155+
1156+func cY (cZ,da,cn,db) = {
11481157 func af (ag,ah) = {
11491158 let cd = ag._1
1150- let cZ = if ((cn == cd))
1151- then (cW[cd] + fraction(toBigInt(cY), j, toBigInt(cX)))
1152- else cW[cd]
1153- $Tuple2((cd + 1), (ag._2 :+ cZ))
1159+ let dc = if ((cn == cd))
1160+ then (cZ[cd] + fraction(toBigInt(db), j, toBigInt(da)))
1161+ else cZ[cd]
1162+ $Tuple2((cd + 1), (ag._2 :+ dc))
11541163 }
11551164
1156- let da = {
1165+ let dd = {
11571166 let ai = m
11581167 let aj = size(ai)
11591168 let ak = $Tuple2(0, nil)
11601169 func al (am,an) = if ((an >= aj))
11611170 then am
11621171 else af(am, ai[an])
11631172
11641173 func ao (am,an) = if ((an >= aj))
11651174 then am
11661175 else throw("List size exceeds 11")
11671176
11681177 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
11691178 }
1170- let cT = da._1
1171- let cZ = da._2
1172- cZ
1173- }
1174-
1175-
1176-func db (dc,bM,dd,de) = {
1177- let cP = bi()
1178- let df = bp()
1179- let dg = if ((df == 0))
1180- then $Tuple2(0, fraction(bM, de, d))
1181- else $Tuple2(fraction(bM, dd, d), fraction(bM, de, d))
1182- let dh = dg._1
1183- let di = dg._2
1184- let cZ = if ((dh == 0))
1185- then cP
1186- else cV(cP, df, dc, dh)
1187- $Tuple3(dh, di, cZ)
1188- }
1189-
1190-
1191-func dj (bM) = {
1179+ let cW = dd._1
1180+ let dc = dd._2
1181+ dc
1182+ }
1183+
1184+
1185+func de (df,bM,dg,dh) = {
1186+ let cS = bi()
1187+ let di = bp()
1188+ let dj = if ((di == 0))
1189+ then $Tuple2(0, fraction(bM, dh, d))
1190+ else $Tuple2(fraction(bM, dg, d), fraction(bM, dh, d))
1191+ let dk = dj._1
1192+ let dl = dj._2
1193+ let dc = if ((dk == 0))
1194+ then cS
1195+ else cY(cS, di, df, dk)
1196+ $Tuple3(dk, dl, dc)
1197+ }
1198+
1199+
1200+func dm (bM) = {
11921201 let bD = aM()
1193- let dk = bD._3
1194- let dl = aQ()
1195- let dm = aY()
1196- let dn = dm._1
1197- let do = dm._2
1198- let dp = aS()
1202+ let dn = bD._3
1203+ let do = aQ()
1204+ let dp = aY()
11991205 let dq = dp._1
12001206 let dr = dp._2
1201- let ds = if ((dr == 0))
1207+ let ds = aS()
1208+ let dt = ds._1
1209+ let du = ds._2
1210+ let dv = if ((du == 0))
12021211 then {
12031212 func af (ag,ah) = {
12041213 let cd = ag._1
1205- let dt = fraction(dn[cd], bM, do)
1206- $Tuple2((cd + 1), (ag._2 :+ dt))
1214+ let dw = fraction(dq[cd], bM, dr)
1215+ $Tuple2((cd + 1), (ag._2 :+ dw))
12071216 }
12081217
1209- let du = {
1210- let ai = dl
1218+ let dx = {
1219+ let ai = do
12111220 let aj = size(ai)
12121221 let ak = $Tuple2(0, nil)
12131222 func al (am,an) = if ((an >= aj))
12141223 then am
12151224 else af(am, ai[an])
12161225
12171226 func ao (am,an) = if ((an >= aj))
12181227 then am
12191228 else throw("List size exceeds 10")
12201229
12211230 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
12221231 }
1223- let cT = du._1
1224- let dv = du._2
1225- $Tuple2(bM, dv)
1232+ let cW = dx._1
1233+ let dy = dx._2
1234+ $Tuple2(bM, dy)
12261235 }
12271236 else {
1228- let dw = fraction(toBigInt(bM), j, toBigInt(dr))
1229- func dx (ag,ah) = {
1237+ let dz = fraction(toBigInt(bM), j, toBigInt(du))
1238+ func dA (ag,ah) = {
12301239 let cd = ag._1
1231- let dt = toInt(fraction(dw, toBigInt(dq[cd]), j))
1232- $Tuple2((cd + 1), (ag._2 :+ dt))
1240+ let dw = toInt(fraction(dz, toBigInt(dt[cd]), j))
1241+ $Tuple2((cd + 1), (ag._2 :+ dw))
12331242 }
12341243
1235- let dy = {
1236- let ai = dl
1244+ let dB = {
1245+ let ai = do
12371246 let aj = size(ai)
12381247 let ak = $Tuple2(0, nil)
12391248 func al (am,an) = if ((an >= aj))
12401249 then am
1241- else dx(am, ai[an])
1250+ else dA(am, ai[an])
12421251
12431252 func ao (am,an) = if ((an >= aj))
12441253 then am
12451254 else throw("List size exceeds 10")
12461255
12471256 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
12481257 }
1249- let cT = dy._1
1250- let dv = dy._2
1251- $Tuple2(fraction(bM, dk, dr), dv)
1252- }
1253- let dz = ds._1
1254- let dv = ds._2
1255- let dA = cb(dq, dv)
1256- let dB = dA._1
1257- let dC = dA._2
1258- $Tuple3(dz, dv, dB)
1259- }
1260-
1261-
1262-func dD (T,bM) = {
1258+ let cW = dB._1
1259+ let dy = dB._2
1260+ $Tuple2(fraction(bM, dn, du), dy)
1261+ }
1262+ let dC = dv._1
1263+ let dy = dv._2
1264+ let dD = cb(dt, dy)
1265+ let dE = dD._1
1266+ let dF = dD._2
1267+ $Tuple3(dC, dy, dE)
1268+ }
1269+
1270+
1271+func dG (T,bM) = {
12631272 let bD = aM()
1264- let dk = bD._3
1265- let dE = bD._4
1266- let dF = bD._5
1267- let dG = bD._6
1268- let dH = bD._7
1269- let dl = aQ()
1270- let dI = aY()
1271- let dn = dI._1
1272- let do = dI._2
1273- let dJ = aS()
1274- let dq = dJ._1
1275- let dr = dJ._2
1276- let dK = aW()
1277- let cl = if (if ((dr == 0))
1273+ let dn = bD._3
1274+ let dH = bD._4
1275+ let dI = bD._5
1276+ let dJ = bD._6
1277+ let dK = bD._7
1278+ let do = aQ()
1279+ let dL = aY()
1280+ let dq = dL._1
1281+ let dr = dL._2
1282+ let dM = aS()
1283+ let dt = dM._1
1284+ let du = dM._2
1285+ let dN = aW()
1286+ let cl = if (if ((du == 0))
12781287 then true
1279- else (dk == 0))
1288+ else (dn == 0))
12801289 then throw("_deposit: empty pool")
12811290 else true
12821291 if ((cl == cl))
12831292 then {
1284- let dL = value(indexOf(dl, T))
1285- let dM = fraction(dr, dn[dL], do)
1286- let dN = dq[dL]
1287- let dO = dK[dL]
1288- let dP = cH(dN, (dN + bM), dM, dO)
1289- let dQ = co(dK, dL, dP)
1290- let dR = cm(dq, dL, (bM + dP))
1291- let dz = (bM + dP)
1292- let dS = cI(dR, dQ)
1293- if ((dS == dS))
1294- then {
1295- let dT = db(0, dz, (dE / 2), (dF / 2))
1296- let dh = dT._1
1297- let di = dT._2
1298- let cZ = dT._3
1299- $Tuple6(dz, dR, dQ, dh, di, cZ)
1300- }
1293+ let dO = value(indexOf(do, T))
1294+ let dP = fraction(du, dq[dO], dr)
1295+ let dQ = dt[dO]
1296+ let dR = dN[dO]
1297+ let dS = cI(dQ, (dQ + bM), dP, dR, dK)
1298+ let dC = (bM + dS)
1299+ let dT = de(0, dC, (dH / 2), (dI / 2))
1300+ let dk = dT._1
1301+ let dl = dT._2
1302+ let dc = dT._3
1303+ let dU = cJ((dR - dS), (dk + dl))
1304+ let dV = co(dN, dO, (dS + dU))
1305+ let dW = cm(dt, dO, (dC + dU))
1306+ let dX = cL(dW, dV)
1307+ if ((dX == dX))
1308+ then $Tuple6((dC + dU), dW, dV, dk, dl, dc)
13011309 else throw("Strict value is not equal to itself.")
13021310 }
13031311 else throw("Strict value is not equal to itself.")
13041312 }
13051313
13061314
1307-func dU (bM) = {
1315+func dY (bM) = {
13081316 let bD = aM()
1309- let dk = bD._3
1310- let dV = aS()
1311- let dq = dV._1
1312- let dr = dV._2
1313- let dW = aY()
1314- let dn = dW._1
1315- let do = dW._2
1316- let dX = bM
1317- let cl = U(dX, 0, dk, "_withdrawAll: invalid lpTokensToBurn")
1318- if ((cl == cl))
1319- then {
1320- let dY = cp(dq, dX, dk)
1321- let dB = dY._1
1322- let dC = dY._2
1323- let dZ = dY._3
1324- $Tuple3(dX, dZ, dB)
1325- }
1326- else throw("Strict value is not equal to itself.")
1327- }
1328-
1329-
1330-func ea (T,cy) = {
1317+ let dn = bD._3
1318+ let dZ = aS()
1319+ let dt = dZ._1
1320+ let du = dZ._2
1321+ let ea = aY()
1322+ let dq = ea._1
1323+ let dr = ea._2
1324+ let eb = bM
1325+ let cl = U(eb, 0, dn, "_withdrawAll: invalid lpTokensToBurn")
1326+ if ((cl == cl))
1327+ then {
1328+ let ec = cp(dt, eb, dn)
1329+ let dE = ec._1
1330+ let dF = ec._2
1331+ let ed = ec._3
1332+ $Tuple3(eb, ed, dE)
1333+ }
1334+ else throw("Strict value is not equal to itself.")
1335+ }
1336+
1337+
1338+func ee (T,cy) = {
13311339 let bD = aM()
1332- let dk = bD._3
1333- let dE = bD._4
1334- let dF = bD._5
1335- let dG = bD._6
1336- let dH = bD._7
1337- let eb = bD._8
1338- let dl = aQ()
1339- let ec = aS()
1340- let dq = ec._1
1341- let dr = ec._2
1342- let ed = aY()
1343- let dn = ed._1
1344- let do = ed._2
1345- let dK = aW()
1346- let ee = value(indexOf(dl, T))
1347- let ef = dq[ee]
1348- let eg = fraction(dr, dn[ee], do)
1349- let eh = dK[ee]
1350- let ei = cC(ef, (ef - cy), eg, dr, dH, eb)
1351- let ej = cm(dK, ee, ei)
1352- let dB = co(dq, ee, cy)
1353- let ek = (cy - ei)
1354- let cl = cI(dB, ej)
1355- if ((cl == cl))
1356- then {
1357- let el = db((ee + 1), ek, (dE / 2), (dF / 2))
1358- let dh = el._1
1359- let di = el._2
1360- let cZ = el._3
1361- $Tuple6(ek, dB, ej, dh, di, cZ)
1362- }
1363- else throw("Strict value is not equal to itself.")
1364- }
1365-
1366-
1367-func em (en,eo,ep) = {
1340+ let dn = bD._3
1341+ let dH = bD._4
1342+ let dI = bD._5
1343+ let dJ = bD._6
1344+ let dK = bD._7
1345+ let ef = bD._8
1346+ let do = aQ()
1347+ let eg = aS()
1348+ let dt = eg._1
1349+ let du = eg._2
1350+ let eh = aY()
1351+ let dq = eh._1
1352+ let dr = eh._2
1353+ let dN = aW()
1354+ let ei = value(indexOf(do, T))
1355+ let ej = dt[ei]
1356+ let ek = fraction(du, dq[ei], dr)
1357+ let el = dN[ei]
1358+ let em = cC(ej, (ej - cy), ek, du, dK, ef)
1359+ let en = cm(dN, ei, em)
1360+ let dE = co(dt, ei, cy)
1361+ let eo = (cy - em)
1362+ let cl = cL(dE, en)
1363+ if ((cl == cl))
1364+ then {
1365+ let ep = de((ei + 1), eo, (dH / 2), (dI / 2))
1366+ let dk = ep._1
1367+ let dl = ep._2
1368+ let dc = ep._3
1369+ $Tuple6(eo, dE, en, dk, dl, dc)
1370+ }
1371+ else throw("Strict value is not equal to itself.")
1372+ }
1373+
1374+
1375+func eq (er,es,et) = {
13681376 let bD = aM()
1369- let eq = bD._1
1370- let er = bK(toBase58String(eq))
1371- let dk = bD._3
1372- let dE = bD._4
1373- let dF = bD._5
1374- let dG = bD._6
1375- let dH = bD._7
1376- let eb = bD._8
1377- let es = aS()
1378- let dq = es._1
1379- let dr = es._2
1380- let et = aY()
1381- let dn = et._1
1382- let do = et._2
1383- let dK = aW()
1384- let dM = fraction(dr, dn[en], do)
1385- let dN = dq[en]
1386- let dO = dK[en]
1387- let dP = cH(dN, (dN + ep), dM, dO)
1388- let ef = dq[eo]
1389- let eg = fraction(dr, dn[eo], do)
1390- let eh = dK[eo]
1391- let ei = cC(ef, (ef - ep), eg, dr, dH, eb)
1392- let eu = co(dK, en, dP)
1393- let dQ = cm(eu, eo, ei)
1394- let ev = cm(dq, en, (ep + dP))
1395- let dR = co(ev, eo, (ep + dP))
1396- let ek = ((ep + dP) - ei)
1397- let cl = cI(dR, dQ)
1398- if ((cl == cl))
1399- then {
1400- let ew = db((eo + 1), ek, dE, dF)
1401- let dh = ew._1
1402- let di = ew._2
1403- let cZ = ew._3
1404- $Tuple6(ek, dR, dQ, dh, di, cZ)
1405- }
1406- else throw("Strict value is not equal to itself.")
1407- }
1408-
1409-
1410-@Callable(ex)
1411-func init (aq,bS,dd,de,ey,ez,eA,eB,cz,cA,eC,eD,eE,aI) = {
1412- let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(ex.caller))
1377+ let eu = bD._1
1378+ let ev = bK(toBase58String(eu))
1379+ let dn = bD._3
1380+ let dH = bD._4
1381+ let dI = bD._5
1382+ let dJ = bD._6
1383+ let dK = bD._7
1384+ let ef = bD._8
1385+ let ew = aS()
1386+ let dt = ew._1
1387+ let du = ew._2
1388+ let ex = aY()
1389+ let dq = ex._1
1390+ let dr = ex._2
1391+ let dN = aW()
1392+ let dP = fraction(du, dq[er], dr)
1393+ let dQ = dt[er]
1394+ let dR = dN[er]
1395+ let dS = cI(dQ, (dQ + et), dP, dR, dK)
1396+ let ej = dt[es]
1397+ let ek = fraction(du, dq[es], dr)
1398+ let el = dN[es]
1399+ let em = cC(ej, (ej - et), ek, du, dK, ef)
1400+ let ey = co(dN, er, dS)
1401+ let dV = cm(ey, es, em)
1402+ let ez = cm(dt, er, (et + dS))
1403+ let dW = co(ez, es, (et + dS))
1404+ let eo = ((et + dS) - em)
1405+ let cl = cL(dW, dV)
1406+ if ((cl == cl))
1407+ then {
1408+ let eA = de((es + 1), eo, dH, dI)
1409+ let dk = eA._1
1410+ let dl = eA._2
1411+ let dc = eA._3
1412+ $Tuple6(eo, dW, dV, dk, dl, dc)
1413+ }
1414+ else throw("Strict value is not equal to itself.")
1415+ }
1416+
1417+
1418+@Callable(eB)
1419+func init (aq,bS,dg,dh,eC,eD,eE,eF,cz,cA,eG,eH,eI,aI) = {
1420+ let cl = if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (if (bz(eB.caller))
14131421 then bC()
14141422 else false)
14151423 then bB()
14161424 else false)
14171425 then ap(aq, "init: invalid assets")
14181426 else false)
14191427 then ae(bS, 1, g, "init: invalid assetWeights")
14201428 else false)
14211429 then ar(size(aq), size(bS), "init: invalid assetWeights size")
14221430 else false)
1423- then U(dd, 0, d, "init: invalid lp fee")
1424- else false)
1425- then U(de, 0, d, "init: invalid protocol fee")
1426- else false)
1427- then as(ey, "init: invalid name")
1428- else false)
1429- then at(ez, "init: invalid descr")
1430- else false)
1431- then au(eA, "init: invalid decimals")
1432- else false)
1433- then U(eB, 0, e, "init: invalid maxAllocationAmplifier")
1434- else false)
1435- then U(cz, 0, eB, "init: invalid weightAmplifier")
1431+ then U(dg, 0, d, "init: invalid lp fee")
1432+ else false)
1433+ then U(dh, 0, d, "init: invalid protocol fee")
1434+ else false)
1435+ then as(eC, "init: invalid name")
1436+ else false)
1437+ then at(eD, "init: invalid descr")
1438+ else false)
1439+ then au(eE, "init: invalid decimals")
1440+ else false)
1441+ then U(eF, 0, e, "init: invalid maxAllocationAmplifier")
1442+ else false)
1443+ then U(cz, 0, eF, "init: invalid weightAmplifier")
14361444 else false)
14371445 then U(cA, 0, c, "init: invalid disbalanceCoeff")
14381446 else false)
1439- then U(eC, 0, c, "init: invalid feeMaxRate")
1440- else false)
1441- then N(eD, "init: invalid protocolFeeContract")
1442- else false)
1443- then U(eE, 1, c, "init: invalid precision")
1447+ then U(eG, 0, c, "init: invalid feeMaxRate")
1448+ else false)
1449+ then N(eH, "init: invalid protocolFeeContract")
1450+ else false)
1451+ then U(eI, 1, c, "init: invalid precision")
14441452 else false)
14451453 then N(aI, "init: invalid pauser")
14461454 else false
14471455 if ((cl == cl))
14481456 then {
1449- let eF = bR(bS)
1450- let dn = eF._1
1451- let do = eF._2
1452- let dB = bQ(aq)
1453- let eG = Issue(ey, ez, 0, eA, true)
1454- let eq = calculateAssetId(eG)
1455- let eH = $Tuple10(eq, true, 0, dd, de, eB, cz, cA, eC, addressFromStringValue(eD))
1456- $Tuple2((((((((([eG] ++ aO(eH)) ++ aR(aq)) ++ aU(dB)) ++ aX(dB)) ++ ba(dn)) ++ bh(eE)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1457- }
1458- else throw("Strict value is not equal to itself.")
1459- }
1460-
1461-
1462-
1463-@Callable(ex)
1457+ let eJ = bR(bS)
1458+ let dq = eJ._1
1459+ let dr = eJ._2
1460+ let dE = bQ(aq)
1461+ let eK = Issue(eC, eD, 0, eE, true)
1462+ let eu = calculateAssetId(eK)
1463+ let eL = $Tuple10(eu, true, 0, dg, dh, eF, cz, cA, eG, addressFromStringValue(eH))
1464+ $Tuple2((((((((([eK] ++ aO(eL)) ++ aR(aq)) ++ aU(dE)) ++ aX(dE)) ++ ba(dq)) ++ bh(eI)) ++ bj(bi())) ++ aH(addressFromStringValue(aI))), unit)
1465+ }
1466+ else throw("Strict value is not equal to itself.")
1467+ }
1468+
1469+
1470+
1471+@Callable(eB)
14641472 func depositAll (bM) = {
14651473 let cl = if (if (bE())
14661474 then bF()
14671475 else false)
14681476 then U(bM, 0, c, "depositAll: invalid amount")
14691477 else false
14701478 if ((cl == cl))
14711479 then {
14721480 let bD = aM()
1473- let eq = bD._1
1474- let er = bK(toBase58String(eq))
1475- let dl = aQ()
1476- let eI = dj(bM)
1477- let dz = eI._1
1478- let dv = eI._2
1479- let dB = eI._3
1481+ let eu = bD._1
1482+ let ev = bK(toBase58String(eu))
1483+ let do = aQ()
1484+ let eM = dm(bM)
1485+ let dC = eM._1
1486+ let dy = eM._2
1487+ let dE = eM._3
14801488 func af (ag,ah) = {
14811489 let cd = ag._1
1482- let ck = aA(ex.payments[cd].assetId)
1483- let eJ = bK(ck)
1484- let dt = dv[cd]
1485- let eK = bL(dt, er, eJ, CEILING)
1486- let dS = if ((ck != ah))
1490+ let ck = aA(eB.payments[cd].assetId)
1491+ let eN = bK(ck)
1492+ let dw = dy[cd]
1493+ let eO = bL(dw, ev, eN, CEILING)
1494+ let dX = if ((ck != ah))
14871495 then throw(("depositAll: invalid payment: index=" + toString(cd)))
1488- else if ((0 >= eK))
1496+ else if ((0 >= eO))
14891497 then throw("depositAll: too little amount required")
14901498 else unit
1491- if ((dS == dS))
1499+ if ((dX == dX))
14921500 then {
1493- let eL = if ((ex.payments[cd].amount > eK))
1494- then [ScriptTransfer(ex.caller, (ex.payments[cd].amount - eK), ex.payments[cd].assetId)]
1495- else if ((eK > ex.payments[cd].amount))
1496- then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eK)))
1501+ let eP = if ((eB.payments[cd].amount > eO))
1502+ then [ScriptTransfer(eB.caller, (eB.payments[cd].amount - eO), eB.payments[cd].assetId)]
1503+ else if ((eO > eB.payments[cd].amount))
1504+ then throw(((("depositAll: insufficient payment, index=" + toString(cd)) + ", required=") + toString(eO)))
14971505 else nil
1498- $Tuple2((cd + 1), (ag._2 ++ eL))
1506+ $Tuple2((cd + 1), (ag._2 ++ eP))
14991507 }
15001508 else throw("Strict value is not equal to itself.")
15011509 }
15021510
1503- let eM = {
1504- let ai = dl
1511+ let eQ = {
1512+ let ai = do
15051513 let aj = size(ai)
15061514 let ak = $Tuple2(0, nil)
15071515 func al (am,an) = if ((an >= aj))
15081516 then am
15091517 else af(am, ai[an])
15101518
15111519 func ao (am,an) = if ((an >= aj))
15121520 then am
15131521 else throw("List size exceeds 10")
15141522
15151523 ao(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
15161524 }
1517- let cT = eM._1
1518- let eN = eM._2
1519- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1520- $Tuple2(((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, dz, eq)] ++ aO(eH)) ++ aU(dB)) ++ eN), unit)
1521- }
1522- else throw("Strict value is not equal to itself.")
1523- }
1524-
1525-
1526-
1527-@Callable(ex)
1528-func deposit (eO) = {
1529- let cl = U(eO, 0, c, "deposit: invalid min lp amount")
1525+ let cW = eQ._1
1526+ let eR = eQ._2
1527+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1528+ $Tuple2(((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, dC, eu)] ++ aO(eL)) ++ aU(dE)) ++ eR), unit)
1529+ }
1530+ else throw("Strict value is not equal to itself.")
1531+ }
1532+
1533+
1534+
1535+@Callable(eB)
1536+func deposit (eS) = {
1537+ let cl = U(eS, 0, c, "deposit: invalid min lp amount")
15301538 if ((cl == cl))
15311539 then {
15321540 let bD = aM()
1533- let eq = bD._1
1534- let eP = aA(eq)
1535- let er = bK(eP)
1536- let dS = if (if (if (if (if (bE())
1541+ let eu = bD._1
1542+ let eT = aA(eu)
1543+ let ev = bK(eT)
1544+ let dX = if (if (if (if (if (bE())
15371545 then bF()
15381546 else false)
15391547 then bI()
15401548 else false)
1541- then ar(size(ex.payments), 1, "deposit: invalid payments size")
1549+ then ar(size(eB.payments), 1, "deposit: invalid payments size")
15421550 else false)
1543- then ay(aQ(), aA(ex.payments[0].assetId), "deposit: invalid payment asset")
1551+ then ay(aQ(), aA(eB.payments[0].assetId), "deposit: invalid payment asset")
15441552 else false)
1545- then U(ex.payments[0].amount, 1, c, "deposit: invalid payment amount")
1553+ then U(eB.payments[0].amount, 1, c, "deposit: invalid payment amount")
15461554 else false
1547- if ((dS == dS))
1555+ if ((dX == dX))
15481556 then {
1549- let eQ = aA(ex.payments[0].assetId)
1550- let bV = bK(eQ)
1551- let eR = bL(ex.payments[0].amount, bV, er, DOWN)
1552- let eS = dD(eQ, eR)
1553- let dz = eS._1
1554- let dB = eS._2
1555- let ej = eS._3
1556- let dh = eS._4
1557- let di = eS._5
1558- let cZ = eS._6
1559- let eT = ((dz - dh) - di)
1560- let eU = U(eT, eO, c, "deposit: less than min")
1561- if ((eU == eU))
1557+ let eU = aA(eB.payments[0].assetId)
1558+ let bV = bK(eU)
1559+ let eV = bL(eB.payments[0].amount, bV, ev, DOWN)
1560+ let eW = dG(eU, eV)
1561+ let dC = eW._1
1562+ let dE = eW._2
1563+ let en = eW._3
1564+ let dk = eW._4
1565+ let dl = eW._5
1566+ let dc = eW._6
1567+ let eX = ((dC - dk) - dl)
1568+ let eY = U(eX, eS, c, "deposit: less than min")
1569+ if ((eY == eY))
15621570 then {
1563- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1564- $Tuple2((((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, eT, eq)] ++ aO(eH)) ++ aU(dB)) ++ aX(ej)) ++ bd(eP, (dh + bc(eP)))) ++ bf(eP, (di + be(eP)))) ++ bj(cZ)), unit)
1571+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1572+ $Tuple2((((((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, eX, eu)] ++ aO(eL)) ++ aU(dE)) ++ aX(en)) ++ bd(eT, (dk + bc(eT)))) ++ bf(eT, (dl + be(eT)))) ++ bj(dc)), unit)
15651573 }
15661574 else throw("Strict value is not equal to itself.")
15671575 }
15681576 else throw("Strict value is not equal to itself.")
15691577 }
15701578 else throw("Strict value is not equal to itself.")
15711579 }
15721580
15731581
15741582
1575-@Callable(ex)
1583+@Callable(eB)
15761584 func withdrawAll () = {
15771585 let bD = aM()
1578- let eq = bD._1
1579- let eP = toBase58String(eq)
1580- let er = bK(eP)
1581- let dl = aQ()
1586+ let eu = bD._1
1587+ let eT = toBase58String(eu)
1588+ let ev = bK(eT)
1589+ let do = aQ()
15821590 let cl = if (if (if (bE())
1583- then ar(size(ex.payments), 1, "withdrawAll: invalid payments size")
1584- else false)
1585- then aa(eP, aA(ex.payments[0].assetId), "withdrawAll: invalid payment asset")
1586- else false)
1587- then U(ex.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
1591+ then ar(size(eB.payments), 1, "withdrawAll: invalid payments size")
1592+ else false)
1593+ then aa(eT, aA(eB.payments[0].assetId), "withdrawAll: invalid payment asset")
1594+ else false)
1595+ then U(eB.payments[0].amount, 1, c, "withdrawAll: invalid payment amount")
15881596 else false
15891597 if ((cl == cl))
15901598 then {
1591- let eV = dU(ex.payments[0].amount)
1592- let dX = eV._1
1593- let dZ = eV._2
1594- let dB = eV._3
1595- let eW = ct(dl, dZ, ex.caller, er)
1596- let eH = $Tuple10(bD._1, bD._2, (bD._3 - dX), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1597- $Tuple2(((([Burn(eq, dX)] ++ eW) ++ aO(eH)) ++ aU(dB)), unit)
1598- }
1599- else throw("Strict value is not equal to itself.")
1600- }
1601-
1602-
1603-
1604-@Callable(ex)
1605-func withdraw (T,eX) = {
1599+ let eZ = dY(eB.payments[0].amount)
1600+ let eb = eZ._1
1601+ let ed = eZ._2
1602+ let dE = eZ._3
1603+ let fa = ct(do, ed, eB.caller, ev)
1604+ let eL = $Tuple10(bD._1, bD._2, (bD._3 - eb), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1605+ $Tuple2(((([Burn(eu, eb)] ++ fa) ++ aO(eL)) ++ aU(dE)), unit)
1606+ }
1607+ else throw("Strict value is not equal to itself.")
1608+ }
1609+
1610+
1611+
1612+@Callable(eB)
1613+func withdraw (T,fb) = {
16061614 let bD = aM()
1607- let eq = bD._1
1608- let eP = toBase58String(eq)
1609- let er = bK(eP)
1610- let dl = aQ()
1615+ let eu = bD._1
1616+ let eT = toBase58String(eu)
1617+ let ev = bK(eT)
1618+ let do = aQ()
16111619 let cl = if (if (if (if (if (if (if (bE())
16121620 then bF()
16131621 else false)
16141622 then bI()
16151623 else false)
1616- then ar(size(ex.payments), 1, "withdraw: invalid payments size")
1617- else false)
1618- then aa(eP, aA(ex.payments[0].assetId), "withdraw: invalid payment asset")
1619- else false)
1620- then U(ex.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1621- else false)
1622- then ay(dl, T, "withdraw: invalid assetId")
1623- else false)
1624- then U(eX, 0, c, "withdraw: invalid minAmount")
1624+ then ar(size(eB.payments), 1, "withdraw: invalid payments size")
1625+ else false)
1626+ then aa(eT, aA(eB.payments[0].assetId), "withdraw: invalid payment asset")
1627+ else false)
1628+ then U(eB.payments[0].amount, 1, c, "withdraw: invalid payment amount")
1629+ else false)
1630+ then ay(do, T, "withdraw: invalid assetId")
1631+ else false)
1632+ then U(fb, 0, c, "withdraw: invalid minAmount")
16251633 else false
16261634 if ((cl == cl))
16271635 then {
1628- let eY = ea(T, ex.payments[0].amount)
1629- let eZ = eY._1
1630- let fa = eY._2
1631- let fb = eY._3
1632- let dh = eY._4
1633- let di = eY._5
1634- let cZ = eY._6
1635- let fc = ((eZ - dh) - di)
1636- let fd = bK(T)
1637- let fe = bL(fc, er, fd, DOWN)
1638- let dS = U(fe, eX, c, "withdraw: less than min")
1639- if ((dS == dS))
1636+ let fc = ee(T, eB.payments[0].amount)
1637+ let fd = fc._1
1638+ let fe = fc._2
1639+ let ff = fc._3
1640+ let dk = fc._4
1641+ let dl = fc._5
1642+ let dc = fc._6
1643+ let fg = ((fd - dk) - dl)
1644+ let fh = bK(T)
1645+ let fi = bL(fg, ev, fh, DOWN)
1646+ let dX = U(fi, fb, c, "withdraw: less than min")
1647+ if ((dX == dX))
16401648 then {
1641- let eH = $Tuple10(bD._1, bD._2, (bD._3 - ex.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1642- $Tuple2((((((([Burn(eq, ex.payments[0].amount), ScriptTransfer(ex.caller, fe, aC(T))] ++ aO(eH)) ++ aU(fa)) ++ aX(fb)) ++ bd(T, (dh + bc(T)))) ++ bf(T, (di + be(T)))) ++ bj(cZ)), unit)
1649+ let eL = $Tuple10(bD._1, bD._2, (bD._3 - eB.payments[0].amount), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
1650+ $Tuple2((((((([Burn(eu, eB.payments[0].amount), ScriptTransfer(eB.caller, fi, aC(T))] ++ aO(eL)) ++ aU(fe)) ++ aX(ff)) ++ bd(T, (dk + bc(T)))) ++ bf(T, (dl + be(T)))) ++ bj(dc)), unit)
16431651 }
16441652 else throw("Strict value is not equal to itself.")
16451653 }
16461654 else throw("Strict value is not equal to itself.")
16471655 }
16481656
16491657
16501658
1651-@Callable(ex)
1652-func swap (ff,eX) = {
1659+@Callable(eB)
1660+func swap (fj,fb) = {
16531661 let bD = aM()
1654- let eq = bD._1
1655- let er = bK(toBase58String(eq))
1656- let dl = aQ()
1657- let fg = aA(ex.payments[0].assetId)
1658- let fh = bL(ex.payments[0].amount, bK(fg), er, DOWN)
1659- let dL = valueOrErrorMessage(indexOf(dl, fg), "swap: invalid source asset")
1660- if ((dL == dL))
1661- then {
1662- let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1663- if ((ee == ee))
1662+ let eu = bD._1
1663+ let ev = bK(toBase58String(eu))
1664+ let do = aQ()
1665+ let fk = aA(eB.payments[0].assetId)
1666+ let fl = bL(eB.payments[0].amount, bK(fk), ev, DOWN)
1667+ let dO = valueOrErrorMessage(indexOf(do, fk), "swap: invalid source asset")
1668+ if ((dO == dO))
1669+ then {
1670+ let ei = valueOrErrorMessage(indexOf(do, fj), "swap: invalid target asset")
1671+ if ((ei == ei))
16641672 then {
16651673 let cl = if (if (if (if (if (if (bE())
16661674 then bF()
16671675 else false)
16681676 then bI()
16691677 else false)
1670- then U(eX, 0, c, "swap: invalid min target amount")
1678+ then U(fb, 0, c, "swap: invalid min target amount")
16711679 else false)
1672- then U(fh, 1, c, "swap: invalid source amount")
1680+ then U(fl, 1, c, "swap: invalid source amount")
16731681 else false)
1674- then ad(fg, ff, "swap: same assets")
1682+ then ad(fk, fj, "swap: same assets")
16751683 else false)
1676- then ar(size(ex.payments), 1, "swap: invalid payments size")
1684+ then ar(size(eB.payments), 1, "swap: invalid payments size")
16771685 else false
16781686 if ((cl == cl))
16791687 then {
1680- let fi = em(dL, ee, fh)
1681- let eZ = fi._1
1682- let fa = fi._2
1683- let fb = fi._3
1684- let dh = fi._4
1685- let di = fi._5
1686- let cZ = fi._6
1687- let fc = ((eZ - dh) - di)
1688- let fd = bK(ff)
1689- let fe = bL(fc, er, fd, DOWN)
1690- let dS = U(fe, eX, c, "swap: less than min")
1691- if ((dS == dS))
1692- then $Tuple2(((((([ScriptTransfer(ex.caller, fe, aC(ff))] ++ aU(fa)) ++ aX(fb)) ++ bd(ff, (dh + bc(ff)))) ++ bf(ff, (di + be(ff)))) ++ bj(cZ)), unit)
1688+ let fm = eq(dO, ei, fl)
1689+ let fd = fm._1
1690+ let fe = fm._2
1691+ let ff = fm._3
1692+ let dk = fm._4
1693+ let dl = fm._5
1694+ let dc = fm._6
1695+ let fg = ((fd - dk) - dl)
1696+ let fh = bK(fj)
1697+ let fi = bL(fg, ev, fh, DOWN)
1698+ let dX = U(fi, fb, c, "swap: less than min")
1699+ if ((dX == dX))
1700+ then $Tuple2(((((([ScriptTransfer(eB.caller, fi, aC(fj))] ++ aU(fe)) ++ aX(ff)) ++ bd(fj, (dk + bc(fj)))) ++ bf(fj, (dl + be(fj)))) ++ bj(dc)), unit)
16931701 else throw("Strict value is not equal to itself.")
16941702 }
16951703 else throw("Strict value is not equal to itself.")
16961704 }
16971705 else throw("Strict value is not equal to itself.")
16981706 }
16991707 else throw("Strict value is not equal to itself.")
17001708 }
17011709
17021710
17031711
1704-@Callable(ex)
1712+@Callable(eB)
17051713 func getDepositAll (cy) = {
17061714 let cl = U(cy, 1, c, "getDepositAll: invalid amount")
17071715 if ((cl == cl))
17081716 then {
1709- let fj = dj(cy)
1710- let dz = fj._1
1711- let dv = fj._2
1712- let dB = fj._3
1713- $Tuple2(nil, $Tuple2(dz, dv))
1714- }
1715- else throw("Strict value is not equal to itself.")
1716- }
1717-
1718-
1719-
1720-@Callable(ex)
1717+ let fn = dm(cy)
1718+ let dC = fn._1
1719+ let dy = fn._2
1720+ let dE = fn._3
1721+ $Tuple2(nil, $Tuple2(dC, dy))
1722+ }
1723+ else throw("Strict value is not equal to itself.")
1724+ }
1725+
1726+
1727+
1728+@Callable(eB)
17211729 func getDeposit (T,bM) = {
17221730 let cl = if (ay(aQ(), T, "getDeposit: invalid asset"))
17231731 then U(bM, 1, c, "getDeposit: invalid amount")
17241732 else false
17251733 if ((cl == cl))
17261734 then {
17271735 let bD = aM()
1728- let eq = bD._1
1729- let er = bK(toBase58String(eq))
1736+ let eu = bD._1
1737+ let ev = bK(toBase58String(eu))
17301738 let bV = bK(T)
1731- let eR = bL(bM, bV, er, DOWN)
1732- let fk = dD(T, eR)
1733- let dz = fk._1
1734- let dB = fk._2
1735- let ej = fk._3
1736- let dh = fk._4
1737- let di = fk._5
1738- let cZ = fk._6
1739- let eT = ((dz - dh) - di)
1740- $Tuple2(nil, eT)
1741- }
1742- else throw("Strict value is not equal to itself.")
1743- }
1744-
1745-
1746-
1747-@Callable(ex)
1739+ let eV = bL(bM, bV, ev, DOWN)
1740+ let fo = dG(T, eV)
1741+ let dC = fo._1
1742+ let dE = fo._2
1743+ let en = fo._3
1744+ let dk = fo._4
1745+ let dl = fo._5
1746+ let dc = fo._6
1747+ let eX = ((dC - dk) - dl)
1748+ $Tuple2(nil, eX)
1749+ }
1750+ else throw("Strict value is not equal to itself.")
1751+ }
1752+
1753+
1754+
1755+@Callable(eB)
17481756 func getWithdrawAll (cy) = {
17491757 let cl = U(cy, 0, c, "getWithdrawAll: invalid amount")
17501758 if ((cl == cl))
17511759 then {
1752- let fl = dU(cy)
1753- let dX = fl._1
1754- let fm = fl._2
1755- let dB = fl._3
1756- $Tuple2(nil, fm)
1757- }
1758- else throw("Strict value is not equal to itself.")
1759- }
1760-
1761-
1762-
1763-@Callable(ex)
1760+ let fp = dY(cy)
1761+ let eb = fp._1
1762+ let fq = fp._2
1763+ let dE = fp._3
1764+ $Tuple2(nil, fq)
1765+ }
1766+ else throw("Strict value is not equal to itself.")
1767+ }
1768+
1769+
1770+
1771+@Callable(eB)
17641772 func getWithdraw (T,bM) = {
17651773 let cl = if (ay(aQ(), T, "getWithdraw: invalid asset"))
17661774 then U(bM, 1, c, "getWithdraw: invalid amount")
17671775 else false
17681776 if ((cl == cl))
17691777 then {
17701778 let bD = aM()
1771- let eq = bD._1
1772- let er = bK(toBase58String(eq))
1773- let fn = ea(T, bM)
1774- let eZ = fn._1
1775- let dB = fn._2
1776- let ej = fn._3
1777- let dh = fn._4
1778- let di = fn._5
1779- let cZ = fn._6
1780- let fc = ((eZ - dh) - di)
1781- let fd = bK(T)
1782- let fe = bL(fc, er, fd, DOWN)
1783- $Tuple2(nil, fe)
1784- }
1785- else throw("Strict value is not equal to itself.")
1786- }
1787-
1788-
1789-
1790-@Callable(ex)
1791-func getSwap (fo,ff,ep) = {
1779+ let eu = bD._1
1780+ let ev = bK(toBase58String(eu))
1781+ let fr = ee(T, bM)
1782+ let fd = fr._1
1783+ let dE = fr._2
1784+ let en = fr._3
1785+ let dk = fr._4
1786+ let dl = fr._5
1787+ let dc = fr._6
1788+ let fg = ((fd - dk) - dl)
1789+ let fh = bK(T)
1790+ let fi = bL(fg, ev, fh, DOWN)
1791+ $Tuple2(nil, fi)
1792+ }
1793+ else throw("Strict value is not equal to itself.")
1794+ }
1795+
1796+
1797+
1798+@Callable(eB)
1799+func getSwap (fs,fj,et) = {
17921800 let bD = aM()
1793- let eq = bD._1
1794- let er = bK(toBase58String(eq))
1795- let dl = aQ()
1796- let dL = valueOrErrorMessage(indexOf(dl, fo), "swap: invalid source asset")
1797- if ((dL == dL))
1798- then {
1799- let ee = valueOrErrorMessage(indexOf(dl, ff), "swap: invalid target asset")
1800- if ((ee == ee))
1801+ let eu = bD._1
1802+ let ev = bK(toBase58String(eu))
1803+ let do = aQ()
1804+ let dO = valueOrErrorMessage(indexOf(do, fs), "swap: invalid source asset")
1805+ if ((dO == dO))
1806+ then {
1807+ let ei = valueOrErrorMessage(indexOf(do, fj), "swap: invalid target asset")
1808+ if ((ei == ei))
18011809 then {
1802- let fh = bL(ep, bK(fo), er, DOWN)
1803- let cl = if (U(fh, 1, c, "swap: invalid source amount"))
1804- then ad(fo, ff, "swap: same assets")
1810+ let fl = bL(et, bK(fs), ev, DOWN)
1811+ let cl = if (U(fl, 1, c, "swap: invalid source amount"))
1812+ then ad(fs, fj, "swap: same assets")
18051813 else false
18061814 if ((cl == cl))
18071815 then {
1808- let fp = em(dL, ee, fh)
1809- let eZ = fp._1
1810- let fa = fp._2
1811- let fb = fp._3
1812- let dh = fp._4
1813- let di = fp._5
1814- let cZ = fp._6
1815- let fc = ((eZ - dh) - di)
1816- let fd = bK(ff)
1817- let fe = bL(fc, er, fd, DOWN)
1818- $Tuple2(nil, fe)
1816+ let ft = eq(dO, ei, fl)
1817+ let fd = ft._1
1818+ let fe = ft._2
1819+ let ff = ft._3
1820+ let dk = ft._4
1821+ let dl = ft._5
1822+ let dc = ft._6
1823+ let fg = ((fd - dk) - dl)
1824+ let fh = bK(fj)
1825+ let fi = bL(fg, ev, fh, DOWN)
1826+ $Tuple2(nil, fi)
18191827 }
18201828 else throw("Strict value is not equal to itself.")
18211829 }
18221830 else throw("Strict value is not equal to itself.")
18231831 }
18241832 else throw("Strict value is not equal to itself.")
18251833 }
18261834
18271835
18281836
1829-@Callable(ex)
1837+@Callable(eB)
18301838 func getClaim (bl) = {
1831- let fq = if ((size(bl) > 0))
1839+ let fu = if ((size(bl) > 0))
18321840 then valueOrErrorMessage(addressFromString(bl), "getClaim: invalid user")
1833- else ex.caller
1834- let fr = cM(fq)
1835- let fs = fr._1
1836- let cO = fr._2
1837- $Tuple2(nil, cO)
1838- }
1839-
1840-
1841-
1842-@Callable(ex)
1841+ else eB.caller
1842+ let fv = cP(fu)
1843+ let fw = fv._1
1844+ let cR = fv._2
1845+ $Tuple2(nil, cR)
1846+ }
1847+
1848+
1849+
1850+@Callable(eB)
18431851 func getAssetId () = {
18441852 let bD = aM()
1845- let eq = bD._1
1846- $Tuple2(nil, toBase58String(eq))
1847- }
1848-
1849-
1850-
1851-@Callable(ex)
1853+ let eu = bD._1
1854+ $Tuple2(nil, toBase58String(eu))
1855+ }
1856+
1857+
1858+
1859+@Callable(eB)
18521860 func getDecimals () = {
18531861 let bD = aM()
1854- let eq = bD._1
1855- let er = bK(toBase58String(eq))
1856- $Tuple2(nil, er)
1857- }
1858-
1859-
1860-
1861-@Callable(ex)
1862+ let eu = bD._1
1863+ let ev = bK(toBase58String(eu))
1864+ $Tuple2(nil, ev)
1865+ }
1866+
1867+
1868+
1869+@Callable(eB)
18621870 func checkpoint (bl) = {
18631871 let cl = if (bE())
18641872 then bF()
18651873 else false
18661874 if ((cl == cl))
18671875 then {
1868- let fq = if ((size(bl) > 0))
1876+ let fu = if ((size(bl) > 0))
18691877 then valueOrErrorMessage(addressFromString(bl), "checkpoint: invalid user")
1870- else ex.caller
1871- cM(fq)
1872- }
1873- else throw("Strict value is not equal to itself.")
1874- }
1875-
1876-
1877-
1878-@Callable(ex)
1878+ else eB.caller
1879+ cP(fu)
1880+ }
1881+ else throw("Strict value is not equal to itself.")
1882+ }
1883+
1884+
1885+
1886+@Callable(eB)
18791887 func stake () = {
18801888 let cl = if (bE())
18811889 then bF()
18821890 else false
18831891 if ((cl == cl))
18841892 then {
18851893 let bD = aM()
1886- let eP = aA(bD._1)
1887- let dS = if (if (ar(size(ex.payments), 1, "stake: invalid payments size"))
1888- then aa(eP, aA(ex.payments[0].assetId), "stake: invalid payment asset")
1894+ let eT = aA(bD._1)
1895+ let dX = if (if (ar(size(eB.payments), 1, "stake: invalid payments size"))
1896+ then aa(eT, aA(eB.payments[0].assetId), "stake: invalid payment asset")
18891897 else false)
1890- then U(ex.payments[0].amount, 0, c, "stake: invalid payment amount")
1898+ then U(eB.payments[0].amount, 0, c, "stake: invalid payment amount")
18911899 else false
1892- if ((dS == dS))
1900+ if ((dX == dX))
18931901 then {
1894- let ft = cM(ex.caller)
1895- let fs = ft._1
1896- let cO = ft._2
1897- $Tuple2(((fs ++ bo(ex.caller, (bn(ex.caller) + ex.payments[0].amount))) ++ bq((bp() + ex.payments[0].amount))), unit)
1902+ let fx = cP(eB.caller)
1903+ let fw = fx._1
1904+ let cR = fx._2
1905+ $Tuple2(((fw ++ bo(eB.caller, (bn(eB.caller) + eB.payments[0].amount))) ++ bq((bp() + eB.payments[0].amount))), unit)
18981906 }
18991907 else throw("Strict value is not equal to itself.")
19001908 }
19011909 else throw("Strict value is not equal to itself.")
19021910 }
19031911
19041912
19051913
1906-@Callable(ex)
1914+@Callable(eB)
19071915 func unstake (bM) = {
19081916 let cl = if (bE())
19091917 then bF()
19101918 else false
19111919 if ((cl == cl))
19121920 then {
19131921 let bD = aM()
1914- let eq = bD._1
1915- let cN = bn(ex.caller)
1916- let dS = U(bM, 0, cN, "unstake: invalid amount")
1917- if ((dS == dS))
1922+ let eu = bD._1
1923+ let cQ = bn(eB.caller)
1924+ let dX = U(bM, 0, cQ, "unstake: invalid amount")
1925+ if ((dX == dX))
19181926 then {
1919- let fu = cM(ex.caller)
1920- let fs = fu._1
1921- let cO = fu._2
1922- $Tuple2(((([ScriptTransfer(ex.caller, bM, eq)] ++ fs) ++ bo(ex.caller, (cN - bM))) ++ bq((bp() - bM))), unit)
1927+ let fy = cP(eB.caller)
1928+ let fw = fy._1
1929+ let cR = fy._2
1930+ $Tuple2(((([ScriptTransfer(eB.caller, bM, eu)] ++ fw) ++ bo(eB.caller, (cQ - bM))) ++ bq((bp() - bM))), unit)
19231931 }
19241932 else throw("Strict value is not equal to itself.")
19251933 }
19261934 else throw("Strict value is not equal to itself.")
19271935 }
19281936
19291937
19301938
1931-@Callable(ex)
1939+@Callable(eB)
19321940 func claim (bl) = {
19331941 let cl = if (bE())
19341942 then bF()
19351943 else false
19361944 if ((cl == cl))
19371945 then {
1938- let fq = if ((size(bl) > 0))
1946+ let fu = if ((size(bl) > 0))
19391947 then valueOrErrorMessage(addressFromString(bl), "claim: invalid user")
1940- else ex.caller
1948+ else eB.caller
19411949 let bD = aM()
1942- let eq = bD._1
1943- let eP = aA(eq)
1944- let dl = [eP, aQ()]
1945- let cL = (size(dl) - 1)
1946- let fv = cM(fq)
1947- let fs = fv._1
1948- let cO = fv._2
1949- func af (ag,fw) = {
1950+ let eu = bD._1
1951+ let eT = aA(eu)
1952+ let do = [eT, aQ()]
1953+ let cO = (size(do) - 1)
1954+ let fz = cP(fu)
1955+ let fw = fz._1
1956+ let cR = fz._2
1957+ func af (ag,fA) = {
19501958 let cd = ag._1
1951- if (if ((cL >= cd))
1952- then (fw > 0)
1959+ if (if ((cO >= cd))
1960+ then (fA > 0)
19531961 else false)
19541962 then {
1955- let fx = dl[cd]
1956- $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fq, fw, aC(fx))))
1963+ let fB = do[cd]
1964+ $Tuple3((cd + 1), (ag._2 :+ 0), (ag._3 :+ ScriptTransfer(fu, fA, aC(fB))))
19571965 }
1958- else $Tuple3((cd + 1), (ag._2 :+ fw), ag._3)
1966+ else $Tuple3((cd + 1), (ag._2 :+ fA), ag._3)
19591967 }
19601968
1961- let fy = {
1962- let ai = cO
1969+ let fC = {
1970+ let ai = cR
19631971 let aj = size(ai)
19641972 let ak = $Tuple3(0, nil, nil)
19651973 func al (am,an) = if ((an >= aj))
19661974 then am
19671975 else af(am, ai[an])
19681976
19691977 func ao (am,an) = if ((an >= aj))
19701978 then am
19711979 else throw("List size exceeds 11")
19721980
19731981 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
19741982 }
1975- let cT = fy._1
1976- let fz = fy._2
1977- let fA = fy._3
1978- $Tuple2(((fA ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
1979- }
1980- else throw("Strict value is not equal to itself.")
1981- }
1982-
1983-
1984-
1985-@Callable(ex)
1983+ let cW = fC._1
1984+ let fD = fC._2
1985+ let fE = fC._3
1986+ $Tuple2(((fE ++ removeByIndex(fw, 0)) ++ bs(fu, fD)), unit)
1987+ }
1988+ else throw("Strict value is not equal to itself.")
1989+ }
1990+
1991+
1992+
1993+@Callable(eB)
19861994 func claimAll (bl) = {
19871995 let cl = if (bE())
19881996 then bF()
19891997 else false
19901998 if ((cl == cl))
19911999 then {
1992- let fq = if ((size(bl) > 0))
2000+ let fu = if ((size(bl) > 0))
19932001 then valueOrErrorMessage(addressFromString(bl), "claimAll: invalid user")
1994- else ex.caller
2002+ else eB.caller
19952003 let bD = aM()
1996- let eq = bD._1
1997- let eP = aA(eq)
1998- let dl = [eP, aQ()]
1999- let cL = (size(dl) - 1)
2000- let fB = aS()
2001- let dB = fB._1
2002- let dC = fB._2
2003- let fC = cM(fq)
2004- let fs = fC._1
2005- let cO = fC._2
2006- func af (ag,fw) = {
2004+ let eu = bD._1
2005+ let eT = aA(eu)
2006+ let do = [eT, aQ()]
2007+ let cO = (size(do) - 1)
2008+ let fF = aS()
2009+ let dE = fF._1
2010+ let dF = fF._2
2011+ let fG = cP(fu)
2012+ let fw = fG._1
2013+ let cR = fG._2
2014+ func af (ag,fA) = {
20072015 let cd = ag._1
20082016 if ((cd == 0))
2009- then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fw))
2017+ then $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, (ag._5 + fA))
20102018 else if (if ((cd > 0))
2011- then (cL >= cd)
2019+ then (cO >= cd)
20122020 else false)
20132021 then {
2014- let fD = (cd - 1)
2015- let aT = dB[fD]
2016- $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fw)), (ag._4 + fw), ag._5)
2022+ let fH = (cd - 1)
2023+ let aT = dE[fH]
2024+ $Tuple5((cd + 1), (ag._2 :+ 0), (ag._3 :+ (aT + fA)), (ag._4 + fA), ag._5)
20172025 }
20182026 else $Tuple5((cd + 1), (ag._2 :+ 0), ag._3, ag._4, ag._5)
20192027 }
20202028
2021- let fE = {
2022- let ai = cO
2029+ let fI = {
2030+ let ai = cR
20232031 let aj = size(ai)
20242032 let ak = $Tuple5(0, nil, nil, 0, 0)
20252033 func al (am,an) = if ((an >= aj))
20262034 then am
20272035 else af(am, ai[an])
20282036
20292037 func ao (am,an) = if ((an >= aj))
20302038 then am
20312039 else throw("List size exceeds 11")
20322040
20332041 ao(al(al(al(al(al(al(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11)
20342042 }
2035- let cT = fE._1
2036- let fz = fE._2
2037- let fF = fE._3
2038- let dz = fE._4
2039- let fG = fE._5
2040- let eH = $Tuple10(bD._1, bD._2, (bD._3 + dz), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2041- $Tuple2((((([Reissue(eq, dz, true), ScriptTransfer(ex.caller, (dz + fG), eq)] ++ aO(eH)) ++ aU(fF)) ++ removeByIndex(fs, 0)) ++ bs(fq, fz)), unit)
2042- }
2043- else throw("Strict value is not equal to itself.")
2044- }
2045-
2046-
2047-
2048-@Callable(ex)
2049-func updatePoolFees (dd,de) = {
2050- let cl = if (if (if (bz(ex.caller))
2043+ let cW = fI._1
2044+ let fD = fI._2
2045+ let fJ = fI._3
2046+ let dC = fI._4
2047+ let fK = fI._5
2048+ let eL = $Tuple10(bD._1, bD._2, (bD._3 + dC), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2049+ $Tuple2((((([Reissue(eu, dC, true), ScriptTransfer(eB.caller, (dC + fK), eu)] ++ aO(eL)) ++ aU(fJ)) ++ removeByIndex(fw, 0)) ++ bs(fu, fD)), unit)
2050+ }
2051+ else throw("Strict value is not equal to itself.")
2052+ }
2053+
2054+
2055+
2056+@Callable(eB)
2057+func updatePoolFees (dg,dh) = {
2058+ let cl = if (if (if (bz(eB.caller))
20512059 then bE()
20522060 else false)
2053- then U(dd, 0, d, "updatePoolFees: invalid lp fee")
2054- else false)
2055- then U(de, 0, d, "updatePoolFees: invalid protocol fee")
2061+ then U(dg, 0, d, "updatePoolFees: invalid lp fee")
2062+ else false)
2063+ then U(dh, 0, d, "updatePoolFees: invalid protocol fee")
20562064 else false
20572065 if ((cl == cl))
20582066 then {
20592067 let bD = aM()
2060- let eH = $Tuple10(bD._1, bD._2, bD._3, dd, de, bD._6, bD._7, bD._8, bD._9, bD._10)
2061- $Tuple2(aO(eH), unit)
2062- }
2063- else throw("Strict value is not equal to itself.")
2064- }
2065-
2066-
2067-
2068-@Callable(ex)
2069-func updatePoolParams (eB,cz,cA,eC) = {
2070- let cl = if (if (if (if (if (bz(ex.caller))
2068+ let eL = $Tuple10(bD._1, bD._2, bD._3, dg, dh, bD._6, bD._7, bD._8, bD._9, bD._10)
2069+ $Tuple2(aO(eL), unit)
2070+ }
2071+ else throw("Strict value is not equal to itself.")
2072+ }
2073+
2074+
2075+
2076+@Callable(eB)
2077+func updatePoolParams (eF,cz,cA,eG) = {
2078+ let cl = if (if (if (if (if (bz(eB.caller))
20712079 then bE()
20722080 else false)
2073- then U(eB, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2074- else false)
2075- then U(cz, 0, eB, "updatePoolParams: invalid weightAmplifier")
2081+ then U(eF, 0, e, "updatePoolParams: invalid maxAllocationAmplifier")
2082+ else false)
2083+ then U(cz, 0, eF, "updatePoolParams: invalid weightAmplifier")
20762084 else false)
20772085 then U(cA, 0, c, "updatePoolParams: invalid disbalanceCoeff")
20782086 else false)
2079- then U(eC, 0, c, "updatePoolParams: invalid feeMaxRate")
2087+ then U(eG, 0, c, "updatePoolParams: invalid feeMaxRate")
20802088 else false
20812089 if ((cl == cl))
20822090 then {
20832091 let bD = aM()
2084- let eH = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eB, cz, cA, eC, bD._10)
2085- $Tuple2(aO(eH), unit)
2086- }
2087- else throw("Strict value is not equal to itself.")
2088- }
2089-
2090-
2091-
2092-@Callable(ex)
2092+ let eL = $Tuple10(bD._1, bD._2, bD._3, bD._4, bD._5, eF, cz, cA, eG, bD._10)
2093+ $Tuple2(aO(eL), unit)
2094+ }
2095+ else throw("Strict value is not equal to itself.")
2096+ }
2097+
2098+
2099+
2100+@Callable(eB)
20932101 func migrateBalances () = {
2094- let cl = if (bz(ex.caller))
2102+ let cl = if (bz(eB.caller))
20952103 then bE()
20962104 else false
20972105 if ((cl == cl))
20982106 then {
20992107 let bD = aM()
2100- let fH = bD._3
2101- let fI = aS()
2102- let dB = fI._1
2103- let dC = fI._2
2104- let fJ = max([(dC - fH), 0])
2105- let eH = $Tuple10(bD._1, bD._2, (fH + fJ), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2106- $Tuple2(aO(eH), unit)
2107- }
2108- else throw("Strict value is not equal to itself.")
2109- }
2110-
2111-
2112-
2113-@Callable(ex)
2108+ let fL = bD._3
2109+ let fM = aS()
2110+ let dE = fM._1
2111+ let dF = fM._2
2112+ let fN = max([(dF - fL), 0])
2113+ let eL = $Tuple10(bD._1, bD._2, (fL + fN), bD._4, bD._5, bD._6, bD._7, bD._8, bD._9, bD._10)
2114+ $Tuple2(aO(eL), unit)
2115+ }
2116+ else throw("Strict value is not equal to itself.")
2117+ }
2118+
2119+
2120+
2121+@Callable(eB)
21142122 func pause () = {
2115- let cl = if (if (bH(ex.caller))
2123+ let cl = if (if (bH(eB.caller))
21162124 then bE()
21172125 else false)
21182126 then bF()
21192127 else false
21202128 if ((cl == cl))
21212129 then $Tuple2(aE(true), unit)
21222130 else throw("Strict value is not equal to itself.")
21232131 }
21242132
21252133
21262134
2127-@Callable(ex)
2135+@Callable(eB)
21282136 func unpause () = {
2129- let cl = if (if (bz(ex.caller))
2137+ let cl = if (if (bz(eB.caller))
21302138 then bE()
21312139 else false)
21322140 then bG()
21332141 else false
21342142 if ((cl == cl))
21352143 then $Tuple2(aE(false), unit)
21362144 else throw("Strict value is not equal to itself.")
21372145 }
21382146
21392147
21402148
2141-@Callable(ex)
2149+@Callable(eB)
21422150 func updatePauser (aI) = {
2143- let cl = if (if (bz(ex.caller))
2151+ let cl = if (if (bz(eB.caller))
21442152 then bE()
21452153 else false)
21462154 then N(aI, "updatePauser: invalid pauser")
21472155 else false
21482156 if ((cl == cl))
21492157 then $Tuple2(aH(addressFromStringValue(aI)), unit)
21502158 else throw("Strict value is not equal to itself.")
21512159 }
21522160
21532161
21542162
2155-@Callable(ex)
2163+@Callable(eB)
21562164 func updateWatchdog (bv,by) = {
2157- let cl = if (if (if (bz(ex.caller))
2165+ let cl = if (if (if (bz(eB.caller))
21582166 then bE()
21592167 else false)
21602168 then N(bv, "updateWatchdog: invalid watchdog")
21612169 else false)
21622170 then U(by, 0, c, "updateWatchdog: invalid offset")
21632171 else false
21642172 if ((cl == cl))
21652173 then $Tuple2((bu(addressFromStringValue(bv)) ++ bx(by)), unit)
21662174 else throw("Strict value is not equal to itself.")
21672175 }
21682176
21692177
21702178
2171-@Callable(ex)
2179+@Callable(eB)
21722180 func setMultisig (aL) = {
2173- let cl = if (bz(ex.caller))
2181+ let cl = if (bz(eB.caller))
21742182 then N(aL, "setMultisig: invalid multisig")
21752183 else false
21762184 if ((cl == cl))
21772185 then $Tuple2(aK(addressFromStringValue(aL)), unit)
21782186 else throw("Strict value is not equal to itself.")
21792187 }
21802188
21812189
2182-@Verifier(fK)
2183-func fL () = {
2190+@Verifier(fO)
2191+func fP () = {
21842192 let Q = getString(t)
21852193 if ($isInstanceOf(Q, "String"))
21862194 then {
2187- let fM = Q
2188- valueOrElse(getBoolean(addressFromStringValue(fM), makeString([u, toString(this), toBase58String(fK.id)], a)), false)
2189- }
2190- else sigVerify(fK.bodyBytes, fK.proofs[0], fK.senderPublicKey)
2195+ let fQ = Q
2196+ valueOrElse(getBoolean(addressFromStringValue(fQ), makeString([u, toString(this), toBase58String(fO.id)], a)), false)
2197+ }
2198+ else sigVerify(fO.bodyBytes, fO.proofs[0], fO.senderPublicKey)
21912199 }
21922200

github/deemru/w8io/169f3d6 
371.54 ms