tx · 4kDj884iCvd4ktETz2jmJpahH5QGtZSiNvwzrQYLCXaY

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.04300000 Waves

2023.07.18 16:49 [2671396] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "4kDj884iCvd4ktETz2jmJpahH5QGtZSiNvwzrQYLCXaY", "fee": 4300000, "feeAssetId": null, "timestamp": 1689687597695, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "5cMWgdSMPwgmdHfKf8pCG3YwQcgr6EyHyE9eSUq4VPSx5CXsNdSnABAnyjS9LkBbScyTc29UYp3E1STKHh6vcRWg" ], "script": "base64:BgKMAQgCEgMKAQgSBAoCCAgSBQoDCBgYEgUKAwgBCBIECgIIARIGCgQBCAgBEgUKAwEICBILCgkICAgICAgICAgSAwoBCBIDCgEIEgUKAwgIARIGCgQIAQgIEg0KCwgIAQQRGBgRAQEYEgkKBwgIAQQIARgSDQoLCAgBBBgYGBgYARgSCwoJCAgBAQEBAQEEbwAHU0ZfUE9PTAICU0YAB1dYX1BPT0wCAldYAA9DQVBfRkVFX05PX0xPQU4CCWNhcE5vTG9hbgAMQ0FQX0ZFRV9MT0FOAgdjYXBMb2FuABRTVE9QTE9TU19GRUVfTk9fTE9BTgIOc3RvcExvc3NOb0xvYW4ADVNUT1BMT1NTX0xPQU4CDHN0b3BMb3NzTG9hbgAITE9BTl9GRUUCBGxvYW4AC05PX0xPQU5fRkVFAgZub0xvYW4ABk5PX0ZFRQIFbm9GZWUABlNDQUxFOACAwtcvAAdTQ0FMRTEwAIDIr6AlAAdTQ0FMRTE2CQC2AgEAgICE/qbe4REACkZFRV9TQ0FMRTYAwIQ9ABRrU0ZQb29sQUFzc2V0QmFsYW5jZQIPQV9hc3NldF9iYWxhbmNlABRrU0ZQb29sQkFzc2V0QmFsYW5jZQIPQl9hc3NldF9iYWxhbmNlAA9rU0ZQb29sQUFzc2V0SWQCCkFfYXNzZXRfaWQAD2tTRlBvb2xCQXNzZXRJZAIKQl9hc3NldF9pZAAOa1NGUG9vbFNoYXJlSWQCDnNoYXJlX2Fzc2V0X2lkABJrU0ZQb29sU2hhcmVTdXBwbHkCEnNoYXJlX2Fzc2V0X3N1cHBseQAKa1NGUG9vbEZlZQIKY29tbWlzc2lvbgANa1VzZXJQb3NpdGlvbgINX3VzZXJQb3NpdGlvbgARa1VzZXJQb3NpdGlvblBvb2wCEV91c2VyUG9zaXRpb25Qb29sABFrVXNlckJvcnJvd0Ftb3VudAIZX3VzZXJQb3NpdGlvbkJvcnJvd0Ftb3VudAASa1VzZXJCb3Jyb3dBc3NldElkAhpfdXNlclBvc2l0aW9uQm9ycm93QXNzZXRJZAAQa1VzZXJQb3NpdGlvbk51bQITX3VzZXJQb3NpdGlvbk51bWJlcgAVa1VzZXJQb3NpdGlvbkludGVyZXN0AhVfdXNlclBvc2l0aW9uSW50ZXJlc3QACmtQb29sVG90YWwCCl9wb29sVG90YWwADmtQb29sVG90YWxMb2FuAg5fcG9vbFRvdGFsTG9hbgARa1Bvb2xJbnRlcmVzdExvYW4CEV9wb29sSW50ZXJlc3RMb2FuABNrUG9vbEludGVyZXN0Tm9Mb2FuAhNfcG9vbEludGVyZXN0Tm9Mb2FuAA5rUG9vbENhbkJvcnJvdwIOX3Bvb2xDYW5Cb3Jyb3cAFWtBeGx5SW5GZWVXaXRob3V0TG9hbgIOX2F4bHlGZWVOb0xvYW4AEmtBeGx5SW5GZWVXaXRoTG9hbgIQX2F4bHlGZWVXaXRoTG9hbgARa0F4bHlOb0xvYW5DYXBGZWUCE19heGx5RmVlQ2FwV2l0aExvYW4AE2tBeGx5V2l0aExvYW5DYXBGZWUCEV9heGx5RmVlQ2FwTm9Mb2FuABZrQXhseVN0b3BMb3NzTm9Mb2FuRmVlAhhfYXhseUZlZVN0b3Bsb3NzV2l0aExvYW4AFGtBeGx5U3RvcExvc3NMb2FuRmVlAhZfYXhseUZlZVN0b3Bsb3NzTm9Mb2FuAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ACmtTaGFyZVBvb2wCDF9wb29sU2hhcmVJZAAOa1Bvb2xDYXBDaGFuZ2UCDl9wb29sQ2FwQ2hhbmdlAA9rVG9rZW5MYXN0UHJpY2UCCmxhc3RfcHJpY2UADmtQcmljZUluT3JhY2xlAgdfdHdhcDVCAA1rVXNlclN0b3BMb3NzAglfc3RvcExvc3MACWtNb25leUJveAIOYXhseV9tb25leV9ib3gADmtTRkZhcm1pbmdBZGRyAhNzd29wZmlfZmFybWluZ19hZGRyAAxrTGVuZFNlcnZpY2UCEWxlbmRfc2VydmljZV9hZGRyAAxrQWRtaW5DYWxsUEsCEmFkbWluX2NhbGxfcHViX2tleQAMa1ByaWNlT3JhY2xlAgxwcmljZV9vcmFjbGUAC2tFeENvbnRyYWN0AhFleGNoYW5nZV9jb250cmFjdAAPa1d4U3dhcENvbnRyYWN0AhB3eF9zd2FwX2NvbnRyYWN0AAdrU3dvcElkAgdzd29wX2lkAAVrV3hJZAIFd3hfaWQACG1vbmV5Qm94CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFCWtNb25leUJveAIYTm8gYXhseSBtb25leUJveCBhZGRyZXNzAApleENvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFC2tFeENvbnRyYWN0AhxObyBleGNoYW5nZSBjb250cmFjdCBhZGRyZXNzAA9wcmljZU9yYWNsZUFkZHIJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa1ByaWNlT3JhY2xlAhdObyBwcmljZSBvcmFjbGUgYWRkcmVzcwAOd3hTd2FwQ29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUPa1d4U3dhcENvbnRyYWN0AhJObyB3eCBzd2FwIGFkZHJlc3MABlNXT1BJRAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUHa1N3b3BJZAIKTm8gc3dvcCBpZAAEV1hJRAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUFa1d4SWQCCE5vIHd4IGlkAQ91bmtub3duUG9vbFR5cGUACQACAQIPV3JvbmcgcG9vbCB0eXBlAQ5nZXRMZW5kU3J2QWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0xlbmRTZXJ2aWNlAhtDYW4ndCBnZXQgbGVuZCBzZXJ2aWNlIGFkZHIBEGdldEFkbWluQ2FsbEFkZHIACQCnCAEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFDGtBZG1pbkNhbGxQSwIUQ2FuJ3QgZ2V0IGFkbWluIGFkZHIBC2lzQWRtaW5DYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgkBEGdldEFkbWluQ2FsbEFkZHIABQR1bml0CQACAQIhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAQppc1NlbGZDYWxsAQFpAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwUEdW5pdAkAAgECK09ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzTGFuZENhbGwBAWkDCQAAAggFAWkGY2FsbGVyCQEOZ2V0TGVuZFNydkFkZHIABQR1bml0CQACAQIpT25seSBsYW5kIGNvbnRyYWN0IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BDmFjY291bnRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAmlkBQckbWF0Y2gwCQDwBwIFBHRoaXMFAmlkAwkAAQIFByRtYXRjaDACBFVuaXQEBXdhdmVzBQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkAAgECC01hdGNoIGVycm9yARFnZXRTRlBvb2xCYWxhbmNlcwEIcG9vbEFkZHIJAJQKAgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRRrU0ZQb29sQUFzc2V0QmFsYW5jZQIeQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBiYWxhbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xCQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGJhbGFuY2UBEWdldFdYUG9vbEJhbGFuY2VzAwhwb29sQWRkcgNhSWQDYklkCQCUCgIKAAFACQD8BwQFCHBvb2xBZGRyAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFA2FJZAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQNiSWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAEPZ2V0UG9vbEJhbGFuY2VzBAhwb29sQWRkcgR0eXBlA2FJZANiSWQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBEWdldFNGUG9vbEJhbGFuY2VzAQUIcG9vbEFkZHIDCQAAAgUEdHlwZQUHV1hfUE9PTAkBEWdldFdYUG9vbEJhbGFuY2VzAwUIcG9vbEFkZHIFA2FJZAUDYklkCQEPdW5rbm93blBvb2xUeXBlAAENZ2V0U0ZQb29sRGF0YQEIcG9vbEFkZHIECyR0MDYxNzk2MjI4CQERZ2V0U0ZQb29sQmFsYW5jZXMBBQhwb29sQWRkcgMJAAACBQskdDA2MTc5NjIyOAULJHQwNjE3OTYyMjgEBGJhbEIIBQskdDA2MTc5NjIyOAJfMgQEYmFsQQgFCyR0MDYxNzk2MjI4Al8xCQCXCgUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEFBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFD2tTRlBvb2xCQXNzZXRJZAIZQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBpZAUEYmFsQQUEYmFsQgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyBQ5rU0ZQb29sU2hhcmVJZAIYQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IGlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ1nZXRXWFBvb2xEYXRhAQhwb29sQWRkcgQDY2ZnCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2NmZwUDY2ZnBANhSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAQDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkBANiSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgoAAUAJAJEDAgUDY2ZnAAUDCQABAgUBQAIGU3RyaW5nBQFABQR1bml0AhlDYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGlkBAdzaGFyZUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwADAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIaQ2FuJ3QgZ2V0IHBvb2wgTFAgYXNzZXQgaWQECyR0MDY5MjU2OTg0CQERZ2V0V1hQb29sQmFsYW5jZXMDBQhwb29sQWRkcgUDYUlkBQNiSWQDCQAAAgULJHQwNjkyNTY5ODQFCyR0MDY5MjU2OTg0BARiYWxCCAULJHQwNjkyNTY5ODQCXzIEBGJhbEEIBQskdDA2OTI1Njk4NAJfMQkAlwoFBQNhSWQFA2JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELZ2V0UG9vbERhdGECCHBvb2xBZGRyBHR5cGUDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBDWdldFNGUG9vbERhdGEBBQhwb29sQWRkcgMJAAACBQR0eXBlBQdXWF9QT09MCQENZ2V0V1hQb29sRGF0YQEFCHBvb2xBZGRyCQEPdW5rbm93blBvb2xUeXBlAAEOZ2V0U2hhcmVTdXBwbHkDCHBvb2xBZGRyBHR5cGUHc2hhcmVJZAMJAAACBQR0eXBlBQdTRl9QT09MCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFEmtTRlBvb2xTaGFyZVN1cHBseQIcQ2FuJ3QgZ2V0IHNoYXJlIGFzc2V0IHN1cHBseQMJAAACBQR0eXBlBQdXWF9QT09MCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUHc2hhcmVJZAINV3JvbmcgU2hhcmVJZAhxdWFudGl0eQkBD3Vua25vd25Qb29sVHlwZQABEWdldFBvb2xUb3RhbFNoYXJlAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAAAARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4AAAEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQR1c2VyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0AAAABAQpnZXRBeGx5RmVlAgRwb29sB2ZlZVR5cGUDCQAAAgUHZmVlVHlwZQUMQ0FQX0ZFRV9MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tBeGx5V2l0aExvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUPQ0FQX0ZFRV9OT19MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtBeGx5Tm9Mb2FuQ2FwRmVlAwkAAAIFB2ZlZVR5cGUFCExPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEmtBeGx5SW5GZWVXaXRoTG9hbgMJAAACBQdmZWVUeXBlBQtOT19MT0FOX0ZFRQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRVrQXhseUluRmVlV2l0aG91dExvYW4DCQAAAgUHZmVlVHlwZQUGTk9fRkVFAAAJAAIBAg5Xcm9uZyBmZWUgdHlwZQEQZ2V0U0ZGYXJtaW5nQWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUOa1NGRmFybWluZ0FkZHICHUNhbid0IGdldCBzd29wZmkgZmFybWluZyBhZGRyARBnZXRXWEZhcm1pbmdBZGRyAQhwb29sQWRkcgQJZkNvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyAhMlc19fZmFjdG9yeUNvbnRyYWN0AiJDYW4ndCBnZXQgV1ggZmFjdG9yeSBjb250cmFjdCBhZGRyBApmYWN0cm95Q2ZnCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlmQ29udHJhY3QCESVzX19mYWN0b3J5Q29uZmlnAhhDYW4ndCBnZXQgV1ggZmFjdG9yeSBjZmcCAl9fCQEHQWRkcmVzcwEJANkEAQkAkQMCBQpmYWN0cm95Q2ZnAAEBDGFzc2V0SWRUb1N0cgEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgxOb3QgQXNzZXQgaWQBDmFzc2V0SWRGcm9tU3RyAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBEGdldEFzc2V0RGVjaW1hbHMBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMACAQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQIZGVjaW1hbHMJAAIBAhBDYW4ndCBmaW5kIGFzc2V0ARFnZXRBc3NldFByZWNpdGlvbgEHYXNzZXRJZAkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB2Fzc2V0SWQAAAAABQRET1dOAQ5nZXRBc3NldHNQcmljZQEIYXNzZXRJZHMKAQlnZXRQcmljZXMCAWEHYXNzZXRJZAQKYXNzZXRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlCQDNCAIFAWEFCmFzc2V0UHJpY2UKAAIkbAUIYXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgNTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyAQ1nZXRTaGFyZVByaWNlAQdzaGFyZUlkBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sAiBDYW4ndCBmaW5kIHBvb2wgYWRkciBieSBzaGFyZSBpZAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQMJHQwOTk2MjEwMDI3CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA2FJZAgFDCR0MDk5NjIxMDAyNwJfMQQDYklkCAUMJHQwOTk2MjEwMDI3Al8yBAhhQmFsYW5jZQgFDCR0MDk5NjIxMDAyNwJfMwQIYkJhbGFuY2UIBQwkdDA5OTYyMTAwMjcCXzQEB2RQcmljZUEJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQNhSWQFDmtQcmljZUluT3JhY2xlBAdkUHJpY2VCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYklkBQ5rUHJpY2VJbk9yYWNsZQQLc2hhcmVTdXBwbHkJAQ5nZXRTaGFyZVN1cHBseQMFCHBvb2xBZGRyBQVwVHlwZQUHc2hhcmVJZAQKQVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04ECkJQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBA5zaGFyZVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQAAAAABQRET1dOBANzdW0JAGQCCQBrAwUIYUJhbGFuY2UFB2RQcmljZUEFCkFQcmVjaXNpb24JAGsDBQhiQmFsYW5jZQUHZFByaWNlQgUKQlByZWNpc2lvbgkAawMFA3N1bQUOc2hhcmVQcmVjaXNpb24FC3NoYXJlU3VwcGx5AQ5nZXRTaGFyZVByaWNlcwEIc2hhcmVJZHMKAQlnZXRQcmljZXMCAWEHc2hhcmVJZAkAzQgCBQFhCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQKAAIkbAUIc2hhcmVJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAQ5nZXRDdXJzRW50cmllcwQDYUlkA2JJZAdzaGFyZUlkCHdBbW91bnRzBAxhc3NldHNQcmljZXMJAQ5nZXRBc3NldHNQcmljZQEJAMwIAgUDYUlkCQDMCAIFA2JJZAUDbmlsBApzaGFyZVByaWNlCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQEBnByaWNlcwkAzggCCQDMCAIJAKQDAQkAkQMCBQxhc3NldHNQcmljZXMAAAkAzAgCCQCkAwEJAJEDAgUMYXNzZXRzUHJpY2VzAAEJAMwIAgkApAMBBQpzaGFyZVByaWNlBQNuaWwFCHdBbW91bnRzCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tUb2tlbkxhc3RQcmljZQkAuQkCBQZwcmljZXMCASwFA25pbAEYY2FsY1JlcGxlbmlzaEJ5VHdvVG9rZW5zCAVwVHlwZQhwb29sQWRkcgRwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIDCQAAAgUFcFR5cGUFB1NGX1BPT0wEBHJlcGwKAAFACQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIgY2FsY0xQUmVwbGVuaXNoVHdvVG9rZW5zUkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFBHBtdEEJAMwIAgkApAMBBQRwbXRCBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQRyZXBsBQRyZXBsCQCXCgUKAAFACQCRAwIFBHJlcGwAAwMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQCRAwIFBHJlcGwABAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQCRAwIFBHJlcGwAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQxhc3NldElkVG9TdHIBCQCRAwIFBHJlcGwAAgoAAUAJAJEDAgUEcmVwbAAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAACBQVwVHlwZQUHV1hfUE9PTAQNJHQwMTE1NzIxMTgyMgkAlAoCCQC1CQIKAAFACQD8BwQFCHBvb2xBZGRyAiBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQkAzAgCBQRwbXRBBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcCAl9fCQC1CQIKAAFACQD8BwQFCHBvb2xBZGRyAh9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZCQDMCAIFBHBtdEIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18DCQAAAgUNJHQwMTE1NzIxMTgyMgUNJHQwMTE1NzIxMTgyMgQKZXZhbFB1dEluQggFDSR0MDExNTcyMTE4MjICXzIECmV2YWxQdXRJbkEIBQ0kdDAxMTU3MjExODIyAl8xBAVscEluQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEAAQQFbHBJbkIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5CAAEDCQBmAgUFbHBJbkIFBWxwSW5BBANwbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5BAAgJAJcKBQUEcG10QQUDcG10CQBlAgUEcG10QgUDcG10BQNiSWQFBWxwSW5CBANwbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpldmFsUHV0SW5CAAcJAJcKBQUDcG10BQRwbXRCCQBlAgUEcG10QQUDcG10BQNhSWQFBWxwSW5BCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAEYcmVwbGVuaXNoVHdvVG9rZW5zQnlUeXBlBghwb29sQWRkcgVwVHlwZQRwbXRBA2FJZARwbXRCA2JJZAQIcGF5bWVudHMJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2FJZAUEcG10QQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUDYklkBQRwbXRCBQNuaWwDCQAAAgUFcFR5cGUFB1NGX1BPT0wJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAhZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zCQDMCAIJAMwIAgIFZmFsc2UJAMwIAgIBMAUDbmlsBQNuaWwFCHBheW1lbnRzAwkAAAIFBXBUeXBlBQdXWF9QT09MCQD8BwQFCHBvb2xBZGRyAgNwdXQJAMwIAgDAhD0JAMwIAgcFA25pbAUIcGF5bWVudHMJAQ91bmtub3duUG9vbFR5cGUAARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQIcG9vbEFkZHIFcFR5cGUDcG10BXBtdElkBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUFcG10SWQFA3BtdAUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIVcmVwbGVuaXNoV2l0aE9uZVRva2VuCQDMCAIJAMwIAgIBMAkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMDCQAAAgUFcFR5cGUFB1dYX1BPT0wJAPwHBAUIcG9vbEFkZHICCXB1dE9uZVRrbgkAzAgCAAAJAMwIAgcFA25pbAUIcGF5bWVudHMJAQ91bmtub3duUG9vbFR5cGUAAQdzdGFrZUxQBARwb29sBXBUeXBlB3NoYXJlSWQGYW1vdW50BAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdzaGFyZUlkBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACD2xvY2tTaGFyZVRva2VucwkAzAgCBQRwb29sCQDMCAIAAAUDbmlsBQhwYXltZW50cwMJAAACBQVwVHlwZQUHV1hfUE9PTAkA/AcECQEQZ2V0V1hGYXJtaW5nQWRkcgEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wCBXN0YWtlBQNuaWwFCHBheW1lbnRzCQEPdW5rbm93blBvb2xUeXBlAAEJdW5zdGFrZUxQBARwb29sBXBUeXBlB3NoYXJlSWQGYW1vdW50BA0kdDAxMzQ4MTEzODMxAwkAAAIFBXBUeXBlBQdTRl9QT09MCQCVCgMJARBnZXRTRkZhcm1pbmdBZGRyAAITd2l0aGRyYXdTaGFyZVRva2VucwkAzAgCBQRwb29sCQDMCAIFBmFtb3VudAUDbmlsAwkAAAIFBXBUeXBlBQdXWF9QT09MCQCVCgMJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB3Vuc3Rha2UJAMwIAgUHc2hhcmVJZAkAzAgCBQZhbW91bnQFA25pbAkBD3Vua25vd25Qb29sVHlwZQAECGZhcm1BZGRyCAUNJHQwMTM0ODExMzgzMQJfMQQFZk5hbWUIBQ0kdDAxMzQ4MTEzODMxAl8yBAZwYXJhbXMIBQ0kdDAxMzQ4MTEzODMxAl8zBANpbnYJAPwHBAUIZmFybUFkZHIFBWZOYW1lBQZwYXJhbXMFA25pbAMJAAACBQNpbnYFA2ludgUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFjYWxjQW1vdW50VG9QYXlTRgcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQJZmVlU2NhbGU2AMCEPQQDZmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQhwb29sQWRkcgUKa1NGUG9vbEZlZQQMYW1udEdldE5vRmVlCQBuBAUQYW1vdW50VG9rZW5Ub0dldAUJZmVlU2NhbGU2CQBlAgUJZmVlU2NhbGU2BQNmZWUFB0NFSUxJTkcEDSR0MDE0MjUzMTQ1NTkDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAG4EBQxhbW50R2V0Tm9GZWUFBGJhbEIJAGUCBQRiYWxBBQxhbW50R2V0Tm9GZWUFB0NFSUxJTkcJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAbgQFDGFtbnRHZXROb0ZlZQUEYmFsQQkAZQIFBGJhbEIFDGFtbnRHZXROb0ZlZQUHQ0VJTElORwkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTQyNTMxNDU1OQJfMQQKYXNzZXRUb1BheQgFDSR0MDE0MjUzMTQ1NTkCXzIJAJQKAgUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkBEWNhbGNBbW91bnRUb1BheVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQFcHJGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEBHBGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQIZmVlU2NhbGUJALYCAQCAwtcvBA0kdDAxNDg5ODE1MjA2AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUQYW1vdW50VG9rZW5Ub0dldAUEYmFsQgkAZQIFBGJhbEEFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFEGFtb3VudFRva2VuVG9HZXQFBGJhbEEJAGUCBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQQQLYW1vdW50VG9QYXkIBQ0kdDAxNDg5ODE1MjA2Al8xBAphc3NldFRvUGF5CAUNJHQwMTQ4OTgxNTIwNgJfMgQSYW1vdW50VG9QYXlXaXRoRmVlCQCgAwEJAL0CBAkAtgIBBQthbW91bnRUb1BheQUIZmVlU2NhbGUJALgCAgUIZmVlU2NhbGUJALYCAQkAZAIFBXByRmVlBQRwRmVlBQdDRUlMSU5HCQCUCgIFCmFzc2V0VG9QYXkFEmFtb3VudFRvUGF5V2l0aEZlZQEQZXhjaGFuZ2VEaXJlY3RseQgFcFR5cGUEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQDCQAAAgUFcFR5cGUFB1NGX1BPT0wEDSR0MDE1NTUzMTU2NzUJARFjYWxjQW1vdW50VG9QYXlTRgcFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0BAphc3NldFRvUGF5CAUNJHQwMTU1NTMxNTY3NQJfMQQLYW1vdW50VG9QYXkIBQ0kdDAxNTU1MzE1Njc1Al8yCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBHBvb2wCDGNhbGxGdW5jdGlvbgkAzAgCAghleGNoYW5nZQkAzAgCCQDMCAIJAKQDAQUQYW1vdW50VG9rZW5Ub0dldAUDbmlsBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFCmFzc2V0VG9QYXkFC2Ftb3VudFRvUGF5BQNuaWwDCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDE1ODc1MTU5OTcJARFjYWxjQW1vdW50VG9QYXlXWAcFBHBvb2wFCGFzc2V0SWRBBQhhc3NldElkQgUEYmFsQQUEYmFsQgUQYW1vdW50VG9rZW5Ub0dldAUPYXNzZXRUb2tlblRvR2V0BAphc3NldFRvUGF5CAUNJHQwMTU4NzUxNTk5NwJfMQQLYW1vdW50VG9QYXkIBQ0kdDAxNTg3NTE1OTk3Al8yCQD8BwQFDnd4U3dhcENvbnRyYWN0AgRzd2FwCQDMCAIFEGFtb3VudFRva2VuVG9HZXQJAMwIAgUPYXNzZXRUb2tlblRvR2V0CQDMCAIJAKUIAQUEdGhpcwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQphc3NldFRvUGF5BQthbW91bnRUb1BheQUDbmlsCQEPdW5rbm93blBvb2xUeXBlAAEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECHBvb2xBZGRyBXBUeXBlB3NoYXJlSWQPdXNlckNhbldpdGhkcmF3BA0kdDAxNjI4NDE2NzIzAwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYKAAFACQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIQd2l0aGRyYXdSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFA2ludgUDaW52CQCUCgIIBQNpbnYCXzEIBQNpbnYCXzIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEA2ludgkAtQkCCgABQAkA/AcEBQhwb29sQWRkcgITZXZhbHVhdGVHZXRSRUFET05MWQkAzAgCBQdzaGFyZUlkCQDMCAIFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNpbnYFA2ludgkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaW52AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNpbnYAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQAEB2Ftb3VudEEIBQ0kdDAxNjI4NDE2NzIzAl8xBAdhbW91bnRCCAUNJHQwMTYyODQxNjcyMwJfMgkAlAoCBQdhbW91bnRBBQdhbW91bnRCAQtjbGFpbUZhcm1lZAIFcFR5cGUEcG9vbAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQJYmFsQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBBQZTV09QSUQDCQAAAgUJYmFsQmVmb3JlBQliYWxCZWZvcmUEA2ludgkA/AcECQEQZ2V0U0ZGYXJtaW5nQWRkcgACBWNsYWltCQDMCAIFBHBvb2wFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52BAhiYWxBZnRlcgkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQZTV09QSUQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB2NsYWltV1gJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQEPdW5rbm93blBvb2xUeXBlAAEPcmVwbGVuaXNoQnlUeXBlCgVwVHlwZQRwb29sB2ZlZVR5cGUEcG10QQNhSWQEcG10QgNiSWQEYmFsQQRiYWxCBExQSWQED2xwQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkA2QQBBQRMUElkAwkAAAIFD2xwQmFsYW5jZUJlZm9yZQUPbHBCYWxhbmNlQmVmb3JlBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQNJHQwMTc2ODgxODEwNAMDCQBmAgUEcG10QQAACQBmAgUEcG10QgAABwQNJHQwMTc3NTQxNzg3MAkBGGNhbGNSZXBsZW5pc2hCeVR3b1Rva2VucwgFBXBUeXBlBQhwb29sQWRkcgUEcG10QQUDYUlkBQRwbXRCBQNiSWQFBGJhbEEFBGJhbEIEBnBtdEluQQgFDSR0MDE3NzU0MTc4NzACXzEEBnBtdEluQggFDSR0MDE3NzU0MTc4NzACXzIEBmNoYW5nZQgFDSR0MDE3NzU0MTc4NzACXzMECGNoYW5nZUlkCAUNJHQwMTc3NTQxNzg3MAJfNAQDaW52CQEYcmVwbGVuaXNoVHdvVG9rZW5zQnlUeXBlBgUIcG9vbEFkZHIFBXBUeXBlBQZwbXRJbkEFA2FJZAUGcG10SW5CBQNiSWQDCQAAAgUDaW52BQNpbnYJAJQKAgUGY2hhbmdlBQhjaGFuZ2VJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAGYCBQRwbXRBAAAJAJQKAgUEcG10QQUDYUlkAwkAZgIFBHBtdEIAAAkAlAoCBQRwbXRCBQNiSWQJAAIBAhBwbXRzIG11c3QgYmUgPiAwBAZjaGFuZ2UIBQ0kdDAxNzY4ODE4MTA0Al8xBAhjaGFuZ2VJZAgFDSR0MDE3Njg4MTgxMDQCXzIEA2ludgMJAGYCBQZjaGFuZ2UAAAkBF3JlcGxlbmlzaE9uZVRva2VuQnlUeXBlBAUIcG9vbEFkZHIFBXBUeXBlBQZjaGFuZ2UFCGNoYW5nZUlkBQNuaWwDCQAAAgUDaW52BQNpbnYEDmxwQmFsYW5jZUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFBExQSWQEC3RvdGFsU3Rha2VkCQBlAgUObHBCYWxhbmNlQWZ0ZXIFD2xwQmFsYW5jZUJlZm9yZQQNYXhseUZlZUFtb3VudAkAawMFC3RvdGFsU3Rha2VkCQEKZ2V0QXhseUZlZQIFBHBvb2wFB2ZlZVR5cGUFCkZFRV9TQ0FMRTYEEXVzZXJTaGFyZUZvclN0YWtlCQBlAgULdG90YWxTdGFrZWQFDWF4bHlGZWVBbW91bnQDCQBnAgAABRF1c2VyU2hhcmVGb3JTdGFrZQkAAgECKGFtb3VudCBvZiBzdGFrZWQgc2hhcmV0b2tlbnMgbXVzdCBiZSA+IDAEBWludkxQCQEHc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQRMUElkBRF1c2VyU2hhcmVGb3JTdGFrZQMJAAACBQVpbnZMUAUFaW52TFAJAJQKAgURdXNlclNoYXJlRm9yU3Rha2UFDWF4bHlGZWVBbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEHJlcGxlbmlzaEVudHJpZXMIBHBvb2wEdXNlcgxzdGFrZWRBbW91bnQNYXhseUZlZUFtb3VudAZwb3NOdW0Hc2hhcmVJZAR0eXBlCHdpdGhMb2FuBAt0b3RhbEFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQPdG90YWxBbW91bnRMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEDSR0MDE4OTYyMTkyMDADBQh3aXRoTG9hbgkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQBkAgUPdG90YWxBbW91bnRMb2FuBQxzdGFrZWRBbW91bnQJAJQKAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRNrUG9vbEludGVyZXN0Tm9Mb2FuBQ90b3RhbEFtb3VudExvYW4ED2N1clBvb2xJbnRlcmVzdAgFDSR0MDE4OTYyMTkyMDACXzEEE3RvdGFsU3Rha2VkV2l0aExvYW4IBQ0kdDAxODk2MjE5MjAwAl8yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGQCBQt0b3RhbEFtb3VudAUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuBRN0b3RhbFN0YWtlZFdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FDWtVc2VyUG9zaXRpb24FDHN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAKQDAQUGcG9zTnVtBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QFD2N1clBvb2xJbnRlcmVzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBnBvc051bQURa1VzZXJQb3NpdGlvblBvb2wFBHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgUQa1VzZXJQb3NpdGlvbk51bQUGcG9zTnVtCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCG1vbmV5Qm94BQ1heGx5RmVlQW1vdW50CQDZBAEFB3NoYXJlSWQFA25pbAEOZXhjaGFuZ2VLZWVwZXIKB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CWFtb3VudHNJbglhZGRyZXNzZXMPYXNzZXRzVG9SZWNlaXZlC2VzdFJlY2VpdmVkEXNsaXBwYWdlVG9sZXJhbmNlC21pblJlY2VpdmVkB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCBHN3YXAJAMwIAgUJYW1vdW50c0luCQDMCAIFCWFkZHJlc3NlcwkAzAgCBQ9hc3NldHNUb1JlY2VpdmUJAMwIAgULZXN0UmVjZWl2ZWQJAMwIAgURc2xpcHBhZ2VUb2xlcmFuY2UJAMwIAgULbWluUmVjZWl2ZWQJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmV4Y2hhbmdlUHV6emxlBgd0b1Rva2VuCXBtdEFtb3VudAhwbXRBc3NldAlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCCnB1enpsZVN3YXAJAMwIAgUJcm91dGVzU3RyCQDMCAIFDG1pblRvUmVjZWl2ZQkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOZXhjaGFuZ2VTd29wRmkKB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CmV4Y2hhbmdlcnMOZXhjaGFuZ2Vyc1R5cGUFYXJnczEFYXJnczIRcm91dGluZ0Fzc2V0c0tleXMSbWluQW1vdW50VG9SZWNlaXZlB29wdGlvbnMEEnRva2VuQmFsYW5jZUJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgMJAAACBRJ0b2tlbkJhbGFuY2VCZWZvcmUFEnRva2VuQmFsYW5jZUJlZm9yZQQDaW52CQD8BwQFCmV4Q29udHJhY3QCCnN3b3BmaVN3YXAJAMwIAgUKZXhjaGFuZ2VycwkAzAgCBQ5leGNoYW5nZXJzVHlwZQkAzAgCBQVhcmdzMQkAzAgCBQVhcmdzMgkAzAgCBRFyb3V0aW5nQXNzZXRzS2V5cwkAzAgCBRJtaW5BbW91bnRUb1JlY2VpdmUJAMwIAgUHb3B0aW9ucwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQhwbXRBc3NldAUJcG10QW1vdW50BQNuaWwDCQAAAgUDaW52BQNpbnYJAGUCCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuBRJ0b2tlbkJhbGFuY2VCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCmNhcGl0YWxpemUEBHBvb2wFcFR5cGUHdG9rZW5JZAt0b2tlbkFtb3VudAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBA0kdDAyMTU1MTIxNjE3CQELZ2V0UG9vbERhdGECBQhwb29sQWRkcgUFcFR5cGUEA0FJZAgFDSR0MDIxNTUxMjE2MTcCXzEEA0JJZAgFDSR0MDIxNTUxMjE2MTcCXzIEBGJhbEEIBQ0kdDAyMTU1MTIxNjE3Al8zBARiYWxCCAUNJHQwMjE1NTEyMTYxNwJfNAQHc2hhcmVJZAgFDSR0MDIxNTUxMjE2MTcCXzUDAwkBAiE9AgUHdG9rZW5JZAUDQUlkCQECIT0CBQd0b2tlbklkBQNCSWQHCQACAQILV3JvbmcgYXNzZXQEDSR0MDIxNzAyMjE3ODIDCQAAAgUHdG9rZW5JZAUDQUlkCQCUCgIFC3Rva2VuQW1vdW50AAAJAJQKAgAABQt0b2tlbkFtb3VudAQEcG10QQgFDSR0MDIxNzAyMjE3ODICXzEEBHBtdEIIBQ0kdDAyMTcwMjIxNzgyAl8yBA0kdDAyMTc4NTIxODg5CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFBk5PX0ZFRQUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQEDHN0YWtlZEFtb3VudAgFDSR0MDIxNzg1MjE4ODkCXzEEAm5mCAUNJHQwMjE3ODUyMTg4OQJfMgQTY3VyUG9vbEludGVyZXN0TG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuAAAEFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4AAAQQdG90YWxTaGFyZUFtb3VudAkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuCQEZZ2V0UG9vbFRvdGFsU2hhcmVXaXRoTG9hbgEFBHBvb2wEC2xvYW5QZXJjZW50CQBrAwUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQZTQ0FMRTgFEHRvdGFsU2hhcmVBbW91bnQECnN0YWtlZExvYW4JAGsDBQxzdGFrZWRBbW91bnQFC2xvYW5QZXJjZW50BQZTQ0FMRTgEDHN0YWtlZE5vTG9hbgkAZQIFDHN0YWtlZEFtb3VudAUKc3Rha2VkTG9hbgQPbmV3SW50ZXJlc3RMb2FuAwkAZgIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAACQBkAgUTY3VyUG9vbEludGVyZXN0TG9hbgkAawMFCnN0YWtlZExvYW4FB1NDQUxFMTAFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABBFuZXdJbnRlcmVzdE5vTG9hbgMJAGYCCQBlAgUQdG90YWxTaGFyZUFtb3VudAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRVjdXJQb29sSW50ZXJlc3ROb0xvYW4JAGsDBQxzdGFrZWROb0xvYW4FB1NDQUxFMTAJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAQLYXhseUZlZUxvYW4JAGsDBQpzdGFrZWRMb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFDENBUF9GRUVfTE9BTgUKRkVFX1NDQUxFNgQNYXhseUZlZU5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgkBCmdldEF4bHlGZWUCBQRwb29sBQ9DQVBfRkVFX05PX0xPQU4FCkZFRV9TQ0FMRTYEB2F4bHlGZWUJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuAwkAAAIFB2F4bHlGZWUFB2F4bHlGZWUJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBRFrUG9vbEludGVyZXN0TG9hbgUPbmV3SW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FEW5ld0ludGVyZXN0Tm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCCQBkAgUQdG90YWxTaGFyZUFtb3VudAUMc3Rha2VkQW1vdW50BQdheGx5RmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkAZAIFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgUKc3Rha2VkTG9hbgULYXhseUZlZUxvYW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gJAGQCBQtheGx5RmVlTG9hbgUNYXhseUZlZU5vTG9hbgkA2QQBBQdzaGFyZUlkBQNuaWwJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEndpdGhkcmF3QW1vdW50Q2FsYwUEcG9vbA91c2VyQ2FuV2l0aGRyYXcEZGVidAtib3Jyb3dBc3NldAtzdG9wTG9zc0ZlZQQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMjM2NzkyMzc1NQkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAhhc3NldElkQQgFDSR0MDIzNjc5MjM3NTUCXzEECGFzc2V0SWRCCAUNJHQwMjM2NzkyMzc1NQJfMgQEYmFsQQgFDSR0MDIzNjc5MjM3NTUCXzMEBGJhbEIIBQ0kdDAyMzY3OTIzNzU1Al80BAdzaGFyZUlkCAUNJHQwMjM2NzkyMzc1NQJfNQQLY0JhbEFCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBAwkAAAIFC2NCYWxBQmVmb3JlBQtjQmFsQUJlZm9yZQQLY0JhbEJCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRCAwkAAAIFC2NCYWxCQmVmb3JlBQtjQmFsQkJlZm9yZQQDaW52AwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICDGNhbGxGdW5jdGlvbgkAzAgCAgh3aXRoZHJhdwkAzAgCCQDMCAIJAKQDAQUPdXNlckNhbldpdGhkcmF3BQNuaWwFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANpbnYJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAkAZAIFD3VzZXJDYW5XaXRoZHJhdwULc3RvcExvc3NGZWUDCQAAAgUDaW52BQNpbnYJAPwHBAUIcG9vbEFkZHICA2dldAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQdzaGFyZUlkBQ91c2VyQ2FuV2l0aGRyYXcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkBD3Vua25vd25Qb29sVHlwZQADCQAAAgUDaW52BQNpbnYECmNCYWxBQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBBApjQmFsQkFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgQNJHQwMjQ0NDgyNDUzNwkAlAoCCQBlAgUKY0JhbEFBZnRlcgULY0JhbEFCZWZvcmUJAGUCBQpjQmFsQkFmdGVyBQtjQmFsQkJlZm9yZQQNdG9rZW5zQW1vdW50QQgFDSR0MDI0NDQ4MjQ1MzcCXzEEDXRva2Vuc0Ftb3VudEIIBQ0kdDAyNDQ0ODI0NTM3Al8yBA0kdDAyNDU0MDI1Mzk0AwkAZgIFBGRlYnQAAAQNYW1vdW50VG9HZXRFeAMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRBCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QQcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRBAwMJAAACBQtib3Jyb3dBc3NldAUIYXNzZXRJZEIJAGYCBQRkZWJ0BQ10b2tlbnNBbW91bnRCBwkAZQIFBGRlYnQFDXRva2Vuc0Ftb3VudEIAAAQFZXhJbnYDCQBmAgUNYW1vdW50VG9HZXRFeAAACQEQZXhjaGFuZ2VEaXJlY3RseQgFBXBUeXBlBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIJAGUCBQRiYWxBBQ10b2tlbnNBbW91bnRBCQBlAgUEYmFsQgUNdG9rZW5zQW1vdW50QgUNYW1vdW50VG9HZXRFeAULYm9ycm93QXNzZXQFA25pbAMJAAACBQVleEludgUFZXhJbnYED2NCYWxBQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEEED2NCYWxCQWZ0ZXJSZXBheQkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRBCQCUCgIJAGUCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQUEZGVidAkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAJQKAgkAZQIFD2NCYWxBQWZ0ZXJSZXBheQULY0JhbEFCZWZvcmUJAGUCCQBlAgUPY0JhbEJBZnRlclJlcGF5BQtjQmFsQkJlZm9yZQUEZGVidAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQ10b2tlbnNBbW91bnRBBQ10b2tlbnNBbW91bnRCBAd0b1VzZXJBCAUNJHQwMjQ1NDAyNTM5NAJfMQQHdG9Vc2VyQggFDSR0MDI0NTQwMjUzOTQCXzIJAJkKBwUHdG9Vc2VyQQUIYXNzZXRJZEEFB3RvVXNlckIFCGFzc2V0SWRCBQpjQmFsQUFmdGVyBQpjQmFsQkFmdGVyBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBHVzZXIEcG9vbAVwb3NJZAhib3Jyb3dlZAQHcEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgIQVW5rbm93biBwb3NpdGlvbgQMdXNlckludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAQMcG9vbEludGVyZXN0AwUIYm9ycm93ZWQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgkAZAIFB3BBbW91bnQJAGsDBQdwQW1vdW50CQBlAgUMcG9vbEludGVyZXN0BQx1c2VySW50ZXJlc3QFB1NDQUxFMTABDndpdGhkcmF3VG9Vc2VyBAR1c2VyBHBvb2wFcG9zSWQIc3RvcExvc3MEB3BBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24CEFVua25vd24gcG9zaXRpb24EDGJvcnJvd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEWtVc2VyQm9ycm93QW1vdW50AAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wFBXBvc0lkCQBmAgUMYm9ycm93QW1vdW50AAAEDnBvb2xUb3RhbFNoYXJlCQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBAh1c2VyQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHVzZXIEC2JvcnJvd0Fzc2V0CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUSa1VzZXJCb3Jyb3dBc3NldElkAgAEDSR0MDI2NjE2MjY4NTADCQBmAgUMYm9ycm93QW1vdW50AAAJAJQKAgoAAUAJAPwHBAkBDmdldExlbmRTcnZBZGRyAAIMZ2V0QXNzZXREZWJ0CQDMCAIHCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAkAzAgCBQtib3Jyb3dBc3NldAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BQ1TVE9QTE9TU19MT0FOCQCUCgIAAAUUU1RPUExPU1NfRkVFX05PX0xPQU4EBGRlYnQIBQ0kdDAyNjYxNjI2ODUwAl8xBAdmZWVUeXBlCAUNJHQwMjY2MTYyNjg1MAJfMgQLc3RvcExvc3NGZWUDBQhzdG9wTG9zcwkAawMFD3VzZXJDYW5XaXRoZHJhdwkBCmdldEF4bHlGZWUCBQRwb29sBQdmZWVUeXBlBQpGRUVfU0NBTEU2AAAEDSR0MDI2OTY3MjcxNDcJARJ3aXRoZHJhd0Ftb3VudENhbGMFBQRwb29sCQBlAgUPdXNlckNhbldpdGhkcmF3BQtzdG9wTG9zc0ZlZQUEZGVidAULYm9ycm93QXNzZXQFC3N0b3BMb3NzRmVlAwkAAAIFDSR0MDI2OTY3MjcxNDcFDSR0MDI2OTY3MjcxNDcEB3NoYXJlSWQIBQ0kdDAyNjk2NzI3MTQ3Al83BApjQmFsQkFmdGVyCAUNJHQwMjY5NjcyNzE0NwJfNgQKY0JhbEFBZnRlcggFDSR0MDI2OTY3MjcxNDcCXzUECGFzc2V0SWRCCAUNJHQwMjY5NjcyNzE0NwJfNAQNdG9Vc2VyQW1vdW50QggFDSR0MDI2OTY3MjcxNDcCXzMECGFzc2V0SWRBCAUNJHQwMjY5NjcyNzE0NwJfMgQNdG9Vc2VyQW1vdW50QQgFDSR0MDI2OTY3MjcxNDcCXzEEC2Nsb3NlRGJ0SW52AwkAZgIFBGRlYnQAAAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAghyZXBheUZvcgkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwUFcG9zSWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQULYm9ycm93QXNzZXQFBGRlYnQFA25pbAAAAwkAAAIFC2Nsb3NlRGJ0SW52BQtjbG9zZURidEludgkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUNa1VzZXJQb3NpdGlvbgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFFWtVc2VyUG9zaXRpb25JbnRlcmVzdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQprUG9vbFRvdGFsCQBlAgkAZQIFDnBvb2xUb3RhbFNoYXJlBQ91c2VyQ2FuV2l0aGRyYXcFC3N0b3BMb3NzRmVlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUNdG9Vc2VyQW1vdW50QgkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFC3N0b3BMb3NzRmVlCQDZBAEFB3NoYXJlSWQFA25pbAkBDmdldEN1cnNFbnRyaWVzBAUIYXNzZXRJZEEFCGFzc2V0SWRCBQdzaGFyZUlkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDHBhcnNlUmVxdWVzdAEJcmVxdWVzdElkBAdyZXF1ZXN0CQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAkArAICAhNObyByZXF1ZXN0IHdpdGggaWQgBQlyZXF1ZXN0SWQCASwEBHVzZXIJAJEDAgUHcmVxdWVzdAAABARwb29sCQCRAwIFB3JlcXVlc3QAAQQEcG10QQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QAAgQDQUlkCQCRAwIFB3JlcXVlc3QAAwQEcG10QgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABAQDQklkCQCRAwIFB3JlcXVlc3QABQQEYmFsQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABgQEYmFsQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QABwQHc2hhcmVJZAkAkQMCBQdyZXF1ZXN0AAgEB2J3QXNzZXQJAJEDAgUHcmVxdWVzdAAJBAhid0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3JlcXVlc3QACgkAnQoLBQR1c2VyBQRwb29sBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAUHYndBc3NldAUIYndBbW91bnQBEGNhbGNCb3Jyb3dBbW91bnQGBHBtdEEEcG10QgNhSWQDYklkCGxldmVyYWdlCGJvcnJvd0lkBAdkUHJpY2VBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9wcmljZU9yYWNsZUFkZHIJAKwCAgUDYUlkBQ5rUHJpY2VJbk9yYWNsZQQHZFByaWNlQgkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFA2JJZAUOa1ByaWNlSW5PcmFjbGUEBmRlY1ByQQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04EBmRlY1ByQgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2JJZAAAAAAFBERPV04EDHBheWRJbkRvbGxhcgkAZAIJAGsDBQdkUHJpY2VBBQRwbXRBBQZkZWNQckEJAGsDBQdkUHJpY2VCBQRwbXRCBQZkZWNQckIEDSR0MDI4ODc2Mjg5NzMDCQAAAgUIYm9ycm93SWQFA2FJZAkAlAoCBQdkUHJpY2VBBQZkZWNQckEJAJQKAgUHZFByaWNlQgUGZGVjUHJCBAtib3Jyb3dQcmljZQgFDSR0MDI4ODc2Mjg5NzMCXzEEC2JvcnJvd0RlY1ByCAUNJHQwMjg4NzYyODk3MwJfMgkAawMJAGsDBQxwYXlkSW5Eb2xsYXIJAGUCBQhsZXZlcmFnZQBkAGQFC2JvcnJvd0RlY1ByBQtib3Jyb3dQcmljZQEScGFyc2VSZXBsZW5pc2hQbXRzAwRwbXRzA0FJZANCSWQDCQAAAgkAkAMBBQRwbXRzAAIDCQECIT0CCQEMYXNzZXRJZFRvU3RyAQgJAJEDAgUEcG10cwAAB2Fzc2V0SWQFA0FJZAkAAgECFVdyb25nIHBheW1lbnQgYXNzZXQgQQMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAEHYXNzZXRJZAUDQklkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBCCQCWCgQICQCRAwIFBHBtdHMAAAZhbW91bnQFA0FJZAgJAJEDAgUEcG10cwABBmFtb3VudAUDQklkAwkAAAIJAJADAQUEcG10cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCBQRwbXRzAAAHYXNzZXRJZAUDQUlkCQCWCgQICQCRAwIFBHBtdHMAAAZhbW91bnQFA0FJZAAABQNCSWQDCQAAAgkBDGFzc2V0SWRUb1N0cgEICQCRAwIFBHBtdHMAAAdhc3NldElkBQNCSWQJAJYKBAAABQNBSWQICQCRAwIFBHBtdHMAAAZhbW91bnQFA0JJZAkAAgECDVdyb25nIHBheW1lbnQJAAIBAhxPbmUgb3IgdHdvIHBheW1lbnRzIGV4cGVjdGVkAQ9jYWxjUHJpY2VJbXBhY3QEBGJhbEEEYmFsQgduZXdCYWxBB25ld0JhbEIEA3ByaQkAaAIJAGUCBQZTQ0FMRTgJAGsDCQBrAwUEYmFsQgUGU0NBTEU4BQRiYWxBBQZTQ0FMRTgJAGsDBQduZXdCYWxCBQZTQ0FMRTgFB25ld0JhbEEAZAMJAGYCAAAFA3ByaQkAaAIFA3ByaQD///////////8BBQNwcmkQAWkBGmdldFNoYXJlQXNzZXRQcmljZVJFQURPTkxZAQdzaGFyZUlkBAtzaGFyZVByaWNlcwkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkCQCUCgIFA25pbAULc2hhcmVQcmljZXMBaQEiZ2V0VXNlclBvc2l0aW9uU2hhcmVBbW91bnRSRUFET05MWQIEdXNlcgZwb3NOdW0EBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyUG9zaXRpb25Qb29sAhBVbmtub3duIHBvc2l0aW9uBAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQZwb3NOdW0JAGYCBQxib3Jyb3dBbW91bnQAAAkAlAoCBQNuaWwFD3VzZXJDYW5XaXRoZHJhdwFpASBnZXRVc2VyUG9zaXRpb25JbkRvbGxhcnNSRUFET05MWQMEdXNlcgVwb29scwZwb3NOdW0KAQd1c2VyUG9zAgFhBHBvb2wEDSR0MDMwNjcyMzA3MDYFAWEECHRvdGFsUG9zCAUNJHQwMzA2NzIzMDcwNgJfMQQHcG9zRGVidAgFDSR0MDMwNjcyMzA3MDYCXzIEBWluZGV4CAUNJHQwMzA2NzIzMDcwNgJfMwQFcFR5cGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFBWtQb29sBQRwb29sAhJQb29sIGlzIG5vdCBpbml0ZWQEDSR0MDMwNzk4MzA4ODgJAQtnZXRQb29sRGF0YQIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBQVwVHlwZQQDQUlkCAUNJHQwMzA3OTgzMDg4OAJfMQQDQklkCAUNJHQwMzA3OTgzMDg4OAJfMgQEYmFsQQgFDSR0MDMwNzk4MzA4ODgCXzMEBGJhbEIIBQ0kdDAzMDc5ODMwODg4Al80BAdzaGFyZUlkCAUNJHQwMzA3OTgzMDg4OAJfNQQMYm9ycm93QW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCRAwIFBnBvc051bQUFaW5kZXgFEWtVc2VyQm9ycm93QW1vdW50AAAED3VzZXJDYW5XaXRoZHJhdwkBGHVzZXJDYW5XaXRoZHJhd1NoYXJlQ2FsYwQFBHVzZXIFBHBvb2wJAJEDAgUGcG9zTnVtBQVpbmRleAkAZgIFDGJvcnJvd0Ftb3VudAAABAtzaGFyZVByaWNlcwkBDWdldFNoYXJlUHJpY2UBBQdzaGFyZUlkBApkZWNQclNoYXJlCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHc2hhcmVJZAAAAAAFBERPV04EBnNoYXJlRAkAawMFD3VzZXJDYW5XaXRoZHJhdwULc2hhcmVQcmljZXMFCmRlY1ByU2hhcmUDCQAAAgUMYm9ycm93QW1vdW50AAAJAJUKAwkAzQgCBQh0b3RhbFBvcwUGc2hhcmVECQDNCAIFB3Bvc0RlYnQAAAkAZAIFBWluZGV4AAEEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRJrVXNlckJvcnJvd0Fzc2V0SWQEBGRlYnQKAAFACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACDGdldEFzc2V0RGVidAkAzAgCBwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4CQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEEGJvcnJvd0Fzc2V0UHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQtib3Jyb3dBc3NldAUOa1ByaWNlSW5PcmFjbGUEDWRlY1ByQm9ycm93SWQJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQtib3Jyb3dBc3NldAAAAAAFBERPV04EBWRlYnRECQBrAwUEZGVidAUQYm9ycm93QXNzZXRQcmljZQUNZGVjUHJCb3Jyb3dJZAkAlQoDCQDNCAIFCHRvdGFsUG9zBQZzaGFyZUQJAM0IAgUHcG9zRGVidAUFZGVidEQJAGQCBQVpbmRleAABBA0kdDAzMTkwODMxOTYzCgACJGwFBXBvb2xzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlQoDBQNuaWwFA25pbAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1c2VyUG9zAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEA3BvcwgFDSR0MDMxOTA4MzE5NjMCXzEEBGRlYnQIBQ0kdDAzMTkwODMxOTYzAl8yCQCUCgIFA25pbAkAlAoCBQNwb3MFBGRlYnQBaQEJcmVwbGVuaXNoAwRwb29sCGxldmVyYWdlCGJvcnJvd0lkAwMJAGYCAGQFCGxldmVyYWdlBgkAZgIFCGxldmVyYWdlAKwCCQACAQIfTGV2ZXJhZ2UgY2FuJ3QgYmUgPDEwMCBhbmQgPjMwMAMDCQEBIQEJARFAZXh0ck5hdGl2ZSgxMDUxKQIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xDYW5Cb3Jyb3cJAGYCBQhsZXZlcmFnZQBkBwkAAgECHVlvdSBjYW4ndCBib3Jyb3cgaW4gdGhpcyBwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzI0MDMzMjQ5MwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzMjQwMzMyNDkzAl8xBANCSWQIBQ0kdDAzMjQwMzMyNDkzAl8yBARiYWxBCAUNJHQwMzI0MDMzMjQ5MwJfMwQEYmFsQggFDSR0MDMyNDAzMzI0OTMCXzQEB3NoYXJlSWQIBQ0kdDAzMjQwMzMyNDkzAl81BA0kdDAzMjQ5NjMyNTc3CQEScGFyc2VSZXBsZW5pc2hQbXRzAwgFAWkIcGF5bWVudHMFA0FJZAUDQklkBARwbXRBCAUNJHQwMzI0OTYzMjU3NwJfMQQJcG10QXNzZXRBCAUNJHQwMzI0OTYzMjU3NwJfMgQEcG10QggFDSR0MDMyNDk2MzI1NzcCXzMECXBtdEFzc2V0QggFDSR0MDMyNDk2MzI1NzcCXzQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAluZXdQb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBQR1c2VyAwkAZgIFCGxldmVyYWdlAGQEDGJvcnJvd0Ftb3VudAkBEGNhbGNCb3Jyb3dBbW91bnQGBQRwbXRBBQRwbXRCBQlwbXRBc3NldEEFCXBtdEFzc2V0QgUIbGV2ZXJhZ2UFCGJvcnJvd0lkBAdyZXF1ZXN0CQC5CQIJAMwIAgUEdXNlcgkAzAgCBQRwb29sCQDMCAIJAKQDAQUEcG10QQkAzAgCBQlwbXRBc3NldEEJAMwIAgkApAMBBQRwbXRCCQDMCAIFCXBtdEFzc2V0QgkAzAgCCQCkAwEFBGJhbEEJAMwIAgkApAMBBQRiYWxCCQDMCAIFB3NoYXJlSWQJAMwIAgUIYm9ycm93SWQJAMwIAgkApAMBBQxib3Jyb3dBbW91bnQFA25pbAIBLAQMbmV3UmVxdWVzdElkCgABQAkA/AcEBQR0aGlzAhBjcmVhdGVOZXdSZXF1ZXN0CQDMCAIFB3JlcXVlc3QFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQxuZXdSZXF1ZXN0SWQFDG5ld1JlcXVlc3RJZAQEYXJncwkAzAgCCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQluZXdQb3NOdW0JAMwIAgUHc2hhcmVJZAkAzAgCBQhib3Jyb3dJZAkAzAgCBQxib3Jyb3dBbW91bnQJAMwIAgkApQgBBQR0aGlzCQDMCAICEXJlcGxlbmlzaEZyb21MYW5kCQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52BAp1c2VyU3Rha2VkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQluZXdQb3NOdW0FDWtVc2VyUG9zaXRpb24EDSR0MDMzNTkwMzM2ODQJAQ9nZXRQb29sQmFsYW5jZXMECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFA0FJZAUDQklkAwkAAAIFDSR0MDMzNTkwMzM2ODQFDSR0MDMzNTkwMzM2ODQEB25ld0JhbEIIBQ0kdDAzMzU5MDMzNjg0Al8yBAduZXdCYWxBCAUNJHQwMzM1OTAzMzY4NAJfMQQIcHJJbXBhY3QJAQ9jYWxjUHJpY2VJbXBhY3QEBQRiYWxBBQRiYWxCBQduZXdCYWxBBQduZXdCYWxCBA0kdDAzMzc1NDMzODY5CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFCnVzZXJTdGFrZWQECHdBbW91bnRBCAUNJHQwMzM3NTQzMzg2OQJfMQQId0Ftb3VudEIIBQ0kdDAzMzc1NDMzODY5Al8yCQCUCgIFA25pbAkAzAgCBQhwckltcGFjdAkAzAgCBQh3QW1vdW50QQkAzAgCBQh3QW1vdW50QgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAzMzkyMjM0MDM0CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFC05PX0xPQU5fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDMzOTIyMzQwMzQCXzEEB2F4bHlGZWUIBQ0kdDAzMzkyMjM0MDM0Al8yBA0kdDAzNDA0MDM0MTM0CQEPZ2V0UG9vbEJhbGFuY2VzBAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQNBSWQFA0JJZAMJAAACBQ0kdDAzNDA0MDM0MTM0BQ0kdDAzNDA0MDM0MTM0BAduZXdCYWxCCAUNJHQwMzQwNDAzNDEzNAJfMgQHbmV3QmFsQQgFDSR0MDM0MDQwMzQxMzQCXzEECHBySW1wYWN0CQEPY2FsY1ByaWNlSW1wYWN0BAUEYmFsQQUEYmFsQgUHbmV3QmFsQQUHbmV3QmFsQgQNJHQwMzQyMDQzNDMxOQkBGmNhbGNXaXRoZHJhd0xQRnJvbVBvb2xWaXJ0BAkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBQdzaGFyZUlkBQp1c2VyU3Rha2VkBAh3QW1vdW50QQgFDSR0MDM0MjA0MzQzMTkCXzEECHdBbW91bnRCCAUNJHQwMzQyMDQzNDMxOQJfMgkAlAoCCQDOCAIJARByZXBsZW5pc2hFbnRyaWVzCAUEcG9vbAUEdXNlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUJbmV3UG9zTnVtBQdzaGFyZUlkBQVwVHlwZQcJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkCQDMCAIJAKQDAQUId0Ftb3VudEEJAMwIAgkApAMBBQh3QW1vdW50QgUDbmlsCQDMCAIFCHBySW1wYWN0CQDMCAIFCHdBbW91bnRBCQDMCAIFCHdBbW91bnRCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEId2l0aGRyYXcCBHBvb2wFcG9zSWQJAQ53aXRoZHJhd1RvVXNlcgQJAKUIAQgFAWkGY2FsbGVyBQRwb29sCQCkAwEFBXBvc0lkBwFpARRjcmVhdGVVcGRhdGVTdG9wTG9zcwQFcG9zSWQGcG9vbElkB2Fzc2V0SWQFcHJpY2UEEHRva2VuT3JhY2xlUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD3ByaWNlT3JhY2xlQWRkcgkArAICBQdhc3NldElkBQ5rUHJpY2VJbk9yYWNsZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBnBvb2xJZAIBXwkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQFDWtVc2VyUG9zaXRpb24JAAIBAhpUaGVyZSBhcmUgbm8gdXNlciBwb3NpdGlvbgMJAGcCAAAFBXByaWNlCQACAQIcUHJpY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gMAMJAGYCBQVwcmljZQUQdG9rZW5PcmFjbGVQcmljZQkAAgECK1ByaWNlIG11c3QgYmUgbGVzcyB0aGFuIGN1cnJlbnQgdG9rZW4gcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUFcHJpY2UFA25pbAFpAQ5kZWxldGVTdG9wTG9zcwMFcG9zSWQGcG9vbElkB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwkAAgECCE5vIGVudHJ5CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8JAKQDAQUFcG9zSWQCAV8FBnBvb2xJZAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwUDbmlsAWkBBGluaXQJDG1vbmV5Qm94QWRkcg1zZkZhcm1pbmdBZGRyCGxlbmRBZGRyD3ByaWNlT3JhY2xlQWRkchBrZWVwZXJFeENvbnRyYWN0Dnd4U3dhcENvbnRyYWN0C3N3b3BBc3NldElkCXd4QXNzZXRJZAthZG1pblB1YktleQMJAQlpc0RlZmluZWQBCQCiCAEFCWtNb25leUJveAkAAgECDkFscmVhZHkgaW5pdGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtNb25leUJveAUMbW9uZXlCb3hBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDmtTRkZhcm1pbmdBZGRyBQ1zZkZhcm1pbmdBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtMZW5kU2VydmljZQUIbGVuZEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUMa1ByaWNlT3JhY2xlBQ9wcmljZU9yYWNsZUFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa0V4Q29udHJhY3QFEGtlZXBlckV4Q29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa1d4U3dhcENvbnRyYWN0BQ53eFN3YXBDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBQdrU3dvcElkBQtzd29wQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBQVrV3hJZAUJd3hBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDGtBZG1pbkNhbGxQSwULYWRtaW5QdWJLZXkFA25pbAFpARBjcmVhdGVOZXdSZXF1ZXN0AQZwYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQMbmV3UmVxdWVzdElkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrUmVxdWVzdEl0ZXIAAAABCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFDG5ld1JlcXVlc3RJZAUKa1JlcXVlc3RJZAUGcGFyYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrUmVxdWVzdEl0ZXIFDG5ld1JlcXVlc3RJZAUDbmlsBQxuZXdSZXF1ZXN0SWQBaQERcmVwbGVuaXNoRnJvbUxhbmQBCXJlcXVlc3RJZAkBC3ZhbHVlT3JFbHNlAgkBCmlzTGFuZENhbGwBBQFpBA0kdDAzNjg0NTM2OTQ5CQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwMzY4NDUzNjk0OQJfMQQEcG9vbAgFDSR0MDM2ODQ1MzY5NDkCXzIEBHBtdEEIBQ0kdDAzNjg0NTM2OTQ5Al8zBANBSWQIBQ0kdDAzNjg0NTM2OTQ5Al80BARwbXRCCAUNJHQwMzY4NDUzNjk0OQJfNQQDQklkCAUNJHQwMzY4NDUzNjk0OQJfNgQEYmFsQQgFDSR0MDM2ODQ1MzY5NDkCXzcEBGJhbEIIBQ0kdDAzNjg0NTM2OTQ5Al84BAdzaGFyZUlkCAUNJHQwMzY4NDUzNjk0OQJfOQQHYndBc3NldAgFDSR0MDM2ODQ1MzY5NDkDXzEwBAhid0Ftb3VudAgFDSR0MDM2ODQ1MzY5NDkDXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDAzNzEzOTM3MjYzAwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdwbXRBbGxBCAUNJHQwMzcxMzkzNzI2MwJfMQQHcG10QWxsQggFDSR0MDM3MTM5MzcyNjMCXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAzNzM0NTM3NDYwCQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQdwbXRBbGxBBQNBSWQFB3BtdEFsbEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDM3MzQ1Mzc0NjACXzEEB2F4bHlGZWUIBQ0kdDAzNzM0NTM3NDYwAl8yBAZwb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBQR1c2VyBA1ib3Jyb3dFbnRyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BQhid0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEmtVc2VyQm9ycm93QXNzZXRJZAUHYndBc3NldAUDbmlsBAdlbnRyaWVzCQEQcmVwbGVuaXNoRW50cmllcwgFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFBnBvc051bQUHc2hhcmVJZAUFcFR5cGUGBA0kdDAzNzgyMDM3OTM1CQEaY2FsY1dpdGhkcmF3TFBGcm9tUG9vbFZpcnQECQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFCnVzZXJTdGFrZWQECHdBbW91bnRBCAUNJHQwMzc4MjAzNzkzNQJfMQQId0Ftb3VudEIIBQ0kdDAzNzgyMDM3OTM1Al8yCQCUCgIJAM0IAgkAzggCCQDOCAIFB2VudHJpZXMJAQ5nZXRDdXJzRW50cmllcwQFA0FJZAUDQklkBQdzaGFyZUlkCQDMCAIJAKQDAQUId0Ftb3VudEEJAMwIAgkApAMBBQh3QW1vdW50QgUDbmlsBQ1ib3Jyb3dFbnRyaWVzCQELRGVsZXRlRW50cnkBCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAUKdXNlclN0YWtlZAFpAQlsaXF1aWRhdGUDBHVzZXIFcG9zSWQPbGlxdWlkYXRlQW1vdW50CQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wCC25vIHBvc2l0aW9uBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzg0MzAzODUyMAkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzODQzMDM4NTIwAl8xBANCSWQIBQ0kdDAzODQzMDM4NTIwAl8yBARiYWxBCAUNJHQwMzg0MzAzODUyMAJfMwQEYmFsQggFDSR0MDM4NDMwMzg1MjACXzQEB3NoYXJlSWQIBQ0kdDAzODQzMDM4NTIwAl81BAZhbW91bnQJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUPbGlxdWlkYXRlQW1vdW50BAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUFcG9zSWQJAGYCBQxib3Jyb3dBbW91bnQAAAMJAGYCBQ9saXF1aWRhdGVBbW91bnQFD3VzZXJDYW5XaXRoZHJhdwkAAgECJ1lvdSBjYW4ndCBsaXF1aWRhdGUgbW9yZSB0aGFuIHVzZXIgaGF2ZQMJAAACBQxib3Jyb3dBbW91bnQAAAkAAgECK1lvdSBjYW4ndCBsaXF1aWRhdGUgcG9zaXRpb24gd2l0aG91dCBib3Jyb3cJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQBlAgUPdXNlckNhbldpdGhkcmF3BQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAWkBCHN0b3BMb3NzBAR1c2VyBXBvc0lkBHBvb2wHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQQdG9rZW5PcmFjbGVQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPcHJpY2VPcmFjbGVBZGRyCQCsAgIFB2Fzc2V0SWQFDmtQcmljZUluT3JhY2xlAwkAZgIFEHRva2VuT3JhY2xlUHJpY2UFEHRva2VuT3JhY2xlUHJpY2UJAAIBAiNUb2tlbiBwcmljZSBncmVhdGVyIHN0b3AgbG9zcyBwcmljZQMJAQEhAQkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfCQCkAwEFBXBvc0lkAgFfBQRwb29sAgFfBQdhc3NldElkBQ1rVXNlclN0b3BMb3NzCQACAQIITm8gZW50cnkJAM0IAgkBDndpdGhkcmF3VG9Vc2VyBAUEdXNlcgUEcG9vbAkApAMBBQVwb3NJZAYJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwFpARJjYXBpdGFsaXplRXhLZWVwZXILBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0JYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEDSR0MDQwNDkzNDA3ODQDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUFcFR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQVwVHlwZQUHU0ZfUE9PTAUGU1dPUElEAwkAAAIFBXBUeXBlBQdXWF9QT09MBQRXWElECQEPdW5rbm93blBvb2xUeXBlAAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDA0MDQ5MzQwNzg0Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0MDQ5MzQwNzg0Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZUtlZXBlcgoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlhbW91bnRzSW4FCWFkZHJlc3NlcwUPYXNzZXRzVG9SZWNlaXZlBQtlc3RSZWNlaXZlZAURc2xpcHBhZ2VUb2xlcmFuY2UFC21pblJlY2VpdmVkBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhQdXp6bGUHBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0Jcm91dGVzU3RyDG1pblRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpBAVwVHlwZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAQNJHQwNDE1MDE0MTc5MgMFBWNsYWltCQELY2xhaW1GYXJtZWQCBQVwVHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBXBUeXBlBQdTRl9QT09MBQZTV09QSUQDCQAAAgUFcFR5cGUFB1dYX1BPT0wFBFdYSUQJAQ91bmtub3duUG9vbFR5cGUACQCUCgIFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAQNY2xhaW1lZEFtb3VudAgFDSR0MDQxNTAxNDE3OTICXzEEDGNsYWltZWRBc3NldAgFDSR0MDQxNTAxNDE3OTICXzIED2V4Y2hhbmdlZEFtb3VudAkBDmV4Y2hhbmdlUHV6emxlBgUJdG9rZW5Ub0lkBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhTd29wRmkLBHBvb2wJdG9rZW5Ub0lkEGFtb3VudFRvRXhjaGFuZ2UFY2xhaW0KZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQFcFR5cGUJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wEDSR0MDQyNTc2NDI4NjcDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUFcFR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQVwVHlwZQUHU0ZfUE9PTAUGU1dPUElEAwkAAAIFBXBUeXBlBQdXWF9QT09MBQRXWElECQEPdW5rbm93blBvb2xUeXBlAAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDA0MjU3NjQyODY3Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0MjU3NjQyODY3Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVN3b3BGaQoFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQpleGNoYW5nZXJzBQ5leGNoYW5nZXJzVHlwZQUFYXJnczEFBWFyZ3MyBRFyb3V0aW5nQXNzZXRzS2V5cwUSbWluQW1vdW50VG9SZWNlaXZlBQdvcHRpb25zBAZjaGFuZ2UJAGUCBQ1jbGFpbWVkQW1vdW50BRBhbW91bnRUb0V4Y2hhbmdlBAtjaGFuZ2VFbnRyeQMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQkAZAIFBmNoYW5nZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHBvb2wFDmtQb29sQ2FwQ2hhbmdlAAAFA25pbAUDbmlsCQDOCAIJAQpjYXBpdGFsaXplBAUEcG9vbAUFcFR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpAQtpbml0TmV3UG9vbAkEdHlwZQhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4MY2FwRmVlTm9Mb2FuDmNhcEZlZVdpdGhMb2FuEXN0b3Bsb3NzRmVlTm9Mb2FuE3N0b3Bsb3NzRmVlV2l0aExvYW4JY2FuQm9ycm93CQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpAwMJAQIhPQIFBHR5cGUFB1NGX1BPT0wJAQIhPQIFBHR5cGUFB1dYX1BPT0wHCQACAQIKV3JvbmcgdHlwZQQNJHQwNDM2MDk0MzcwMwkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFCHBvb2xBZGRyBQR0eXBlBANhSWQIBQ0kdDA0MzYwOTQzNzAzAl8xBANiSWQIBQ0kdDA0MzYwOTQzNzAzAl8yBARhQmFsCAUNJHQwNDM2MDk0MzcwMwJfMwQEYkJhbAgFDSR0MDQzNjA5NDM3MDMCXzQEB3NoYXJlSWQIBQ0kdDA0MzYwOTQzNzAzAl81CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRVrQXhseUluRmVlV2l0aG91dExvYW4FC2luRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRJrQXhseUluRmVlV2l0aExvYW4FCWluRmVlTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa0F4bHlOb0xvYW5DYXBGZWUFDGNhcEZlZU5vTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa0F4bHlXaXRoTG9hbkNhcEZlZQUOY2FwRmVlV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFmtBeGx5U3RvcExvc3NOb0xvYW5GZWUFEXN0b3Bsb3NzRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRRrQXhseVN0b3BMb3NzTG9hbkZlZQUTc3RvcGxvc3NGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgURa1Bvb2xJbnRlcmVzdExvYW4AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUFa1Bvb2wFCHBvb2xBZGRyBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHc2hhcmVJZAUKa1NoYXJlUG9vbAUIcG9vbEFkZHIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgUIcG9vbEFkZHIFDmtQb29sQ2FuQm9ycm93BQljYW5Cb3Jyb3cFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmbOjvc", "height": 2671396, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4bMJ1pGGg6VNhmSb5F74VxHTeVTT8WcKGE7h5qPyovJP Next: GE8Q5syFYAaH7jxsXH1nNjEXFaFLCaZwEFRzJUEiB4U5 Diff:
OldNewDifferences
4141
4242 let t = "commission"
4343
44-let u = "_user_position"
44+let u = "_userPosition"
4545
46-let v = "_user_position_pool"
46+let v = "_userPositionPool"
4747
48-let w = "_user_position_borrow_amount"
48+let w = "_userPositionBorrowAmount"
4949
50-let x = "_user_position_borrow_asset_id"
50+let x = "_userPositionBorrowAssetId"
5151
52-let y = "_user_position_number"
52+let y = "_userPositionNumber"
5353
54-let z = "_user_position_interest"
54+let z = "_userPositionInterest"
5555
56-let A = "_pool_total"
56+let A = "_poolTotal"
5757
58-let B = "_pool_total_loan"
58+let B = "_poolTotalLoan"
5959
60-let C = "_pool_interest_loan"
60+let C = "_poolInterestLoan"
6161
62-let D = "_pool_interest_no_loan"
62+let D = "_poolInterestNoLoan"
6363
64-let E = "_pool_can_borrow"
64+let E = "_poolCanBorrow"
6565
66-let F = "_axly_fee_without_loan"
66+let F = "_axlyFeeNoLoan"
6767
68-let G = "_axly_fee_with_loan"
68+let G = "_axlyFeeWithLoan"
6969
70-let H = "_axly_fee_cap_with_loan"
70+let H = "_axlyFeeCapWithLoan"
7171
72-let I = "_axly_fee_cap_no_loan"
72+let I = "_axlyFeeCapNoLoan"
7373
74-let J = "_axly_fee_stoploss_with_loan"
74+let J = "_axlyFeeStoplossWithLoan"
7575
76-let K = "_axly_fee_stoploss_no_loan"
76+let K = "_axlyFeeStoplossNoLoan"
7777
7878 let L = "_request_id"
7979
8181
8282 let N = "pool_"
8383
84-let O = "_pool_share_id"
84+let O = "_poolShareId"
8585
86-let P = "_pool_cap_change"
86+let P = "_poolCapChange"
8787
8888 let Q = "last_price"
8989
9090 let R = "_twap5B"
9191
92-let S = "_stop_loss"
92+let S = "_stopLoss"
9393
9494 let T = "axly_money_box"
9595
121121
122122 let ah = fromBase58String(valueOrErrorMessage(getString(this, ab), "No wx id"))
123123
124-func ai () = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "Can't get lend service addr")))
124+func ai () = throw("Wrong pool type")
125125
126126
127-func aj () = addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, W), "Can't get admin addr")))
127+func aj () = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "Can't get lend service addr")))
128128
129129
130-func ak (al) = if ((al.caller == aj()))
130+func ak () = addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, W), "Can't get admin addr")))
131+
132+
133+func al (am) = if ((am.caller == ak()))
131134 then unit
132135 else throw("Only admin can call this function")
133136
134137
135-func am (al) = if ((al.caller == this))
138+func an (am) = if ((am.caller == this))
136139 then unit
137140 else throw("Only contract itself can call this function")
138141
139142
140-func an (al) = if ((al.caller == ai()))
143+func ao (am) = if ((am.caller == aj()))
141144 then unit
142145 else throw("Only land contract can call this function")
143146
144147
145-func ao (ap) = {
146- let aq = ap
147- if ($isInstanceOf(aq, "ByteVector"))
148+func ap (aq) = {
149+ let ar = aq
150+ if ($isInstanceOf(ar, "ByteVector"))
148151 then {
149- let ar = aq
150- assetBalance(this, ar)
152+ let as = ar
153+ assetBalance(this, as)
151154 }
152- else if ($isInstanceOf(aq, "Unit"))
155+ else if ($isInstanceOf(ar, "Unit"))
153156 then {
154- let as = aq
157+ let at = ar
155158 wavesBalance(this).available
156159 }
157160 else throw("Match error")
158161 }
159162
160163
161-func at (au) = $Tuple2(valueOrErrorMessage(getInteger(au, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(au, o), "Can't get pool B asset balance"))
164+func au (av) = $Tuple2(valueOrErrorMessage(getInteger(av, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(av, o), "Can't get pool B asset balance"))
162165
163166
164-func av (au,aw,ax) = $Tuple2({
165- let ay = invoke(au, "getAccBalanceWrapperREADONLY", [aw], nil)
166- if ($isInstanceOf(ay, "Int"))
167- then ay
168- else throw(($getType(ay) + " couldn't be cast to Int"))
167+func aw (av,ax,ay) = $Tuple2({
168+ let az = invoke(av, "getAccBalanceWrapperREADONLY", [ax], nil)
169+ if ($isInstanceOf(az, "Int"))
170+ then az
171+ else throw(($getType(az) + " couldn't be cast to Int"))
169172 }, {
170- let ay = invoke(au, "getAccBalanceWrapperREADONLY", [ax], nil)
171- if ($isInstanceOf(ay, "Int"))
172- then ay
173- else throw(($getType(ay) + " couldn't be cast to Int"))
173+ let az = invoke(av, "getAccBalanceWrapperREADONLY", [ay], nil)
174+ if ($isInstanceOf(az, "Int"))
175+ then az
176+ else throw(($getType(az) + " couldn't be cast to Int"))
174177 })
175178
176179
177-func az (au,aA,aw,ax) = if ((aA == a))
178- then at(au)
179- else if ((aA == b))
180- then av(au, aw, ax)
181- else throw("Wrong pool type")
180+func aA (av,aB,ax,ay) = if ((aB == a))
181+ then au(av)
182+ else if ((aB == b))
183+ then aw(av, ax, ay)
184+ else ai()
182185
183186
184-func aB (au) = {
185- let aC = at(au)
186- if ((aC == aC))
187+func aC (av) = {
188+ let aD = au(av)
189+ if ((aD == aD))
187190 then {
188- let aD = aC._2
189- let aE = aC._1
190- $Tuple5(valueOrErrorMessage(getString(au, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(au, q), "Can't get pool B asset id"), aE, aD, valueOrErrorMessage(getString(au, r), "Can't get share asset id"))
191+ let aE = aD._2
192+ let aF = aD._1
193+ $Tuple5(valueOrErrorMessage(getString(av, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(av, q), "Can't get pool B asset id"), aF, aE, valueOrErrorMessage(getString(av, r), "Can't get share asset id"))
191194 }
192195 else throw("Strict value is not equal to itself.")
193196 }
194197
195198
196-func aF (au) = {
197- let aG = {
198- let ay = invoke(au, "getPoolConfigWrapperREADONLY", nil, nil)
199- if ($isInstanceOf(ay, "List[Any]"))
200- then ay
201- else throw(($getType(ay) + " couldn't be cast to List[Any]"))
199+func aG (av) = {
200+ let aH = {
201+ let az = invoke(av, "getPoolConfigWrapperREADONLY", nil, nil)
202+ if ($isInstanceOf(az, "List[Any]"))
203+ then az
204+ else throw(($getType(az) + " couldn't be cast to List[Any]"))
202205 }
203- if ((aG == aG))
206+ if ((aH == aH))
204207 then {
205- let aw = valueOrErrorMessage({
206- let ay = aG[4]
207- if ($isInstanceOf(ay, "String"))
208- then ay
208+ let ax = valueOrErrorMessage({
209+ let az = aH[4]
210+ if ($isInstanceOf(az, "String"))
211+ then az
209212 else unit
210213 }, "Can't get pool A asset id")
211- let ax = valueOrErrorMessage({
212- let ay = aG[5]
213- if ($isInstanceOf(ay, "String"))
214- then ay
214+ let ay = valueOrErrorMessage({
215+ let az = aH[5]
216+ if ($isInstanceOf(az, "String"))
217+ then az
215218 else unit
216219 }, "Can't get pool B asset id")
217- let aH = valueOrErrorMessage({
218- let ay = aG[3]
219- if ($isInstanceOf(ay, "String"))
220- then ay
220+ let aI = valueOrErrorMessage({
221+ let az = aH[3]
222+ if ($isInstanceOf(az, "String"))
223+ then az
221224 else unit
222225 }, "Can't get pool LP asset id")
223- let aI = av(au, aw, ax)
224- if ((aI == aI))
226+ let aJ = aw(av, ax, ay)
227+ if ((aJ == aJ))
225228 then {
226- let aD = aI._2
227- let aE = aI._1
228- $Tuple5(aw, ax, aE, aD, aH)
229+ let aE = aJ._2
230+ let aF = aJ._1
231+ $Tuple5(ax, ay, aF, aE, aI)
229232 }
230233 else throw("Strict value is not equal to itself.")
231234 }
233236 }
234237
235238
236-func aJ (au,aA) = if ((aA == a))
237- then aB(au)
238- else if ((aA == b))
239- then aF(au)
240- else throw("Wrong pool type")
239+func aK (av,aB) = if ((aB == a))
240+ then aC(av)
241+ else if ((aB == b))
242+ then aG(av)
243+ else ai()
241244
242245
243-func aK (au,aA,aH) = if ((aA == a))
244- then valueOrErrorMessage(getInteger(au, s), "Can't get share asset supply")
245- else if ((aA == b))
246- then valueOrErrorMessage(assetInfo(fromBase58String(aH)), "Wrong ShareId").quantity
247- else throw("Wrong pool type")
246+func aL (av,aB,aI) = if ((aB == a))
247+ then valueOrErrorMessage(getInteger(av, s), "Can't get share asset supply")
248+ else if ((aB == b))
249+ then valueOrErrorMessage(assetInfo(fromBase58String(aI)), "Wrong ShareId").quantity
250+ else ai()
248251
249252
250-func aL (aM) = valueOrElse(getInteger(this, (aM + A)), 0)
253+func aM (aN) = valueOrElse(getInteger(this, (aN + A)), 0)
251254
252255
253-func aN (aM) = valueOrElse(getInteger(this, (aM + B)), 0)
256+func aO (aN) = valueOrElse(getInteger(this, (aN + B)), 0)
254257
255258
256-func aO (aP) = (valueOrElse(getInteger(this, (aP + y)), 0) + 1)
259+func aP (aQ) = (valueOrElse(getInteger(this, (aQ + y)), 0) + 1)
257260
258261
259-func aQ (aM,aR) = if ((aR == d))
260- then getIntegerValue(this, (aM + I))
261- else if ((aR == c))
262- then getIntegerValue(this, (aM + H))
263- else if ((aR == g))
264- then getIntegerValue(this, (aM + G))
265- else if ((aR == h))
266- then getIntegerValue(this, (aM + F))
267- else if ((aR == i))
262+func aR (aN,aS) = if ((aS == d))
263+ then getIntegerValue(this, (aN + I))
264+ else if ((aS == c))
265+ then getIntegerValue(this, (aN + H))
266+ else if ((aS == g))
267+ then getIntegerValue(this, (aN + G))
268+ else if ((aS == h))
269+ then getIntegerValue(this, (aN + F))
270+ else if ((aS == i))
268271 then 0
269272 else throw("Wrong fee type")
270273
271274
272-func aS () = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "Can't get swopfi farming addr")))
275+func aT () = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "Can't get swopfi farming addr")))
273276
274277
275-func aT (au) = {
276- let aU = Address(fromBase58String(valueOrErrorMessage(getString(au, "%s__factoryContract"), "Can't get WX factory contract addr")))
277- let aV = split(valueOrErrorMessage(getString(aU, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
278- Address(fromBase58String(aV[1]))
278+func aU (av) = {
279+ let aV = Address(fromBase58String(valueOrErrorMessage(getString(av, "%s__factoryContract"), "Can't get WX factory contract addr")))
280+ let aW = split(valueOrErrorMessage(getString(aV, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
281+ Address(fromBase58String(aW[1]))
279282 }
280283
281284
282-func aW (ap) = {
283- let aq = ap
284- if ($isInstanceOf(aq, "ByteVector"))
285+func aX (aq) = {
286+ let ar = aq
287+ if ($isInstanceOf(ar, "ByteVector"))
285288 then {
286- let ar = aq
287- toBase58String(ar)
289+ let as = ar
290+ toBase58String(as)
288291 }
289- else if ($isInstanceOf(aq, "Unit"))
292+ else if ($isInstanceOf(ar, "Unit"))
290293 then {
291- let as = aq
294+ let at = ar
292295 "WAVES"
293296 }
294297 else throw("Not Asset id")
295298 }
296299
297300
298-func aX (ap) = if ((ap == "WAVES"))
301+func aY (aq) = if ((aq == "WAVES"))
299302 then unit
300- else fromBase58String(ap)
303+ else fromBase58String(aq)
301304
302305
303-func aY (ap) = if ((ap == "WAVES"))
306+func aZ (aq) = if ((aq == "WAVES"))
304307 then 8
305308 else {
306- let aq = assetInfo(fromBase58String(ap))
307- if ($isInstanceOf(aq, "Asset"))
309+ let ar = assetInfo(fromBase58String(aq))
310+ if ($isInstanceOf(ar, "Asset"))
308311 then {
309- let aZ = aq
310- aZ.decimals
312+ let ba = ar
313+ ba.decimals
311314 }
312315 else throw("Can't find asset")
313316 }
314317
315318
316-func ba (ap) = pow(10, 0, aY(ap), 0, 0, DOWN)
319+func bb (aq) = pow(10, 0, aZ(aq), 0, 0, DOWN)
317320
318321
319-func bb (bc) = {
320- func bd (be,ap) = {
321- let bf = getIntegerValue(ae, (ap + R))
322- (be :+ bf)
322+func bc (bd) = {
323+ func be (bf,aq) = {
324+ let bg = getIntegerValue(ae, (aq + R))
325+ (bf :+ bg)
323326 }
324327
325- let bg = bc
326- let bh = size(bg)
327- let bi = nil
328- func bj (bk,bl) = if ((bl >= bh))
329- then bk
330- else bd(bk, bg[bl])
328+ let bh = bd
329+ let bi = size(bh)
330+ let bj = nil
331+ func bk (bl,bm) = if ((bm >= bi))
332+ then bl
333+ else be(bl, bh[bm])
331334
332- func bm (bk,bl) = if ((bl >= bh))
333- then bk
335+ func bn (bl,bm) = if ((bm >= bi))
336+ then bl
334337 else throw("List size exceeds 50")
335338
336- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
339+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
337340 }
338341
339342
340-func bn (aH) = {
341- let aM = valueOrErrorMessage(getString(this, (aH + O)), "Can't find pool addr by share id")
342- let au = Address(fromBase58String(aM))
343- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
344- let bp = aJ(au, bo)
345- let aw = bp._1
346- let ax = bp._2
347- let bq = bp._3
348- let br = bp._4
349- let bs = getIntegerValue(ae, (aw + R))
343+func bo (aI) = {
344+ let aN = valueOrErrorMessage(getString(this, (aI + O)), "Can't find pool addr by share id")
345+ let av = Address(fromBase58String(aN))
346+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
347+ let bq = aK(av, bp)
348+ let ax = bq._1
349+ let ay = bq._2
350+ let br = bq._3
351+ let bs = bq._4
350352 let bt = getIntegerValue(ae, (ax + R))
351- let bu = aK(au, bo, aH)
352- let bv = pow(10, 0, aY(aw), 0, 0, DOWN)
353- let bw = pow(10, 0, aY(ax), 0, 0, DOWN)
354- let bx = pow(10, 0, aY(aH), 0, 0, DOWN)
355- let by = (fraction(bq, bs, bv) + fraction(br, bt, bw))
356- fraction(by, bx, bu)
353+ let bu = getIntegerValue(ae, (ay + R))
354+ let bv = aL(av, bp, aI)
355+ let bw = pow(10, 0, aZ(ax), 0, 0, DOWN)
356+ let bx = pow(10, 0, aZ(ay), 0, 0, DOWN)
357+ let by = pow(10, 0, aZ(aI), 0, 0, DOWN)
358+ let bz = (fraction(br, bt, bw) + fraction(bs, bu, bx))
359+ fraction(bz, by, bv)
357360 }
358361
359362
360-func bz (bA) = {
361- func bd (be,aH) = (be :+ bn(aH))
363+func bA (bB) = {
364+ func be (bf,aI) = (bf :+ bo(aI))
362365
363- let bg = bA
364- let bh = size(bg)
365- let bi = nil
366- func bj (bk,bl) = if ((bl >= bh))
367- then bk
368- else bd(bk, bg[bl])
366+ let bh = bB
367+ let bi = size(bh)
368+ let bj = nil
369+ func bk (bl,bm) = if ((bm >= bi))
370+ then bl
371+ else be(bl, bh[bm])
369372
370- func bm (bk,bl) = if ((bl >= bh))
371- then bk
373+ func bn (bl,bm) = if ((bm >= bi))
374+ then bl
372375 else throw("List size exceeds 20")
373376
374- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
377+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
375378 }
376379
377380
378-func bB (aw,ax,aH,bC) = {
379- let bD = bb([aw, ax])
380- let bE = bn(aH)
381- let bF = ([toString(bD[0]), toString(bD[1]), toString(bE)] ++ bC)
382-[StringEntry(Q, makeString(bF, ","))]
381+func bC (ax,ay,aI,bD) = {
382+ let bE = bc([ax, ay])
383+ let bF = bo(aI)
384+ let bG = ([toString(bE[0]), toString(bE[1]), toString(bF)] ++ bD)
385+[StringEntry(Q, makeString(bG, ","))]
383386 }
384387
385388
386-func bG (bo,au,bH,aw,bI,ax,aE,aD) = if ((bo == a))
389+func bH (bp,av,bI,ax,bJ,ay,aF,aE) = if ((bp == a))
387390 then {
388- let bJ = {
389- let ay = invoke(au, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(bH), toString(bI)]], nil)
390- if ($isInstanceOf(ay, "List[Any]"))
391- then ay
392- else throw(($getType(ay) + " couldn't be cast to List[Any]"))
391+ let bK = {
392+ let az = invoke(av, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(bI), toString(bJ)]], nil)
393+ if ($isInstanceOf(az, "List[Any]"))
394+ then az
395+ else throw(($getType(az) + " couldn't be cast to List[Any]"))
393396 }
394- if ((bJ == bJ))
397+ if ((bK == bK))
395398 then $Tuple5({
396- let ay = bJ[3]
397- if ($isInstanceOf(ay, "Int"))
398- then ay
399- else throw(($getType(ay) + " couldn't be cast to Int"))
399+ let az = bK[3]
400+ if ($isInstanceOf(az, "Int"))
401+ then az
402+ else throw(($getType(az) + " couldn't be cast to Int"))
400403 }, {
401- let ay = bJ[4]
402- if ($isInstanceOf(ay, "Int"))
403- then ay
404- else throw(($getType(ay) + " couldn't be cast to Int"))
404+ let az = bK[4]
405+ if ($isInstanceOf(az, "Int"))
406+ then az
407+ else throw(($getType(az) + " couldn't be cast to Int"))
405408 }, {
406- let ay = bJ[1]
407- if ($isInstanceOf(ay, "Int"))
408- then ay
409- else throw(($getType(ay) + " couldn't be cast to Int"))
410- }, aW(bJ[2]), {
411- let ay = bJ[0]
412- if ($isInstanceOf(ay, "Int"))
413- then ay
414- else throw(($getType(ay) + " couldn't be cast to Int"))
409+ let az = bK[1]
410+ if ($isInstanceOf(az, "Int"))
411+ then az
412+ else throw(($getType(az) + " couldn't be cast to Int"))
413+ }, aX(bK[2]), {
414+ let az = bK[0]
415+ if ($isInstanceOf(az, "Int"))
416+ then az
417+ else throw(($getType(az) + " couldn't be cast to Int"))
415418 })
416419 else throw("Strict value is not equal to itself.")
417420 }
418- else {
419- let bK = $Tuple2(split({
420- let ay = invoke(au, "evaluatePutByAmountAssetREADONLY", [bH], nil)
421- if ($isInstanceOf(ay, "String"))
422- then ay
423- else throw(($getType(ay) + " couldn't be cast to String"))
424- }, "__"), split({
425- let ay = invoke(au, "evaluatePutByPriceAssetREADONLY", [bI], nil)
426- if ($isInstanceOf(ay, "String"))
427- then ay
428- else throw(($getType(ay) + " couldn't be cast to String"))
429- }, "__"))
430- if ((bK == bK))
431- then {
432- let bL = bK._2
433- let bM = bK._1
434- let bN = parseIntValue(bM[1])
435- let bO = parseIntValue(bL[1])
436- if ((bO > bN))
437- then {
438- let bP = parseIntValue(bM[8])
439- $Tuple5(bH, bP, (bI - bP), ax, bO)
440- }
441- else {
442- let bP = parseIntValue(bL[7])
443- $Tuple5(bP, bI, (bH - bP), aw, bN)
444- }
445- }
446- else throw("Strict value is not equal to itself.")
447- }
421+ else if ((bp == b))
422+ then {
423+ let bL = $Tuple2(split({
424+ let az = invoke(av, "evaluatePutByAmountAssetREADONLY", [bI], nil)
425+ if ($isInstanceOf(az, "String"))
426+ then az
427+ else throw(($getType(az) + " couldn't be cast to String"))
428+ }, "__"), split({
429+ let az = invoke(av, "evaluatePutByPriceAssetREADONLY", [bJ], nil)
430+ if ($isInstanceOf(az, "String"))
431+ then az
432+ else throw(($getType(az) + " couldn't be cast to String"))
433+ }, "__"))
434+ if ((bL == bL))
435+ then {
436+ let bM = bL._2
437+ let bN = bL._1
438+ let bO = parseIntValue(bN[1])
439+ let bP = parseIntValue(bM[1])
440+ if ((bP > bO))
441+ then {
442+ let bQ = parseIntValue(bN[8])
443+ $Tuple5(bI, bQ, (bJ - bQ), ay, bP)
444+ }
445+ else {
446+ let bQ = parseIntValue(bM[7])
447+ $Tuple5(bQ, bJ, (bI - bQ), ax, bO)
448+ }
449+ }
450+ else throw("Strict value is not equal to itself.")
451+ }
452+ else ai()
448453
449454
450-func bQ (au,bo,bH,aw,bI,ax) = {
451- let bR = [AttachedPayment(aX(aw), bH), AttachedPayment(aX(ax), bI)]
452- if ((bo == a))
453- then invoke(au, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bR)
454- else invoke(au, "put", [1000000, false], bR)
455+func bR (av,bp,bI,ax,bJ,ay) = {
456+ let bS = [AttachedPayment(aY(ax), bI), AttachedPayment(aY(ay), bJ)]
457+ if ((bp == a))
458+ then invoke(av, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bS)
459+ else if ((bp == b))
460+ then invoke(av, "put", [1000000, false], bS)
461+ else ai()
455462 }
456463
457464
458-func bS (au,bo,bP,bT) = {
459- let bR = [AttachedPayment(aX(bT), bP)]
460- if ((bo == a))
461- then invoke(au, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bR)
462- else invoke(au, "putOneTkn", [0, false], bR)
465+func bT (av,bp,bQ,bU) = {
466+ let bS = [AttachedPayment(aY(bU), bQ)]
467+ if ((bp == a))
468+ then invoke(av, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bS)
469+ else if ((bp == b))
470+ then invoke(av, "putOneTkn", [0, false], bS)
471+ else ai()
463472 }
464473
465474
466-func bU (aM,bo,aH,bV) = {
467- let bR = [AttachedPayment(fromBase58String(aH), bV)]
468- if ((bo == a))
469- then invoke(aS(), "lockShareTokens", [aM, 0], bR)
470- else invoke(aT(addressFromStringValue(aM)), "stake", nil, bR)
475+func bV (aN,bp,aI,bW) = {
476+ let bS = [AttachedPayment(fromBase58String(aI), bW)]
477+ if ((bp == a))
478+ then invoke(aT(), "lockShareTokens", [aN, 0], bS)
479+ else if ((bp == b))
480+ then invoke(aU(addressFromStringValue(aN)), "stake", nil, bS)
481+ else ai()
471482 }
472483
473484
474-func bW (aM,bo,aH,bV) = {
475- let bX = if ((bo == a))
476- then $Tuple3(aS(), "withdrawShareTokens", [aM, bV])
477- else if ((bo == b))
478- then $Tuple3(aT(Address(fromBase58String(aM))), "unstake", [aH, bV])
479- else throw("Wrong pool type")
480- let bY = bX._1
481- let bZ = bX._2
482- let ca = bX._3
483- let cb = invoke(bY, bZ, ca, nil)
484- if ((cb == cb))
485- then bV
485+func bX (aN,bp,aI,bW) = {
486+ let bY = if ((bp == a))
487+ then $Tuple3(aT(), "withdrawShareTokens", [aN, bW])
488+ else if ((bp == b))
489+ then $Tuple3(aU(Address(fromBase58String(aN))), "unstake", [aI, bW])
490+ else ai()
491+ let bZ = bY._1
492+ let ca = bY._2
493+ let cb = bY._3
494+ let cc = invoke(bZ, ca, cb, nil)
495+ if ((cc == cc))
496+ then bW
486497 else throw("Strict value is not equal to itself.")
487498 }
488499
489500
490-func cc (aM,cd,ce,aE,aD,cf,cg) = {
491- let au = Address(fromBase58String(aM))
492- let ch = 1000000
493- let ci = getIntegerValue(au, t)
494- let cj = fraction(cf, ch, (ch - ci), CEILING)
495- let ck = if ((cg == cd))
501+func cd (aN,ce,cf,aF,aE,cg,ch) = {
502+ let av = Address(fromBase58String(aN))
503+ let ci = 1000000
504+ let cj = getIntegerValue(av, t)
505+ let ck = fraction(cg, ci, (ci - cj), CEILING)
506+ let cl = if ((ch == ce))
496507 then {
497- let cl = fraction(cj, aD, (aE - cj), CEILING)
498- $Tuple2(cl, ce)
508+ let cm = fraction(ck, aE, (aF - ck), CEILING)
509+ $Tuple2(cm, cf)
499510 }
500511 else {
501- let cl = fraction(cj, aE, (aD - cj), CEILING)
502- $Tuple2(cl, cd)
512+ let cm = fraction(ck, aF, (aE - ck), CEILING)
513+ $Tuple2(cm, ce)
503514 }
504- let cl = ck._1
505- let cm = ck._2
506- $Tuple2(cm, cl)
515+ let cm = cl._1
516+ let cn = cl._2
517+ $Tuple2(cn, cm)
507518 }
508519
509520
510-func cn (aM,cd,ce,aE,aD,cf,cg) = {
511- let co = getIntegerValue(af, "%s__protocolFee")
512- let cp = getIntegerValue(af, "%s__poolFee")
513- let cq = toBigInt(100000000)
514- let cr = if ((cg == cd))
521+func co (aN,ce,cf,aF,aE,cg,ch) = {
522+ let cp = getIntegerValue(af, "%s__protocolFee")
523+ let cq = getIntegerValue(af, "%s__poolFee")
524+ let cr = toBigInt(100000000)
525+ let cs = if ((ch == ce))
515526 then {
516- let cl = fraction(cf, aD, (aE - cf))
517- $Tuple2(cl, ce)
527+ let cm = fraction(cg, aE, (aF - cg))
528+ $Tuple2(cm, cf)
518529 }
519530 else {
520- let cl = fraction(cf, aE, (aD - cf))
521- $Tuple2(cl, cd)
531+ let cm = fraction(cg, aF, (aE - cg))
532+ $Tuple2(cm, ce)
522533 }
523- let cl = cr._1
524- let cm = cr._2
525- let cs = toInt(fraction(toBigInt(cl), cq, (cq - toBigInt((co + cp))), CEILING))
526- $Tuple2(cm, cs)
534+ let cm = cs._1
535+ let cn = cs._2
536+ let ct = toInt(fraction(toBigInt(cm), cr, (cr - toBigInt((cp + cq))), CEILING))
537+ $Tuple2(cn, ct)
527538 }
528539
529540
530-func ct (aA,aM,cd,ce,aE,aD,cf,cg) = if ((aA == a))
541+func cu (bp,aN,ce,cf,aF,aE,cg,ch) = if ((bp == a))
531542 then {
532- let cu = cc(aM, cd, ce, aE, aD, cf, cg)
533- let cm = cu._1
534- let cl = cu._2
535- invoke(addressFromStringValue(aM), "callFunction", ["exchange", [toString(cf)]], [AttachedPayment(aX(cm), cl)])
543+ let cv = cd(aN, ce, cf, aF, aE, cg, ch)
544+ let cn = cv._1
545+ let cm = cv._2
546+ invoke(addressFromStringValue(aN), "callFunction", ["exchange", [toString(cg)]], [AttachedPayment(aY(cn), cm)])
536547 }
537- else {
538- let cv = cn(aM, cd, ce, aE, aD, cf, cg)
539- let cm = cv._1
540- let cl = cv._2
541- invoke(af, "swap", [cf, cg, toString(this)], [AttachedPayment(aX(cm), cl)])
542- }
548+ else if ((bp == b))
549+ then {
550+ let cw = co(aN, ce, cf, aF, aE, cg, ch)
551+ let cn = cw._1
552+ let cm = cw._2
553+ invoke(af, "swap", [cg, ch, toString(this)], [AttachedPayment(aY(cn), cm)])
554+ }
555+ else ai()
543556
544557
545-func cw (au,bo,aH,cx) = {
546- let cy = if ((bo == a))
558+func cx (av,bp,aI,cy) = {
559+ let cz = if ((bp == a))
547560 then {
548- let cb = {
549- let ay = invoke(au, "callFunction", ["withdrawREADONLY", [toString(cx)]], nil)
550- if ($isInstanceOf(ay, "(Int, Int)"))
551- then ay
552- else throw(($getType(ay) + " couldn't be cast to (Int, Int)"))
561+ let cc = {
562+ let az = invoke(av, "callFunction", ["withdrawREADONLY", [toString(cy)]], nil)
563+ if ($isInstanceOf(az, "(Int, Int)"))
564+ then az
565+ else throw(($getType(az) + " couldn't be cast to (Int, Int)"))
553566 }
554- if ((cb == cb))
555- then $Tuple2(cb._1, cb._2)
567+ if ((cc == cc))
568+ then $Tuple2(cc._1, cc._2)
556569 else throw("Strict value is not equal to itself.")
557570 }
558- else {
559- let cb = split({
560- let ay = invoke(au, "evaluateGetREADONLY", [aH, cx], nil)
561- if ($isInstanceOf(ay, "String"))
562- then ay
563- else throw(($getType(ay) + " couldn't be cast to String"))
564- }, "__")
565- if ((cb == cb))
566- then $Tuple2(parseIntValue(cb[1]), parseIntValue(cb[2]))
567- else throw("Strict value is not equal to itself.")
568- }
569- let cz = cy._1
570- let cA = cy._2
571- $Tuple2(cz, cA)
571+ else if ((bp == b))
572+ then {
573+ let cc = split({
574+ let az = invoke(av, "evaluateGetREADONLY", [aI, cy], nil)
575+ if ($isInstanceOf(az, "String"))
576+ then az
577+ else throw(($getType(az) + " couldn't be cast to String"))
578+ }, "__")
579+ if ((cc == cc))
580+ then $Tuple2(parseIntValue(cc[1]), parseIntValue(cc[2]))
581+ else throw("Strict value is not equal to itself.")
582+ }
583+ else ai()
584+ let cA = cz._1
585+ let cB = cz._2
586+ $Tuple2(cA, cB)
572587 }
573588
574589
575-func cB (aA,aM) = if ((aA == a))
590+func cC (bp,aN) = if ((bp == a))
576591 then {
577- let cC = ao(ag)
578- if ((cC == cC))
592+ let cD = ap(ag)
593+ if ((cD == cD))
579594 then {
580- let cb = invoke(aS(), "claim", [aM], nil)
581- if ((cb == cb))
595+ let cc = invoke(aT(), "claim", [aN], nil)
596+ if ((cc == cc))
582597 then {
583- let cD = ao(ag)
584- $Tuple2((cD - cC), ag)
598+ let cE = ap(ag)
599+ $Tuple2((cE - cD), ag)
585600 }
586601 else throw("Strict value is not equal to itself.")
587602 }
588603 else throw("Strict value is not equal to itself.")
589604 }
590- else if ((aA == b))
605+ else if ((bp == b))
591606 then {
592- let cC = ao(ah)
593- if ((cC == cC))
607+ let cD = ap(ah)
608+ if ((cD == cD))
594609 then {
595- let cb = invoke(aT(Address(fromBase58String(aM))), "claimWX", [aM], nil)
596- if ((cb == cb))
610+ let cc = invoke(aU(Address(fromBase58String(aN))), "claimWX", [aN], nil)
611+ if ((cc == cc))
597612 then {
598- let cD = ao(ah)
599- $Tuple2((cD - cC), ah)
613+ let cE = ap(ah)
614+ $Tuple2((cE - cD), ah)
600615 }
601616 else throw("Strict value is not equal to itself.")
602617 }
603618 else throw("Strict value is not equal to itself.")
604619 }
605- else throw("Wrong pool type")
620+ else ai()
606621
607622
608-func cE (bo,aM,aR,bH,aw,bI,ax,aE,aD,cF) = {
609- let cG = ao(fromBase58String(cF))
610- if ((cG == cG))
623+func cF (bp,aN,aS,bI,ax,bJ,ay,aF,aE,cG) = {
624+ let cH = ap(fromBase58String(cG))
625+ if ((cH == cH))
611626 then {
612- let au = addressFromStringValue(aM)
613- let cH = if (if ((bH > 0))
614- then (bI > 0)
627+ let av = addressFromStringValue(aN)
628+ let cI = if (if ((bI > 0))
629+ then (bJ > 0)
615630 else false)
616631 then {
617- let cI = bG(bo, au, bH, aw, bI, ax, aE, aD)
618- let cJ = cI._1
619- let cK = cI._2
620- let cL = cI._3
621- let cM = cI._4
622- let cb = bQ(au, bo, cJ, aw, cK, ax)
623- if ((cb == cb))
624- then $Tuple2(cL, cM)
632+ let cJ = bH(bp, av, bI, ax, bJ, ay, aF, aE)
633+ let cK = cJ._1
634+ let cL = cJ._2
635+ let cM = cJ._3
636+ let cN = cJ._4
637+ let cc = bR(av, bp, cK, ax, cL, ay)
638+ if ((cc == cc))
639+ then $Tuple2(cM, cN)
625640 else throw("Strict value is not equal to itself.")
626641 }
627- else if ((bH > 0))
628- then $Tuple2(bH, aw)
629- else if ((bI > 0))
630- then $Tuple2(bI, ax)
642+ else if ((bI > 0))
643+ then $Tuple2(bI, ax)
644+ else if ((bJ > 0))
645+ then $Tuple2(bJ, ay)
631646 else throw("pmts must be > 0")
632- let cL = cH._1
633- let cM = cH._2
634- let cb = if ((cL > 0))
635- then bS(au, bo, cL, cM)
647+ let cM = cI._1
648+ let cN = cI._2
649+ let cc = if ((cM > 0))
650+ then bT(av, bp, cM, cN)
636651 else nil
637- if ((cb == cb))
652+ if ((cc == cc))
638653 then {
639- let cN = ao(fromBase58String(cF))
640- let cO = (cN - cG)
641- let cP = fraction(cO, aQ(aM, aR), m)
642- let cQ = (cO - cP)
643- if ((0 >= cQ))
654+ let cO = ap(fromBase58String(cG))
655+ let cP = (cO - cH)
656+ let cQ = fraction(cP, aR(aN, aS), m)
657+ let cR = (cP - cQ)
658+ if ((0 >= cR))
644659 then throw("amount of staked sharetokens must be > 0")
645660 else {
646- let cR = bU(aM, bo, cF, cQ)
647- if ((cR == cR))
648- then $Tuple2(cQ, cP)
661+ let cS = bV(aN, bp, cG, cR)
662+ if ((cS == cS))
663+ then $Tuple2(cR, cQ)
649664 else throw("Strict value is not equal to itself.")
650665 }
651666 }
655670 }
656671
657672
658-func cS (aM,aP,cT,cP,cU,aH,aA,cV) = {
659- let cW = aL(aM)
660- let cX = aN(aM)
661- let cY = if (cV)
662- then $Tuple2(getIntegerValue(this, (aM + C)), (cX + cT))
663- else $Tuple2(getIntegerValue(this, (aM + D)), cX)
664- let cZ = cY._1
665- let da = cY._2
666-[IntegerEntry((aM + A), (cW + cT)), IntegerEntry((aM + B), da), IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + u), cT), IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + z), cZ), StringEntry((((aP + "_") + toString(cU)) + v), aM), IntegerEntry((aP + y), cU), ScriptTransfer(ac, cP, fromBase58String(aH))]
673+func cT (aN,aQ,cU,cQ,cV,aI,aB,cW) = {
674+ let cX = aM(aN)
675+ let cY = aO(aN)
676+ let cZ = if (cW)
677+ then $Tuple2(getIntegerValue(this, (aN + C)), (cY + cU))
678+ else $Tuple2(getIntegerValue(this, (aN + D)), cY)
679+ let da = cZ._1
680+ let db = cZ._2
681+[IntegerEntry((aN + A), (cX + cU)), IntegerEntry((aN + B), db), IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + u), cU), IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + z), da), StringEntry((((aQ + "_") + toString(cV)) + v), aN), IntegerEntry((aQ + y), cV), ScriptTransfer(ac, cQ, fromBase58String(aI))]
667682 }
668683
669684
670-func db (dc,dd,de,df,dg,dh,di,dj,dk,dl) = {
671- let dm = ao(aX(dc))
672- if ((dm == dm))
685+func dc (dd,de,df,dg,dh,di,dj,dk,dl,dm) = {
686+ let dn = ap(aY(dd))
687+ if ((dn == dn))
673688 then {
674- let cb = invoke(ad, "swap", [df, dg, dh, di, dj, dk, dl], [AttachedPayment(de, dd)])
675- if ((cb == cb))
676- then (ao(aX(dc)) - dm)
689+ let cc = invoke(ad, "swap", [dg, dh, di, dj, dk, dl, dm], [AttachedPayment(df, de)])
690+ if ((cc == cc))
691+ then (ap(aY(dd)) - dn)
677692 else throw("Strict value is not equal to itself.")
678693 }
679694 else throw("Strict value is not equal to itself.")
680695 }
681696
682697
683-func dn (dc,dd,de,do,dp,dl) = {
684- let dm = ao(aX(dc))
685- if ((dm == dm))
698+func do (dd,de,df,dp,dq,dm) = {
699+ let dn = ap(aY(dd))
700+ if ((dn == dn))
686701 then {
687- let cb = invoke(ad, "puzzleSwap", [do, dp, dl], [AttachedPayment(de, dd)])
688- if ((cb == cb))
689- then (ao(aX(dc)) - dm)
702+ let cc = invoke(ad, "puzzleSwap", [dp, dq, dm], [AttachedPayment(df, de)])
703+ if ((cc == cc))
704+ then (ap(aY(dd)) - dn)
690705 else throw("Strict value is not equal to itself.")
691706 }
692707 else throw("Strict value is not equal to itself.")
693708 }
694709
695710
696-func dq (dc,dd,de,dr,ds,dt,du,dv,dw,dl) = {
697- let dm = ao(aX(dc))
698- if ((dm == dm))
711+func dr (dd,de,df,ds,dt,du,dv,dw,dx,dm) = {
712+ let dn = ap(aY(dd))
713+ if ((dn == dn))
699714 then {
700- let cb = invoke(ad, "swopfiSwap", [dr, ds, dt, du, dv, dw, dl], [AttachedPayment(de, dd)])
701- if ((cb == cb))
702- then (ao(aX(dc)) - dm)
715+ let cc = invoke(ad, "swopfiSwap", [ds, dt, du, dv, dw, dx, dm], [AttachedPayment(df, de)])
716+ if ((cc == cc))
717+ then (ap(aY(dd)) - dn)
703718 else throw("Strict value is not equal to itself.")
704719 }
705720 else throw("Strict value is not equal to itself.")
706721 }
707722
708723
709-func dx (aM,bo,dy,dz) = {
710- let au = Address(fromBase58String(aM))
711- let dA = aJ(au, bo)
712- let dB = dA._1
713- let dC = dA._2
714- let aE = dA._3
715- let aD = dA._4
716- let aH = dA._5
717- if (if ((dy != dB))
718- then (dy != dC)
724+func dy (aN,bp,dz,dA) = {
725+ let av = Address(fromBase58String(aN))
726+ let dB = aK(av, bp)
727+ let dC = dB._1
728+ let dD = dB._2
729+ let aF = dB._3
730+ let aE = dB._4
731+ let aI = dB._5
732+ if (if ((dz != dC))
733+ then (dz != dD)
719734 else false)
720735 then throw("Wrong asset")
721736 else {
722- let dD = if ((dy == dB))
723- then $Tuple2(dz, 0)
724- else $Tuple2(0, dz)
725- let bH = dD._1
726- let bI = dD._2
727- let dE = cE(bo, aM, i, bH, dB, bI, dC, aE, aD, aH)
728- let cT = dE._1
729- let dF = dE._2
730- let dG = valueOrElse(getInteger(this, (aM + C)), 0)
731- let dH = valueOrElse(getInteger(this, (aM + D)), 0)
732- let dI = aL(aM)
733- let dJ = aN(aM)
734- let dK = fraction(dJ, j, dI)
735- let dL = fraction(cT, dK, j)
736- let dM = (cT - dL)
737- let dN = if ((dJ > 0))
738- then (dG + fraction(dL, k, dJ))
737+ let dE = if ((dz == dC))
738+ then $Tuple2(dA, 0)
739+ else $Tuple2(0, dA)
740+ let bI = dE._1
741+ let bJ = dE._2
742+ let dF = cF(bp, aN, i, bI, dC, bJ, dD, aF, aE, aI)
743+ let cU = dF._1
744+ let dG = dF._2
745+ let dH = valueOrElse(getInteger(this, (aN + C)), 0)
746+ let dI = valueOrElse(getInteger(this, (aN + D)), 0)
747+ let dJ = aM(aN)
748+ let dK = aO(aN)
749+ let dL = fraction(dK, j, dJ)
750+ let dM = fraction(cU, dL, j)
751+ let dN = (cU - dM)
752+ let dO = if ((dK > 0))
753+ then (dH + fraction(dM, k, dK))
739754 else 0
740- let dO = if (((dI - dJ) > 0))
741- then (dH + fraction(dM, k, (dI - dJ)))
755+ let dP = if (((dJ - dK) > 0))
756+ then (dI + fraction(dN, k, (dJ - dK)))
742757 else 0
743- let dP = fraction(dL, aQ(aM, d), m)
744- let dQ = fraction(dM, aQ(aM, c), m)
745- let dR = bW(aM, bo, aH, (dP + dQ))
746- if ((dR == dR))
747- then ([IntegerEntry((aM + C), dN), IntegerEntry((aM + D), dO), IntegerEntry((aM + A), ((dI + cT) - dR)), IntegerEntry((aM + B), ((dJ + dL) - dP)), ScriptTransfer(ac, (dP + dQ), fromBase58String(aH))] ++ bB(dB, dC, aH, nil))
758+ let dQ = fraction(dM, aR(aN, d), m)
759+ let dR = fraction(dN, aR(aN, c), m)
760+ let dS = bX(aN, bp, aI, (dQ + dR))
761+ if ((dS == dS))
762+ then ([IntegerEntry((aN + C), dO), IntegerEntry((aN + D), dP), IntegerEntry((aN + A), ((dJ + cU) - dS)), IntegerEntry((aN + B), ((dK + dM) - dQ)), ScriptTransfer(ac, (dQ + dR), fromBase58String(aI))] ++ bC(dC, dD, aI, nil))
748763 else throw("Strict value is not equal to itself.")
749764 }
750765 }
751766
752767
753-func dS (aM,cx,dT,dU) = {
754- let au = Address(fromBase58String(aM))
755- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Unknown pool")
756- let dV = aJ(au, bo)
757- let cd = dV._1
758- let ce = dV._2
759- let aE = dV._3
760- let aD = dV._4
761- let aH = dV._5
762- let dW = ao(aX(cd))
763- if ((dW == dW))
768+func dT (aN,cy,dU,dV,dW) = {
769+ let av = Address(fromBase58String(aN))
770+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Unknown pool")
771+ let dX = aK(av, bp)
772+ let ce = dX._1
773+ let cf = dX._2
774+ let aF = dX._3
775+ let aE = dX._4
776+ let aI = dX._5
777+ let dY = ap(aY(ce))
778+ if ((dY == dY))
764779 then {
765- let dX = ao(aX(ce))
766- if ((dX == dX))
780+ let dZ = ap(aY(cf))
781+ if ((dZ == dZ))
767782 then {
768- let cb = if ((bo == a))
769- then invoke(au, "callFunction", ["withdraw", [toString(cx)]], nil)
770- else {
771- let cb = bW(aM, bo, aH, cx)
772- if ((cb == cb))
773- then invoke(au, "get", nil, [AttachedPayment(aX(aH), cx)])
783+ let cc = if ((bp == a))
784+ then {
785+ let cc = bX(aN, bp, aI, dW)
786+ if ((cc == cc))
787+ then invoke(av, "callFunction", ["withdraw", [toString(cy)]], nil)
774788 else throw("Strict value is not equal to itself.")
775789 }
776- if ((cb == cb))
790+ else if ((bp == b))
791+ then {
792+ let cc = bX(aN, bp, aI, (cy + dW))
793+ if ((cc == cc))
794+ then invoke(av, "get", nil, [AttachedPayment(aY(aI), cy)])
795+ else throw("Strict value is not equal to itself.")
796+ }
797+ else ai()
798+ if ((cc == cc))
777799 then {
778- let dY = ao(aX(cd))
779- let dZ = ao(aX(ce))
780- let ea = $Tuple2((dY - dW), (dZ - dX))
781- let eb = ea._1
782- let ec = ea._2
783- let ed = if ((dT > 0))
800+ let ea = ap(aY(ce))
801+ let eb = ap(aY(cf))
802+ let ec = $Tuple2((ea - dY), (eb - dZ))
803+ let ed = ec._1
804+ let ee = ec._2
805+ let ef = if ((dU > 0))
784806 then {
785- let ee = if (if ((dU == cd))
786- then (dT > eb)
807+ let eg = if (if ((dV == ce))
808+ then (dU > ed)
787809 else false)
788- then (dT - eb)
789- else if (if ((dU == ce))
790- then (dT > ec)
810+ then (dU - ed)
811+ else if (if ((dV == cf))
812+ then (dU > ee)
791813 else false)
792- then (dT - ec)
814+ then (dU - ee)
793815 else 0
794- let ef = if ((ee > 0))
795- then ct(bo, aM, cd, ce, (aE - eb), (aD - ec), ee, dU)
816+ let eh = if ((eg > 0))
817+ then cu(bp, aN, ce, cf, (aF - ed), (aE - ee), eg, dV)
796818 else nil
797- if ((ef == ef))
819+ if ((eh == eh))
798820 then {
799- let eg = ao(aX(cd))
800- let eh = ao(aX(ce))
801- if ((dU == cd))
802- then $Tuple2(((eg - dW) - dT), (eh - dX))
803- else $Tuple2((eg - dW), ((eh - dX) - dT))
821+ let ei = ap(aY(ce))
822+ let ej = ap(aY(cf))
823+ if ((dV == ce))
824+ then $Tuple2(((ei - dY) - dU), (ej - dZ))
825+ else $Tuple2((ei - dY), ((ej - dZ) - dU))
804826 }
805827 else throw("Strict value is not equal to itself.")
806828 }
807- else $Tuple2(eb, ec)
808- let ei = ed._1
809- let ej = ed._2
810- $Tuple7(ei, cd, ej, ce, dY, dZ, aH)
829+ else $Tuple2(ed, ee)
830+ let ek = ef._1
831+ let el = ef._2
832+ $Tuple7(ek, ce, el, cf, ea, eb, aI)
811833 }
812834 else throw("Strict value is not equal to itself.")
813835 }
817839 }
818840
819841
820-func ek (aP,aM,el,em) = {
821- let en = valueOrErrorMessage(getInteger(this, (((((aM + "_") + aP) + "_") + el) + u)), "Unknown position")
822- let eo = getIntegerValue(this, (((((aM + "_") + aP) + "_") + el) + z))
823- let ep = if (em)
824- then getIntegerValue(this, (aM + C))
825- else getIntegerValue(this, (aM + D))
826- (en + fraction(en, (ep - eo), k))
842+func em (aQ,aN,en,eo) = {
843+ let ep = valueOrErrorMessage(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + u)), "Unknown position")
844+ let eq = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + en) + z))
845+ let er = if (eo)
846+ then getIntegerValue(this, (aN + C))
847+ else getIntegerValue(this, (aN + D))
848+ (ep + fraction(ep, (er - eq), k))
827849 }
828850
829851
830-func eq (aP,aM,el,er) = {
831- let en = valueOrErrorMessage(getInteger(this, (((((aM + "_") + aP) + "_") + el) + u)), "Unknown position")
832- let es = valueOrElse(getInteger(this, (((((aM + "_") + aP) + "_") + el) + w)), 0)
833- let cx = ek(aP, aM, el, (es > 0))
834- let et = aL(aM)
835- let eu = Address(fromBase58String(aP))
836- let dU = valueOrElse(getString(this, (((((aM + "_") + aP) + "_") + el) + x)), "")
837- let dT = if ((es > 0))
852+func es (aQ,aN,en,et) = {
853+ let ep = valueOrErrorMessage(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + u)), "Unknown position")
854+ let eu = valueOrElse(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + w)), 0)
855+ let cy = em(aQ, aN, en, (eu > 0))
856+ let ev = aM(aN)
857+ let ew = Address(fromBase58String(aQ))
858+ let dV = valueOrElse(getString(this, (((((aN + "_") + aQ) + "_") + en) + x)), "")
859+ let ex = if ((eu > 0))
860+ then $Tuple2({
861+ let az = invoke(aj(), "getAssetDebt", [false, ((aQ + "_") + en), dV], nil)
862+ if ($isInstanceOf(az, "Int"))
863+ then az
864+ else throw(($getType(az) + " couldn't be cast to Int"))
865+ }, f)
866+ else $Tuple2(0, e)
867+ let dU = ex._1
868+ let aS = ex._2
869+ let dW = if (et)
870+ then fraction(cy, aR(aN, aS), m)
871+ else 0
872+ let ey = dT(aN, (cy - dW), dU, dV, dW)
873+ if ((ey == ey))
838874 then {
839- let ay = invoke(ai(), "getAssetDebt", [false, ((aP + "_") + el), dU], nil)
840- if ($isInstanceOf(ay, "Int"))
841- then ay
842- else throw(($getType(ay) + " couldn't be cast to Int"))
843- }
844- else 0
845- let ev = dS(aM, cx, dT, dU)
846- if ((ev == ev))
847- then {
848- let aH = ev._7
849- let dZ = ev._6
850- let dY = ev._5
851- let ce = ev._4
852- let ew = ev._3
853- let cd = ev._2
854- let ex = ev._1
855- let ey = if ((dT > 0))
856- then invoke(ai(), "repayFor", [((aP + "_") + el)], [AttachedPayment(aX(dU), dT)])
875+ let aI = ey._7
876+ let eb = ey._6
877+ let ea = ey._5
878+ let cf = ey._4
879+ let ez = ey._3
880+ let ce = ey._2
881+ let eA = ey._1
882+ let eB = if ((dU > 0))
883+ then invoke(aj(), "repayFor", [((aQ + "_") + en)], [AttachedPayment(aY(dV), dU)])
857884 else 0
858- if ((ey == ey))
859- then ([DeleteEntry((((((aM + "_") + aP) + "_") + el) + u)), DeleteEntry((((((aM + "_") + aP) + "_") + el) + z)), IntegerEntry((aM + A), (et - cx)), ScriptTransfer(eu, ex, aX(cd)), ScriptTransfer(eu, ew, aX(ce))] ++ bB(cd, ce, aH, nil))
885+ if ((eB == eB))
886+ then ([DeleteEntry((((((aN + "_") + aQ) + "_") + en) + u)), DeleteEntry((((((aN + "_") + aQ) + "_") + en) + z)), IntegerEntry((aN + A), ((ev - cy) - dW)), ScriptTransfer(ew, eA, aY(ce)), ScriptTransfer(ew, ez, aY(cf)), ScriptTransfer(ac, dW, fromBase58String(aI))] ++ bC(ce, cf, aI, nil))
860887 else throw("Strict value is not equal to itself.")
861888 }
862889 else throw("Strict value is not equal to itself.")
863890 }
864891
865892
866-func ez (eA) = {
867- let eB = split(valueOrErrorMessage(getString(this, (eA + L)), ("No request with id " + eA)), ",")
868- let aP = eB[0]
869- let aM = eB[1]
870- let bH = parseIntValue(eB[2])
871- let dB = eB[3]
872- let bI = parseIntValue(eB[4])
873- let dC = eB[5]
874- let aE = parseIntValue(eB[6])
875- let aD = parseIntValue(eB[7])
876- let aH = eB[8]
877- let eC = eB[9]
878- let eD = parseIntValue(eB[10])
879- $Tuple11(aP, aM, bH, dB, bI, dC, aE, aD, aH, eC, eD)
893+func eC (eD) = {
894+ let eE = split(valueOrErrorMessage(getString(this, (eD + L)), ("No request with id " + eD)), ",")
895+ let aQ = eE[0]
896+ let aN = eE[1]
897+ let bI = parseIntValue(eE[2])
898+ let dC = eE[3]
899+ let bJ = parseIntValue(eE[4])
900+ let dD = eE[5]
901+ let aF = parseIntValue(eE[6])
902+ let aE = parseIntValue(eE[7])
903+ let aI = eE[8]
904+ let eF = eE[9]
905+ let eG = parseIntValue(eE[10])
906+ $Tuple11(aQ, aN, bI, dC, bJ, dD, aF, aE, aI, eF, eG)
880907 }
881908
882909
883-func eE (bH,bI,aw,ax,eF,eG) = {
884- let bs = getIntegerValue(ae, (aw + R))
910+func eH (bI,bJ,ax,ay,eI,eJ) = {
885911 let bt = getIntegerValue(ae, (ax + R))
886- let eH = pow(10, 0, aY(aw), 0, 0, DOWN)
887- let eI = pow(10, 0, aY(ax), 0, 0, DOWN)
888- let eJ = (fraction(bs, bH, eH) + fraction(bt, bI, eI))
889- let eK = if ((eG == aw))
890- then $Tuple2(bs, eH)
891- else $Tuple2(bt, eI)
892- let eL = eK._1
893- let eM = eK._2
894- fraction(fraction(eJ, (eF - 100), 100), eM, eL)
912+ let bu = getIntegerValue(ae, (ay + R))
913+ let eK = pow(10, 0, aZ(ax), 0, 0, DOWN)
914+ let eL = pow(10, 0, aZ(ay), 0, 0, DOWN)
915+ let eM = (fraction(bt, bI, eK) + fraction(bu, bJ, eL))
916+ let eN = if ((eJ == ax))
917+ then $Tuple2(bt, eK)
918+ else $Tuple2(bu, eL)
919+ let eO = eN._1
920+ let eP = eN._2
921+ fraction(fraction(eM, (eI - 100), 100), eP, eO)
895922 }
896923
897924
898-func eN (eO,dB,dC) = if ((size(eO) == 2))
899- then if ((aW(eO[0].assetId) != dB))
925+func eQ (eR,dC,dD) = if ((size(eR) == 2))
926+ then if ((aX(eR[0].assetId) != dC))
900927 then throw("Wrong payment asset A")
901- else if ((aW(eO[1].assetId) != dC))
928+ else if ((aX(eR[1].assetId) != dD))
902929 then throw("Wrong payment asset B")
903- else $Tuple4(eO[0].amount, dB, eO[1].amount, dC)
904- else if ((size(eO) == 1))
905- then if ((aW(eO[0].assetId) == dB))
906- then $Tuple4(eO[0].amount, dB, 0, dC)
907- else if ((aW(eO[0].assetId) == dC))
908- then $Tuple4(0, dB, eO[0].amount, dC)
930+ else $Tuple4(eR[0].amount, dC, eR[1].amount, dD)
931+ else if ((size(eR) == 1))
932+ then if ((aX(eR[0].assetId) == dC))
933+ then $Tuple4(eR[0].amount, dC, 0, dD)
934+ else if ((aX(eR[0].assetId) == dD))
935+ then $Tuple4(0, dC, eR[0].amount, dD)
909936 else throw("Wrong payment")
910937 else throw("One or two payments expected")
911938
912939
913-func eP (aE,aD,eQ,eR) = {
914- let eS = ((j - fraction(fraction(aD, j, aE), j, fraction(eR, j, eQ))) * 100)
915- if ((0 > eS))
916- then (eS * -1)
917- else eS
940+func eS (aF,aE,eT,eU) = {
941+ let eV = ((j - fraction(fraction(aE, j, aF), j, fraction(eU, j, eT))) * 100)
942+ if ((0 > eV))
943+ then (eV * -1)
944+ else eV
918945 }
919946
920947
921-@Callable(al)
922-func getShareAssetPriceREADONLY (aH) = {
923- let eT = bn(aH)
924- $Tuple2(nil, eT)
948+@Callable(am)
949+func getShareAssetPriceREADONLY (aI) = {
950+ let eW = bo(aI)
951+ $Tuple2(nil, eW)
925952 }
926953
927954
928955
929-@Callable(al)
930-func getUserPositionShareAmountREADONLY (aP,cU) = {
931- let aM = valueOrErrorMessage(getString(this, (((aP + "_") + cU) + v)), "Unknown position")
932- let es = getIntegerValue(this, (((((aM + "_") + aP) + "_") + cU) + w))
933- let cx = ek(aP, aM, cU, (es > 0))
934- $Tuple2(nil, cx)
956+@Callable(am)
957+func getUserPositionShareAmountREADONLY (aQ,cV) = {
958+ let aN = valueOrErrorMessage(getString(this, (((aQ + "_") + cV) + v)), "Unknown position")
959+ let eu = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + cV) + w))
960+ let cy = em(aQ, aN, cV, (eu > 0))
961+ $Tuple2(nil, cy)
935962 }
936963
937964
938965
939-@Callable(al)
940-func getUserPositionInDollarsREADONLY (aP,eU,cU) = {
941- func eV (be,aM) = {
942- let eW = be
943- let eX = eW._1
944- let eY = eW._2
945- let eZ = eW._3
946- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
947- let fa = aJ(Address(fromBase58String(aM)), bo)
948- let dB = fa._1
949- let dC = fa._2
950- let aE = fa._3
951- let aD = fa._4
952- let aH = fa._5
953- let es = valueOrElse(getInteger(this, (((((aM + "_") + aP) + "_") + cU[eZ]) + w)), 0)
954- let cx = ek(aP, aM, cU[eZ], (es > 0))
955- let eT = bn(aH)
956- let fb = pow(10, 0, aY(aH), 0, 0, DOWN)
957- let fc = fraction(cx, eT, fb)
958- if ((es == 0))
959- then $Tuple3((eX :+ fc), (eY :+ 0), (eZ + 1))
966+@Callable(am)
967+func getUserPositionInDollarsREADONLY (aQ,eX,cV) = {
968+ func eY (bf,aN) = {
969+ let eZ = bf
970+ let fa = eZ._1
971+ let fb = eZ._2
972+ let fc = eZ._3
973+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
974+ let fd = aK(Address(fromBase58String(aN)), bp)
975+ let dC = fd._1
976+ let dD = fd._2
977+ let aF = fd._3
978+ let aE = fd._4
979+ let aI = fd._5
980+ let eu = valueOrElse(getInteger(this, (((((aN + "_") + aQ) + "_") + cV[fc]) + w)), 0)
981+ let cy = em(aQ, aN, cV[fc], (eu > 0))
982+ let eW = bo(aI)
983+ let fe = pow(10, 0, aZ(aI), 0, 0, DOWN)
984+ let ff = fraction(cy, eW, fe)
985+ if ((eu == 0))
986+ then $Tuple3((fa :+ ff), (fb :+ 0), (fc + 1))
960987 else {
961- let dU = getStringValue(this, (((((aM + "_") + aP) + "_") + cU[eZ]) + x))
962- let dT = {
963- let ay = invoke(ai(), "getAssetDebt", [false, ((aP + "_") + cU[eZ]), dU], nil)
964- if ($isInstanceOf(ay, "Int"))
965- then ay
966- else throw(($getType(ay) + " couldn't be cast to Int"))
988+ let dV = getStringValue(this, (((((aN + "_") + aQ) + "_") + cV[fc]) + x))
989+ let dU = {
990+ let az = invoke(aj(), "getAssetDebt", [false, ((aQ + "_") + cV[fc]), dV], nil)
991+ if ($isInstanceOf(az, "Int"))
992+ then az
993+ else throw(($getType(az) + " couldn't be cast to Int"))
967994 }
968- let fd = getIntegerValue(ae, (dU + R))
969- let fe = pow(10, 0, aY(dU), 0, 0, DOWN)
970- let ff = fraction(dT, fd, fe)
971- $Tuple3((eX :+ fc), (eY :+ ff), (eZ + 1))
995+ let fg = getIntegerValue(ae, (dV + R))
996+ let fh = pow(10, 0, aZ(dV), 0, 0, DOWN)
997+ let fi = fraction(dU, fg, fh)
998+ $Tuple3((fa :+ ff), (fb :+ fi), (fc + 1))
972999 }
9731000 }
9741001
975- let fg = {
976- let bg = eU
977- let bh = size(bg)
978- let bi = $Tuple3(nil, nil, 0)
979- func bj (bk,bl) = if ((bl >= bh))
980- then bk
981- else eV(bk, bg[bl])
1002+ let fj = {
1003+ let bh = eX
1004+ let bi = size(bh)
1005+ let bj = $Tuple3(nil, nil, 0)
1006+ func bk (bl,bm) = if ((bm >= bi))
1007+ then bl
1008+ else eY(bl, bh[bm])
9821009
983- func bm (bk,bl) = if ((bl >= bh))
984- then bk
1010+ func bn (bl,bm) = if ((bm >= bi))
1011+ then bl
9851012 else throw("List size exceeds 20")
9861013
987- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1014+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
9881015 }
989- let fh = fg._1
990- let dT = fg._2
991- $Tuple2(nil, $Tuple2(fh, dT))
1016+ let fk = fj._1
1017+ let dU = fj._2
1018+ $Tuple2(nil, $Tuple2(fk, dU))
9921019 }
9931020
9941021
9951022
996-@Callable(al)
997-func replenish (aM,eF,eG) = if (if ((100 > eF))
1023+@Callable(am)
1024+func replenish (aN,eI,eJ) = if (if ((100 > eI))
9981025 then true
999- else (eF > 300))
1026+ else (eI > 300))
10001027 then throw("Leverage can't be <100 and >300")
1001- else if (if (!(getBooleanValue(this, (aM + E))))
1002- then (eF > 100)
1028+ else if (if (!(getBooleanValue(this, (aN + E))))
1029+ then (eI > 100)
10031030 else false)
10041031 then throw("You can't borrow in this pool")
10051032 else {
1006- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
1007- let fi = aJ(Address(fromBase58String(aM)), bo)
1008- let dB = fi._1
1009- let dC = fi._2
1010- let aE = fi._3
1011- let aD = fi._4
1012- let aH = fi._5
1013- let fj = eN(al.payments, dB, dC)
1014- let bH = fj._1
1015- let fk = fj._2
1016- let bI = fj._3
1017- let fl = fj._4
1018- let aP = toString(al.caller)
1019- let fm = aO(aP)
1020- if ((eF > 100))
1033+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
1034+ let fl = aK(Address(fromBase58String(aN)), bp)
1035+ let dC = fl._1
1036+ let dD = fl._2
1037+ let aF = fl._3
1038+ let aE = fl._4
1039+ let aI = fl._5
1040+ let fm = eQ(am.payments, dC, dD)
1041+ let bI = fm._1
1042+ let fn = fm._2
1043+ let bJ = fm._3
1044+ let fo = fm._4
1045+ let aQ = toString(am.caller)
1046+ let fp = aP(aQ)
1047+ if ((eI > 100))
10211048 then {
1022- let es = eE(bH, bI, fk, fl, eF, eG)
1023- let eB = makeString([aP, aM, toString(bH), fk, toString(bI), fl, toString(aE), toString(aD), aH, eG, toString(es)], ",")
1024- let fn = {
1025- let ay = invoke(this, "createNewRequest", [eB], nil)
1026- if ($isInstanceOf(ay, "Int"))
1027- then ay
1028- else throw(($getType(ay) + " couldn't be cast to Int"))
1049+ let eu = eH(bI, bJ, fn, fo, eI, eJ)
1050+ let eE = makeString([aQ, aN, toString(bI), fn, toString(bJ), fo, toString(aF), toString(aE), aI, eJ, toString(eu)], ",")
1051+ let fq = {
1052+ let az = invoke(this, "createNewRequest", [eE], nil)
1053+ if ($isInstanceOf(az, "Int"))
1054+ then az
1055+ else throw(($getType(az) + " couldn't be cast to Int"))
10291056 }
1030- if ((fn == fn))
1057+ if ((fq == fq))
10311058 then {
1032- let fo = [((aP + "_") + toString(fm)), aH, eG, es, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fn, "Can't create new request"))]
1033- let cb = reentrantInvoke(ai(), "flashPosition", fo, nil)
1034- if ((cb == cb))
1059+ let fr = [((aQ + "_") + toString(fp)), aI, eJ, eu, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fq, "Can't create new request"))]
1060+ let cc = reentrantInvoke(aj(), "flashPosition", fr, nil)
1061+ if ((cc == cc))
10351062 then {
1036- let fp = getIntegerValue(this, (((((aM + "_") + aP) + "_") + toString(fm)) + u))
1037- let fq = az(Address(fromBase58String(aM)), bo, dB, dC)
1038- if ((fq == fq))
1063+ let fs = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + toString(fp)) + u))
1064+ let ft = aA(Address(fromBase58String(aN)), bp, dC, dD)
1065+ if ((ft == ft))
10391066 then {
1040- let eR = fq._2
1041- let eQ = fq._1
1042- let fr = eP(aE, aD, eQ, eR)
1043- let fs = cw(Address(fromBase58String(aM)), bo, aH, fp)
1044- let ft = fs._1
1045- let fu = fs._2
1046- $Tuple2(nil, [fr, ft, fu])
1067+ let eU = ft._2
1068+ let eT = ft._1
1069+ let fu = eS(aF, aE, eT, eU)
1070+ let fv = cx(Address(fromBase58String(aN)), bp, aI, fs)
1071+ let fw = fv._1
1072+ let fx = fv._2
1073+ $Tuple2(nil, [fu, fw, fx])
10471074 }
10481075 else throw("Strict value is not equal to itself.")
10491076 }
10521079 else throw("Strict value is not equal to itself.")
10531080 }
10541081 else {
1055- let fv = cE(bo, aM, h, bH, dB, bI, dC, aE, aD, aH)
1056- let fp = fv._1
1057- let dR = fv._2
1058- let fw = az(Address(fromBase58String(aM)), bo, dB, dC)
1059- if ((fw == fw))
1082+ let fy = cF(bp, aN, h, bI, dC, bJ, dD, aF, aE, aI)
1083+ let fs = fy._1
1084+ let dS = fy._2
1085+ let fz = aA(Address(fromBase58String(aN)), bp, dC, dD)
1086+ if ((fz == fz))
10601087 then {
1061- let eR = fw._2
1062- let eQ = fw._1
1063- let fr = eP(aE, aD, eQ, eR)
1064- let fx = cw(Address(fromBase58String(aM)), bo, aH, fp)
1065- let ft = fx._1
1066- let fu = fx._2
1067- $Tuple2((cS(aM, aP, fp, dR, fm, aH, bo, false) ++ bB(dB, dC, aH, [toString(ft), toString(fu)])), [fr, ft, fu])
1088+ let eU = fz._2
1089+ let eT = fz._1
1090+ let fu = eS(aF, aE, eT, eU)
1091+ let fA = cx(Address(fromBase58String(aN)), bp, aI, fs)
1092+ let fw = fA._1
1093+ let fx = fA._2
1094+ $Tuple2((cT(aN, aQ, fs, dS, fp, aI, bp, false) ++ bC(dC, dD, aI, [toString(fw), toString(fx)])), [fu, fw, fx])
10681095 }
10691096 else throw("Strict value is not equal to itself.")
10701097 }
10721099
10731100
10741101
1075-@Callable(al)
1076-func withdraw (aM,el) = eq(toString(al.caller), aM, toString(el), false)
1102+@Callable(am)
1103+func withdraw (aN,en) = es(toString(am.caller), aN, toString(en), false)
10771104
10781105
10791106
1080-@Callable(al)
1081-func createUpdateStopLoss (el,fy,ap,fz) = {
1082- let fA = getIntegerValue(ae, (ap + R))
1083- if (!(isDefined(getInteger(this, (((((fy + "_") + toString(al.caller)) + "_") + toString(el)) + u)))))
1107+@Callable(am)
1108+func createUpdateStopLoss (en,fB,aq,fC) = {
1109+ let fD = getIntegerValue(ae, (aq + R))
1110+ if (!(isDefined(getInteger(this, (((((fB + "_") + toString(am.caller)) + "_") + toString(en)) + u)))))
10841111 then throw("There are no user position")
1085- else if ((0 >= fz))
1112+ else if ((0 >= fC))
10861113 then throw("Price must be greater than 0")
1087- else if ((fz > fA))
1114+ else if ((fC > fD))
10881115 then throw("Price must be less than current token price")
1089- else [IntegerEntry((((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S), fz)]
1116+ else [IntegerEntry((((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S), fC)]
10901117 }
10911118
10921119
10931120
1094-@Callable(al)
1095-func deleteStopLoss (el,fy,ap) = if (!(isDefined(getInteger(this, (((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S)))))
1121+@Callable(am)
1122+func deleteStopLoss (en,fB,aq) = if (!(isDefined(getInteger(this, (((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S)))))
10961123 then throw("No entry")
1097- else [DeleteEntry((((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S))]
1124+ else [DeleteEntry((((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S))]
10981125
10991126
11001127
1101-@Callable(al)
1102-func init (fB,fC,fD,ae,fE,af,fF,fG,fH) = if (isDefined(getString(T)))
1128+@Callable(am)
1129+func init (fE,fF,fG,ae,fH,af,fI,fJ,fK) = if (isDefined(getString(T)))
11031130 then throw("Already inited")
1104- else [StringEntry(T, fB), StringEntry(U, fC), StringEntry(V, fD), StringEntry(X, ae), StringEntry(Y, fE), StringEntry(Z, af), StringEntry(aa, fF), StringEntry(ab, fG), StringEntry(W, fH)]
1131+ else [StringEntry(T, fE), StringEntry(U, fF), StringEntry(V, fG), StringEntry(X, ae), StringEntry(Y, fH), StringEntry(Z, af), StringEntry(aa, fI), StringEntry(ab, fJ), StringEntry(W, fK)]
11051132
11061133
11071134
1108-@Callable(al)
1109-func createNewRequest (ca) = valueOrElse(am(al), {
1110- let fn = (valueOrElse(getInteger(this, M), 0) + 1)
1111- $Tuple2([StringEntry((toString(fn) + L), ca), IntegerEntry(M, fn)], fn)
1135+@Callable(am)
1136+func createNewRequest (cb) = valueOrElse(an(am), {
1137+ let fq = (valueOrElse(getInteger(this, M), 0) + 1)
1138+ $Tuple2([StringEntry((toString(fq) + L), cb), IntegerEntry(M, fq)], fq)
11121139 })
11131140
11141141
11151142
1116-@Callable(al)
1117-func replenishFromLand (eA) = valueOrElse(an(al), {
1118- let fI = ez(eA)
1119- let aP = fI._1
1120- let aM = fI._2
1121- let bH = fI._3
1122- let dB = fI._4
1123- let bI = fI._5
1124- let dC = fI._6
1125- let aE = fI._7
1126- let aD = fI._8
1127- let aH = fI._9
1128- let eC = fI._10
1129- let eD = fI._11
1130- if ((size(al.payments) != 1))
1143+@Callable(am)
1144+func replenishFromLand (eD) = valueOrElse(ao(am), {
1145+ let fL = eC(eD)
1146+ let aQ = fL._1
1147+ let aN = fL._2
1148+ let bI = fL._3
1149+ let dC = fL._4
1150+ let bJ = fL._5
1151+ let dD = fL._6
1152+ let aF = fL._7
1153+ let aE = fL._8
1154+ let aI = fL._9
1155+ let eF = fL._10
1156+ let eG = fL._11
1157+ if ((size(am.payments) != 1))
11311158 then throw("Wrong payment size")
1132- else if (if ((aW(al.payments[0].assetId) != eC))
1159+ else if (if ((aX(am.payments[0].assetId) != eF))
11331160 then true
1134- else (al.payments[0].amount != eD))
1161+ else (am.payments[0].amount != eG))
11351162 then throw("Wrong payment")
11361163 else {
1137- let fJ = if ((dB == eC))
1138- then $Tuple2((bH + al.payments[0].amount), bI)
1139- else $Tuple2(bH, (bI + al.payments[0].amount))
1140- let fK = fJ._1
1141- let fL = fJ._2
1142- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Unknown pool")
1143- let fM = cE(bo, aM, g, fK, dB, fL, dC, aE, aD, aH)
1144- let fp = fM._1
1145- let dR = fM._2
1146- let cU = aO(aP)
1147- let fN = [IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + w), eD), StringEntry((((((aM + "_") + aP) + "_") + toString(cU)) + x), eC)]
1148- let fO = cS(aM, aP, fp, dR, cU, aH, bo, true)
1149- let fP = cw(Address(fromBase58String(aM)), bo, aH, fp)
1150- let ft = fP._1
1151- let fu = fP._2
1152- $Tuple2((((fO ++ bB(dB, dC, aH, [toString(ft), toString(fu)])) ++ fN) :+ DeleteEntry((eA + L))), fp)
1164+ let fM = if ((dC == eF))
1165+ then $Tuple2((bI + am.payments[0].amount), bJ)
1166+ else $Tuple2(bI, (bJ + am.payments[0].amount))
1167+ let fN = fM._1
1168+ let fO = fM._2
1169+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Unknown pool")
1170+ let fP = cF(bp, aN, g, fN, dC, fO, dD, aF, aE, aI)
1171+ let fs = fP._1
1172+ let dS = fP._2
1173+ let cV = aP(aQ)
1174+ let fQ = [IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + w), eG), StringEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + x), eF)]
1175+ let fR = cT(aN, aQ, fs, dS, cV, aI, bp, true)
1176+ let fS = cx(Address(fromBase58String(aN)), bp, aI, fs)
1177+ let fw = fS._1
1178+ let fx = fS._2
1179+ $Tuple2((((fR ++ bC(dC, dD, aI, [toString(fw), toString(fx)])) ++ fQ) :+ DeleteEntry((eD + L))), fs)
11531180 }
11541181 })
11551182
11561183
11571184
1158-@Callable(al)
1159-func liquidate (aP,el,fQ) = valueOrElse(an(al), {
1160- let aM = valueOrErrorMessage(getString(this, (((aP + "_") + el) + v)), "no position")
1161- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
1162- let fR = aJ(Address(fromBase58String(aM)), bo)
1163- let dB = fR._1
1164- let dC = fR._2
1165- let aE = fR._3
1166- let aD = fR._4
1167- let aH = fR._5
1168- let bV = bW(aM, bo, aH, fQ)
1169- let es = getIntegerValue(this, (((((aM + "_") + aP) + "_") + el) + w))
1170- let dU = getStringValue(this, (((((aM + "_") + aP) + "_") + el) + x))
1171- let cx = ek(aP, aM, el, (es > 0))
1172- if ((es == 0))
1173- then throw("You can't liquidate position without borrow")
1174- else [IntegerEntry((((((aM + "_") + aP) + "_") + el) + z), getIntegerValue(this, (aM + C))), IntegerEntry((aM + B), (aN(aM) - fQ)), IntegerEntry((aM + A), (aL(aM) - fQ)), IntegerEntry((((((aM + "_") + aP) + "_") + el) + u), (cx - fQ)), ScriptTransfer(al.caller, bV, fromBase58String(aH))]
1185+@Callable(am)
1186+func liquidate (aQ,en,fT) = valueOrElse(ao(am), {
1187+ let aN = valueOrErrorMessage(getString(this, (((aQ + "_") + en) + v)), "no position")
1188+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
1189+ let fU = aK(Address(fromBase58String(aN)), bp)
1190+ let dC = fU._1
1191+ let dD = fU._2
1192+ let aF = fU._3
1193+ let aE = fU._4
1194+ let aI = fU._5
1195+ let bW = bX(aN, bp, aI, fT)
1196+ let eu = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + en) + w))
1197+ let dV = getStringValue(this, (((((aN + "_") + aQ) + "_") + en) + x))
1198+ let cy = em(aQ, aN, en, (eu > 0))
1199+ if ((fT > cy))
1200+ then throw("You can't liquidate more than user have")
1201+ else if ((eu == 0))
1202+ then throw("You can't liquidate position without borrow")
1203+ else [IntegerEntry((((((aN + "_") + aQ) + "_") + en) + z), getIntegerValue(this, (aN + C))), IntegerEntry((aN + B), (aO(aN) - fT)), IntegerEntry((aN + A), (aM(aN) - fT)), IntegerEntry((((((aN + "_") + aQ) + "_") + en) + u), (cy - fT)), ScriptTransfer(am.caller, bW, fromBase58String(aI))]
11751204 })
11761205
11771206
11781207
1179-@Callable(al)
1180-func stopLoss (aP,el,aM,ap) = valueOrElse(ak(al), {
1181- let fA = getIntegerValue(ae, (ap + R))
1182- if (!(isDefined(getInteger(this, (((((((aP + "_") + toString(el)) + "_") + aM) + "_") + ap) + S)))))
1183- then throw("No entry")
1184- else (eq(toString(al.caller), aM, toString(el), true) :+ DeleteEntry((((((((aP + "_") + toString(el)) + "_") + aM) + "_") + ap) + S)))
1208+@Callable(am)
1209+func stopLoss (aQ,en,aN,aq) = valueOrElse(al(am), {
1210+ let fD = getIntegerValue(ae, (aq + R))
1211+ if ((fD > fD))
1212+ then throw("Token price greater stop loss price")
1213+ else if (!(isDefined(getInteger(this, (((((((aQ + "_") + toString(en)) + "_") + aN) + "_") + aq) + S)))))
1214+ then throw("No entry")
1215+ else (es(aQ, aN, toString(en), true) :+ DeleteEntry((((((((aQ + "_") + toString(en)) + "_") + aN) + "_") + aq) + S)))
11851216 })
11861217
11871218
11881219
1189-@Callable(al)
1190-func capitalizeExKeeper (aM,fS,fT,fU,df,dg,dh,di,dj,dk,dl) = valueOrElse(ak(al), {
1191- let aA = getStringValue(this, (N + aM))
1192- let fV = if (fU)
1193- then cB(aA, aM)
1220+@Callable(am)
1221+func capitalizeExKeeper (aN,fV,fW,fX,dg,dh,di,dj,dk,dl,dm) = valueOrElse(al(am), {
1222+ let bp = getStringValue(this, (N + aN))
1223+ let fY = if (fX)
1224+ then cC(bp, aN)
11941225 else {
1195- let fW = if ((aA == a))
1226+ let fZ = if ((bp == a))
11961227 then ag
1197- else ah
1198- $Tuple2(fT, fW)
1228+ else if ((bp == b))
1229+ then ah
1230+ else ai()
1231+ $Tuple2(fW, fZ)
11991232 }
1200- let fX = fV._1
1201- let fW = fV._2
1202- let fY = db(fS, fT, fW, df, dg, dh, di, dj, dk, dl)
1203- let cL = (fX - fT)
1204- let fZ = if ((cL > 0))
1205- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1233+ let ga = fY._1
1234+ let fZ = fY._2
1235+ let gb = dc(fV, fW, fZ, dg, dh, di, dj, dk, dl, dm)
1236+ let cM = (ga - fW)
1237+ let gc = if ((cM > 0))
1238+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12061239 else nil
1207- (dx(aM, aA, fS, fY) ++ fZ)
1240+ (dy(aN, bp, fV, gb) ++ gc)
12081241 })
12091242
12101243
12111244
1212-@Callable(al)
1213-func capitalizeExPuzzle (aM,fS,fT,fU,do,dp,dl) = valueOrElse(ak(al), {
1214- let aA = getStringValue(this, (N + aM))
1215- let ga = if (fU)
1216- then cB(aA, aM)
1245+@Callable(am)
1246+func capitalizeExPuzzle (aN,fV,fW,fX,dp,dq,dm) = valueOrElse(al(am), {
1247+ let bp = getStringValue(this, (N + aN))
1248+ let gd = if (fX)
1249+ then cC(bp, aN)
12171250 else {
1218- let fW = if ((aA == a))
1251+ let fZ = if ((bp == a))
12191252 then ag
1220- else ah
1221- $Tuple2(fT, fW)
1253+ else if ((bp == b))
1254+ then ah
1255+ else ai()
1256+ $Tuple2(fW, fZ)
12221257 }
1223- let fX = ga._1
1224- let fW = ga._2
1225- let fY = dn(fS, fT, fW, do, dp, dl)
1226- let cL = (fX - fT)
1227- let fZ = if ((cL > 0))
1228- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1258+ let ga = gd._1
1259+ let fZ = gd._2
1260+ let gb = do(fV, fW, fZ, dp, dq, dm)
1261+ let cM = (ga - fW)
1262+ let gc = if ((cM > 0))
1263+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12291264 else nil
1230- (dx(aM, aA, fS, fY) ++ fZ)
1265+ (dy(aN, bp, fV, gb) ++ gc)
12311266 })
12321267
12331268
12341269
1235-@Callable(al)
1236-func capitalizeExSwopFi (aM,fS,fT,fU,dr,ds,dt,du,dv,dw,dl) = valueOrElse(ak(al), {
1237- let aA = getStringValue(this, (N + aM))
1238- let gb = if (fU)
1239- then cB(aA, aM)
1270+@Callable(am)
1271+func capitalizeExSwopFi (aN,fV,fW,fX,ds,dt,du,dv,dw,dx,dm) = valueOrElse(al(am), {
1272+ let bp = getStringValue(this, (N + aN))
1273+ let ge = if (fX)
1274+ then cC(bp, aN)
12401275 else {
1241- let fW = if ((aA == a))
1276+ let fZ = if ((bp == a))
12421277 then ag
1243- else ah
1244- $Tuple2(fT, fW)
1278+ else if ((bp == b))
1279+ then ah
1280+ else ai()
1281+ $Tuple2(fW, fZ)
12451282 }
1246- let fX = gb._1
1247- let fW = gb._2
1248- let fY = dq(fS, fT, fW, dr, ds, dt, du, dv, dw, dl)
1249- let cL = (fX - fT)
1250- let fZ = if ((cL > 0))
1251- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1283+ let ga = ge._1
1284+ let fZ = ge._2
1285+ let gb = dr(fV, fW, fZ, ds, dt, du, dv, dw, dx, dm)
1286+ let cM = (ga - fW)
1287+ let gc = if ((cM > 0))
1288+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12521289 else nil
1253- (dx(aM, aA, fS, fY) ++ fZ)
1290+ (dy(aN, bp, fV, gb) ++ gc)
12541291 })
12551292
12561293
12571294
1258-@Callable(al)
1259-func initNewPool (aA,au,gc,gd,ge,gf,gg,gh,gi) = valueOrElse(ak(al), if (if ((aA != a))
1260- then (aA != b)
1295+@Callable(am)
1296+func initNewPool (aB,av,gf,gg,gh,gi,gj,gk,gl) = valueOrElse(al(am), if (if ((aB != a))
1297+ then (aB != b)
12611298 else false)
12621299 then throw("Wrong type")
12631300 else {
1264- let gj = aJ(Address(fromBase58String(au)), aA)
1265- let aw = gj._1
1266- let ax = gj._2
1267- let gk = gj._3
1268- let gl = gj._4
1269- let aH = gj._5
1270-[IntegerEntry((au + F), gc), IntegerEntry((au + G), gd), IntegerEntry((au + H), ge), IntegerEntry((au + I), gf), IntegerEntry((au + J), gg), IntegerEntry((au + K), gh), IntegerEntry((au + C), 0), IntegerEntry((au + D), 0), StringEntry((N + au), aA), StringEntry((aH + O), au), BooleanEntry((au + E), gi)]
1301+ let gm = aK(Address(fromBase58String(av)), aB)
1302+ let ax = gm._1
1303+ let ay = gm._2
1304+ let gn = gm._3
1305+ let go = gm._4
1306+ let aI = gm._5
1307+[IntegerEntry((av + F), gf), IntegerEntry((av + G), gg), IntegerEntry((av + H), gh), IntegerEntry((av + I), gi), IntegerEntry((av + J), gj), IntegerEntry((av + K), gk), IntegerEntry((av + C), 0), IntegerEntry((av + D), 0), StringEntry((N + av), aB), StringEntry((aI + O), av), BooleanEntry((av + E), gl)]
12711308 })
12721309
12731310
1274-@Verifier(gm)
1275-func gn () = sigVerify(gm.bodyBytes, gm.proofs[0], gm.senderPublicKey)
1311+@Verifier(gp)
1312+func gq () = sigVerify(gp.bodyBytes, gp.proofs[0], gp.senderPublicKey)
12761313
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "capNoLoan"
99
1010 let d = "capLoan"
1111
1212 let e = "stopLossNoLoan"
1313
1414 let f = "stopLossLoan"
1515
1616 let g = "loan"
1717
1818 let h = "noLoan"
1919
2020 let i = "noFee"
2121
2222 let j = 100000000
2323
2424 let k = 10000000000
2525
2626 let l = toBigInt(10000000000000000)
2727
2828 let m = 1000000
2929
3030 let n = "A_asset_balance"
3131
3232 let o = "B_asset_balance"
3333
3434 let p = "A_asset_id"
3535
3636 let q = "B_asset_id"
3737
3838 let r = "share_asset_id"
3939
4040 let s = "share_asset_supply"
4141
4242 let t = "commission"
4343
44-let u = "_user_position"
44+let u = "_userPosition"
4545
46-let v = "_user_position_pool"
46+let v = "_userPositionPool"
4747
48-let w = "_user_position_borrow_amount"
48+let w = "_userPositionBorrowAmount"
4949
50-let x = "_user_position_borrow_asset_id"
50+let x = "_userPositionBorrowAssetId"
5151
52-let y = "_user_position_number"
52+let y = "_userPositionNumber"
5353
54-let z = "_user_position_interest"
54+let z = "_userPositionInterest"
5555
56-let A = "_pool_total"
56+let A = "_poolTotal"
5757
58-let B = "_pool_total_loan"
58+let B = "_poolTotalLoan"
5959
60-let C = "_pool_interest_loan"
60+let C = "_poolInterestLoan"
6161
62-let D = "_pool_interest_no_loan"
62+let D = "_poolInterestNoLoan"
6363
64-let E = "_pool_can_borrow"
64+let E = "_poolCanBorrow"
6565
66-let F = "_axly_fee_without_loan"
66+let F = "_axlyFeeNoLoan"
6767
68-let G = "_axly_fee_with_loan"
68+let G = "_axlyFeeWithLoan"
6969
70-let H = "_axly_fee_cap_with_loan"
70+let H = "_axlyFeeCapWithLoan"
7171
72-let I = "_axly_fee_cap_no_loan"
72+let I = "_axlyFeeCapNoLoan"
7373
74-let J = "_axly_fee_stoploss_with_loan"
74+let J = "_axlyFeeStoplossWithLoan"
7575
76-let K = "_axly_fee_stoploss_no_loan"
76+let K = "_axlyFeeStoplossNoLoan"
7777
7878 let L = "_request_id"
7979
8080 let M = "requests_iter"
8181
8282 let N = "pool_"
8383
84-let O = "_pool_share_id"
84+let O = "_poolShareId"
8585
86-let P = "_pool_cap_change"
86+let P = "_poolCapChange"
8787
8888 let Q = "last_price"
8989
9090 let R = "_twap5B"
9191
92-let S = "_stop_loss"
92+let S = "_stopLoss"
9393
9494 let T = "axly_money_box"
9595
9696 let U = "swopfi_farming_addr"
9797
9898 let V = "lend_service_addr"
9999
100100 let W = "admin_call_pub_key"
101101
102102 let X = "price_oracle"
103103
104104 let Y = "exchange_contract"
105105
106106 let Z = "wx_swap_contract"
107107
108108 let aa = "swop_id"
109109
110110 let ab = "wx_id"
111111
112112 let ac = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "No axly moneyBox address")))
113113
114114 let ad = Address(fromBase58String(valueOrErrorMessage(getString(this, Y), "No exchange contract address")))
115115
116116 let ae = Address(fromBase58String(valueOrErrorMessage(getString(this, X), "No price oracle address")))
117117
118118 let af = Address(fromBase58String(valueOrErrorMessage(getString(this, Z), "No wx swap address")))
119119
120120 let ag = fromBase58String(valueOrErrorMessage(getString(this, aa), "No swop id"))
121121
122122 let ah = fromBase58String(valueOrErrorMessage(getString(this, ab), "No wx id"))
123123
124-func ai () = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "Can't get lend service addr")))
124+func ai () = throw("Wrong pool type")
125125
126126
127-func aj () = addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, W), "Can't get admin addr")))
127+func aj () = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "Can't get lend service addr")))
128128
129129
130-func ak (al) = if ((al.caller == aj()))
130+func ak () = addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, W), "Can't get admin addr")))
131+
132+
133+func al (am) = if ((am.caller == ak()))
131134 then unit
132135 else throw("Only admin can call this function")
133136
134137
135-func am (al) = if ((al.caller == this))
138+func an (am) = if ((am.caller == this))
136139 then unit
137140 else throw("Only contract itself can call this function")
138141
139142
140-func an (al) = if ((al.caller == ai()))
143+func ao (am) = if ((am.caller == aj()))
141144 then unit
142145 else throw("Only land contract can call this function")
143146
144147
145-func ao (ap) = {
146- let aq = ap
147- if ($isInstanceOf(aq, "ByteVector"))
148+func ap (aq) = {
149+ let ar = aq
150+ if ($isInstanceOf(ar, "ByteVector"))
148151 then {
149- let ar = aq
150- assetBalance(this, ar)
152+ let as = ar
153+ assetBalance(this, as)
151154 }
152- else if ($isInstanceOf(aq, "Unit"))
155+ else if ($isInstanceOf(ar, "Unit"))
153156 then {
154- let as = aq
157+ let at = ar
155158 wavesBalance(this).available
156159 }
157160 else throw("Match error")
158161 }
159162
160163
161-func at (au) = $Tuple2(valueOrErrorMessage(getInteger(au, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(au, o), "Can't get pool B asset balance"))
164+func au (av) = $Tuple2(valueOrErrorMessage(getInteger(av, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(av, o), "Can't get pool B asset balance"))
162165
163166
164-func av (au,aw,ax) = $Tuple2({
165- let ay = invoke(au, "getAccBalanceWrapperREADONLY", [aw], nil)
166- if ($isInstanceOf(ay, "Int"))
167- then ay
168- else throw(($getType(ay) + " couldn't be cast to Int"))
167+func aw (av,ax,ay) = $Tuple2({
168+ let az = invoke(av, "getAccBalanceWrapperREADONLY", [ax], nil)
169+ if ($isInstanceOf(az, "Int"))
170+ then az
171+ else throw(($getType(az) + " couldn't be cast to Int"))
169172 }, {
170- let ay = invoke(au, "getAccBalanceWrapperREADONLY", [ax], nil)
171- if ($isInstanceOf(ay, "Int"))
172- then ay
173- else throw(($getType(ay) + " couldn't be cast to Int"))
173+ let az = invoke(av, "getAccBalanceWrapperREADONLY", [ay], nil)
174+ if ($isInstanceOf(az, "Int"))
175+ then az
176+ else throw(($getType(az) + " couldn't be cast to Int"))
174177 })
175178
176179
177-func az (au,aA,aw,ax) = if ((aA == a))
178- then at(au)
179- else if ((aA == b))
180- then av(au, aw, ax)
181- else throw("Wrong pool type")
180+func aA (av,aB,ax,ay) = if ((aB == a))
181+ then au(av)
182+ else if ((aB == b))
183+ then aw(av, ax, ay)
184+ else ai()
182185
183186
184-func aB (au) = {
185- let aC = at(au)
186- if ((aC == aC))
187+func aC (av) = {
188+ let aD = au(av)
189+ if ((aD == aD))
187190 then {
188- let aD = aC._2
189- let aE = aC._1
190- $Tuple5(valueOrErrorMessage(getString(au, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(au, q), "Can't get pool B asset id"), aE, aD, valueOrErrorMessage(getString(au, r), "Can't get share asset id"))
191+ let aE = aD._2
192+ let aF = aD._1
193+ $Tuple5(valueOrErrorMessage(getString(av, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(av, q), "Can't get pool B asset id"), aF, aE, valueOrErrorMessage(getString(av, r), "Can't get share asset id"))
191194 }
192195 else throw("Strict value is not equal to itself.")
193196 }
194197
195198
196-func aF (au) = {
197- let aG = {
198- let ay = invoke(au, "getPoolConfigWrapperREADONLY", nil, nil)
199- if ($isInstanceOf(ay, "List[Any]"))
200- then ay
201- else throw(($getType(ay) + " couldn't be cast to List[Any]"))
199+func aG (av) = {
200+ let aH = {
201+ let az = invoke(av, "getPoolConfigWrapperREADONLY", nil, nil)
202+ if ($isInstanceOf(az, "List[Any]"))
203+ then az
204+ else throw(($getType(az) + " couldn't be cast to List[Any]"))
202205 }
203- if ((aG == aG))
206+ if ((aH == aH))
204207 then {
205- let aw = valueOrErrorMessage({
206- let ay = aG[4]
207- if ($isInstanceOf(ay, "String"))
208- then ay
208+ let ax = valueOrErrorMessage({
209+ let az = aH[4]
210+ if ($isInstanceOf(az, "String"))
211+ then az
209212 else unit
210213 }, "Can't get pool A asset id")
211- let ax = valueOrErrorMessage({
212- let ay = aG[5]
213- if ($isInstanceOf(ay, "String"))
214- then ay
214+ let ay = valueOrErrorMessage({
215+ let az = aH[5]
216+ if ($isInstanceOf(az, "String"))
217+ then az
215218 else unit
216219 }, "Can't get pool B asset id")
217- let aH = valueOrErrorMessage({
218- let ay = aG[3]
219- if ($isInstanceOf(ay, "String"))
220- then ay
220+ let aI = valueOrErrorMessage({
221+ let az = aH[3]
222+ if ($isInstanceOf(az, "String"))
223+ then az
221224 else unit
222225 }, "Can't get pool LP asset id")
223- let aI = av(au, aw, ax)
224- if ((aI == aI))
226+ let aJ = aw(av, ax, ay)
227+ if ((aJ == aJ))
225228 then {
226- let aD = aI._2
227- let aE = aI._1
228- $Tuple5(aw, ax, aE, aD, aH)
229+ let aE = aJ._2
230+ let aF = aJ._1
231+ $Tuple5(ax, ay, aF, aE, aI)
229232 }
230233 else throw("Strict value is not equal to itself.")
231234 }
232235 else throw("Strict value is not equal to itself.")
233236 }
234237
235238
236-func aJ (au,aA) = if ((aA == a))
237- then aB(au)
238- else if ((aA == b))
239- then aF(au)
240- else throw("Wrong pool type")
239+func aK (av,aB) = if ((aB == a))
240+ then aC(av)
241+ else if ((aB == b))
242+ then aG(av)
243+ else ai()
241244
242245
243-func aK (au,aA,aH) = if ((aA == a))
244- then valueOrErrorMessage(getInteger(au, s), "Can't get share asset supply")
245- else if ((aA == b))
246- then valueOrErrorMessage(assetInfo(fromBase58String(aH)), "Wrong ShareId").quantity
247- else throw("Wrong pool type")
246+func aL (av,aB,aI) = if ((aB == a))
247+ then valueOrErrorMessage(getInteger(av, s), "Can't get share asset supply")
248+ else if ((aB == b))
249+ then valueOrErrorMessage(assetInfo(fromBase58String(aI)), "Wrong ShareId").quantity
250+ else ai()
248251
249252
250-func aL (aM) = valueOrElse(getInteger(this, (aM + A)), 0)
253+func aM (aN) = valueOrElse(getInteger(this, (aN + A)), 0)
251254
252255
253-func aN (aM) = valueOrElse(getInteger(this, (aM + B)), 0)
256+func aO (aN) = valueOrElse(getInteger(this, (aN + B)), 0)
254257
255258
256-func aO (aP) = (valueOrElse(getInteger(this, (aP + y)), 0) + 1)
259+func aP (aQ) = (valueOrElse(getInteger(this, (aQ + y)), 0) + 1)
257260
258261
259-func aQ (aM,aR) = if ((aR == d))
260- then getIntegerValue(this, (aM + I))
261- else if ((aR == c))
262- then getIntegerValue(this, (aM + H))
263- else if ((aR == g))
264- then getIntegerValue(this, (aM + G))
265- else if ((aR == h))
266- then getIntegerValue(this, (aM + F))
267- else if ((aR == i))
262+func aR (aN,aS) = if ((aS == d))
263+ then getIntegerValue(this, (aN + I))
264+ else if ((aS == c))
265+ then getIntegerValue(this, (aN + H))
266+ else if ((aS == g))
267+ then getIntegerValue(this, (aN + G))
268+ else if ((aS == h))
269+ then getIntegerValue(this, (aN + F))
270+ else if ((aS == i))
268271 then 0
269272 else throw("Wrong fee type")
270273
271274
272-func aS () = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "Can't get swopfi farming addr")))
275+func aT () = Address(fromBase58String(valueOrErrorMessage(getString(this, U), "Can't get swopfi farming addr")))
273276
274277
275-func aT (au) = {
276- let aU = Address(fromBase58String(valueOrErrorMessage(getString(au, "%s__factoryContract"), "Can't get WX factory contract addr")))
277- let aV = split(valueOrErrorMessage(getString(aU, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
278- Address(fromBase58String(aV[1]))
278+func aU (av) = {
279+ let aV = Address(fromBase58String(valueOrErrorMessage(getString(av, "%s__factoryContract"), "Can't get WX factory contract addr")))
280+ let aW = split(valueOrErrorMessage(getString(aV, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
281+ Address(fromBase58String(aW[1]))
279282 }
280283
281284
282-func aW (ap) = {
283- let aq = ap
284- if ($isInstanceOf(aq, "ByteVector"))
285+func aX (aq) = {
286+ let ar = aq
287+ if ($isInstanceOf(ar, "ByteVector"))
285288 then {
286- let ar = aq
287- toBase58String(ar)
289+ let as = ar
290+ toBase58String(as)
288291 }
289- else if ($isInstanceOf(aq, "Unit"))
292+ else if ($isInstanceOf(ar, "Unit"))
290293 then {
291- let as = aq
294+ let at = ar
292295 "WAVES"
293296 }
294297 else throw("Not Asset id")
295298 }
296299
297300
298-func aX (ap) = if ((ap == "WAVES"))
301+func aY (aq) = if ((aq == "WAVES"))
299302 then unit
300- else fromBase58String(ap)
303+ else fromBase58String(aq)
301304
302305
303-func aY (ap) = if ((ap == "WAVES"))
306+func aZ (aq) = if ((aq == "WAVES"))
304307 then 8
305308 else {
306- let aq = assetInfo(fromBase58String(ap))
307- if ($isInstanceOf(aq, "Asset"))
309+ let ar = assetInfo(fromBase58String(aq))
310+ if ($isInstanceOf(ar, "Asset"))
308311 then {
309- let aZ = aq
310- aZ.decimals
312+ let ba = ar
313+ ba.decimals
311314 }
312315 else throw("Can't find asset")
313316 }
314317
315318
316-func ba (ap) = pow(10, 0, aY(ap), 0, 0, DOWN)
319+func bb (aq) = pow(10, 0, aZ(aq), 0, 0, DOWN)
317320
318321
319-func bb (bc) = {
320- func bd (be,ap) = {
321- let bf = getIntegerValue(ae, (ap + R))
322- (be :+ bf)
322+func bc (bd) = {
323+ func be (bf,aq) = {
324+ let bg = getIntegerValue(ae, (aq + R))
325+ (bf :+ bg)
323326 }
324327
325- let bg = bc
326- let bh = size(bg)
327- let bi = nil
328- func bj (bk,bl) = if ((bl >= bh))
329- then bk
330- else bd(bk, bg[bl])
328+ let bh = bd
329+ let bi = size(bh)
330+ let bj = nil
331+ func bk (bl,bm) = if ((bm >= bi))
332+ then bl
333+ else be(bl, bh[bm])
331334
332- func bm (bk,bl) = if ((bl >= bh))
333- then bk
335+ func bn (bl,bm) = if ((bm >= bi))
336+ then bl
334337 else throw("List size exceeds 50")
335338
336- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
339+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
337340 }
338341
339342
340-func bn (aH) = {
341- let aM = valueOrErrorMessage(getString(this, (aH + O)), "Can't find pool addr by share id")
342- let au = Address(fromBase58String(aM))
343- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
344- let bp = aJ(au, bo)
345- let aw = bp._1
346- let ax = bp._2
347- let bq = bp._3
348- let br = bp._4
349- let bs = getIntegerValue(ae, (aw + R))
343+func bo (aI) = {
344+ let aN = valueOrErrorMessage(getString(this, (aI + O)), "Can't find pool addr by share id")
345+ let av = Address(fromBase58String(aN))
346+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
347+ let bq = aK(av, bp)
348+ let ax = bq._1
349+ let ay = bq._2
350+ let br = bq._3
351+ let bs = bq._4
350352 let bt = getIntegerValue(ae, (ax + R))
351- let bu = aK(au, bo, aH)
352- let bv = pow(10, 0, aY(aw), 0, 0, DOWN)
353- let bw = pow(10, 0, aY(ax), 0, 0, DOWN)
354- let bx = pow(10, 0, aY(aH), 0, 0, DOWN)
355- let by = (fraction(bq, bs, bv) + fraction(br, bt, bw))
356- fraction(by, bx, bu)
353+ let bu = getIntegerValue(ae, (ay + R))
354+ let bv = aL(av, bp, aI)
355+ let bw = pow(10, 0, aZ(ax), 0, 0, DOWN)
356+ let bx = pow(10, 0, aZ(ay), 0, 0, DOWN)
357+ let by = pow(10, 0, aZ(aI), 0, 0, DOWN)
358+ let bz = (fraction(br, bt, bw) + fraction(bs, bu, bx))
359+ fraction(bz, by, bv)
357360 }
358361
359362
360-func bz (bA) = {
361- func bd (be,aH) = (be :+ bn(aH))
363+func bA (bB) = {
364+ func be (bf,aI) = (bf :+ bo(aI))
362365
363- let bg = bA
364- let bh = size(bg)
365- let bi = nil
366- func bj (bk,bl) = if ((bl >= bh))
367- then bk
368- else bd(bk, bg[bl])
366+ let bh = bB
367+ let bi = size(bh)
368+ let bj = nil
369+ func bk (bl,bm) = if ((bm >= bi))
370+ then bl
371+ else be(bl, bh[bm])
369372
370- func bm (bk,bl) = if ((bl >= bh))
371- then bk
373+ func bn (bl,bm) = if ((bm >= bi))
374+ then bl
372375 else throw("List size exceeds 20")
373376
374- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
377+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
375378 }
376379
377380
378-func bB (aw,ax,aH,bC) = {
379- let bD = bb([aw, ax])
380- let bE = bn(aH)
381- let bF = ([toString(bD[0]), toString(bD[1]), toString(bE)] ++ bC)
382-[StringEntry(Q, makeString(bF, ","))]
381+func bC (ax,ay,aI,bD) = {
382+ let bE = bc([ax, ay])
383+ let bF = bo(aI)
384+ let bG = ([toString(bE[0]), toString(bE[1]), toString(bF)] ++ bD)
385+[StringEntry(Q, makeString(bG, ","))]
383386 }
384387
385388
386-func bG (bo,au,bH,aw,bI,ax,aE,aD) = if ((bo == a))
389+func bH (bp,av,bI,ax,bJ,ay,aF,aE) = if ((bp == a))
387390 then {
388- let bJ = {
389- let ay = invoke(au, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(bH), toString(bI)]], nil)
390- if ($isInstanceOf(ay, "List[Any]"))
391- then ay
392- else throw(($getType(ay) + " couldn't be cast to List[Any]"))
391+ let bK = {
392+ let az = invoke(av, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(bI), toString(bJ)]], nil)
393+ if ($isInstanceOf(az, "List[Any]"))
394+ then az
395+ else throw(($getType(az) + " couldn't be cast to List[Any]"))
393396 }
394- if ((bJ == bJ))
397+ if ((bK == bK))
395398 then $Tuple5({
396- let ay = bJ[3]
397- if ($isInstanceOf(ay, "Int"))
398- then ay
399- else throw(($getType(ay) + " couldn't be cast to Int"))
399+ let az = bK[3]
400+ if ($isInstanceOf(az, "Int"))
401+ then az
402+ else throw(($getType(az) + " couldn't be cast to Int"))
400403 }, {
401- let ay = bJ[4]
402- if ($isInstanceOf(ay, "Int"))
403- then ay
404- else throw(($getType(ay) + " couldn't be cast to Int"))
404+ let az = bK[4]
405+ if ($isInstanceOf(az, "Int"))
406+ then az
407+ else throw(($getType(az) + " couldn't be cast to Int"))
405408 }, {
406- let ay = bJ[1]
407- if ($isInstanceOf(ay, "Int"))
408- then ay
409- else throw(($getType(ay) + " couldn't be cast to Int"))
410- }, aW(bJ[2]), {
411- let ay = bJ[0]
412- if ($isInstanceOf(ay, "Int"))
413- then ay
414- else throw(($getType(ay) + " couldn't be cast to Int"))
409+ let az = bK[1]
410+ if ($isInstanceOf(az, "Int"))
411+ then az
412+ else throw(($getType(az) + " couldn't be cast to Int"))
413+ }, aX(bK[2]), {
414+ let az = bK[0]
415+ if ($isInstanceOf(az, "Int"))
416+ then az
417+ else throw(($getType(az) + " couldn't be cast to Int"))
415418 })
416419 else throw("Strict value is not equal to itself.")
417420 }
418- else {
419- let bK = $Tuple2(split({
420- let ay = invoke(au, "evaluatePutByAmountAssetREADONLY", [bH], nil)
421- if ($isInstanceOf(ay, "String"))
422- then ay
423- else throw(($getType(ay) + " couldn't be cast to String"))
424- }, "__"), split({
425- let ay = invoke(au, "evaluatePutByPriceAssetREADONLY", [bI], nil)
426- if ($isInstanceOf(ay, "String"))
427- then ay
428- else throw(($getType(ay) + " couldn't be cast to String"))
429- }, "__"))
430- if ((bK == bK))
431- then {
432- let bL = bK._2
433- let bM = bK._1
434- let bN = parseIntValue(bM[1])
435- let bO = parseIntValue(bL[1])
436- if ((bO > bN))
437- then {
438- let bP = parseIntValue(bM[8])
439- $Tuple5(bH, bP, (bI - bP), ax, bO)
440- }
441- else {
442- let bP = parseIntValue(bL[7])
443- $Tuple5(bP, bI, (bH - bP), aw, bN)
444- }
445- }
446- else throw("Strict value is not equal to itself.")
447- }
421+ else if ((bp == b))
422+ then {
423+ let bL = $Tuple2(split({
424+ let az = invoke(av, "evaluatePutByAmountAssetREADONLY", [bI], nil)
425+ if ($isInstanceOf(az, "String"))
426+ then az
427+ else throw(($getType(az) + " couldn't be cast to String"))
428+ }, "__"), split({
429+ let az = invoke(av, "evaluatePutByPriceAssetREADONLY", [bJ], nil)
430+ if ($isInstanceOf(az, "String"))
431+ then az
432+ else throw(($getType(az) + " couldn't be cast to String"))
433+ }, "__"))
434+ if ((bL == bL))
435+ then {
436+ let bM = bL._2
437+ let bN = bL._1
438+ let bO = parseIntValue(bN[1])
439+ let bP = parseIntValue(bM[1])
440+ if ((bP > bO))
441+ then {
442+ let bQ = parseIntValue(bN[8])
443+ $Tuple5(bI, bQ, (bJ - bQ), ay, bP)
444+ }
445+ else {
446+ let bQ = parseIntValue(bM[7])
447+ $Tuple5(bQ, bJ, (bI - bQ), ax, bO)
448+ }
449+ }
450+ else throw("Strict value is not equal to itself.")
451+ }
452+ else ai()
448453
449454
450-func bQ (au,bo,bH,aw,bI,ax) = {
451- let bR = [AttachedPayment(aX(aw), bH), AttachedPayment(aX(ax), bI)]
452- if ((bo == a))
453- then invoke(au, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bR)
454- else invoke(au, "put", [1000000, false], bR)
455+func bR (av,bp,bI,ax,bJ,ay) = {
456+ let bS = [AttachedPayment(aY(ax), bI), AttachedPayment(aY(ay), bJ)]
457+ if ((bp == a))
458+ then invoke(av, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bS)
459+ else if ((bp == b))
460+ then invoke(av, "put", [1000000, false], bS)
461+ else ai()
455462 }
456463
457464
458-func bS (au,bo,bP,bT) = {
459- let bR = [AttachedPayment(aX(bT), bP)]
460- if ((bo == a))
461- then invoke(au, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bR)
462- else invoke(au, "putOneTkn", [0, false], bR)
465+func bT (av,bp,bQ,bU) = {
466+ let bS = [AttachedPayment(aY(bU), bQ)]
467+ if ((bp == a))
468+ then invoke(av, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bS)
469+ else if ((bp == b))
470+ then invoke(av, "putOneTkn", [0, false], bS)
471+ else ai()
463472 }
464473
465474
466-func bU (aM,bo,aH,bV) = {
467- let bR = [AttachedPayment(fromBase58String(aH), bV)]
468- if ((bo == a))
469- then invoke(aS(), "lockShareTokens", [aM, 0], bR)
470- else invoke(aT(addressFromStringValue(aM)), "stake", nil, bR)
475+func bV (aN,bp,aI,bW) = {
476+ let bS = [AttachedPayment(fromBase58String(aI), bW)]
477+ if ((bp == a))
478+ then invoke(aT(), "lockShareTokens", [aN, 0], bS)
479+ else if ((bp == b))
480+ then invoke(aU(addressFromStringValue(aN)), "stake", nil, bS)
481+ else ai()
471482 }
472483
473484
474-func bW (aM,bo,aH,bV) = {
475- let bX = if ((bo == a))
476- then $Tuple3(aS(), "withdrawShareTokens", [aM, bV])
477- else if ((bo == b))
478- then $Tuple3(aT(Address(fromBase58String(aM))), "unstake", [aH, bV])
479- else throw("Wrong pool type")
480- let bY = bX._1
481- let bZ = bX._2
482- let ca = bX._3
483- let cb = invoke(bY, bZ, ca, nil)
484- if ((cb == cb))
485- then bV
485+func bX (aN,bp,aI,bW) = {
486+ let bY = if ((bp == a))
487+ then $Tuple3(aT(), "withdrawShareTokens", [aN, bW])
488+ else if ((bp == b))
489+ then $Tuple3(aU(Address(fromBase58String(aN))), "unstake", [aI, bW])
490+ else ai()
491+ let bZ = bY._1
492+ let ca = bY._2
493+ let cb = bY._3
494+ let cc = invoke(bZ, ca, cb, nil)
495+ if ((cc == cc))
496+ then bW
486497 else throw("Strict value is not equal to itself.")
487498 }
488499
489500
490-func cc (aM,cd,ce,aE,aD,cf,cg) = {
491- let au = Address(fromBase58String(aM))
492- let ch = 1000000
493- let ci = getIntegerValue(au, t)
494- let cj = fraction(cf, ch, (ch - ci), CEILING)
495- let ck = if ((cg == cd))
501+func cd (aN,ce,cf,aF,aE,cg,ch) = {
502+ let av = Address(fromBase58String(aN))
503+ let ci = 1000000
504+ let cj = getIntegerValue(av, t)
505+ let ck = fraction(cg, ci, (ci - cj), CEILING)
506+ let cl = if ((ch == ce))
496507 then {
497- let cl = fraction(cj, aD, (aE - cj), CEILING)
498- $Tuple2(cl, ce)
508+ let cm = fraction(ck, aE, (aF - ck), CEILING)
509+ $Tuple2(cm, cf)
499510 }
500511 else {
501- let cl = fraction(cj, aE, (aD - cj), CEILING)
502- $Tuple2(cl, cd)
512+ let cm = fraction(ck, aF, (aE - ck), CEILING)
513+ $Tuple2(cm, ce)
503514 }
504- let cl = ck._1
505- let cm = ck._2
506- $Tuple2(cm, cl)
515+ let cm = cl._1
516+ let cn = cl._2
517+ $Tuple2(cn, cm)
507518 }
508519
509520
510-func cn (aM,cd,ce,aE,aD,cf,cg) = {
511- let co = getIntegerValue(af, "%s__protocolFee")
512- let cp = getIntegerValue(af, "%s__poolFee")
513- let cq = toBigInt(100000000)
514- let cr = if ((cg == cd))
521+func co (aN,ce,cf,aF,aE,cg,ch) = {
522+ let cp = getIntegerValue(af, "%s__protocolFee")
523+ let cq = getIntegerValue(af, "%s__poolFee")
524+ let cr = toBigInt(100000000)
525+ let cs = if ((ch == ce))
515526 then {
516- let cl = fraction(cf, aD, (aE - cf))
517- $Tuple2(cl, ce)
527+ let cm = fraction(cg, aE, (aF - cg))
528+ $Tuple2(cm, cf)
518529 }
519530 else {
520- let cl = fraction(cf, aE, (aD - cf))
521- $Tuple2(cl, cd)
531+ let cm = fraction(cg, aF, (aE - cg))
532+ $Tuple2(cm, ce)
522533 }
523- let cl = cr._1
524- let cm = cr._2
525- let cs = toInt(fraction(toBigInt(cl), cq, (cq - toBigInt((co + cp))), CEILING))
526- $Tuple2(cm, cs)
534+ let cm = cs._1
535+ let cn = cs._2
536+ let ct = toInt(fraction(toBigInt(cm), cr, (cr - toBigInt((cp + cq))), CEILING))
537+ $Tuple2(cn, ct)
527538 }
528539
529540
530-func ct (aA,aM,cd,ce,aE,aD,cf,cg) = if ((aA == a))
541+func cu (bp,aN,ce,cf,aF,aE,cg,ch) = if ((bp == a))
531542 then {
532- let cu = cc(aM, cd, ce, aE, aD, cf, cg)
533- let cm = cu._1
534- let cl = cu._2
535- invoke(addressFromStringValue(aM), "callFunction", ["exchange", [toString(cf)]], [AttachedPayment(aX(cm), cl)])
543+ let cv = cd(aN, ce, cf, aF, aE, cg, ch)
544+ let cn = cv._1
545+ let cm = cv._2
546+ invoke(addressFromStringValue(aN), "callFunction", ["exchange", [toString(cg)]], [AttachedPayment(aY(cn), cm)])
536547 }
537- else {
538- let cv = cn(aM, cd, ce, aE, aD, cf, cg)
539- let cm = cv._1
540- let cl = cv._2
541- invoke(af, "swap", [cf, cg, toString(this)], [AttachedPayment(aX(cm), cl)])
542- }
548+ else if ((bp == b))
549+ then {
550+ let cw = co(aN, ce, cf, aF, aE, cg, ch)
551+ let cn = cw._1
552+ let cm = cw._2
553+ invoke(af, "swap", [cg, ch, toString(this)], [AttachedPayment(aY(cn), cm)])
554+ }
555+ else ai()
543556
544557
545-func cw (au,bo,aH,cx) = {
546- let cy = if ((bo == a))
558+func cx (av,bp,aI,cy) = {
559+ let cz = if ((bp == a))
547560 then {
548- let cb = {
549- let ay = invoke(au, "callFunction", ["withdrawREADONLY", [toString(cx)]], nil)
550- if ($isInstanceOf(ay, "(Int, Int)"))
551- then ay
552- else throw(($getType(ay) + " couldn't be cast to (Int, Int)"))
561+ let cc = {
562+ let az = invoke(av, "callFunction", ["withdrawREADONLY", [toString(cy)]], nil)
563+ if ($isInstanceOf(az, "(Int, Int)"))
564+ then az
565+ else throw(($getType(az) + " couldn't be cast to (Int, Int)"))
553566 }
554- if ((cb == cb))
555- then $Tuple2(cb._1, cb._2)
567+ if ((cc == cc))
568+ then $Tuple2(cc._1, cc._2)
556569 else throw("Strict value is not equal to itself.")
557570 }
558- else {
559- let cb = split({
560- let ay = invoke(au, "evaluateGetREADONLY", [aH, cx], nil)
561- if ($isInstanceOf(ay, "String"))
562- then ay
563- else throw(($getType(ay) + " couldn't be cast to String"))
564- }, "__")
565- if ((cb == cb))
566- then $Tuple2(parseIntValue(cb[1]), parseIntValue(cb[2]))
567- else throw("Strict value is not equal to itself.")
568- }
569- let cz = cy._1
570- let cA = cy._2
571- $Tuple2(cz, cA)
571+ else if ((bp == b))
572+ then {
573+ let cc = split({
574+ let az = invoke(av, "evaluateGetREADONLY", [aI, cy], nil)
575+ if ($isInstanceOf(az, "String"))
576+ then az
577+ else throw(($getType(az) + " couldn't be cast to String"))
578+ }, "__")
579+ if ((cc == cc))
580+ then $Tuple2(parseIntValue(cc[1]), parseIntValue(cc[2]))
581+ else throw("Strict value is not equal to itself.")
582+ }
583+ else ai()
584+ let cA = cz._1
585+ let cB = cz._2
586+ $Tuple2(cA, cB)
572587 }
573588
574589
575-func cB (aA,aM) = if ((aA == a))
590+func cC (bp,aN) = if ((bp == a))
576591 then {
577- let cC = ao(ag)
578- if ((cC == cC))
592+ let cD = ap(ag)
593+ if ((cD == cD))
579594 then {
580- let cb = invoke(aS(), "claim", [aM], nil)
581- if ((cb == cb))
595+ let cc = invoke(aT(), "claim", [aN], nil)
596+ if ((cc == cc))
582597 then {
583- let cD = ao(ag)
584- $Tuple2((cD - cC), ag)
598+ let cE = ap(ag)
599+ $Tuple2((cE - cD), ag)
585600 }
586601 else throw("Strict value is not equal to itself.")
587602 }
588603 else throw("Strict value is not equal to itself.")
589604 }
590- else if ((aA == b))
605+ else if ((bp == b))
591606 then {
592- let cC = ao(ah)
593- if ((cC == cC))
607+ let cD = ap(ah)
608+ if ((cD == cD))
594609 then {
595- let cb = invoke(aT(Address(fromBase58String(aM))), "claimWX", [aM], nil)
596- if ((cb == cb))
610+ let cc = invoke(aU(Address(fromBase58String(aN))), "claimWX", [aN], nil)
611+ if ((cc == cc))
597612 then {
598- let cD = ao(ah)
599- $Tuple2((cD - cC), ah)
613+ let cE = ap(ah)
614+ $Tuple2((cE - cD), ah)
600615 }
601616 else throw("Strict value is not equal to itself.")
602617 }
603618 else throw("Strict value is not equal to itself.")
604619 }
605- else throw("Wrong pool type")
620+ else ai()
606621
607622
608-func cE (bo,aM,aR,bH,aw,bI,ax,aE,aD,cF) = {
609- let cG = ao(fromBase58String(cF))
610- if ((cG == cG))
623+func cF (bp,aN,aS,bI,ax,bJ,ay,aF,aE,cG) = {
624+ let cH = ap(fromBase58String(cG))
625+ if ((cH == cH))
611626 then {
612- let au = addressFromStringValue(aM)
613- let cH = if (if ((bH > 0))
614- then (bI > 0)
627+ let av = addressFromStringValue(aN)
628+ let cI = if (if ((bI > 0))
629+ then (bJ > 0)
615630 else false)
616631 then {
617- let cI = bG(bo, au, bH, aw, bI, ax, aE, aD)
618- let cJ = cI._1
619- let cK = cI._2
620- let cL = cI._3
621- let cM = cI._4
622- let cb = bQ(au, bo, cJ, aw, cK, ax)
623- if ((cb == cb))
624- then $Tuple2(cL, cM)
632+ let cJ = bH(bp, av, bI, ax, bJ, ay, aF, aE)
633+ let cK = cJ._1
634+ let cL = cJ._2
635+ let cM = cJ._3
636+ let cN = cJ._4
637+ let cc = bR(av, bp, cK, ax, cL, ay)
638+ if ((cc == cc))
639+ then $Tuple2(cM, cN)
625640 else throw("Strict value is not equal to itself.")
626641 }
627- else if ((bH > 0))
628- then $Tuple2(bH, aw)
629- else if ((bI > 0))
630- then $Tuple2(bI, ax)
642+ else if ((bI > 0))
643+ then $Tuple2(bI, ax)
644+ else if ((bJ > 0))
645+ then $Tuple2(bJ, ay)
631646 else throw("pmts must be > 0")
632- let cL = cH._1
633- let cM = cH._2
634- let cb = if ((cL > 0))
635- then bS(au, bo, cL, cM)
647+ let cM = cI._1
648+ let cN = cI._2
649+ let cc = if ((cM > 0))
650+ then bT(av, bp, cM, cN)
636651 else nil
637- if ((cb == cb))
652+ if ((cc == cc))
638653 then {
639- let cN = ao(fromBase58String(cF))
640- let cO = (cN - cG)
641- let cP = fraction(cO, aQ(aM, aR), m)
642- let cQ = (cO - cP)
643- if ((0 >= cQ))
654+ let cO = ap(fromBase58String(cG))
655+ let cP = (cO - cH)
656+ let cQ = fraction(cP, aR(aN, aS), m)
657+ let cR = (cP - cQ)
658+ if ((0 >= cR))
644659 then throw("amount of staked sharetokens must be > 0")
645660 else {
646- let cR = bU(aM, bo, cF, cQ)
647- if ((cR == cR))
648- then $Tuple2(cQ, cP)
661+ let cS = bV(aN, bp, cG, cR)
662+ if ((cS == cS))
663+ then $Tuple2(cR, cQ)
649664 else throw("Strict value is not equal to itself.")
650665 }
651666 }
652667 else throw("Strict value is not equal to itself.")
653668 }
654669 else throw("Strict value is not equal to itself.")
655670 }
656671
657672
658-func cS (aM,aP,cT,cP,cU,aH,aA,cV) = {
659- let cW = aL(aM)
660- let cX = aN(aM)
661- let cY = if (cV)
662- then $Tuple2(getIntegerValue(this, (aM + C)), (cX + cT))
663- else $Tuple2(getIntegerValue(this, (aM + D)), cX)
664- let cZ = cY._1
665- let da = cY._2
666-[IntegerEntry((aM + A), (cW + cT)), IntegerEntry((aM + B), da), IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + u), cT), IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + z), cZ), StringEntry((((aP + "_") + toString(cU)) + v), aM), IntegerEntry((aP + y), cU), ScriptTransfer(ac, cP, fromBase58String(aH))]
673+func cT (aN,aQ,cU,cQ,cV,aI,aB,cW) = {
674+ let cX = aM(aN)
675+ let cY = aO(aN)
676+ let cZ = if (cW)
677+ then $Tuple2(getIntegerValue(this, (aN + C)), (cY + cU))
678+ else $Tuple2(getIntegerValue(this, (aN + D)), cY)
679+ let da = cZ._1
680+ let db = cZ._2
681+[IntegerEntry((aN + A), (cX + cU)), IntegerEntry((aN + B), db), IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + u), cU), IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + z), da), StringEntry((((aQ + "_") + toString(cV)) + v), aN), IntegerEntry((aQ + y), cV), ScriptTransfer(ac, cQ, fromBase58String(aI))]
667682 }
668683
669684
670-func db (dc,dd,de,df,dg,dh,di,dj,dk,dl) = {
671- let dm = ao(aX(dc))
672- if ((dm == dm))
685+func dc (dd,de,df,dg,dh,di,dj,dk,dl,dm) = {
686+ let dn = ap(aY(dd))
687+ if ((dn == dn))
673688 then {
674- let cb = invoke(ad, "swap", [df, dg, dh, di, dj, dk, dl], [AttachedPayment(de, dd)])
675- if ((cb == cb))
676- then (ao(aX(dc)) - dm)
689+ let cc = invoke(ad, "swap", [dg, dh, di, dj, dk, dl, dm], [AttachedPayment(df, de)])
690+ if ((cc == cc))
691+ then (ap(aY(dd)) - dn)
677692 else throw("Strict value is not equal to itself.")
678693 }
679694 else throw("Strict value is not equal to itself.")
680695 }
681696
682697
683-func dn (dc,dd,de,do,dp,dl) = {
684- let dm = ao(aX(dc))
685- if ((dm == dm))
698+func do (dd,de,df,dp,dq,dm) = {
699+ let dn = ap(aY(dd))
700+ if ((dn == dn))
686701 then {
687- let cb = invoke(ad, "puzzleSwap", [do, dp, dl], [AttachedPayment(de, dd)])
688- if ((cb == cb))
689- then (ao(aX(dc)) - dm)
702+ let cc = invoke(ad, "puzzleSwap", [dp, dq, dm], [AttachedPayment(df, de)])
703+ if ((cc == cc))
704+ then (ap(aY(dd)) - dn)
690705 else throw("Strict value is not equal to itself.")
691706 }
692707 else throw("Strict value is not equal to itself.")
693708 }
694709
695710
696-func dq (dc,dd,de,dr,ds,dt,du,dv,dw,dl) = {
697- let dm = ao(aX(dc))
698- if ((dm == dm))
711+func dr (dd,de,df,ds,dt,du,dv,dw,dx,dm) = {
712+ let dn = ap(aY(dd))
713+ if ((dn == dn))
699714 then {
700- let cb = invoke(ad, "swopfiSwap", [dr, ds, dt, du, dv, dw, dl], [AttachedPayment(de, dd)])
701- if ((cb == cb))
702- then (ao(aX(dc)) - dm)
715+ let cc = invoke(ad, "swopfiSwap", [ds, dt, du, dv, dw, dx, dm], [AttachedPayment(df, de)])
716+ if ((cc == cc))
717+ then (ap(aY(dd)) - dn)
703718 else throw("Strict value is not equal to itself.")
704719 }
705720 else throw("Strict value is not equal to itself.")
706721 }
707722
708723
709-func dx (aM,bo,dy,dz) = {
710- let au = Address(fromBase58String(aM))
711- let dA = aJ(au, bo)
712- let dB = dA._1
713- let dC = dA._2
714- let aE = dA._3
715- let aD = dA._4
716- let aH = dA._5
717- if (if ((dy != dB))
718- then (dy != dC)
724+func dy (aN,bp,dz,dA) = {
725+ let av = Address(fromBase58String(aN))
726+ let dB = aK(av, bp)
727+ let dC = dB._1
728+ let dD = dB._2
729+ let aF = dB._3
730+ let aE = dB._4
731+ let aI = dB._5
732+ if (if ((dz != dC))
733+ then (dz != dD)
719734 else false)
720735 then throw("Wrong asset")
721736 else {
722- let dD = if ((dy == dB))
723- then $Tuple2(dz, 0)
724- else $Tuple2(0, dz)
725- let bH = dD._1
726- let bI = dD._2
727- let dE = cE(bo, aM, i, bH, dB, bI, dC, aE, aD, aH)
728- let cT = dE._1
729- let dF = dE._2
730- let dG = valueOrElse(getInteger(this, (aM + C)), 0)
731- let dH = valueOrElse(getInteger(this, (aM + D)), 0)
732- let dI = aL(aM)
733- let dJ = aN(aM)
734- let dK = fraction(dJ, j, dI)
735- let dL = fraction(cT, dK, j)
736- let dM = (cT - dL)
737- let dN = if ((dJ > 0))
738- then (dG + fraction(dL, k, dJ))
737+ let dE = if ((dz == dC))
738+ then $Tuple2(dA, 0)
739+ else $Tuple2(0, dA)
740+ let bI = dE._1
741+ let bJ = dE._2
742+ let dF = cF(bp, aN, i, bI, dC, bJ, dD, aF, aE, aI)
743+ let cU = dF._1
744+ let dG = dF._2
745+ let dH = valueOrElse(getInteger(this, (aN + C)), 0)
746+ let dI = valueOrElse(getInteger(this, (aN + D)), 0)
747+ let dJ = aM(aN)
748+ let dK = aO(aN)
749+ let dL = fraction(dK, j, dJ)
750+ let dM = fraction(cU, dL, j)
751+ let dN = (cU - dM)
752+ let dO = if ((dK > 0))
753+ then (dH + fraction(dM, k, dK))
739754 else 0
740- let dO = if (((dI - dJ) > 0))
741- then (dH + fraction(dM, k, (dI - dJ)))
755+ let dP = if (((dJ - dK) > 0))
756+ then (dI + fraction(dN, k, (dJ - dK)))
742757 else 0
743- let dP = fraction(dL, aQ(aM, d), m)
744- let dQ = fraction(dM, aQ(aM, c), m)
745- let dR = bW(aM, bo, aH, (dP + dQ))
746- if ((dR == dR))
747- then ([IntegerEntry((aM + C), dN), IntegerEntry((aM + D), dO), IntegerEntry((aM + A), ((dI + cT) - dR)), IntegerEntry((aM + B), ((dJ + dL) - dP)), ScriptTransfer(ac, (dP + dQ), fromBase58String(aH))] ++ bB(dB, dC, aH, nil))
758+ let dQ = fraction(dM, aR(aN, d), m)
759+ let dR = fraction(dN, aR(aN, c), m)
760+ let dS = bX(aN, bp, aI, (dQ + dR))
761+ if ((dS == dS))
762+ then ([IntegerEntry((aN + C), dO), IntegerEntry((aN + D), dP), IntegerEntry((aN + A), ((dJ + cU) - dS)), IntegerEntry((aN + B), ((dK + dM) - dQ)), ScriptTransfer(ac, (dQ + dR), fromBase58String(aI))] ++ bC(dC, dD, aI, nil))
748763 else throw("Strict value is not equal to itself.")
749764 }
750765 }
751766
752767
753-func dS (aM,cx,dT,dU) = {
754- let au = Address(fromBase58String(aM))
755- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Unknown pool")
756- let dV = aJ(au, bo)
757- let cd = dV._1
758- let ce = dV._2
759- let aE = dV._3
760- let aD = dV._4
761- let aH = dV._5
762- let dW = ao(aX(cd))
763- if ((dW == dW))
768+func dT (aN,cy,dU,dV,dW) = {
769+ let av = Address(fromBase58String(aN))
770+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Unknown pool")
771+ let dX = aK(av, bp)
772+ let ce = dX._1
773+ let cf = dX._2
774+ let aF = dX._3
775+ let aE = dX._4
776+ let aI = dX._5
777+ let dY = ap(aY(ce))
778+ if ((dY == dY))
764779 then {
765- let dX = ao(aX(ce))
766- if ((dX == dX))
780+ let dZ = ap(aY(cf))
781+ if ((dZ == dZ))
767782 then {
768- let cb = if ((bo == a))
769- then invoke(au, "callFunction", ["withdraw", [toString(cx)]], nil)
770- else {
771- let cb = bW(aM, bo, aH, cx)
772- if ((cb == cb))
773- then invoke(au, "get", nil, [AttachedPayment(aX(aH), cx)])
783+ let cc = if ((bp == a))
784+ then {
785+ let cc = bX(aN, bp, aI, dW)
786+ if ((cc == cc))
787+ then invoke(av, "callFunction", ["withdraw", [toString(cy)]], nil)
774788 else throw("Strict value is not equal to itself.")
775789 }
776- if ((cb == cb))
790+ else if ((bp == b))
791+ then {
792+ let cc = bX(aN, bp, aI, (cy + dW))
793+ if ((cc == cc))
794+ then invoke(av, "get", nil, [AttachedPayment(aY(aI), cy)])
795+ else throw("Strict value is not equal to itself.")
796+ }
797+ else ai()
798+ if ((cc == cc))
777799 then {
778- let dY = ao(aX(cd))
779- let dZ = ao(aX(ce))
780- let ea = $Tuple2((dY - dW), (dZ - dX))
781- let eb = ea._1
782- let ec = ea._2
783- let ed = if ((dT > 0))
800+ let ea = ap(aY(ce))
801+ let eb = ap(aY(cf))
802+ let ec = $Tuple2((ea - dY), (eb - dZ))
803+ let ed = ec._1
804+ let ee = ec._2
805+ let ef = if ((dU > 0))
784806 then {
785- let ee = if (if ((dU == cd))
786- then (dT > eb)
807+ let eg = if (if ((dV == ce))
808+ then (dU > ed)
787809 else false)
788- then (dT - eb)
789- else if (if ((dU == ce))
790- then (dT > ec)
810+ then (dU - ed)
811+ else if (if ((dV == cf))
812+ then (dU > ee)
791813 else false)
792- then (dT - ec)
814+ then (dU - ee)
793815 else 0
794- let ef = if ((ee > 0))
795- then ct(bo, aM, cd, ce, (aE - eb), (aD - ec), ee, dU)
816+ let eh = if ((eg > 0))
817+ then cu(bp, aN, ce, cf, (aF - ed), (aE - ee), eg, dV)
796818 else nil
797- if ((ef == ef))
819+ if ((eh == eh))
798820 then {
799- let eg = ao(aX(cd))
800- let eh = ao(aX(ce))
801- if ((dU == cd))
802- then $Tuple2(((eg - dW) - dT), (eh - dX))
803- else $Tuple2((eg - dW), ((eh - dX) - dT))
821+ let ei = ap(aY(ce))
822+ let ej = ap(aY(cf))
823+ if ((dV == ce))
824+ then $Tuple2(((ei - dY) - dU), (ej - dZ))
825+ else $Tuple2((ei - dY), ((ej - dZ) - dU))
804826 }
805827 else throw("Strict value is not equal to itself.")
806828 }
807- else $Tuple2(eb, ec)
808- let ei = ed._1
809- let ej = ed._2
810- $Tuple7(ei, cd, ej, ce, dY, dZ, aH)
829+ else $Tuple2(ed, ee)
830+ let ek = ef._1
831+ let el = ef._2
832+ $Tuple7(ek, ce, el, cf, ea, eb, aI)
811833 }
812834 else throw("Strict value is not equal to itself.")
813835 }
814836 else throw("Strict value is not equal to itself.")
815837 }
816838 else throw("Strict value is not equal to itself.")
817839 }
818840
819841
820-func ek (aP,aM,el,em) = {
821- let en = valueOrErrorMessage(getInteger(this, (((((aM + "_") + aP) + "_") + el) + u)), "Unknown position")
822- let eo = getIntegerValue(this, (((((aM + "_") + aP) + "_") + el) + z))
823- let ep = if (em)
824- then getIntegerValue(this, (aM + C))
825- else getIntegerValue(this, (aM + D))
826- (en + fraction(en, (ep - eo), k))
842+func em (aQ,aN,en,eo) = {
843+ let ep = valueOrErrorMessage(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + u)), "Unknown position")
844+ let eq = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + en) + z))
845+ let er = if (eo)
846+ then getIntegerValue(this, (aN + C))
847+ else getIntegerValue(this, (aN + D))
848+ (ep + fraction(ep, (er - eq), k))
827849 }
828850
829851
830-func eq (aP,aM,el,er) = {
831- let en = valueOrErrorMessage(getInteger(this, (((((aM + "_") + aP) + "_") + el) + u)), "Unknown position")
832- let es = valueOrElse(getInteger(this, (((((aM + "_") + aP) + "_") + el) + w)), 0)
833- let cx = ek(aP, aM, el, (es > 0))
834- let et = aL(aM)
835- let eu = Address(fromBase58String(aP))
836- let dU = valueOrElse(getString(this, (((((aM + "_") + aP) + "_") + el) + x)), "")
837- let dT = if ((es > 0))
852+func es (aQ,aN,en,et) = {
853+ let ep = valueOrErrorMessage(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + u)), "Unknown position")
854+ let eu = valueOrElse(getInteger(this, (((((aN + "_") + aQ) + "_") + en) + w)), 0)
855+ let cy = em(aQ, aN, en, (eu > 0))
856+ let ev = aM(aN)
857+ let ew = Address(fromBase58String(aQ))
858+ let dV = valueOrElse(getString(this, (((((aN + "_") + aQ) + "_") + en) + x)), "")
859+ let ex = if ((eu > 0))
860+ then $Tuple2({
861+ let az = invoke(aj(), "getAssetDebt", [false, ((aQ + "_") + en), dV], nil)
862+ if ($isInstanceOf(az, "Int"))
863+ then az
864+ else throw(($getType(az) + " couldn't be cast to Int"))
865+ }, f)
866+ else $Tuple2(0, e)
867+ let dU = ex._1
868+ let aS = ex._2
869+ let dW = if (et)
870+ then fraction(cy, aR(aN, aS), m)
871+ else 0
872+ let ey = dT(aN, (cy - dW), dU, dV, dW)
873+ if ((ey == ey))
838874 then {
839- let ay = invoke(ai(), "getAssetDebt", [false, ((aP + "_") + el), dU], nil)
840- if ($isInstanceOf(ay, "Int"))
841- then ay
842- else throw(($getType(ay) + " couldn't be cast to Int"))
843- }
844- else 0
845- let ev = dS(aM, cx, dT, dU)
846- if ((ev == ev))
847- then {
848- let aH = ev._7
849- let dZ = ev._6
850- let dY = ev._5
851- let ce = ev._4
852- let ew = ev._3
853- let cd = ev._2
854- let ex = ev._1
855- let ey = if ((dT > 0))
856- then invoke(ai(), "repayFor", [((aP + "_") + el)], [AttachedPayment(aX(dU), dT)])
875+ let aI = ey._7
876+ let eb = ey._6
877+ let ea = ey._5
878+ let cf = ey._4
879+ let ez = ey._3
880+ let ce = ey._2
881+ let eA = ey._1
882+ let eB = if ((dU > 0))
883+ then invoke(aj(), "repayFor", [((aQ + "_") + en)], [AttachedPayment(aY(dV), dU)])
857884 else 0
858- if ((ey == ey))
859- then ([DeleteEntry((((((aM + "_") + aP) + "_") + el) + u)), DeleteEntry((((((aM + "_") + aP) + "_") + el) + z)), IntegerEntry((aM + A), (et - cx)), ScriptTransfer(eu, ex, aX(cd)), ScriptTransfer(eu, ew, aX(ce))] ++ bB(cd, ce, aH, nil))
885+ if ((eB == eB))
886+ then ([DeleteEntry((((((aN + "_") + aQ) + "_") + en) + u)), DeleteEntry((((((aN + "_") + aQ) + "_") + en) + z)), IntegerEntry((aN + A), ((ev - cy) - dW)), ScriptTransfer(ew, eA, aY(ce)), ScriptTransfer(ew, ez, aY(cf)), ScriptTransfer(ac, dW, fromBase58String(aI))] ++ bC(ce, cf, aI, nil))
860887 else throw("Strict value is not equal to itself.")
861888 }
862889 else throw("Strict value is not equal to itself.")
863890 }
864891
865892
866-func ez (eA) = {
867- let eB = split(valueOrErrorMessage(getString(this, (eA + L)), ("No request with id " + eA)), ",")
868- let aP = eB[0]
869- let aM = eB[1]
870- let bH = parseIntValue(eB[2])
871- let dB = eB[3]
872- let bI = parseIntValue(eB[4])
873- let dC = eB[5]
874- let aE = parseIntValue(eB[6])
875- let aD = parseIntValue(eB[7])
876- let aH = eB[8]
877- let eC = eB[9]
878- let eD = parseIntValue(eB[10])
879- $Tuple11(aP, aM, bH, dB, bI, dC, aE, aD, aH, eC, eD)
893+func eC (eD) = {
894+ let eE = split(valueOrErrorMessage(getString(this, (eD + L)), ("No request with id " + eD)), ",")
895+ let aQ = eE[0]
896+ let aN = eE[1]
897+ let bI = parseIntValue(eE[2])
898+ let dC = eE[3]
899+ let bJ = parseIntValue(eE[4])
900+ let dD = eE[5]
901+ let aF = parseIntValue(eE[6])
902+ let aE = parseIntValue(eE[7])
903+ let aI = eE[8]
904+ let eF = eE[9]
905+ let eG = parseIntValue(eE[10])
906+ $Tuple11(aQ, aN, bI, dC, bJ, dD, aF, aE, aI, eF, eG)
880907 }
881908
882909
883-func eE (bH,bI,aw,ax,eF,eG) = {
884- let bs = getIntegerValue(ae, (aw + R))
910+func eH (bI,bJ,ax,ay,eI,eJ) = {
885911 let bt = getIntegerValue(ae, (ax + R))
886- let eH = pow(10, 0, aY(aw), 0, 0, DOWN)
887- let eI = pow(10, 0, aY(ax), 0, 0, DOWN)
888- let eJ = (fraction(bs, bH, eH) + fraction(bt, bI, eI))
889- let eK = if ((eG == aw))
890- then $Tuple2(bs, eH)
891- else $Tuple2(bt, eI)
892- let eL = eK._1
893- let eM = eK._2
894- fraction(fraction(eJ, (eF - 100), 100), eM, eL)
912+ let bu = getIntegerValue(ae, (ay + R))
913+ let eK = pow(10, 0, aZ(ax), 0, 0, DOWN)
914+ let eL = pow(10, 0, aZ(ay), 0, 0, DOWN)
915+ let eM = (fraction(bt, bI, eK) + fraction(bu, bJ, eL))
916+ let eN = if ((eJ == ax))
917+ then $Tuple2(bt, eK)
918+ else $Tuple2(bu, eL)
919+ let eO = eN._1
920+ let eP = eN._2
921+ fraction(fraction(eM, (eI - 100), 100), eP, eO)
895922 }
896923
897924
898-func eN (eO,dB,dC) = if ((size(eO) == 2))
899- then if ((aW(eO[0].assetId) != dB))
925+func eQ (eR,dC,dD) = if ((size(eR) == 2))
926+ then if ((aX(eR[0].assetId) != dC))
900927 then throw("Wrong payment asset A")
901- else if ((aW(eO[1].assetId) != dC))
928+ else if ((aX(eR[1].assetId) != dD))
902929 then throw("Wrong payment asset B")
903- else $Tuple4(eO[0].amount, dB, eO[1].amount, dC)
904- else if ((size(eO) == 1))
905- then if ((aW(eO[0].assetId) == dB))
906- then $Tuple4(eO[0].amount, dB, 0, dC)
907- else if ((aW(eO[0].assetId) == dC))
908- then $Tuple4(0, dB, eO[0].amount, dC)
930+ else $Tuple4(eR[0].amount, dC, eR[1].amount, dD)
931+ else if ((size(eR) == 1))
932+ then if ((aX(eR[0].assetId) == dC))
933+ then $Tuple4(eR[0].amount, dC, 0, dD)
934+ else if ((aX(eR[0].assetId) == dD))
935+ then $Tuple4(0, dC, eR[0].amount, dD)
909936 else throw("Wrong payment")
910937 else throw("One or two payments expected")
911938
912939
913-func eP (aE,aD,eQ,eR) = {
914- let eS = ((j - fraction(fraction(aD, j, aE), j, fraction(eR, j, eQ))) * 100)
915- if ((0 > eS))
916- then (eS * -1)
917- else eS
940+func eS (aF,aE,eT,eU) = {
941+ let eV = ((j - fraction(fraction(aE, j, aF), j, fraction(eU, j, eT))) * 100)
942+ if ((0 > eV))
943+ then (eV * -1)
944+ else eV
918945 }
919946
920947
921-@Callable(al)
922-func getShareAssetPriceREADONLY (aH) = {
923- let eT = bn(aH)
924- $Tuple2(nil, eT)
948+@Callable(am)
949+func getShareAssetPriceREADONLY (aI) = {
950+ let eW = bo(aI)
951+ $Tuple2(nil, eW)
925952 }
926953
927954
928955
929-@Callable(al)
930-func getUserPositionShareAmountREADONLY (aP,cU) = {
931- let aM = valueOrErrorMessage(getString(this, (((aP + "_") + cU) + v)), "Unknown position")
932- let es = getIntegerValue(this, (((((aM + "_") + aP) + "_") + cU) + w))
933- let cx = ek(aP, aM, cU, (es > 0))
934- $Tuple2(nil, cx)
956+@Callable(am)
957+func getUserPositionShareAmountREADONLY (aQ,cV) = {
958+ let aN = valueOrErrorMessage(getString(this, (((aQ + "_") + cV) + v)), "Unknown position")
959+ let eu = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + cV) + w))
960+ let cy = em(aQ, aN, cV, (eu > 0))
961+ $Tuple2(nil, cy)
935962 }
936963
937964
938965
939-@Callable(al)
940-func getUserPositionInDollarsREADONLY (aP,eU,cU) = {
941- func eV (be,aM) = {
942- let eW = be
943- let eX = eW._1
944- let eY = eW._2
945- let eZ = eW._3
946- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
947- let fa = aJ(Address(fromBase58String(aM)), bo)
948- let dB = fa._1
949- let dC = fa._2
950- let aE = fa._3
951- let aD = fa._4
952- let aH = fa._5
953- let es = valueOrElse(getInteger(this, (((((aM + "_") + aP) + "_") + cU[eZ]) + w)), 0)
954- let cx = ek(aP, aM, cU[eZ], (es > 0))
955- let eT = bn(aH)
956- let fb = pow(10, 0, aY(aH), 0, 0, DOWN)
957- let fc = fraction(cx, eT, fb)
958- if ((es == 0))
959- then $Tuple3((eX :+ fc), (eY :+ 0), (eZ + 1))
966+@Callable(am)
967+func getUserPositionInDollarsREADONLY (aQ,eX,cV) = {
968+ func eY (bf,aN) = {
969+ let eZ = bf
970+ let fa = eZ._1
971+ let fb = eZ._2
972+ let fc = eZ._3
973+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
974+ let fd = aK(Address(fromBase58String(aN)), bp)
975+ let dC = fd._1
976+ let dD = fd._2
977+ let aF = fd._3
978+ let aE = fd._4
979+ let aI = fd._5
980+ let eu = valueOrElse(getInteger(this, (((((aN + "_") + aQ) + "_") + cV[fc]) + w)), 0)
981+ let cy = em(aQ, aN, cV[fc], (eu > 0))
982+ let eW = bo(aI)
983+ let fe = pow(10, 0, aZ(aI), 0, 0, DOWN)
984+ let ff = fraction(cy, eW, fe)
985+ if ((eu == 0))
986+ then $Tuple3((fa :+ ff), (fb :+ 0), (fc + 1))
960987 else {
961- let dU = getStringValue(this, (((((aM + "_") + aP) + "_") + cU[eZ]) + x))
962- let dT = {
963- let ay = invoke(ai(), "getAssetDebt", [false, ((aP + "_") + cU[eZ]), dU], nil)
964- if ($isInstanceOf(ay, "Int"))
965- then ay
966- else throw(($getType(ay) + " couldn't be cast to Int"))
988+ let dV = getStringValue(this, (((((aN + "_") + aQ) + "_") + cV[fc]) + x))
989+ let dU = {
990+ let az = invoke(aj(), "getAssetDebt", [false, ((aQ + "_") + cV[fc]), dV], nil)
991+ if ($isInstanceOf(az, "Int"))
992+ then az
993+ else throw(($getType(az) + " couldn't be cast to Int"))
967994 }
968- let fd = getIntegerValue(ae, (dU + R))
969- let fe = pow(10, 0, aY(dU), 0, 0, DOWN)
970- let ff = fraction(dT, fd, fe)
971- $Tuple3((eX :+ fc), (eY :+ ff), (eZ + 1))
995+ let fg = getIntegerValue(ae, (dV + R))
996+ let fh = pow(10, 0, aZ(dV), 0, 0, DOWN)
997+ let fi = fraction(dU, fg, fh)
998+ $Tuple3((fa :+ ff), (fb :+ fi), (fc + 1))
972999 }
9731000 }
9741001
975- let fg = {
976- let bg = eU
977- let bh = size(bg)
978- let bi = $Tuple3(nil, nil, 0)
979- func bj (bk,bl) = if ((bl >= bh))
980- then bk
981- else eV(bk, bg[bl])
1002+ let fj = {
1003+ let bh = eX
1004+ let bi = size(bh)
1005+ let bj = $Tuple3(nil, nil, 0)
1006+ func bk (bl,bm) = if ((bm >= bi))
1007+ then bl
1008+ else eY(bl, bh[bm])
9821009
983- func bm (bk,bl) = if ((bl >= bh))
984- then bk
1010+ func bn (bl,bm) = if ((bm >= bi))
1011+ then bl
9851012 else throw("List size exceeds 20")
9861013
987- bm(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bj(bi, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
1014+ bn(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bk(bj, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
9881015 }
989- let fh = fg._1
990- let dT = fg._2
991- $Tuple2(nil, $Tuple2(fh, dT))
1016+ let fk = fj._1
1017+ let dU = fj._2
1018+ $Tuple2(nil, $Tuple2(fk, dU))
9921019 }
9931020
9941021
9951022
996-@Callable(al)
997-func replenish (aM,eF,eG) = if (if ((100 > eF))
1023+@Callable(am)
1024+func replenish (aN,eI,eJ) = if (if ((100 > eI))
9981025 then true
999- else (eF > 300))
1026+ else (eI > 300))
10001027 then throw("Leverage can't be <100 and >300")
1001- else if (if (!(getBooleanValue(this, (aM + E))))
1002- then (eF > 100)
1028+ else if (if (!(getBooleanValue(this, (aN + E))))
1029+ then (eI > 100)
10031030 else false)
10041031 then throw("You can't borrow in this pool")
10051032 else {
1006- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
1007- let fi = aJ(Address(fromBase58String(aM)), bo)
1008- let dB = fi._1
1009- let dC = fi._2
1010- let aE = fi._3
1011- let aD = fi._4
1012- let aH = fi._5
1013- let fj = eN(al.payments, dB, dC)
1014- let bH = fj._1
1015- let fk = fj._2
1016- let bI = fj._3
1017- let fl = fj._4
1018- let aP = toString(al.caller)
1019- let fm = aO(aP)
1020- if ((eF > 100))
1033+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
1034+ let fl = aK(Address(fromBase58String(aN)), bp)
1035+ let dC = fl._1
1036+ let dD = fl._2
1037+ let aF = fl._3
1038+ let aE = fl._4
1039+ let aI = fl._5
1040+ let fm = eQ(am.payments, dC, dD)
1041+ let bI = fm._1
1042+ let fn = fm._2
1043+ let bJ = fm._3
1044+ let fo = fm._4
1045+ let aQ = toString(am.caller)
1046+ let fp = aP(aQ)
1047+ if ((eI > 100))
10211048 then {
1022- let es = eE(bH, bI, fk, fl, eF, eG)
1023- let eB = makeString([aP, aM, toString(bH), fk, toString(bI), fl, toString(aE), toString(aD), aH, eG, toString(es)], ",")
1024- let fn = {
1025- let ay = invoke(this, "createNewRequest", [eB], nil)
1026- if ($isInstanceOf(ay, "Int"))
1027- then ay
1028- else throw(($getType(ay) + " couldn't be cast to Int"))
1049+ let eu = eH(bI, bJ, fn, fo, eI, eJ)
1050+ let eE = makeString([aQ, aN, toString(bI), fn, toString(bJ), fo, toString(aF), toString(aE), aI, eJ, toString(eu)], ",")
1051+ let fq = {
1052+ let az = invoke(this, "createNewRequest", [eE], nil)
1053+ if ($isInstanceOf(az, "Int"))
1054+ then az
1055+ else throw(($getType(az) + " couldn't be cast to Int"))
10291056 }
1030- if ((fn == fn))
1057+ if ((fq == fq))
10311058 then {
1032- let fo = [((aP + "_") + toString(fm)), aH, eG, es, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fn, "Can't create new request"))]
1033- let cb = reentrantInvoke(ai(), "flashPosition", fo, nil)
1034- if ((cb == cb))
1059+ let fr = [((aQ + "_") + toString(fp)), aI, eJ, eu, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fq, "Can't create new request"))]
1060+ let cc = reentrantInvoke(aj(), "flashPosition", fr, nil)
1061+ if ((cc == cc))
10351062 then {
1036- let fp = getIntegerValue(this, (((((aM + "_") + aP) + "_") + toString(fm)) + u))
1037- let fq = az(Address(fromBase58String(aM)), bo, dB, dC)
1038- if ((fq == fq))
1063+ let fs = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + toString(fp)) + u))
1064+ let ft = aA(Address(fromBase58String(aN)), bp, dC, dD)
1065+ if ((ft == ft))
10391066 then {
1040- let eR = fq._2
1041- let eQ = fq._1
1042- let fr = eP(aE, aD, eQ, eR)
1043- let fs = cw(Address(fromBase58String(aM)), bo, aH, fp)
1044- let ft = fs._1
1045- let fu = fs._2
1046- $Tuple2(nil, [fr, ft, fu])
1067+ let eU = ft._2
1068+ let eT = ft._1
1069+ let fu = eS(aF, aE, eT, eU)
1070+ let fv = cx(Address(fromBase58String(aN)), bp, aI, fs)
1071+ let fw = fv._1
1072+ let fx = fv._2
1073+ $Tuple2(nil, [fu, fw, fx])
10471074 }
10481075 else throw("Strict value is not equal to itself.")
10491076 }
10501077 else throw("Strict value is not equal to itself.")
10511078 }
10521079 else throw("Strict value is not equal to itself.")
10531080 }
10541081 else {
1055- let fv = cE(bo, aM, h, bH, dB, bI, dC, aE, aD, aH)
1056- let fp = fv._1
1057- let dR = fv._2
1058- let fw = az(Address(fromBase58String(aM)), bo, dB, dC)
1059- if ((fw == fw))
1082+ let fy = cF(bp, aN, h, bI, dC, bJ, dD, aF, aE, aI)
1083+ let fs = fy._1
1084+ let dS = fy._2
1085+ let fz = aA(Address(fromBase58String(aN)), bp, dC, dD)
1086+ if ((fz == fz))
10601087 then {
1061- let eR = fw._2
1062- let eQ = fw._1
1063- let fr = eP(aE, aD, eQ, eR)
1064- let fx = cw(Address(fromBase58String(aM)), bo, aH, fp)
1065- let ft = fx._1
1066- let fu = fx._2
1067- $Tuple2((cS(aM, aP, fp, dR, fm, aH, bo, false) ++ bB(dB, dC, aH, [toString(ft), toString(fu)])), [fr, ft, fu])
1088+ let eU = fz._2
1089+ let eT = fz._1
1090+ let fu = eS(aF, aE, eT, eU)
1091+ let fA = cx(Address(fromBase58String(aN)), bp, aI, fs)
1092+ let fw = fA._1
1093+ let fx = fA._2
1094+ $Tuple2((cT(aN, aQ, fs, dS, fp, aI, bp, false) ++ bC(dC, dD, aI, [toString(fw), toString(fx)])), [fu, fw, fx])
10681095 }
10691096 else throw("Strict value is not equal to itself.")
10701097 }
10711098 }
10721099
10731100
10741101
1075-@Callable(al)
1076-func withdraw (aM,el) = eq(toString(al.caller), aM, toString(el), false)
1102+@Callable(am)
1103+func withdraw (aN,en) = es(toString(am.caller), aN, toString(en), false)
10771104
10781105
10791106
1080-@Callable(al)
1081-func createUpdateStopLoss (el,fy,ap,fz) = {
1082- let fA = getIntegerValue(ae, (ap + R))
1083- if (!(isDefined(getInteger(this, (((((fy + "_") + toString(al.caller)) + "_") + toString(el)) + u)))))
1107+@Callable(am)
1108+func createUpdateStopLoss (en,fB,aq,fC) = {
1109+ let fD = getIntegerValue(ae, (aq + R))
1110+ if (!(isDefined(getInteger(this, (((((fB + "_") + toString(am.caller)) + "_") + toString(en)) + u)))))
10841111 then throw("There are no user position")
1085- else if ((0 >= fz))
1112+ else if ((0 >= fC))
10861113 then throw("Price must be greater than 0")
1087- else if ((fz > fA))
1114+ else if ((fC > fD))
10881115 then throw("Price must be less than current token price")
1089- else [IntegerEntry((((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S), fz)]
1116+ else [IntegerEntry((((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S), fC)]
10901117 }
10911118
10921119
10931120
1094-@Callable(al)
1095-func deleteStopLoss (el,fy,ap) = if (!(isDefined(getInteger(this, (((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S)))))
1121+@Callable(am)
1122+func deleteStopLoss (en,fB,aq) = if (!(isDefined(getInteger(this, (((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S)))))
10961123 then throw("No entry")
1097- else [DeleteEntry((((((((toString(al.caller) + "_") + toString(el)) + "_") + fy) + "_") + ap) + S))]
1124+ else [DeleteEntry((((((((toString(am.caller) + "_") + toString(en)) + "_") + fB) + "_") + aq) + S))]
10981125
10991126
11001127
1101-@Callable(al)
1102-func init (fB,fC,fD,ae,fE,af,fF,fG,fH) = if (isDefined(getString(T)))
1128+@Callable(am)
1129+func init (fE,fF,fG,ae,fH,af,fI,fJ,fK) = if (isDefined(getString(T)))
11031130 then throw("Already inited")
1104- else [StringEntry(T, fB), StringEntry(U, fC), StringEntry(V, fD), StringEntry(X, ae), StringEntry(Y, fE), StringEntry(Z, af), StringEntry(aa, fF), StringEntry(ab, fG), StringEntry(W, fH)]
1131+ else [StringEntry(T, fE), StringEntry(U, fF), StringEntry(V, fG), StringEntry(X, ae), StringEntry(Y, fH), StringEntry(Z, af), StringEntry(aa, fI), StringEntry(ab, fJ), StringEntry(W, fK)]
11051132
11061133
11071134
1108-@Callable(al)
1109-func createNewRequest (ca) = valueOrElse(am(al), {
1110- let fn = (valueOrElse(getInteger(this, M), 0) + 1)
1111- $Tuple2([StringEntry((toString(fn) + L), ca), IntegerEntry(M, fn)], fn)
1135+@Callable(am)
1136+func createNewRequest (cb) = valueOrElse(an(am), {
1137+ let fq = (valueOrElse(getInteger(this, M), 0) + 1)
1138+ $Tuple2([StringEntry((toString(fq) + L), cb), IntegerEntry(M, fq)], fq)
11121139 })
11131140
11141141
11151142
1116-@Callable(al)
1117-func replenishFromLand (eA) = valueOrElse(an(al), {
1118- let fI = ez(eA)
1119- let aP = fI._1
1120- let aM = fI._2
1121- let bH = fI._3
1122- let dB = fI._4
1123- let bI = fI._5
1124- let dC = fI._6
1125- let aE = fI._7
1126- let aD = fI._8
1127- let aH = fI._9
1128- let eC = fI._10
1129- let eD = fI._11
1130- if ((size(al.payments) != 1))
1143+@Callable(am)
1144+func replenishFromLand (eD) = valueOrElse(ao(am), {
1145+ let fL = eC(eD)
1146+ let aQ = fL._1
1147+ let aN = fL._2
1148+ let bI = fL._3
1149+ let dC = fL._4
1150+ let bJ = fL._5
1151+ let dD = fL._6
1152+ let aF = fL._7
1153+ let aE = fL._8
1154+ let aI = fL._9
1155+ let eF = fL._10
1156+ let eG = fL._11
1157+ if ((size(am.payments) != 1))
11311158 then throw("Wrong payment size")
1132- else if (if ((aW(al.payments[0].assetId) != eC))
1159+ else if (if ((aX(am.payments[0].assetId) != eF))
11331160 then true
1134- else (al.payments[0].amount != eD))
1161+ else (am.payments[0].amount != eG))
11351162 then throw("Wrong payment")
11361163 else {
1137- let fJ = if ((dB == eC))
1138- then $Tuple2((bH + al.payments[0].amount), bI)
1139- else $Tuple2(bH, (bI + al.payments[0].amount))
1140- let fK = fJ._1
1141- let fL = fJ._2
1142- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Unknown pool")
1143- let fM = cE(bo, aM, g, fK, dB, fL, dC, aE, aD, aH)
1144- let fp = fM._1
1145- let dR = fM._2
1146- let cU = aO(aP)
1147- let fN = [IntegerEntry((((((aM + "_") + aP) + "_") + toString(cU)) + w), eD), StringEntry((((((aM + "_") + aP) + "_") + toString(cU)) + x), eC)]
1148- let fO = cS(aM, aP, fp, dR, cU, aH, bo, true)
1149- let fP = cw(Address(fromBase58String(aM)), bo, aH, fp)
1150- let ft = fP._1
1151- let fu = fP._2
1152- $Tuple2((((fO ++ bB(dB, dC, aH, [toString(ft), toString(fu)])) ++ fN) :+ DeleteEntry((eA + L))), fp)
1164+ let fM = if ((dC == eF))
1165+ then $Tuple2((bI + am.payments[0].amount), bJ)
1166+ else $Tuple2(bI, (bJ + am.payments[0].amount))
1167+ let fN = fM._1
1168+ let fO = fM._2
1169+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Unknown pool")
1170+ let fP = cF(bp, aN, g, fN, dC, fO, dD, aF, aE, aI)
1171+ let fs = fP._1
1172+ let dS = fP._2
1173+ let cV = aP(aQ)
1174+ let fQ = [IntegerEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + w), eG), StringEntry((((((aN + "_") + aQ) + "_") + toString(cV)) + x), eF)]
1175+ let fR = cT(aN, aQ, fs, dS, cV, aI, bp, true)
1176+ let fS = cx(Address(fromBase58String(aN)), bp, aI, fs)
1177+ let fw = fS._1
1178+ let fx = fS._2
1179+ $Tuple2((((fR ++ bC(dC, dD, aI, [toString(fw), toString(fx)])) ++ fQ) :+ DeleteEntry((eD + L))), fs)
11531180 }
11541181 })
11551182
11561183
11571184
1158-@Callable(al)
1159-func liquidate (aP,el,fQ) = valueOrElse(an(al), {
1160- let aM = valueOrErrorMessage(getString(this, (((aP + "_") + el) + v)), "no position")
1161- let bo = valueOrErrorMessage(getString(this, (N + aM)), "Pool is not inited")
1162- let fR = aJ(Address(fromBase58String(aM)), bo)
1163- let dB = fR._1
1164- let dC = fR._2
1165- let aE = fR._3
1166- let aD = fR._4
1167- let aH = fR._5
1168- let bV = bW(aM, bo, aH, fQ)
1169- let es = getIntegerValue(this, (((((aM + "_") + aP) + "_") + el) + w))
1170- let dU = getStringValue(this, (((((aM + "_") + aP) + "_") + el) + x))
1171- let cx = ek(aP, aM, el, (es > 0))
1172- if ((es == 0))
1173- then throw("You can't liquidate position without borrow")
1174- else [IntegerEntry((((((aM + "_") + aP) + "_") + el) + z), getIntegerValue(this, (aM + C))), IntegerEntry((aM + B), (aN(aM) - fQ)), IntegerEntry((aM + A), (aL(aM) - fQ)), IntegerEntry((((((aM + "_") + aP) + "_") + el) + u), (cx - fQ)), ScriptTransfer(al.caller, bV, fromBase58String(aH))]
1185+@Callable(am)
1186+func liquidate (aQ,en,fT) = valueOrElse(ao(am), {
1187+ let aN = valueOrErrorMessage(getString(this, (((aQ + "_") + en) + v)), "no position")
1188+ let bp = valueOrErrorMessage(getString(this, (N + aN)), "Pool is not inited")
1189+ let fU = aK(Address(fromBase58String(aN)), bp)
1190+ let dC = fU._1
1191+ let dD = fU._2
1192+ let aF = fU._3
1193+ let aE = fU._4
1194+ let aI = fU._5
1195+ let bW = bX(aN, bp, aI, fT)
1196+ let eu = getIntegerValue(this, (((((aN + "_") + aQ) + "_") + en) + w))
1197+ let dV = getStringValue(this, (((((aN + "_") + aQ) + "_") + en) + x))
1198+ let cy = em(aQ, aN, en, (eu > 0))
1199+ if ((fT > cy))
1200+ then throw("You can't liquidate more than user have")
1201+ else if ((eu == 0))
1202+ then throw("You can't liquidate position without borrow")
1203+ else [IntegerEntry((((((aN + "_") + aQ) + "_") + en) + z), getIntegerValue(this, (aN + C))), IntegerEntry((aN + B), (aO(aN) - fT)), IntegerEntry((aN + A), (aM(aN) - fT)), IntegerEntry((((((aN + "_") + aQ) + "_") + en) + u), (cy - fT)), ScriptTransfer(am.caller, bW, fromBase58String(aI))]
11751204 })
11761205
11771206
11781207
1179-@Callable(al)
1180-func stopLoss (aP,el,aM,ap) = valueOrElse(ak(al), {
1181- let fA = getIntegerValue(ae, (ap + R))
1182- if (!(isDefined(getInteger(this, (((((((aP + "_") + toString(el)) + "_") + aM) + "_") + ap) + S)))))
1183- then throw("No entry")
1184- else (eq(toString(al.caller), aM, toString(el), true) :+ DeleteEntry((((((((aP + "_") + toString(el)) + "_") + aM) + "_") + ap) + S)))
1208+@Callable(am)
1209+func stopLoss (aQ,en,aN,aq) = valueOrElse(al(am), {
1210+ let fD = getIntegerValue(ae, (aq + R))
1211+ if ((fD > fD))
1212+ then throw("Token price greater stop loss price")
1213+ else if (!(isDefined(getInteger(this, (((((((aQ + "_") + toString(en)) + "_") + aN) + "_") + aq) + S)))))
1214+ then throw("No entry")
1215+ else (es(aQ, aN, toString(en), true) :+ DeleteEntry((((((((aQ + "_") + toString(en)) + "_") + aN) + "_") + aq) + S)))
11851216 })
11861217
11871218
11881219
1189-@Callable(al)
1190-func capitalizeExKeeper (aM,fS,fT,fU,df,dg,dh,di,dj,dk,dl) = valueOrElse(ak(al), {
1191- let aA = getStringValue(this, (N + aM))
1192- let fV = if (fU)
1193- then cB(aA, aM)
1220+@Callable(am)
1221+func capitalizeExKeeper (aN,fV,fW,fX,dg,dh,di,dj,dk,dl,dm) = valueOrElse(al(am), {
1222+ let bp = getStringValue(this, (N + aN))
1223+ let fY = if (fX)
1224+ then cC(bp, aN)
11941225 else {
1195- let fW = if ((aA == a))
1226+ let fZ = if ((bp == a))
11961227 then ag
1197- else ah
1198- $Tuple2(fT, fW)
1228+ else if ((bp == b))
1229+ then ah
1230+ else ai()
1231+ $Tuple2(fW, fZ)
11991232 }
1200- let fX = fV._1
1201- let fW = fV._2
1202- let fY = db(fS, fT, fW, df, dg, dh, di, dj, dk, dl)
1203- let cL = (fX - fT)
1204- let fZ = if ((cL > 0))
1205- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1233+ let ga = fY._1
1234+ let fZ = fY._2
1235+ let gb = dc(fV, fW, fZ, dg, dh, di, dj, dk, dl, dm)
1236+ let cM = (ga - fW)
1237+ let gc = if ((cM > 0))
1238+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12061239 else nil
1207- (dx(aM, aA, fS, fY) ++ fZ)
1240+ (dy(aN, bp, fV, gb) ++ gc)
12081241 })
12091242
12101243
12111244
1212-@Callable(al)
1213-func capitalizeExPuzzle (aM,fS,fT,fU,do,dp,dl) = valueOrElse(ak(al), {
1214- let aA = getStringValue(this, (N + aM))
1215- let ga = if (fU)
1216- then cB(aA, aM)
1245+@Callable(am)
1246+func capitalizeExPuzzle (aN,fV,fW,fX,dp,dq,dm) = valueOrElse(al(am), {
1247+ let bp = getStringValue(this, (N + aN))
1248+ let gd = if (fX)
1249+ then cC(bp, aN)
12171250 else {
1218- let fW = if ((aA == a))
1251+ let fZ = if ((bp == a))
12191252 then ag
1220- else ah
1221- $Tuple2(fT, fW)
1253+ else if ((bp == b))
1254+ then ah
1255+ else ai()
1256+ $Tuple2(fW, fZ)
12221257 }
1223- let fX = ga._1
1224- let fW = ga._2
1225- let fY = dn(fS, fT, fW, do, dp, dl)
1226- let cL = (fX - fT)
1227- let fZ = if ((cL > 0))
1228- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1258+ let ga = gd._1
1259+ let fZ = gd._2
1260+ let gb = do(fV, fW, fZ, dp, dq, dm)
1261+ let cM = (ga - fW)
1262+ let gc = if ((cM > 0))
1263+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12291264 else nil
1230- (dx(aM, aA, fS, fY) ++ fZ)
1265+ (dy(aN, bp, fV, gb) ++ gc)
12311266 })
12321267
12331268
12341269
1235-@Callable(al)
1236-func capitalizeExSwopFi (aM,fS,fT,fU,dr,ds,dt,du,dv,dw,dl) = valueOrElse(ak(al), {
1237- let aA = getStringValue(this, (N + aM))
1238- let gb = if (fU)
1239- then cB(aA, aM)
1270+@Callable(am)
1271+func capitalizeExSwopFi (aN,fV,fW,fX,ds,dt,du,dv,dw,dx,dm) = valueOrElse(al(am), {
1272+ let bp = getStringValue(this, (N + aN))
1273+ let ge = if (fX)
1274+ then cC(bp, aN)
12401275 else {
1241- let fW = if ((aA == a))
1276+ let fZ = if ((bp == a))
12421277 then ag
1243- else ah
1244- $Tuple2(fT, fW)
1278+ else if ((bp == b))
1279+ then ah
1280+ else ai()
1281+ $Tuple2(fW, fZ)
12451282 }
1246- let fX = gb._1
1247- let fW = gb._2
1248- let fY = dq(fS, fT, fW, dr, ds, dt, du, dv, dw, dl)
1249- let cL = (fX - fT)
1250- let fZ = if ((cL > 0))
1251- then [IntegerEntry((aM + P), (cL + valueOrElse(getInteger(this, (aM + P)), 0)))]
1283+ let ga = ge._1
1284+ let fZ = ge._2
1285+ let gb = dr(fV, fW, fZ, ds, dt, du, dv, dw, dx, dm)
1286+ let cM = (ga - fW)
1287+ let gc = if ((cM > 0))
1288+ then [IntegerEntry((aN + P), (cM + valueOrElse(getInteger(this, (aN + P)), 0)))]
12521289 else nil
1253- (dx(aM, aA, fS, fY) ++ fZ)
1290+ (dy(aN, bp, fV, gb) ++ gc)
12541291 })
12551292
12561293
12571294
1258-@Callable(al)
1259-func initNewPool (aA,au,gc,gd,ge,gf,gg,gh,gi) = valueOrElse(ak(al), if (if ((aA != a))
1260- then (aA != b)
1295+@Callable(am)
1296+func initNewPool (aB,av,gf,gg,gh,gi,gj,gk,gl) = valueOrElse(al(am), if (if ((aB != a))
1297+ then (aB != b)
12611298 else false)
12621299 then throw("Wrong type")
12631300 else {
1264- let gj = aJ(Address(fromBase58String(au)), aA)
1265- let aw = gj._1
1266- let ax = gj._2
1267- let gk = gj._3
1268- let gl = gj._4
1269- let aH = gj._5
1270-[IntegerEntry((au + F), gc), IntegerEntry((au + G), gd), IntegerEntry((au + H), ge), IntegerEntry((au + I), gf), IntegerEntry((au + J), gg), IntegerEntry((au + K), gh), IntegerEntry((au + C), 0), IntegerEntry((au + D), 0), StringEntry((N + au), aA), StringEntry((aH + O), au), BooleanEntry((au + E), gi)]
1301+ let gm = aK(Address(fromBase58String(av)), aB)
1302+ let ax = gm._1
1303+ let ay = gm._2
1304+ let gn = gm._3
1305+ let go = gm._4
1306+ let aI = gm._5
1307+[IntegerEntry((av + F), gf), IntegerEntry((av + G), gg), IntegerEntry((av + H), gh), IntegerEntry((av + I), gi), IntegerEntry((av + J), gj), IntegerEntry((av + K), gk), IntegerEntry((av + C), 0), IntegerEntry((av + D), 0), StringEntry((N + av), aB), StringEntry((aI + O), av), BooleanEntry((av + E), gl)]
12711308 })
12721309
12731310
1274-@Verifier(gm)
1275-func gn () = sigVerify(gm.bodyBytes, gm.proofs[0], gm.senderPublicKey)
1311+@Verifier(gp)
1312+func gq () = sigVerify(gp.bodyBytes, gp.proofs[0], gp.senderPublicKey)
12761313

github/deemru/w8io/169f3d6 
446.42 ms