tx · DLRS2yrdxrwTPucfLa2nqdVLujKuymogcB3G4gy6gckq

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03400000 Waves

2022.10.06 16:42 [2260536] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "DLRS2yrdxrwTPucfLa2nqdVLujKuymogcB3G4gy6gckq", "fee": 3400000, "feeAssetId": null, "timestamp": 1665063819707, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "4BqaRFUeh2z2fpYGhb9xWVUgfYsNA4RqrchXePjCzCjKEut2qbRsa3WsDexvc4nM2MnWtVWPAE16gdLY6uTMbtRM" ], "script": "base64:BgKkIggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzNTExNjY5NiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMTAyNzIxMDcyIg0kdDAyMTA3NjIxNTM3IgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE1NDEyMTY3NSIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjE0NDIyMjQwIgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNTk1MjM3MDMiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM4OTAyMzk3NyIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiIEY2FsYyIDYWNjIgNjdXIiDSR0MDI1MTM1MjUxNTUiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDI1NTcxMjU2MTciAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjYxMTcyNjEzNyIBeSIFeU5leHQiBXlEaWZmIg0kdDAyNjQ0NDI2NDkxIgFtIgJwbSICcGQiAm1tIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDMxMTg3MzEyMzkiDSR0MDMxMzk5MzIwMTUiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50Igplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDAzOTk3NTQwNDM1Igt0b3RhbEdldFJhdyIIZmluYWxSZXMiDSR0MDQxMTgyNDEyODYiDSR0MDQyMzExNDI0NjYiDWxwQXNzZXRBbW91bnQiDSR0MDQyOTc5NDMyODciFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiC2Ftb3VudFRvQWRkIgp5UHJlY2lzaW9uIg0kdDA0MzgxNTQzODY0IgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiDSR0MDQ0NTU1NDQ2MDQiDSR0MDQ0OTQ5NDUwNjQiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ3MzY5NDc1NTciBWFzc2V0IgxwYXltZW50QXNzZXQiDSR0MDQ3OTk0NDgwODQiDSR0MDQ4MDg4NDgyNzAiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoXAABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFpAgMxMDAAAWoCATEAAWsCAl9fAAFsAgAAAW0AAQABbgACAAFvAAMAAXAABAABcQABAAFyAAIAAXMAAwABdAAEAAF1AAUAAXYABgABdwAHAAF4AAgAAXkACQABegABAAFBAAcAAUIACgABQwkAawMABQUBYQCQTgEBRAIBRQFGCQC8AgMJALYCAQUBRQUBYwkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWMBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAL8CAgUBZAUBSAkAvgIBBQFIBQFIAQFPAQFIAwkAvwICBQFkBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBawEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAECYWMAAgclc19fYW1wAQJhZAACDSVzX19hZGRvbkFkZHIAAmFlAgclc19fZmVlAAJhZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUBQwECYWcAAhElc19fZmFjdG9yeUNvbmZpZwECYWgAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFpAgJhagJhawkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYWoCAl9fBQJhawIIX19jb25maWcBAmFsAQJhbQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhbQECYW4AAgwlc19fc2h1dGRvd24BAmFvAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFwAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFxAwJhcgJhcwJhdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhFGYWlsZWQ6IG9yZFZhbGlkPQkApQMBBQJhcgILIHNuZHJWYWxpZD0JAKUDAQUCYXMCDCBtdGNoclZhbGlkPQkApQMBBQJhdAECYXUBAUgEAmF2BQFIAwkAAQIFAmF2AgZTdHJpbmcEAmF3BQJhdgUCYXcJAAIBAhNmYWlsIGNhc3QgdG8gU3RyaW5nAQJheAICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhQQICYXkCYXoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJheQUCYXoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYXkJAMwIAgIBLgkAzAgCBQJhegkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAAJhQgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhQwkBAmF4AgUEdGhpcwkBAmFjAAECYUQACQELdmFsdWVPckVsc2UCCQCbCAIFAmFCCQECYW4ABwECYUUACQDZBAEJAQJheAIFAmFCCQECYWgAAAJhRgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUIJAQJhcAABAmFHAAQCYUgJAQJheAIFBHRoaXMJAQJhYQAEAmFJCQECYXgCBQR0aGlzCQECYWIABAJhSgkBAmFBAgUCYUIJAQJhbAEFAmFJBAJhagkBAmFBAgUCYUIJAQJhbAEFAmFICQC1CQIJAQJheAIFAmFCCQECYWkCCQCkAwEFAmFqCQCkAwEFAmFKBQFrAQJhSwAJALUJAgkBAmF4AgUCYUIJAQJhZwAFAWsAAmFMCQECYUsAAAJhTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAXoCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJhTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUECIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUwFAUICHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFQCgJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAJhWQJhWgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcJAMwIAgkApAMBBQJhWAkAzAgCCQCkAwEFAmFZCQDMCAIJAKQDAQUCYVoFA25pbAUBawECYmEGAmJiAmJjAmJkAmFUAmFXAmFYCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmIJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYBQNuaWwFAWsBAmJlAQJiZgMJAAACBQJiZgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmYBAmJnAgJiaAJiaQkAvAIDBQJiaAUBYwUCYmkBAmJqAwJiawJibAJibQQCYm4JALwCAwkAuAICBQJiawUCYmwFAWIFAmJsBAJibwkAvwICCQC4AgIFAmJtCQEBTgEFAmJuBQFkAwkBASEBBQJibwkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJibgkAlAoCBQJibwkAmQMBCQDMCAIFAmJrCQDMCAIFAmJsBQNuaWwBAmJwAwJicQJicgJicwQCYm4JALwCAwUCYnIFAWIFAmJxBAJidAkAvwICBQJicwUCYm4DAwUCYnQGCQC/AgIFAmJyBQJicQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnICASAJAKYDAQUCYnECASAJAKYDAQUCYm4CASAJAKYDAQUCYnMFAmJ0AQJidQQCYnYCYncCYngCYnkEAmJ6CQEBRAIFAmJ4BQJidgQCYkEJAQFEAgUCYnkFAmJ3CQECYmcCBQJiQQUCYnoBAmJCAwJieAJieQJiQwQCYkQJAQJhRwAEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJHCQECYnUEBQJiRQUCYkYFAmJ4BQJieQQCYmkJAQFEAgUCYngFAmJFBAJiaAkBAUQCBQJieQUCYkYEAmJICQEBRAIFAmJDBQFhBAJiSQkBAmJnAgUCYmkFAmJIBAJiSgkBAmJnAgUCYmgFAmJICQDMCAIFAmJHCQDMCAIFAmJJCQDMCAIFAmJKBQNuaWwBAmJLAwJieAJieQJiQwQCYkwJAQJiQgMFAmJ4BQJieQUCYkMJAMwIAgkBAUcCCQCRAwIFAmJMAAAFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAEFAWEJAMwIAgkBAUcCCQCRAwIFAmJMAAIFAWEFA25pbAECYk0BAmJOBAJiTwkAawMFAmJOBQJhZgUBYQkAlAoCCQBlAgUCYk4FAmJPBQJiTwECYlAEAmJRAmJSAmJTAmJUBAJiRAkBAmFHAAQCYlUJAJEDAgUCYkQFAXMEAmJWCQCRAwIFAmJEBQF0BAJiVwkAkQMCBQJiRAUBdQQCYlgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCYloJAJEDAgUCYkQFAXIEAmNhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlUCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlUFAmJSCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjYgkBAmJlAQUCYlYEAmNjCQEBRAIFAmNiBQJiWAQCY2QJAQJiZQEFAmJXBAJjZQkBAUQCBQJjZAUCYlkEAmNmCQECYmcCBQJjZQUCY2MEAmNnCQEBRwIFAmNmBQFhBAJjaAkBAUQCBQJiUwUBYQQCY2kJAQFEAgUCY2EFAWEEAmNqCQC8AgMFAmNjBQJjaAUCY2kEAmNrCQC8AgMFAmNlBQJjaAUCY2kEAmNsCQEBRwIFAmNqBQJiWAQCY20JAQFHAgUCY2sFAmJZBAJjbgMJAAACBQJiUQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmNsAwkAAAIFAmJWAgVXQVZFUwUEdW5pdAkA2QQBBQJiVgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiVAUCY20DCQAAAgUCYlcCBVdBVkVTBQR1bml0CQDZBAEFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQJiVAUCYlEJAQJiYQYFAmNsBQJjbQUCYlMFAmNnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNnBQNuaWwJAJwKCgUCY2wFAmNtBQJiVgUCYlcFAmNiBQJjZAUCY2EFAmNmBQJiWgUCY24BAmNvDQJiUQJibQJjcAJjcQJjcgJjcwJiVAJjdAJjdQJjdgJjdwJjeAJjeQQCYkQJAQJhRwAEAmJVCQDZBAEJAJEDAgUCYkQFAXMEAmN6CQCRAwIFAmJEBQF0BAJjQQkAkQMCBQJiRAUBdQQCY0IJAJEDAgUCYkQFAXgEAmNDCQCRAwIFAmJEBQF5BAJjRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF2BAJjRQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJEBQF3BAJiWgkAkQMCBQJiRAUBcgQCY0YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlUCCFdyIGxwIGFzCHF1YW50aXR5BAJjYgMFAmN0CQECYmUBBQJjegMDBQJjdgkAAAIFAmN5BQJjegcJAGUCCQECYmUBBQJjegUCY3gDBQJjdgkBAmJlAQUCY3oJAGUCCQECYmUBBQJjegUCY3AEAmNkAwUCY3QJAQJiZQEFAmNBAwMFAmN2CQAAAgUCY3kFAmNBBwkAZQIJAQJiZQEFAmNBBQJjeAMFAmN2CQECYmUBBQJjQQkAZQIJAQJiZQEFAmNBBQJjcgQCY0cJAQFEAgUCY3AFAmNEBAJjSAkBAUQCBQJjcgUCY0UEAmNJCQECYmcCBQJjSAUCY0cEAmNjCQEBRAIFAmNiBQJjRAQCY2UJAQFEAgUCY2QFAmNFBAJjSgMJAAACBQJjRgAABAJjZgUBZAQCY0sFAWQEAmJICQB2BgkAuQICBQJjRwUCY0gAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkgFAWEJAQFHAgUCY0cFAmNECQEBRwIFAmNIBQJjRQkBAmJnAgkAtwICBQJjZQUCY0gJALcCAgUCY2MFAmNHBQJjSwQCY2YJAQJiZwIFAmNlBQJjYwQCY0wJALwCAwkBAU4BCQC4AgIFAmNmBQJjSQUBYwUCY2YEAmNLCQEBRAIFAmJtBQFhAwMDBQJjdwkBAiE9AgUCY2YFAWQHCQC/AgIFAmNMBQJjSwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0wCAyA+IAkApgMBBQJjSwQCY00JAQFEAgUCY0YFAWEEAmNOCQC8AgMFAmNHBQJjZgUBYwQCY08JALwCAwUCY0gFAWMFAmNmBAJjUAMJAL8CAgUCY04FAmNICQCUCgIFAmNPBQJjSAkAlAoCBQJjRwUCY04EAmNRCAUCY1ACXzEEAmNSCAUCY1ACXzIEAmJICQC8AgMFAmNNBQJjUgUCY2UJAJcKBQkBAUcCBQJiSAUBYQkBAUcCBQJjUQUCY0QJAQFHAgUCY1IFAmNFBQJjZgUCY0sEAmNTCAUCY0oCXzEEAmNUCAUCY0oCXzIEAmNVCAUCY0oCXzMEAmNnCQEBRwIIBQJjSgJfNAUBYQQCY1YJAQFHAggFAmNKAl81BQFhAwkAZwIAAAUCY1MJAAIBAgdMUCA8PSAwBAJjVwMJAQEhAQUCY3UAAAUCY1MEAmNYCQBlAgUCY3AFAmNUBAJjWQkAZQIFAmNyBQJjVQQCY1oDAwUCY3YJAAACBQJjeQUCY3oHCQCUCgIFAmN4AAADAwUCY3YJAAACBQJjeQUCY0EHCQCUCgIAAAUCY3gJAJQKAgUCY1QFAmNVBAJkYQgFAmNaAl8xBAJkYggFAmNaAl8yBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAmJUBQJiUQkBAmFQCgUCZGEFAmRiBQJjVwUCY2cFAmJtBQJjVgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1gFAmNZBQNuaWwJAJ8KDQUCY1MFAmNXBQJjZwUCY2IFAmNkBQJjRgUCYlUFAmJaBQJkYwUCY1gFAmNZBQJjcQUCY3MBAmRkAQJkZQQCYkQJAQJhRwAEAmRmCQCRAwIFAmJEBQF0BAJkZwkAkQMCBQJiRAUBdQQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBcgQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdgQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRAUBdwQCZGgJAQJiZQEFAmRmBAJkaQkBAmJlAQUCZGcEAmNmAwkAAAIIBQJkZQlvcmRlclR5cGUFA0J1eQkBAmJ1BAUCYkUFAmJGCQBkAgUCZGgIBQJkZQZhbW91bnQFAmRpCQECYnUEBQJiRQUCYkYJAGUCBQJkaAgFAmRlBmFtb3VudAUCZGkEAmNnCQEBRwIFAmNmBQFhAwMDCQECYUQABgkAAAIFAmJaBQFvBgkAAAIFAmJaBQFwCQACAQINQWRtaW4gYmxvY2tlZAQCZGoICAUCZGUJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkawMJAAACBQJkagUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGoEAmRsCAgFAmRlCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkbQMJAAACBQJkbAUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGwDAwkBAiE9AgUCZGsFAmRmBgkBAiE9AgUCZG0FAmRnCQACAQIJV3IgYXNzZXRzBAJkbggFAmRlBXByaWNlBAJjRQkAawMFAWEFAmJGBQJiRQQCZG8JAQFKAwUCZG4FAWEFAmNFBAJkcAMJAAACCAUCZGUJb3JkZXJUeXBlBQNCdXkJAGcCBQJjZwUCZG8JAGcCBQJkbwUCY2cGAQJkcQECZHIDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZHMJAQV2YWx1ZQEJAJEDAggFAmRyCHBheW1lbnRzAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCYloJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjbggFAmNKA18xMAMDCQECYUQABgkAAAIFAmJaBQFwCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYloJAJcKBQUCY2wFAmNtBQJjeAUCYlIFAmNuAQJkdAoCZHUBWQJkdgJkdwJibQJjdQJjdgJjdwJjeAJjeQQCY0oJAQJjbw0FAVkFAmJtCAkBBXZhbHVlAQUCZHYGYW1vdW50CAkBBXZhbHVlAQUCZHYHYXNzZXRJZAgJAQV2YWx1ZQEFAmR3BmFtb3VudAgJAQV2YWx1ZQEFAmR3B2Fzc2V0SWQFAmR1CQAAAgUBWQIABQJjdQUCY3YFAmN3BQJjeAUCY3kEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOAMDAwkBAmFEAAYJAAACBQJiWgUBbgYJAAACBQJiWgUBcAkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYloFAmNKAQJkeAQCZHkCYlICYlQBWQQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmRBCQECYk0BBQJkeQQCY3gIBQJkQQJfMQQCYk8IBQJkQQJfMgQCZEIDCQAAAgUBWQIACQCUCgIFAmNiBQJjZAMJAAACBQJiUgUCYlYDCQBmAgUCZHkFAmNiCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY2IFAmR5BQJjZAMJAAACBQJiUgUCYlcDCQBmAgUCZHkFAmNkCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjYgkAZQIFAmNkBQJkeQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwkAAAIFAmJSBQJiVgkAlAoCBQJkQwUCZEQJAJQKAgUCZEQFAmRDBAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAABBAJkSQoAAmRKCQD8BwQFAmFPAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjeAkAzAgCCQCkAwEFAmRGCQDMCAIJAKQDAQUCZEcJAMwIAgIACQDMCAIFAmFDCQDMCAIFAWkJAMwIAgkApAMBBQJkSAkAzAgCBQFqBQNuaWwFA25pbAMJAAECBQJkSgIKKEludCwgSW50KQUCZEoJAAIBCQCsAgIJAAMBBQJkSgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZEsDCQAAAgUCYlIFAmJWBQJkSQkAlAoCCAUCZEkCXzIIBQJkSQJfMQQCZEwIBQJkSwJfMQQCZE0IBQJkSwJfMgQCZE4JAQJkdAoFAmJUBQFZCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCZEwJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJXBQJkTQAABgYHBQJkeQUCYlIEAmRPCAUCZE4CXzIEAmRQCAUCZE4CXzcEAmNuCAUCZE4CXzkEAmNYCAUCZE4DXzEwBAJjWQgFAmROA18xMQUCZE4BAmRRBgJkUgJkUwJkVAJkdQJkVQJkVgMJAQIhPQIJAJADAQUCZFQAAQkAAgECCzEgcG1udCBleHBkBAJkegkBAmFHAAQCYlUJAJEDAgUCZHoFAXMEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCZFcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdgQCZFgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkegUBdwQCZFkJAJEDAgUCZHoFAXIEAmJUAwkAAAIFAmR1BQR0aGlzBQJkVQUCZHUEAmRzCQEFdmFsdWUBCQCRAwIFAmRUAAAEAmJSCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAlOvcAwUCY3gJAAIBAg1NaW4gcG10IDEwIExQBAJiUQkA2AQBBQJkVgMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJkWgoAAmRKCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFIJAMwIAgUCY3gFA25pbAUDbmlsAwkAAQIFAmRKAgooSW50LCBJbnQpBQJkSgkAAgEJAKwCAgkAAwEFAmRKAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJlYQgFAmRaAl8xBAJiTwgFAmRaAl8yBAJlYgMDCQBmAgUCZFMAAAkAZgIFAmRTBQJlYQcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmRTBQNuaWwCAAUCZWEEAmVjAwkAAAIFAmRSBQJiVgkAlAoCBQJlYgAACQCUCgIAAAUCZWIEAmVkCAUCZWMCXzEEAmVlCAUCZWMCXzIEAmVmCQECYmcCCQEBRAIFAmNkBQJkWAkBAUQCBQJjYgUCZFcEAmVnCQEBRwIFAmVmBQFhBAJlaAMJAAACBQJkUgIFV0FWRVMFBHVuaXQJANkEAQUCZFIEAmVpAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPBQJlaAUDbmlsBQNuaWwEAmNuCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmViBQJlaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlZAUCZWUFAmN4BQJlZwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZwUDbmlsBQJlaQMJAAACBQJjbgUCY24EAmVqCQD8BwQFAmFCAgRidXJuCQDMCAIFAmN4BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJjeAUDbmlsAwkAAAIFAmVqBQJlagkAlAoCBQJjbgUCZWIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVrAQJlbAQCZW0FAWcEAmVuCQCRAwIFAmVsAAAEAmVvCQCRAwIFAmVsAAEEAmVwCQCnAwEFAWkEAmVxCQC5AgIJAKcDAQUCYUMFAmVwBAJlcgkAtwICBQJlbgUCZW8DCQAAAgUCZXIFAWUFAWUEAmVzCQC5AgIFAmVxBQJlbQoBAmV0AgJldQJldgQCZXcFAmV1BAJleAgFAmV3Al8xBAJleQgFAmV3Al8yAwkBAiE9AgUCZXkFBHVuaXQFAmV1BAJlegkAugICCQC5AgIJALkCAgUCZXgFAmV4BQJleAkAuQICCQC5AgIJALkCAgUCZW4FAmVvBQJlbQUCZW0EAmVBCQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZXMFAmVyBQJlcAkAuQICBQJlegUCZW0FAmV4CQC3AgIJALoCAgkAuQICCQC4AgIFAmVzBQJlcAUCZXgFAmVwCQC5AgIJALcCAgUCZW0FAWYFAmV6BAJlQgkBAU8BCQC4AgIFAmVBCQEFdmFsdWUBBQJleAMJAMACAgUBZgUCZUIJAJQKAgUCZUEFAmV2CQCUCgIFAmVBBQR1bml0BAJlQwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYFA25pbAQCZUQKAAJlRQUCZUMKAAJlRgkAkAMBBQJlRQoAAmVHCQCUCgIFAmVyBQR1bml0CgECZUgCAmVJAmVKAwkAZwIFAmVKBQJlRgUCZUkJAQJldAIFAmVJCQCRAwIFAmVFBQJlSgoBAmVLAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNwkBAmVLAgkBAmVIAgkBAmVIAgkBAmVIAgkBAmVIAgkBAmVIAgkBAmVIAgkBAmVIAgUCZUcAAAABAAIAAwAEAAUABgAHBAJleAgFAmVEAl8xBAJleQgFAmVEAl8yAwkBAiE9AgUCZXkFBHVuaXQFAmV4CQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmV4AQJlTAMCZWwCZHICZU0EAmVtBQFnBAJlTgkAkQMCBQJlbAMJAAACBQJkcgAAAAEAAAQCZXAJAKcDAQUBaQQCZXEJALkCAgkApwMBBQJhQwUCZXAEAmVyBQJlTgQCZXMJALkCAgUCZXEFAmVtBAJlTwkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVNBQJlTQkAuQICBQJlTgUCZW0FAmVNBQJlcAkAuQICBQJlcwUCZW0EAmVQCQC4AgIJALcCAgUCZXIJALoCAgkAuQICBQJlTQUCZXAFAmVzBQJlTQoBAmV0AgJldQJldgQCZVEFAmV1BAJlUggFAmVRAl8xBAJleQgFAmVRAl8yAwkBAiE9AgUCZXkFBHVuaXQFAmV1BAJlUwkAugICCQC3AgIJALkCAgUCZVIFAmVSBQJlTwkAtwICCQC5AgIFAWcFAmVSBQJlUAQCZVQJAQFPAQkAuAICBQJlUwkBBXZhbHVlAQUCZVIDCQDAAgIFAWYFAmVUCQCUCgIFAmVTBQJldgkAlAoCBQJlUwUEdW5pdAQCZUMJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZVUKAAJlRQUCZUMKAAJlRgkAkAMBBQJlRQoAAmVHCQCUCgIFAmVNBQR1bml0CgECZUgCAmVJAmVKAwkAZwIFAmVKBQJlRgUCZUkJAQJldAIFAmVJCQCRAwIFAmVFBQJlSgoBAmVLAgJlSQJlSgMJAGcCBQJlSgUCZUYFAmVJCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlSwIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIJAQJlSAIFAmVHAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVSCAUCZVUCXzEEAmV5CAUCZVUCXzIDCQECIT0CBQJleQUEdW5pdAUCZVIJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZVIBAmVWAAQCYXYJAKIIAQkBAVEAAwkAAQIFAmF2AgZTdHJpbmcEAmVyBQJhdgkA2QQBBQJlcgMJAAECBQJhdgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlVwAEAmF2CQCiCAEJAQFSAAMJAAECBQJhdgIGU3RyaW5nBAJlcgUCYXYJANkEAQUCZXIDCQABAgUCYXYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZVgJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZVkBAmRyBAJhdgkBAmVWAAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZVoFAmF2AwkAAAIIBQJkcg9jYWxsZXJQdWJsaWNLZXkFAmVaBgUCZVgDCQABAgUCYXYCBFVuaXQDCQAAAggFAmRyBmNhbGxlcgUEdGhpcwYFAmVYCQACAQILTWF0Y2ggZXJyb3IeAmRyAQtjb25zdHJ1Y3RvcgEBUAQCZU8JAQJlWQEFAmRyAwkAAAIFAmVPBQJlTwkAzAgCCQELU3RyaW5nRW50cnkCCQEBUAAFAVAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEKc2V0TWFuYWdlcgECZmEEAmVPCQECZVkBBQJkcgMJAAACBQJlTwUCZU8EAmZiCQDZBAEFAmZhAwkAAAIFAmZiBQJmYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAmZhBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBDmNvbmZpcm1NYW5hZ2VyAAQCYkwJAQJlVwAEAmZjAwkBCWlzRGVmaW5lZAEFAmJMBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYwUCZmMEAmZkAwkAAAIIBQJkcg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmJMBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmZAUCZmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEACQDYBAEJAQV2YWx1ZQEFAmJMCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQNwdXQCAmZlAmZmBAJmZwkBAmFLAAQCZmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZnBQF6AgpXciBzdCBhZGRyBAJmaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZmcFAUECCldyIHNsIGFkZHIDCQBmAgAABQJmZQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZmoJAQJkdAoJAKUIAQgFAmRyBmNhbGxlcgkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHIIcGF5bWVudHMAAQUCZmUGBwYAAAIABAJjVwgFAmZqAl8yBAJkUAgFAmZqAl83BAJjbggFAmZqAl85BAJjWAgFAmZqA18xMAQCY1kIBQJmagNfMTEEAmJWCAUCZmoDXzEyBAJiVwgFAmZqA18xMwQCY0oJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmNKBQJjSgQCZmsEAmF2BQJjSgMJAAECBQJhdgIHQWRkcmVzcwQCZmwFAmF2CQD8BwQFAmZsAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsEAmZtAwkAZgIFAmNYAAAJAPwHBAUCZmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZtBQJmbQQCZm4DCQBmAgUCY1kAAAkA/AcEBQJmaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJXBQJjWQUDbmlsBQNuaWwDCQAAAgUCZm4FAmZuBAJmbwMFAmZmBAJmcAkA/AcEBQJmaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmNXBQNuaWwDCQAAAgUCZnAFAmZwBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRyBmNhbGxlcgUCY1cFAmRQBQNuaWwJAM4IAgUCY24FAmZvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQlwdXRPbmVUa24FAmRMAmRNAmZxAmJtAmZmBAJiRAkBAmFLAAQCZmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJEBQF6AgpXciBzdCBhZGRyBAJmaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkQFAUECCldyIHNsIGFkZHIEAmZyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiRAUBQgILV3IgZ3d4IGFkZHIEAmZzCQECYUcABAJiVgkAkQMCBQJmcwUBdAQCYlcJAJEDAgUCZnMFAXUEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZnMFAXYEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZnMFAXcEAmZ0CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhZAACAAQCYlQDCQAAAgUCZnQJAKUIAQgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyBmNhbGxlcgMDAwMJAGcCAAAFAmJtBgkAZwIAAAUCZEwGCQBnAgAABQJkTQYJAGcCAAAFAmZxCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCYlIJANgEAQkBBXZhbHVlAQgFAmRzB2Fzc2V0SWQEAmZ1CAUCZHMGYW1vdW50BAJmdgkBAmJNAQUCZnUEAmN4CAUCZnYCXzEEAmJPCAUCZnYCXzIDCQBmAgCAreIEBQJmdQkAAgECDVdyb25nIHBtdCBhbXQEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJmdwMJAAACBQJiUgUCYlYDAwkAZgIFAmZ1BQJjYgYJAGYCBQJkTAUCY3gJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYJAGUCBQJjYgUCZnUFAmNkCQBlAgUCY3gFAmRMBQJkTQAAAAADCQAAAgUCYlIFAmJXAwMJAGYCBQJmdQUCY2QGCQBmAgUCZE0FAmN4CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQJjYgkAZQIFAmNkBQJmdQAAAAAJAGUCBQJjeAUCZE0FAmRMCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZEMIBQJmdwJfMQQCZEQIBQJmdwJfMgQCZngIBQJmdwJfMwQCZnkIBQJmdwJfNAQCZnoIBQJmdwJfNQQCZkEIBQJmdwJfNgQCYnIJAPwHBAUCZnICBWNhbGNECQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJicQkA/AcEBQJmcgIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEMFAmZ4BQJmQQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJkRAUCZnoFAmZ5CQDMCAIFAmFDCQDMCAIFAWkJAMwIAgUBagUDbmlsBQNuaWwEAmZCCQECYnADCQCnAwEJAQJhdQEFAmJxCQCnAwEJAQJhdQEFAmJyBQFoAwkAAAIFAmZCBQJmQgQCZE4JAQJkdAoJAKUIAQgFAmRyBmNhbGxlcgkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlYFAmRMCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVwUCZE0FAmJtBgYGBQJjeAUCYlIEAmRPCAUCZE4CXzIEAmRQCAUCZE4CXzcEAmNuCAUCZE4CXzkEAmNYCAUCZE4DXzEwBAJjWQgFAmROA18xMQQCZkMJAQJiagMJALYCAQUCZE8JALYCAQUCZnEJALYCAQUCYm0EAmNXCQCgAwEIBQJmQwJfMgQCZmoJAPwHBAUCYUICBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsEAmF2BQJmagMJAAECBQJhdgIHQWRkcmVzcwQCZmwFAmF2CQD8BwQFAmZsAgRlbWl0CQDMCAIFAmNXBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsEAmZtAwkAZgIFAmNYAAAJAPwHBAUCZmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJjWAUDbmlsBQNuaWwDCQAAAgUCZm0FAmZtBAJmbgMJAGYCBQJjWQAACQD8BwQFAmZpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVwUCY1kFA25pbAUDbmlsAwkAAAIFAmZuBQJmbgQCZm8DBQJmZgQCZnAJAPwHBAUCZmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRQBQJjVwUDbmlsAwkAAAIFAmZwBQJmcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcgZjYWxsZXIFAmNXBQJkUAUDbmlsBAJlaQMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwkA2QQBBQJiUgUDbmlsBQNuaWwJAM4IAgkAzggCBQJjbgUCZm8FAmVpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQtwdXRPbmVUa25WMgICZFMCZmYDCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmR6CQECYUcABAJiVgkAkQMCBQJkegUBdAQCYlcJAJEDAgUCZHoFAXUEAmRXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHoFAXYEAmRYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHoFAXcEAmJUAwkAAAIIBQJkcgZjYWxsZXIFBHRoaXMIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcgZjYWxsZXIEAmRzCQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABAJiUgkA2AQBCQEFdmFsdWUBCAUCZHMHYXNzZXRJZAQCY3gIBQJkcwZhbW91bnQDCQBmAgCAreIEBQJjeAkAAgECDVdyb25nIHBtdCBhbXQEAmNKCQECZHgEBQJjeAUCYlIJAKUIAQUCYlQJANgEAQgFAmRyDXRyYW5zYWN0aW9uSWQEAmRPCAUCY0oCXzIEAmRQCAUCY0oCXzcEAmNuCAUCY0oCXzkEAmNYCAUCY0oDXzEwBAJjWQgFAmNKA18xMQQCY1cDAwkAZgIFAmRTAAAJAGYCBQJkUwUCZE8HCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJkUwUDbmlsAgAFAmRPBAJmagkA/AcEBQJhQgIEZW1pdAkAzAgCBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmoFAmZqBAJmawQCYXYFAmZqAwkAAQIFAmF2AgdBZGRyZXNzBAJmbAUCYXYJAPwHBAUCZmwCBGVtaXQJAMwIAgUCY1cFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZrBQJmawQCZm0DCQBmAgUCY1gAAAkA/AcEBQJhTgIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlYFAmNYBQNuaWwFA25pbAMJAAACBQJmbQUCZm0EAmZuAwkAZgIFAmNZAAAJAPwHBAUCYU4CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJXBQJjWQUDbmlsBQNuaWwDCQAAAgUCZm4FAmZuBAJmbwMFAmZmBAJmcAkA/AcEBQJhTQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZFAFAmNXBQNuaWwDCQAAAgUCZnAFAmZwBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRyBmNhbGxlcgUCY1cFAmRQBQNuaWwEAmJPCAkBAmJNAQUCY3gCXzIEAmVpAwkAZgIFAmJPAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUYFAmJPCQDZBAEFAmJSBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY24FAmZvBQJlaQUCY1cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHIBH3B1dE9uZVRrblYyV2l0aEJvbnVzT2xkUkVBRE9OTFkCAmZEAmZFBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJjSgkBAmR4BAUCZkQFAmZFAgACAAQCZE8IBQJjSgJfMgQCY2cIBQJjSgJfMwQCZkYIBQJjSgJfNgQCZFAIBQJjSgJfNwQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmZHCQBrAwUCY2QFAWEFAmNiBAJmSAkAawMFAmZEBQFhCQBkAgUCZkcFAWEEAmZJCQBlAgUCZkQFAmZIBAJmSgkAawMFAmZGBQJmSQUCY2QEAmZLCQBrAwkAZQIFAmRPBQJmSgUBYQUCZkoEAmJPCAkBAmJNAQUCZkQCXzIJAJQKAgUDbmlsCQCVCgMFAmRPBQJiTwUCZksCZHIBCnB1dEZvckZyZWUBAmZMAwkAZgIAAAUCZkwJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZHIIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZE4JAQJkdAoJAKUIAQgFAmRyBmNhbGxlcgkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHIIcGF5bWVudHMAAQUCZkwHBwYAAAIACAUCZE4CXzkCZHIBA2dldAAEAmNKCQECZHEBBQJkcgQCZk0IBQJjSgJfMQQCY20IBQJjSgJfMgQCY3gIBQJjSgJfMwQCYlIIBQJjSgJfNAQCY24IBQJjSgJfNQQCZVAJAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZVAFAmVQBQJjbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgEJZ2V0T25lVGtuBQJmTgJmTwJmUAJkUgJibQMJAQIhPQIJAJADAQgFAmRyCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCYkQJAQJhRwAEAmJVCQCRAwIFAmJEBQFzBAJiVgkAkQMCBQJiRAUBdAQCYlcJAJEDAgUCYkQFAXUEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXYEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkQFAXcEAmJaCQCRAwIFAmJEBQFyBAJmZwkBAmFLAAQCZnIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZnBQFCAgpXciBzbCBhZGRyBAJkcwkBBXZhbHVlAQkAkQMCCAUCZHIIcGF5bWVudHMAAAQCZnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFkAAIABAJiVAMJAAACBQJmdAkApQgBCAUCZHIGY2FsbGVyCAUCZHIMb3JpZ2luQ2FsbGVyCAUCZHIGY2FsbGVyBAJiUQkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAQCYlIJAQV2YWx1ZQEIBQJkcwdhc3NldElkBAJjeAgFAmRzBmFtb3VudAMJAGYCAICU69wDBQJjeAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFAmJtBgkAZgIAAAUCZk4GCQBmAgAABQJmUAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFAmJVCQDYBAEFAmJSCQACAQIIV3JvbmcgTFAEAmNKCQECYlAECQDYBAEIBQJkcg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJjeAgFAmRyBmNhbGxlcgQCZlEIBQJjSgJfMQQCZlIIBQJjSgJfMgQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmZTAwkAAAIFAmRSBQJiVgkAmQoHCQBlAgUCY2IFAmZRCQBlAgUCY2QFAmZSBQJmTgUCZlIAAAAACQBkAgUCZlEFAmZOAwkAAAIFAmRSBQJiVwkAmQoHCQBlAgUCY2IFAmZRCQBlAgUCY2QFAmZSAAAAAAUCZk4FAmZRCQBkAgUCZlIFAmZOCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZEMIBQJmUwJfMQQCZEQIBQJmUwJfMgQCZngIBQJmUwJfMwQCZnkIBQJmUwJfNAQCZnoIBQJmUwJfNQQCZkEIBQJmUwJfNgQCZlQIBQJmUwJfNwMDCQBmAgAABQJmeAYJAGYCAAAFAmZ6CQACAQIKV3JvbmcgY2FsYwQCYnIJAPwHBAUCZnICBWNhbGNECQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkRAkAzAgCBQJhQwkAzAgCBQFpCQDMCAIFAWoFA25pbAUDbmlsBAJicQkA/AcEBQJmcgIFY2FsY0QJAMwIAgkApAMBCQBkAgkAZQIFAmRDBQJmeAUCZkEJAMwIAgkApAMBCQBlAgkAZAIFAmREBQJmeQUCZnoJAMwIAgUCYUMJAMwIAgUBaQkAzAgCBQFqBQNuaWwFA25pbAQCZkIJAQJicAMJAKcDAQkBAmF1AQUCYnEJAKcDAQkBAmF1AQUCYnIFAWgDCQAAAgUCZkIFAmZCBAJlYQgJAQJiTQEFAmZUAl8xBAJmVQkBAmJqAwkAtgIBBQJlYQkAtgIBBQJmUAkAtgIBBQJibQMJAAACBQJmVQUCZlUEAmZWAwkAAAIFAmRSBQJiVgkAlAoCCQCgAwEIBQJmVQJfMgAACQCUCgIAAAkAoAMBCAUCZlUCXzIEAmVkCAUCZlYCXzEEAmVlCAUCZlYCXzIEAmViCQBkAgUCZWQFAmVlBAJiTwkAZQIFAmZUBQJlYQQCZWgDCQAAAgUCZFICBVdBVkVTBQR1bml0CQDZBAEFAmRSBAJlaQMJAGYCBQJiTwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFGBQJiTwUCZWgFA25pbAUDbmlsBAJlZgkBAmJnAgkBAUQCBQJjZAUCYlkJAQFEAgUCY2IFAmJYBAJlZwkBAUcCBQJlZgUBYQQCY24JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlQFAmViBQJlaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUCYlQFAmJRCQECYmEGBQJlZAUCZWUFAmN4BQJlZwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJlZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZwUDbmlsAwkAAAIFAmNuBQJjbgQCZWoJAPwHBAUCYUICBGJ1cm4JAMwIAgUCY3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmN4BQNuaWwDCQAAAgUCZWoFAmVqCQDOCAIFAmNuBQJlaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcgELZ2V0T25lVGtuVjICAmRSAmRTBAJmVwkBAmRRBgUCZFIFAmRTCAUCZHIIcGF5bWVudHMIBQJkcgZjYWxsZXIIBQJkcgxvcmlnaW5DYWxsZXIIBQJkcg10cmFuc2FjdGlvbklkBAJjbggFAmZXAl8xBAJlYggFAmZXAl8yCQCUCgIFAmNuBQJlYgJkcgEWZ2V0T25lVGtuVjJPbGRSRUFET05MWQICZFICZlgEAmR6CQECYUcABAJiVQkAkQMCBQJkegUBcwQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJjSgkBAmJQBAIABQJiVQUCZlgFBHRoaXMEAmZRCAUCY0oCXzEEAmZSCAUCY0oCXzIEAmNiCQECYmUBBQJiVgQCY2QJAQJiZQEFAmJXBAJkQwkAZQIFAmNiBQJmUQQCZEQJAGUCBQJjZAUCZlIEAmZZAwkAAAIFAmRSBQJiVgkAlgoEBQJkRAUCZEMFAmZSBQJmUQMJAAACBQJkUgUCYlcJAJYKBAUCZEMFAmREBQJmUQUCZlIJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJmWggFAmZZAl8xBAJnYQgFAmZZAl8yBAJnYggFAmZZAl8zBAJnYwgFAmZZAl80BAJnZAABBAJmTgoAAmRKCQD8BwQFAmFPAgxjYWxjU3dhcFhUb1kJAMwIAgkApAMBBQJnYgkAzAgCCQCkAwEFAmZaCQDMCAIJAKQDAQUCZ2EJAMwIAgIACQDMCAIFAmFDCQDMCAIFAWkJAMwIAgkApAMBBQJnZAkAzAgCBQFqBQNuaWwFA25pbAMJAAECBQJkSgIDSW50BQJkSgkAAgEJAKwCAgkAAwEFAmRKAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmZUCQBkAgUCZk4FAmdjBAJnZQkBAmJNAQUCZlQEAmVhCAUCZ2UCXzEEAmJPCAUCZ2UCXzIJAJQKAgUDbmlsCQCUCgIFAmVhBQJiTwJkcgETZ2V0T25lVGtuVjJSRUFET05MWQICZFICZlgEAmR6CQECYUcABAJiVgkAkQMCBQJkegUBdAQCYlcJAJEDAgUCZHoFAXUEAmJVCQCRAwIFAmR6BQFzBAJlbAkAzAgCCQC2AgEJAQJiZQEFAmJWCQDMCAIJALYCAQkBAmJlAQUCYlcFA25pbAQCZ2YJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJVAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJicgkBAmVrAQUCZWwEAmJxCQC4AgIFAmJyCQC8AgMJALYCAQUCZlgFAmJyBQJnZgQCZ2cDCQAAAgUCZFIFAmJWAAAAAQQCZ2gJAQJlTAMFAmVsBQJnZwUCYnEEAmdpCQC4AgIJAJEDAgUCZWwFAmdnBQJnaAQCZlQJAKADAQkAuAICBQJnaQUBZgQCZ2oJAQJiTQEFAmZUBAJlYQgFAmdqAl8xBAJiTwgFAmdqAl8yCQCUCgIFA25pbAkAlAoCBQJlYQUCYk8CZHIBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmRSAmZYBAJkegkBAmFHAAQCYlYJAJEDAgUCZHoFAXQEAmJXCQCRAwIFAmR6BQF1BAJiVQkAkQMCBQJkegUBcwQCY2IJAQJiZQEFAmJWBAJjZAkBAmJlAQUCYlcEAmdrCgACZEoJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkUgkAzAgCBQJmWAUDbmlsBQNuaWwDCQABAgUCZEoCCihJbnQsIEludCkFAmRKCQACAQkArAICCQADAQUCZEoCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmVhCAUCZ2sCXzEEAmJPCAUCZ2sCXzIEAmNKCQECYlAEAgAFAmJVBQJmWAUEdGhpcwQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCZ2wJAGQCBQJjbAUCY20EAmZLCQBrAwkAZQIFAmVhBQJnbAUBYQUCZ2wJAJQKAgUDbmlsCQCVCgMFAmVhBQJiTwUCZksCZHIBCWdldE5vTGVzcwICZ20CZ24EAmNKCQECZHEBBQJkcgQCY2wIBQJjSgJfMQQCY20IBQJjSgJfMgQCY3gIBQJjSgJfMwQCYlIIBQJjSgJfNAQCY24IBQJjSgJfNQMJAGYCBQJnbQUCY2wJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY2wCAyA8IAkApAMBBQJnbQMJAGYCBQJnbgUCY20JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjbQIDIDwgCQCkAwEFAmduBAJnbwkA/AcEBQJhQgIEYnVybgkAzAgCBQJjeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCY3gFA25pbAMJAAACBQJnbwUCZ28FAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyAQ11bnN0YWtlQW5kR2V0AQJiTgQCZ3ADCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ3AFAmdwBAJiRAkBAmFHAAQCZ3EJAQJhSwAEAmRQCQDZBAEJAJEDAgUCYkQFAXMEAmdyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncQUBegIKV3Igc3QgYWRkcgQCZ3MJAPwHBAUCZ3ICB3Vuc3Rha2UJAMwIAgkA2AQBBQJkUAkAzAgCBQJiTgUDbmlsBQNuaWwDCQAAAgUCZ3MFAmdzBAJjSgkBAmJQBAkA2AQBCAUCZHINdHJhbnNhY3Rpb25JZAkA2AQBBQJkUAUCYk4IBQJkcgZjYWxsZXIEAmJaCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY24IBQJjSgNfMTAEAmd0AwMJAQJhRAAGCQAAAgUCYloFAXAJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJiWgYDCQAAAgUCZ3QFAmd0BAJndQkA/AcEBQJhQgIEYnVybgkAzAgCBQJiTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkUAUCYk4FA25pbAMJAAACBQJndQUCZ3UFAmNuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyARN1bnN0YWtlQW5kR2V0T25lVGtuAwJndgJkUgJkUwQCZ3ADCQECIT0CCQCQAwEIBQJkcghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ3AFAmdwBAJiRAkBAmFHAAQCZ3EJAQJhSwAEAmRQCQDZBAEJAJEDAgUCYkQFAXMEAmdyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncQUBegIKV3Igc3QgYWRkcgQCZ3MJAPwHBAUCZ3ICB3Vuc3Rha2UJAMwIAgkA2AQBBQJkUAkAzAgCBQJndgUDbmlsBQNuaWwDCQAAAgUCZ3MFAmdzBAJndwkBAmRRBgUCZFIFAmRTCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkUAUCZ3YFA25pbAgFAmRyBmNhbGxlcggFAmRyDG9yaWdpbkNhbGxlcggFAmRyDXRyYW5zYWN0aW9uSWQEAmNuCAUCZ3cCXzEEAmViCAUCZ3cCXzIJAJQKAgUCY24FAmViCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRyARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJiTgJneAQCZHoJAQJhRwAEAmJWCQCRAwIFAmR6BQF0BAJiVwkAkQMCBQJkegUBdQQCYlUJAJEDAgUCZHoFAXMEAmd5BQJneAQCZnUFAmJOBAJnegkBAmJNAQUCZnUEAmZECAUCZ3oCXzEEAmJPCAUCZ3oCXzIEAmdBAwkAAAIFAmd5BQJiVgkAlAoCBQJmRAAAAwkAAAIFAmd5BQJiVwkAlAoCAAAFAmZECQACAQIPaW52YWxpZCBwYXltZW50BAJnQggFAmdBAl8xBAJnQwgFAmdBAl8yBAJnRAkBAmJlAQUCYlYEAmdFCQECYmUBBQJiVwQCZ0YJAGQCBQJnRAUCZ0IEAmdHCQBkAgUCZ0UFAmdDBAJicgkBAmVrAQkAzAgCCQC2AgEFAmdECQDMCAIJALYCAQUCZ0UFA25pbAQCYnEJAQJlawEJAMwIAgkAtgIBBQJnRgkAzAgCCQC2AgEFAmdHBQNuaWwEAmZGCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVQIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZ0gJALoCAgkAuQICBQJmRgkAuAICBQJicQUCYnIFAmJyBAJmRwkAawMFAmdFBQFhBQJnRAQCZkgJAGsDBQJmRAUBYQkAZAIFAmZHBQFhBAJmSQkAZQIFAmZEBQJmSAQCZkoJALwCAwUCZkYJALYCAQUCZkkJALYCAQUCZ0UEAmZLCQC8AgMJALgCAgUCZ0gFAmZKBQFiBQJmSgkAlAoCBQNuaWwJAJUKAwkAoAMBBQJnSAUCYk8JAKADAQUCZksCZHIBCGFjdGl2YXRlAgJnSQJnSgMJAQIhPQIJAKUIAQgFAmRyBmNhbGxlcgkApQgBBQJhQgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmdKBQNuaWwCB3N1Y2Nlc3MCZHIBBHNldFMCAmdLAmd0AwkBAiE9AgkApQgBCAUCZHIGY2FsbGVyCQECYXgCBQR0aGlzCQECYWQABQJlWAkAzAgCCQELU3RyaW5nRW50cnkCBQJnSwUCZ3QFA25pbAJkcgEEc2V0SQICZ0sCZ3QDCQECIT0CCQClCAEIBQJkcgZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZAAFAmVYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJnSwUCZ3QFA25pbAJkcgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUcAAmRyARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiZgkAlAoCBQNuaWwJAQJiZQEFAmJmAmRyARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieAJieQJiQwQCZ0wJAQJiQgMFAmJ4BQJieQUCYkMJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnTAAACQDMCAIJAKYDAQkAkQMCBQJnTAABCQDMCAIJAKYDAQkAkQMCBQJnTAACBQNuaWwCZHIBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgCZ00JAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUCZ00CZHIBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkcgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiaAJiaQkAlAoCBQNuaWwJAKYDAQkBAmJnAgkApwMBBQJiaAkApwMBBQJiaQJkcgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJRAmJtAmNwAmNxAmNyAmNzAmdOAmN0AmN1CQCUCgIFA25pbAkBAmNvDQUCYlEFAmJtBQJjcAUCY3EFAmNyBQJjcwUCZ04FAmN0BQJjdQYHAAACAAJkcgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJRAmdPAmJTAmdOBAJjSgkBAmJQBAUCYlEFAmdPBQJiUwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ04JAJQKAgUDbmlsCQCcCgoIBQJjSgJfMQgFAmNKAl8yCAUCY0oCXzMIBQJjSgJfNAgFAmNKAl81CAUCY0oCXzYIBQJjSgJfNwkApgMBCAUCY0oCXzgIBQJjSgJfOQgFAmNKA18xMAJkcgEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWYBAmdQAQJnUQAEAmdSBAJhdgkBAmVWAAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZVoFAmF2BQJlWgMJAAECBQJhdgIEVW5pdAgFAmdQD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhdgUCZ1ADCQABAgUCYXYCBU9yZGVyBAJkZQUCYXYEAmdTCQECYUUABAJnVAkBAmRkAQUCZGUEAmdVCQD0AwMIBQJkZQlib2R5Qnl0ZXMJAJEDAggFAmRlBnByb29mcwAACAUCZGUPc2VuZGVyUHVibGljS2V5BAJnVgkA9AMDCAUCZGUJYm9keUJ5dGVzCQCRAwIIBQJkZQZwcm9vZnMAAQUCZ1MDAwMFAmdUBQJnVQcFAmdWBwYJAQJhcQMFAmdUBQJnVQUCZ1YDCQABAgUCYXYCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlcgUCYXYEAmdXCQD2AwEJAQV2YWx1ZQEIBQJlcgZzY3JpcHQEAmdYCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUIJAQJhbwAEAmdZCQDxBwEFBHRoaXMDAwkAAAIFAmdYBQJnVwkBAiE9AgUCZ1kFAmdXBwYJAPQDAwgFAmdQCWJvZHlCeXRlcwkAkQMCCAUCZ1AGcHJvb2ZzAAAFAmdSCQD0AwMIBQJnUAlib2R5Qnl0ZXMJAJEDAggFAmdQBnByb29mcwAABQJnUuyTrDo=", "chainId": 84, "height": 2260536, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8jomopVErZGk1EDA2iSr7FvKiB3QN1wNHPs3zKrVoXeJ Next: Gz64QcKwVrRVgTixQCLM99VYeRiAVDayozszDaiZtyQ5 Diff:
OldNewDifferences
13861386 let gG = (gE + gC)
13871387 let br = ek([toBigInt(gD), toBigInt(gE)])
13881388 let bq = ek([toBigInt(gF), toBigInt(gG)])
1389- let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1390- let gH = ((gf * (bq - br)) / br)
1391- $Tuple2(nil, $Tuple5(toInt(gH), bO, 0, toString(br), toString(bq)))
1389+ let fF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1390+ let gH = ((fF * (bq - br)) / br)
1391+ let fG = fraction(gE, a, gD)
1392+ let fH = fraction(fD, a, (fG + a))
1393+ let fI = (fD - fH)
1394+ let fJ = fraction(fF, toBigInt(fI), toBigInt(gE))
1395+ let fK = fraction((gH - fJ), b, fJ)
1396+ $Tuple2(nil, $Tuple3(toInt(gH), bO, toInt(fK)))
13921397 }
13931398
13941399
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt((a - ((a * 1) / a)))
1919
2020 let i = "100"
2121
2222 let j = "1"
2323
2424 let k = "__"
2525
2626 let l = ""
2727
2828 let m = 1
2929
3030 let n = 2
3131
3232 let o = 3
3333
3434 let p = 4
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 5
4545
4646 let v = 6
4747
4848 let w = 7
4949
5050 let x = 8
5151
5252 let y = 9
5353
5454 let z = 1
5555
5656 let A = 7
5757
5858 let B = 10
5959
6060 let C = fraction(5, a, 10000)
6161
6262 func D (E,F) = fraction(toBigInt(E), c, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), c))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((d > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((d > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], k)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 func ac () = "%s__amp"
109109
110110
111111 func ad () = "%s__addonAddr"
112112
113113
114114 let ae = "%s__fee"
115115
116116 let af = valueOrElse(getInteger(this, ae), C)
117117
118118 func ag () = "%s__factoryConfig"
119119
120120
121121 func ah () = "%s%s__matcher__publicKey"
122122
123123
124124 func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
125125
126126
127127 func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
128128
129129
130130 func an () = "%s__shutdown"
131131
132132
133133 func ao () = "%s__allowedLpStableScriptHash"
134134
135135
136136 func ap () = "%s__feeCollectorAddress"
137137
138138
139139 func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
140140
141141
142142 func au (H) = {
143143 let av = H
144144 if ($isInstanceOf(av, "String"))
145145 then {
146146 let aw = av
147147 aw
148148 }
149149 else throw("fail cast to String")
150150 }
151151
152152
153153 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
154154
155155
156156 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
157157
158158
159159 let aB = addressFromStringValue(ax(this, P()))
160160
161161 let aC = ax(this, ac())
162162
163163 func aD () = valueOrElse(getBoolean(aB, an()), false)
164164
165165
166166 func aE () = fromBase58String(ax(aB, ah()))
167167
168168
169169 let aF = addressFromStringValue(ax(aB, ap()))
170170
171171 func aG () = {
172172 let aH = ax(this, aa())
173173 let aI = ax(this, ab())
174174 let aJ = aA(aB, al(aI))
175175 let aj = aA(aB, al(aH))
176176 split(ax(aB, ai(toString(aj), toString(aJ))), k)
177177 }
178178
179179
180180 func aK () = split(ax(aB, ag()), k)
181181
182182
183183 let aL = aK()
184184
185185 let aM = valueOrErrorMessage(addressFromString(aL[z]), "Invalid staking contract address")
186186
187187 let aN = valueOrErrorMessage(addressFromString(aL[A]), "Invalid slipage contract address")
188188
189189 let aO = valueOrErrorMessage(addressFromString(aL[B]), "Invalid gwx contract address")
190190
191191 func aP (aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(aZ)], k)
192192
193193
194194 func ba (bb,bc,bd,aT,aW,aX) = makeString(["%d%d%d%d%d%d", toString(bb), toString(bc), toString(bd), toString(aT), toString(aW), toString(aX)], k)
195195
196196
197197 func be (bf) = if ((bf == "WAVES"))
198198 then wavesBalance(this).available
199199 else assetBalance(this, fromBase58String(bf))
200200
201201
202202 func bg (bh,bi) = fraction(bh, c, bi)
203203
204204
205205 func bj (bk,bl,bm) = {
206206 let bn = fraction((bk - bl), b, bl)
207207 let bo = ((bm - N(bn)) > d)
208208 if (!(bo))
209209 then throw(("Big slpg: " + toString(bn)))
210210 else $Tuple2(bo, min([bk, bl]))
211211 }
212212
213213
214214 func bp (bq,br,bs) = {
215215 let bn = fraction(br, b, bq)
216216 let bt = (bs > bn)
217217 if (if (bt)
218218 then true
219219 else (br > bq))
220220 then throw(((((((toString(br) + " ") + toString(bq)) + " ") + toString(bn)) + " ") + toString(bs)))
221221 else bt
222222 }
223223
224224
225225 func bu (bv,bw,bx,by) = {
226226 let bz = D(bx, bv)
227227 let bA = D(by, bw)
228228 bg(bA, bz)
229229 }
230230
231231
232232 func bB (bx,by,bC) = {
233233 let bD = aG()
234234 let bE = parseIntValue(bD[v])
235235 let bF = parseIntValue(bD[w])
236236 let bG = bu(bE, bF, bx, by)
237237 let bi = D(bx, bE)
238238 let bh = D(by, bF)
239239 let bH = D(bC, a)
240240 let bI = bg(bi, bH)
241241 let bJ = bg(bh, bH)
242242 [bG, bI, bJ]
243243 }
244244
245245
246246 func bK (bx,by,bC) = {
247247 let bL = bB(bx, by, bC)
248248 [G(bL[0], a), G(bL[1], a), G(bL[2], a)]
249249 }
250250
251251
252252 func bM (bN) = {
253253 let bO = fraction(bN, af, a)
254254 $Tuple2((bN - bO), bO)
255255 }
256256
257257
258258 func bP (bQ,bR,bS,bT) = {
259259 let bD = aG()
260260 let bU = bD[s]
261261 let bV = bD[t]
262262 let bW = bD[u]
263263 let bX = parseIntValue(bD[v])
264264 let bY = parseIntValue(bD[w])
265265 let bZ = bD[r]
266266 let ca = valueOrErrorMessage(assetInfo(fromBase58String(bU)), "Wrong LP id").quantity
267267 if ((bU != bR))
268268 then throw("Wrong pmt asset")
269269 else {
270270 let cb = be(bV)
271271 let cc = D(cb, bX)
272272 let cd = be(bW)
273273 let ce = D(cd, bY)
274274 let cf = bg(ce, cc)
275275 let cg = G(cf, a)
276276 let ch = D(bS, a)
277277 let ci = D(ca, a)
278278 let cj = fraction(cc, ch, ci)
279279 let ck = fraction(ce, ch, ci)
280280 let cl = G(cj, bX)
281281 let cm = G(ck, bY)
282282 let cn = if ((bQ == ""))
283283 then nil
284284 else [ScriptTransfer(bT, cl, if ((bV == "WAVES"))
285285 then unit
286286 else fromBase58String(bV)), ScriptTransfer(bT, cm, if ((bW == "WAVES"))
287287 then unit
288288 else fromBase58String(bW)), StringEntry(Z(toString(bT), bQ), ba(cl, cm, bS, cg, height, lastBlock.timestamp)), IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg)]
289289 $Tuple10(cl, cm, bV, bW, cb, cd, ca, cf, bZ, cn)
290290 }
291291 }
292292
293293
294294 func co (bQ,bm,cp,cq,cr,cs,bT,ct,cu,cv,cw,cx,cy) = {
295295 let bD = aG()
296296 let bU = fromBase58String(bD[s])
297297 let cz = bD[t]
298298 let cA = bD[u]
299299 let cB = bD[x]
300300 let cC = bD[y]
301301 let cD = parseIntValue(bD[v])
302302 let cE = parseIntValue(bD[w])
303303 let bZ = bD[r]
304304 let cF = valueOrErrorMessage(assetInfo(bU), "Wr lp as").quantity
305305 let cb = if (ct)
306306 then be(cz)
307307 else if (if (cv)
308308 then (cy == cz)
309309 else false)
310310 then (be(cz) - cx)
311311 else if (cv)
312312 then be(cz)
313313 else (be(cz) - cp)
314314 let cd = if (ct)
315315 then be(cA)
316316 else if (if (cv)
317317 then (cy == cA)
318318 else false)
319319 then (be(cA) - cx)
320320 else if (cv)
321321 then be(cA)
322322 else (be(cA) - cr)
323323 let cG = D(cp, cD)
324324 let cH = D(cr, cE)
325325 let cI = bg(cH, cG)
326326 let cc = D(cb, cD)
327327 let ce = D(cd, cE)
328328 let cJ = if ((cF == 0))
329329 then {
330330 let cf = d
331331 let cK = d
332332 let bH = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bH, a), G(cG, cD), G(cH, cE), bg((ce + cH), (cc + cG)), cK)
334334 }
335335 else {
336336 let cf = bg(ce, cc)
337337 let cL = fraction(N((cf - cI)), c, cf)
338338 let cK = D(bm, a)
339339 if (if (if (cw)
340340 then (cf != d)
341341 else false)
342342 then (cL > cK)
343343 else false)
344344 then throw(((("Price slippage " + toString(cL)) + " > ") + toString(cK)))
345345 else {
346346 let cM = D(cF, a)
347347 let cN = fraction(cG, cf, c)
348348 let cO = fraction(cH, c, cf)
349349 let cP = if ((cN > cH))
350350 then $Tuple2(cO, cH)
351351 else $Tuple2(cG, cN)
352352 let cQ = cP._1
353353 let cR = cP._2
354354 let bH = fraction(cM, cR, ce)
355355 $Tuple5(G(bH, a), G(cQ, cD), G(cR, cE), cf, cK)
356356 }
357357 }
358358 let cS = cJ._1
359359 let cT = cJ._2
360360 let cU = cJ._3
361361 let cg = G(cJ._4, a)
362362 let cV = G(cJ._5, a)
363363 if ((0 >= cS))
364364 then throw("LP <= 0")
365365 else {
366366 let cW = if (!(cu))
367367 then 0
368368 else cS
369369 let cX = (cp - cT)
370370 let cY = (cr - cU)
371371 let cZ = if (if (cv)
372372 then (cy == cz)
373373 else false)
374374 then $Tuple2(cx, 0)
375375 else if (if (cv)
376376 then (cy == cA)
377377 else false)
378378 then $Tuple2(0, cx)
379379 else $Tuple2(cT, cU)
380380 let da = cZ._1
381381 let db = cZ._2
382382 let dc = [IntegerEntry(S(), cg), IntegerEntry(T(height, lastBlock.timestamp), cg), StringEntry(W(bT, bQ), aP(da, db, cW, cg, bm, cV, height, lastBlock.timestamp, cX, cY))]
383383 $Tuple13(cS, cW, cg, cb, cd, cF, bU, bZ, dc, cX, cY, cq, cs)
384384 }
385385 }
386386
387387
388388 func dd (de) = {
389389 let bD = aG()
390390 let df = bD[t]
391391 let dg = bD[u]
392392 let bZ = parseIntValue(bD[r])
393393 let bE = parseIntValue(bD[v])
394394 let bF = parseIntValue(bD[w])
395395 let dh = be(df)
396396 let di = be(dg)
397397 let cf = if ((de.orderType == Buy))
398398 then bu(bE, bF, (dh + de.amount), di)
399399 else bu(bE, bF, (dh - de.amount), di)
400400 let cg = G(cf, a)
401401 if (if (if (aD())
402402 then true
403403 else (bZ == o))
404404 then true
405405 else (bZ == p))
406406 then throw("Admin blocked")
407407 else {
408408 let dj = de.assetPair.amountAsset
409409 let dk = if ((dj == unit))
410410 then "WAVES"
411411 else toBase58String(value(dj))
412412 let dl = de.assetPair.priceAsset
413413 let dm = if ((dl == unit))
414414 then "WAVES"
415415 else toBase58String(value(dl))
416416 if (if ((dk != df))
417417 then true
418418 else (dm != dg))
419419 then throw("Wr assets")
420420 else {
421421 let dn = de.price
422422 let cE = fraction(a, bF, bE)
423423 let do = J(dn, a, cE)
424424 let dp = if ((de.orderType == Buy))
425425 then (cg >= do)
426426 else (do >= cg)
427427 true
428428 }
429429 }
430430 }
431431
432432
433433 func dq (dr) = if ((size(dr.payments) != 1))
434434 then throw("1 pmnt exp")
435435 else {
436436 let ds = value(dr.payments[0])
437437 let bR = value(ds.assetId)
438438 let cx = ds.amount
439439 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
440440 let cl = cJ._1
441441 let cm = cJ._2
442442 let bZ = parseIntValue(cJ._9)
443443 let cn = cJ._10
444444 if (if (aD())
445445 then true
446446 else (bZ == p))
447447 then throw(("Admin blocked: " + toString(bZ)))
448448 else $Tuple5(cl, cm, cx, bR, cn)
449449 }
450450
451451
452452 func dt (du,Y,dv,dw,bm,cu,cv,cw,cx,cy) = {
453453 let cJ = co(Y, bm, value(dv).amount, value(dv).assetId, value(dw).amount, value(dw).assetId, du, (Y == ""), cu, cv, cw, cx, cy)
454454 let bZ = parseIntValue(cJ._8)
455455 if (if (if (aD())
456456 then true
457457 else (bZ == n))
458458 then true
459459 else (bZ == p))
460460 then throw(("Blocked:" + toString(bZ)))
461461 else cJ
462462 }
463463
464464
465465 func dx (dy,bR,bT,Y) = {
466466 let dz = aG()
467467 let bV = dz[t]
468468 let bW = dz[u]
469469 let cb = be(bV)
470470 let cd = be(bW)
471471 let dA = bM(dy)
472472 let cx = dA._1
473473 let bO = dA._2
474474 let dB = if ((Y == ""))
475475 then $Tuple2(cb, cd)
476476 else if ((bR == bV))
477477 then if ((dy > cb))
478478 then throw("invalid payment amount")
479479 else $Tuple2((cb - dy), cd)
480480 else if ((bR == bW))
481481 then if ((dy > cd))
482482 then throw("invalid payment amount")
483483 else $Tuple2(cb, (cd - dy))
484484 else throw("wrong pmtAssetId")
485485 let dC = dB._1
486486 let dD = dB._2
487487 let dE = if ((bR == bV))
488488 then $Tuple2(dC, dD)
489489 else $Tuple2(dD, dC)
490490 let dF = dE._1
491491 let dG = dE._2
492492 let dH = 1
493493 let dI = {
494494 let dJ = invoke(aO, "calcPutXOnly", [toString(cx), toString(dF), toString(dG), "", aC, i, toString(dH), j], nil)
495495 if ($isInstanceOf(dJ, "(Int, Int)"))
496496 then dJ
497497 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
498498 }
499499 let dK = if ((bR == bV))
500500 then dI
501501 else $Tuple2(dI._2, dI._1)
502502 let dL = dK._1
503503 let dM = dK._2
504504 let dN = dt(bT, Y, AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), 0, true, true, false, dy, bR)
505505 let dO = dN._2
506506 let dP = dN._7
507507 let cn = dN._9
508508 let cX = dN._10
509509 let cY = dN._11
510510 dN
511511 }
512512
513513
514514 func dQ (dR,dS,dT,du,dU,dV) = if ((size(dT) != 1))
515515 then throw("1 pmnt expd")
516516 else {
517517 let dz = aG()
518518 let bU = dz[s]
519519 let bV = dz[t]
520520 let bW = dz[u]
521521 let dW = parseIntValue(dz[v])
522522 let dX = parseIntValue(dz[w])
523523 let dY = dz[r]
524524 let bT = if ((du == this))
525525 then dU
526526 else du
527527 let ds = value(dT[0])
528528 let bR = value(ds.assetId)
529529 let cx = ds.amount
530530 if ((1000000000 > cx))
531531 then throw("Min pmt 10 LP")
532532 else {
533533 let bQ = toBase58String(dV)
534534 if ((bU != toBase58String(bR)))
535535 then throw("Wrong LP")
536536 else {
537537 let cb = be(bV)
538538 let cd = be(bW)
539539 let dZ = {
540540 let dJ = invoke(this, "getOneTknV2READONLY", [dR, cx], nil)
541541 if ($isInstanceOf(dJ, "(Int, Int)"))
542542 then dJ
543543 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
544544 }
545545 let ea = dZ._1
546546 let bO = dZ._2
547547 let eb = if (if ((dS > 0))
548548 then (dS > ea)
549549 else false)
550550 then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
551551 else ea
552552 let ec = if ((dR == bV))
553553 then $Tuple2(eb, 0)
554554 else $Tuple2(0, eb)
555555 let ed = ec._1
556556 let ee = ec._2
557557 let ef = bg(D(cd, dX), D(cb, dW))
558558 let eg = G(ef, a)
559559 let eh = if ((dR == "WAVES"))
560560 then unit
561561 else fromBase58String(dR)
562562 let ei = if ((bO > 0))
563563 then [ScriptTransfer(aF, bO, eh)]
564564 else nil
565565 let cn = ([ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)] ++ ei)
566566 if ((cn == cn))
567567 then {
568568 let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
569569 if ((ej == ej))
570570 then $Tuple2(cn, eb)
571571 else throw("Strict value is not equal to itself.")
572572 }
573573 else throw("Strict value is not equal to itself.")
574574 }
575575 }
576576 }
577577
578578
579579 func ek (el) = {
580580 let em = g
581581 let en = el[0]
582582 let eo = el[1]
583583 let ep = parseBigIntValue(i)
584584 let eq = (parseBigIntValue(aC) * ep)
585585 let er = (en + eo)
586586 if ((er == e))
587587 then e
588588 else {
589589 let es = (eq * em)
590590 func et (eu,ev) = {
591591 let ew = eu
592592 let ex = ew._1
593593 let ey = ew._2
594594 if ((ey != unit))
595595 then eu
596596 else {
597597 let ez = (((ex * ex) * ex) / (((en * eo) * em) * em))
598598 let eA = (((((es * er) / ep) + (ez * em)) * ex) / ((((es - ep) * ex) / ep) + ((em + f) * ez)))
599599 let eB = O((eA - value(ex)))
600600 if ((f >= eB))
601601 then $Tuple2(eA, ev)
602602 else $Tuple2(eA, unit)
603603 }
604604 }
605605
606606 let eC = [0, 1, 2, 3, 4, 5, 6]
607607 let eD = {
608608 let eE = eC
609609 let eF = size(eE)
610610 let eG = $Tuple2(er, unit)
611611 func eH (eI,eJ) = if ((eJ >= eF))
612612 then eI
613613 else et(eI, eE[eJ])
614614
615615 func eK (eI,eJ) = if ((eJ >= eF))
616616 then eI
617617 else throw("List size exceeds 7")
618618
619619 eK(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7)
620620 }
621621 let ex = eD._1
622622 let ey = eD._2
623623 if ((ey != unit))
624624 then ex
625625 else throw(("D calculation error, D = " + toString(ex)))
626626 }
627627 }
628628
629629
630630 func eL (el,dr,eM) = {
631631 let em = g
632632 let eN = el[if ((dr == 0))
633633 then 1
634634 else 0]
635635 let ep = parseBigIntValue(i)
636636 let eq = (parseBigIntValue(aC) * ep)
637637 let er = eN
638638 let es = (eq * em)
639639 let eO = (((((eM * eM) / (eN * em)) * eM) * ep) / (es * em))
640640 let eP = ((er + ((eM * ep) / es)) - eM)
641641 func et (eu,ev) = {
642642 let eQ = eu
643643 let eR = eQ._1
644644 let ey = eQ._2
645645 if ((ey != unit))
646646 then eu
647647 else {
648648 let eS = (((eR * eR) + eO) / ((g * eR) + eP))
649649 let eT = O((eS - value(eR)))
650650 if ((f >= eT))
651651 then $Tuple2(eS, ev)
652652 else $Tuple2(eS, unit)
653653 }
654654 }
655655
656656 let eC = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
657657 let eU = {
658658 let eE = eC
659659 let eF = size(eE)
660660 let eG = $Tuple2(eM, unit)
661661 func eH (eI,eJ) = if ((eJ >= eF))
662662 then eI
663663 else et(eI, eE[eJ])
664664
665665 func eK (eI,eJ) = if ((eJ >= eF))
666666 then eI
667667 else throw("List size exceeds 15")
668668
669669 eK(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eH(eG, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
670670 }
671671 let eR = eU._1
672672 let ey = eU._2
673673 if ((ey != unit))
674674 then eR
675675 else throw(("Y calculation error, Y = " + toString(eR)))
676676 }
677677
678678
679679 func eV () = {
680680 let av = getString(Q())
681681 if ($isInstanceOf(av, "String"))
682682 then {
683683 let er = av
684684 fromBase58String(er)
685685 }
686686 else if ($isInstanceOf(av, "Unit"))
687687 then unit
688688 else throw("Match error")
689689 }
690690
691691
692692 func eW () = {
693693 let av = getString(R())
694694 if ($isInstanceOf(av, "String"))
695695 then {
696696 let er = av
697697 fromBase58String(er)
698698 }
699699 else if ($isInstanceOf(av, "Unit"))
700700 then unit
701701 else throw("Match error")
702702 }
703703
704704
705705 let eX = throw("Permission denied")
706706
707707 func eY (dr) = {
708708 let av = eV()
709709 if ($isInstanceOf(av, "ByteVector"))
710710 then {
711711 let eZ = av
712712 if ((dr.callerPublicKey == eZ))
713713 then true
714714 else eX
715715 }
716716 else if ($isInstanceOf(av, "Unit"))
717717 then if ((dr.caller == this))
718718 then true
719719 else eX
720720 else throw("Match error")
721721 }
722722
723723
724724 @Callable(dr)
725725 func constructor (P) = {
726726 let eO = eY(dr)
727727 if ((eO == eO))
728728 then [StringEntry(P(), P)]
729729 else throw("Strict value is not equal to itself.")
730730 }
731731
732732
733733
734734 @Callable(dr)
735735 func setManager (fa) = {
736736 let eO = eY(dr)
737737 if ((eO == eO))
738738 then {
739739 let fb = fromBase58String(fa)
740740 if ((fb == fb))
741741 then [StringEntry(R(), fa)]
742742 else throw("Strict value is not equal to itself.")
743743 }
744744 else throw("Strict value is not equal to itself.")
745745 }
746746
747747
748748
749749 @Callable(dr)
750750 func confirmManager () = {
751751 let bL = eW()
752752 let fc = if (isDefined(bL))
753753 then true
754754 else throw("No pending manager")
755755 if ((fc == fc))
756756 then {
757757 let fd = if ((dr.callerPublicKey == value(bL)))
758758 then true
759759 else throw("You are not pending manager")
760760 if ((fd == fd))
761761 then [StringEntry(Q(), toBase58String(value(bL))), DeleteEntry(R())]
762762 else throw("Strict value is not equal to itself.")
763763 }
764764 else throw("Strict value is not equal to itself.")
765765 }
766766
767767
768768
769769 @Callable(dr)
770770 func put (fe,ff) = {
771771 let fg = aK()
772772 let fh = valueOrErrorMessage(addressFromString(fg[z]), "Wr st addr")
773773 let fi = valueOrErrorMessage(addressFromString(fg[A]), "Wr sl addr")
774774 if ((0 > fe))
775775 then throw("Wrong slippage")
776776 else if ((size(dr.payments) != 2))
777777 then throw("2 pmnts expd")
778778 else {
779779 let fj = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fe, true, false, true, 0, "")
780780 let cW = fj._2
781781 let dP = fj._7
782782 let cn = fj._9
783783 let cX = fj._10
784784 let cY = fj._11
785785 let bV = fj._12
786786 let bW = fj._13
787787 let cJ = invoke(aB, "emit", [cW], nil)
788788 if ((cJ == cJ))
789789 then {
790790 let fk = {
791791 let av = cJ
792792 if ($isInstanceOf(av, "Address"))
793793 then {
794794 let fl = av
795795 invoke(fl, "emit", [cW], nil)
796796 }
797797 else unit
798798 }
799799 if ((fk == fk))
800800 then {
801801 let fm = if ((cX > 0))
802802 then invoke(fi, "put", nil, [AttachedPayment(bV, cX)])
803803 else nil
804804 if ((fm == fm))
805805 then {
806806 let fn = if ((cY > 0))
807807 then invoke(fi, "put", nil, [AttachedPayment(bW, cY)])
808808 else nil
809809 if ((fn == fn))
810810 then {
811811 let fo = if (ff)
812812 then {
813813 let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
814814 if ((fp == fp))
815815 then nil
816816 else throw("Strict value is not equal to itself.")
817817 }
818818 else [ScriptTransfer(dr.caller, cW, dP)]
819819 (cn ++ fo)
820820 }
821821 else throw("Strict value is not equal to itself.")
822822 }
823823 else throw("Strict value is not equal to itself.")
824824 }
825825 else throw("Strict value is not equal to itself.")
826826 }
827827 else throw("Strict value is not equal to itself.")
828828 }
829829 }
830830
831831
832832
833833 @Callable(dr)
834834 func putOneTkn (dL,dM,fq,bm,ff) = {
835835 let bD = aK()
836836 let fh = valueOrErrorMessage(addressFromString(bD[z]), "Wr st addr")
837837 let fi = valueOrErrorMessage(addressFromString(bD[A]), "Wr sl addr")
838838 let fr = valueOrErrorMessage(addressFromString(bD[B]), "Wr gwx addr")
839839 let fs = aG()
840840 let bV = fs[t]
841841 let bW = fs[u]
842842 let bX = parseIntValue(fs[v])
843843 let bY = parseIntValue(fs[w])
844844 let ft = valueOrElse(getString(this, ad()), "")
845845 let bT = if ((ft == toString(dr.caller)))
846846 then dr.originCaller
847847 else dr.caller
848848 if (if (if (if ((0 >= bm))
849849 then true
850850 else (0 >= dL))
851851 then true
852852 else (0 >= dM))
853853 then true
854854 else (0 >= fq))
855855 then throw("Wrong params")
856856 else if ((size(dr.payments) != 1))
857857 then throw("1 pmnt expd")
858858 else {
859859 let ds = value(dr.payments[0])
860860 let bR = toBase58String(value(ds.assetId))
861861 let fu = ds.amount
862862 let fv = bM(fu)
863863 let cx = fv._1
864864 let bO = fv._2
865865 if ((10000000 > fu))
866866 then throw("Wrong pmt amt")
867867 else {
868868 let cb = be(bV)
869869 let cd = be(bW)
870870 let fw = if ((bR == bV))
871871 then if (if ((fu > cb))
872872 then true
873873 else (dL > cx))
874874 then throw("invalid payment amount")
875875 else $Tuple6((cb - fu), cd, (cx - dL), dM, 0, 0)
876876 else if ((bR == bW))
877877 then if (if ((fu > cd))
878878 then true
879879 else (dM > cx))
880880 then throw("invalid payment amount")
881881 else $Tuple6(cb, (cd - fu), 0, 0, (cx - dM), dL)
882882 else throw("wrong pmtAssetId")
883883 let dC = fw._1
884884 let dD = fw._2
885885 let fx = fw._3
886886 let fy = fw._4
887887 let fz = fw._5
888888 let fA = fw._6
889889 let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
890890 let bq = invoke(fr, "calcD", [toString(toBigInt(((dC + fx) - fA))), toString(toBigInt(((dD + fz) - fy))), aC, i, j], nil)
891891 let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
892892 if ((fB == fB))
893893 then {
894894 let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(fromBase58String(bV), dL), AttachedPayment(fromBase58String(bW), dM), bm, true, true, true, cx, bR)
895895 let dO = dN._2
896896 let dP = dN._7
897897 let cn = dN._9
898898 let cX = dN._10
899899 let cY = dN._11
900900 let fC = bj(toBigInt(dO), toBigInt(fq), toBigInt(bm))
901901 let cW = toInt(fC._2)
902902 let fj = invoke(aB, "emit", [cW], nil)
903903 if ((fj == fj))
904904 then {
905905 let fk = {
906906 let av = fj
907907 if ($isInstanceOf(av, "Address"))
908908 then {
909909 let fl = av
910910 invoke(fl, "emit", [cW], nil)
911911 }
912912 else unit
913913 }
914914 if ((fk == fk))
915915 then {
916916 let fm = if ((cX > 0))
917917 then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
918918 else nil
919919 if ((fm == fm))
920920 then {
921921 let fn = if ((cY > 0))
922922 then invoke(fi, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
923923 else nil
924924 if ((fn == fn))
925925 then {
926926 let fo = if (ff)
927927 then {
928928 let fp = invoke(fh, "stake", nil, [AttachedPayment(dP, cW)])
929929 if ((fp == fp))
930930 then nil
931931 else throw("Strict value is not equal to itself.")
932932 }
933933 else [ScriptTransfer(dr.caller, cW, dP)]
934934 let ei = if ((bO > 0))
935935 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
936936 else nil
937937 ((cn ++ fo) ++ ei)
938938 }
939939 else throw("Strict value is not equal to itself.")
940940 }
941941 else throw("Strict value is not equal to itself.")
942942 }
943943 else throw("Strict value is not equal to itself.")
944944 }
945945 else throw("Strict value is not equal to itself.")
946946 }
947947 else throw("Strict value is not equal to itself.")
948948 }
949949 }
950950 }
951951
952952
953953
954954 @Callable(dr)
955955 func putOneTknV2 (dS,ff) = if ((size(dr.payments) != 1))
956956 then throw("1 pmnt expd")
957957 else {
958958 let dz = aG()
959959 let bV = dz[t]
960960 let bW = dz[u]
961961 let dW = parseIntValue(dz[v])
962962 let dX = parseIntValue(dz[w])
963963 let bT = if ((dr.caller == this))
964964 then dr.originCaller
965965 else dr.caller
966966 let ds = value(dr.payments[0])
967967 let bR = toBase58String(value(ds.assetId))
968968 let cx = ds.amount
969969 if ((10000000 > cx))
970970 then throw("Wrong pmt amt")
971971 else {
972972 let cJ = dx(cx, bR, toString(bT), toBase58String(dr.transactionId))
973973 let dO = cJ._2
974974 let dP = cJ._7
975975 let cn = cJ._9
976976 let cX = cJ._10
977977 let cY = cJ._11
978978 let cW = if (if ((dS > 0))
979979 then (dS > dO)
980980 else false)
981981 then throw(makeString(["amount to receive is less than ", toString(dS)], ""))
982982 else dO
983983 let fj = invoke(aB, "emit", [cW], nil)
984984 if ((fj == fj))
985985 then {
986986 let fk = {
987987 let av = fj
988988 if ($isInstanceOf(av, "Address"))
989989 then {
990990 let fl = av
991991 invoke(fl, "emit", [cW], nil)
992992 }
993993 else unit
994994 }
995995 if ((fk == fk))
996996 then {
997997 let fm = if ((cX > 0))
998998 then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
999999 else nil
10001000 if ((fm == fm))
10011001 then {
10021002 let fn = if ((cY > 0))
10031003 then invoke(aN, "put", nil, [AttachedPayment(fromBase58String(bW), cY)])
10041004 else nil
10051005 if ((fn == fn))
10061006 then {
10071007 let fo = if (ff)
10081008 then {
10091009 let fp = invoke(aM, "stake", nil, [AttachedPayment(dP, cW)])
10101010 if ((fp == fp))
10111011 then nil
10121012 else throw("Strict value is not equal to itself.")
10131013 }
10141014 else [ScriptTransfer(dr.caller, cW, dP)]
10151015 let bO = bM(cx)._2
10161016 let ei = if ((bO > 0))
10171017 then [ScriptTransfer(aF, bO, fromBase58String(bR))]
10181018 else nil
10191019 $Tuple2(((cn ++ fo) ++ ei), cW)
10201020 }
10211021 else throw("Strict value is not equal to itself.")
10221022 }
10231023 else throw("Strict value is not equal to itself.")
10241024 }
10251025 else throw("Strict value is not equal to itself.")
10261026 }
10271027 else throw("Strict value is not equal to itself.")
10281028 }
10291029 }
10301030
10311031
10321032
10331033 @Callable(dr)
10341034 func putOneTknV2WithBonusOldREADONLY (fD,fE) = {
10351035 let dz = aG()
10361036 let bV = dz[t]
10371037 let bW = dz[u]
10381038 let cJ = dx(fD, fE, "", "")
10391039 let dO = cJ._2
10401040 let cg = cJ._3
10411041 let fF = cJ._6
10421042 let dP = cJ._7
10431043 let cb = be(bV)
10441044 let cd = be(bW)
10451045 let fG = fraction(cd, a, cb)
10461046 let fH = fraction(fD, a, (fG + a))
10471047 let fI = (fD - fH)
10481048 let fJ = fraction(fF, fI, cd)
10491049 let fK = fraction((dO - fJ), a, fJ)
10501050 let bO = bM(fD)._2
10511051 $Tuple2(nil, $Tuple3(dO, bO, fK))
10521052 }
10531053
10541054
10551055
10561056 @Callable(dr)
10571057 func putForFree (fL) = if ((0 > fL))
10581058 then throw("Wrong slpg")
10591059 else if ((size(dr.payments) != 2))
10601060 then throw("2 pmnts expd")
10611061 else {
10621062 let dN = dt(toString(dr.caller), toBase58String(dr.transactionId), AttachedPayment(value(dr.payments[0]).assetId, value(dr.payments[0]).amount), dr.payments[1], fL, false, false, true, 0, "")
10631063 dN._9
10641064 }
10651065
10661066
10671067
10681068 @Callable(dr)
10691069 func get () = {
10701070 let cJ = dq(dr)
10711071 let fM = cJ._1
10721072 let cm = cJ._2
10731073 let cx = cJ._3
10741074 let bR = cJ._4
10751075 let cn = cJ._5
10761076 let eP = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
10771077 if ((eP == eP))
10781078 then cn
10791079 else throw("Strict value is not equal to itself.")
10801080 }
10811081
10821082
10831083
10841084 @Callable(dr)
10851085 func getOneTkn (fN,fO,fP,dR,bm) = if ((size(dr.payments) != 1))
10861086 then throw("1 pmnt expd")
10871087 else {
10881088 let bD = aG()
10891089 let bU = bD[s]
10901090 let bV = bD[t]
10911091 let bW = bD[u]
10921092 let bX = parseIntValue(bD[v])
10931093 let bY = parseIntValue(bD[w])
10941094 let bZ = bD[r]
10951095 let fg = aK()
10961096 let fr = valueOrErrorMessage(addressFromString(fg[B]), "Wr sl addr")
10971097 let ds = value(dr.payments[0])
10981098 let ft = valueOrElse(getString(this, ad()), "")
10991099 let bT = if ((ft == toString(dr.caller)))
11001100 then dr.originCaller
11011101 else dr.caller
11021102 let bQ = toBase58String(dr.transactionId)
11031103 let bR = value(ds.assetId)
11041104 let cx = ds.amount
11051105 if ((1000000000 > cx))
11061106 then throw("Min pmt 10 LP")
11071107 else if (if (if ((0 > bm))
11081108 then true
11091109 else (0 > fN))
11101110 then true
11111111 else (0 > fP))
11121112 then throw("Wrong params")
11131113 else if ((bU != toBase58String(bR)))
11141114 then throw("Wrong LP")
11151115 else {
11161116 let cJ = bP(toBase58String(dr.transactionId), toBase58String(bR), cx, dr.caller)
11171117 let fQ = cJ._1
11181118 let fR = cJ._2
11191119 let cb = be(bV)
11201120 let cd = be(bW)
11211121 let fS = if ((dR == bV))
11221122 then $Tuple7((cb - fQ), (cd - fR), fN, fR, 0, 0, (fQ + fN))
11231123 else if ((dR == bW))
11241124 then $Tuple7((cb - fQ), (cd - fR), 0, 0, fN, fQ, (fR + fN))
11251125 else throw("wrong outAssetId")
11261126 let dC = fS._1
11271127 let dD = fS._2
11281128 let fx = fS._3
11291129 let fy = fS._4
11301130 let fz = fS._5
11311131 let fA = fS._6
11321132 let fT = fS._7
11331133 if (if ((0 > fx))
11341134 then true
11351135 else (0 > fz))
11361136 then throw("Wrong calc")
11371137 else {
11381138 let br = invoke(fr, "calcD", [toString(dC), toString(dD), aC, i, j], nil)
11391139 let bq = invoke(fr, "calcD", [toString(((dC - fx) + fA)), toString(((dD + fy) - fz)), aC, i, j], nil)
11401140 let fB = bp(parseBigIntValue(au(bq)), parseBigIntValue(au(br)), h)
11411141 if ((fB == fB))
11421142 then {
11431143 let ea = bM(fT)._1
11441144 let fU = bj(toBigInt(ea), toBigInt(fP), toBigInt(bm))
11451145 if ((fU == fU))
11461146 then {
11471147 let fV = if ((dR == bV))
11481148 then $Tuple2(toInt(fU._2), 0)
11491149 else $Tuple2(0, toInt(fU._2))
11501150 let ed = fV._1
11511151 let ee = fV._2
11521152 let eb = (ed + ee)
11531153 let bO = (fT - ea)
11541154 let eh = if ((dR == "WAVES"))
11551155 then unit
11561156 else fromBase58String(dR)
11571157 let ei = if ((bO > 0))
11581158 then [ScriptTransfer(aF, bO, eh)]
11591159 else nil
11601160 let ef = bg(D(cd, bY), D(cb, bX))
11611161 let eg = G(ef, a)
11621162 let cn = [ScriptTransfer(bT, eb, eh), StringEntry(Z(toString(bT), bQ), ba(ed, ee, cx, eg, height, lastBlock.timestamp)), IntegerEntry(S(), eg), IntegerEntry(T(height, lastBlock.timestamp), eg)]
11631163 if ((cn == cn))
11641164 then {
11651165 let ej = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
11661166 if ((ej == ej))
11671167 then (cn ++ ei)
11681168 else throw("Strict value is not equal to itself.")
11691169 }
11701170 else throw("Strict value is not equal to itself.")
11711171 }
11721172 else throw("Strict value is not equal to itself.")
11731173 }
11741174 else throw("Strict value is not equal to itself.")
11751175 }
11761176 }
11771177 }
11781178
11791179
11801180
11811181 @Callable(dr)
11821182 func getOneTknV2 (dR,dS) = {
11831183 let fW = dQ(dR, dS, dr.payments, dr.caller, dr.originCaller, dr.transactionId)
11841184 let cn = fW._1
11851185 let eb = fW._2
11861186 $Tuple2(cn, eb)
11871187 }
11881188
11891189
11901190
11911191 @Callable(dr)
11921192 func getOneTknV2OldREADONLY (dR,fX) = {
11931193 let dz = aG()
11941194 let bU = dz[s]
11951195 let bV = dz[t]
11961196 let bW = dz[u]
11971197 let cJ = bP("", bU, fX, this)
11981198 let fQ = cJ._1
11991199 let fR = cJ._2
12001200 let cb = be(bV)
12011201 let cd = be(bW)
12021202 let dC = (cb - fQ)
12031203 let dD = (cd - fR)
12041204 let fY = if ((dR == bV))
12051205 then $Tuple4(dD, dC, fR, fQ)
12061206 else if ((dR == bW))
12071207 then $Tuple4(dC, dD, fQ, fR)
12081208 else throw("wrong outAssetId")
12091209 let fZ = fY._1
12101210 let ga = fY._2
12111211 let gb = fY._3
12121212 let gc = fY._4
12131213 let gd = 1
12141214 let fN = {
12151215 let dJ = invoke(aO, "calcSwapXToY", [toString(gb), toString(fZ), toString(ga), "", aC, i, toString(gd), j], nil)
12161216 if ($isInstanceOf(dJ, "Int"))
12171217 then dJ
12181218 else throw(($getType(dJ) + " couldn't be cast to Int"))
12191219 }
12201220 let fT = (fN + gc)
12211221 let ge = bM(fT)
12221222 let ea = ge._1
12231223 let bO = ge._2
12241224 $Tuple2(nil, $Tuple2(ea, bO))
12251225 }
12261226
12271227
12281228
12291229 @Callable(dr)
12301230 func getOneTknV2READONLY (dR,fX) = {
12311231 let dz = aG()
12321232 let bV = dz[t]
12331233 let bW = dz[u]
12341234 let bU = dz[s]
12351235 let el = [toBigInt(be(bV)), toBigInt(be(bW))]
12361236 let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
12371237 let br = ek(el)
12381238 let bq = (br - fraction(toBigInt(fX), br, gf))
12391239 let gg = if ((dR == bV))
12401240 then 0
12411241 else 1
12421242 let gh = eL(el, gg, bq)
12431243 let gi = (el[gg] - gh)
12441244 let fT = toInt((gi - f))
12451245 let gj = bM(fT)
12461246 let ea = gj._1
12471247 let bO = gj._2
12481248 $Tuple2(nil, $Tuple2(ea, bO))
12491249 }
12501250
12511251
12521252
12531253 @Callable(dr)
12541254 func getOneTknV2WithBonusREADONLY (dR,fX) = {
12551255 let dz = aG()
12561256 let bV = dz[t]
12571257 let bW = dz[u]
12581258 let bU = dz[s]
12591259 let cb = be(bV)
12601260 let cd = be(bW)
12611261 let gk = {
12621262 let dJ = invoke(this, "getOneTknV2READONLY", [dR, fX], nil)
12631263 if ($isInstanceOf(dJ, "(Int, Int)"))
12641264 then dJ
12651265 else throw(($getType(dJ) + " couldn't be cast to (Int, Int)"))
12661266 }
12671267 let ea = gk._1
12681268 let bO = gk._2
12691269 let cJ = bP("", bU, fX, this)
12701270 let cl = cJ._1
12711271 let cm = cJ._2
12721272 let gl = (cl + cm)
12731273 let fK = fraction((ea - gl), a, gl)
12741274 $Tuple2(nil, $Tuple3(ea, bO, fK))
12751275 }
12761276
12771277
12781278
12791279 @Callable(dr)
12801280 func getNoLess (gm,gn) = {
12811281 let cJ = dq(dr)
12821282 let cl = cJ._1
12831283 let cm = cJ._2
12841284 let cx = cJ._3
12851285 let bR = cJ._4
12861286 let cn = cJ._5
12871287 if ((gm > cl))
12881288 then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
12891289 else if ((gn > cm))
12901290 then throw(((("Failed: " + toString(cm)) + " < ") + toString(gn)))
12911291 else {
12921292 let go = invoke(aB, "burn", [cx], [AttachedPayment(bR, cx)])
12931293 if ((go == go))
12941294 then cn
12951295 else throw("Strict value is not equal to itself.")
12961296 }
12971297 }
12981298
12991299
13001300
13011301 @Callable(dr)
13021302 func unstakeAndGet (bN) = {
13031303 let gp = if ((size(dr.payments) != 0))
13041304 then throw("No pmnts expd")
13051305 else true
13061306 if ((gp == gp))
13071307 then {
13081308 let bD = aG()
13091309 let gq = aK()
13101310 let dP = fromBase58String(bD[s])
13111311 let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
13121312 let gs = invoke(gr, "unstake", [toBase58String(dP), bN], nil)
13131313 if ((gs == gs))
13141314 then {
13151315 let cJ = bP(toBase58String(dr.transactionId), toBase58String(dP), bN, dr.caller)
13161316 let bZ = parseIntValue(cJ._9)
13171317 let cn = cJ._10
13181318 let gt = if (if (aD())
13191319 then true
13201320 else (bZ == p))
13211321 then throw(("Blocked: " + toString(bZ)))
13221322 else true
13231323 if ((gt == gt))
13241324 then {
13251325 let gu = invoke(aB, "burn", [bN], [AttachedPayment(dP, bN)])
13261326 if ((gu == gu))
13271327 then cn
13281328 else throw("Strict value is not equal to itself.")
13291329 }
13301330 else throw("Strict value is not equal to itself.")
13311331 }
13321332 else throw("Strict value is not equal to itself.")
13331333 }
13341334 else throw("Strict value is not equal to itself.")
13351335 }
13361336
13371337
13381338
13391339 @Callable(dr)
13401340 func unstakeAndGetOneTkn (gv,dR,dS) = {
13411341 let gp = if ((size(dr.payments) != 0))
13421342 then throw("No pmnts expd")
13431343 else true
13441344 if ((gp == gp))
13451345 then {
13461346 let bD = aG()
13471347 let gq = aK()
13481348 let dP = fromBase58String(bD[s])
13491349 let gr = valueOrErrorMessage(addressFromString(gq[z]), "Wr st addr")
13501350 let gs = invoke(gr, "unstake", [toBase58String(dP), gv], nil)
13511351 if ((gs == gs))
13521352 then {
13531353 let gw = dQ(dR, dS, [AttachedPayment(dP, gv)], dr.caller, dr.originCaller, dr.transactionId)
13541354 let cn = gw._1
13551355 let eb = gw._2
13561356 $Tuple2(cn, eb)
13571357 }
13581358 else throw("Strict value is not equal to itself.")
13591359 }
13601360 else throw("Strict value is not equal to itself.")
13611361 }
13621362
13631363
13641364
13651365 @Callable(dr)
13661366 func putOneTknV2WithBonusREADONLY (bN,gx) = {
13671367 let dz = aG()
13681368 let bV = dz[t]
13691369 let bW = dz[u]
13701370 let bU = dz[s]
13711371 let gy = gx
13721372 let fu = bN
13731373 let gz = bM(fu)
13741374 let fD = gz._1
13751375 let bO = gz._2
13761376 let gA = if ((gy == bV))
13771377 then $Tuple2(fD, 0)
13781378 else if ((gy == bW))
13791379 then $Tuple2(0, fD)
13801380 else throw("invalid payment")
13811381 let gB = gA._1
13821382 let gC = gA._2
13831383 let gD = be(bV)
13841384 let gE = be(bW)
13851385 let gF = (gD + gB)
13861386 let gG = (gE + gC)
13871387 let br = ek([toBigInt(gD), toBigInt(gE)])
13881388 let bq = ek([toBigInt(gF), toBigInt(gG)])
1389- let gf = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1390- let gH = ((gf * (bq - br)) / br)
1391- $Tuple2(nil, $Tuple5(toInt(gH), bO, 0, toString(br), toString(bq)))
1389+ let fF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bU)), "invalid lp asset").quantity)
1390+ let gH = ((fF * (bq - br)) / br)
1391+ let fG = fraction(gE, a, gD)
1392+ let fH = fraction(fD, a, (fG + a))
1393+ let fI = (fD - fH)
1394+ let fJ = fraction(fF, toBigInt(fI), toBigInt(gE))
1395+ let fK = fraction((gH - fJ), b, fJ)
1396+ $Tuple2(nil, $Tuple3(toInt(gH), bO, toInt(fK)))
13921397 }
13931398
13941399
13951400
13961401 @Callable(dr)
13971402 func activate (gI,gJ) = if ((toString(dr.caller) != toString(aB)))
13981403 then throw("denied")
13991404 else $Tuple2([StringEntry(aa(), gI), StringEntry(ab(), gJ)], "success")
14001405
14011406
14021407
14031408 @Callable(dr)
14041409 func setS (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
14051410 then eX
14061411 else [StringEntry(gK, gt)]
14071412
14081413
14091414
14101415 @Callable(dr)
14111416 func setI (gK,gt) = if ((toString(dr.caller) != ax(this, ad())))
14121417 then eX
14131418 else [IntegerEntry(gK, gt)]
14141419
14151420
14161421
14171422 @Callable(dr)
14181423 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aG())
14191424
14201425
14211426
14221427 @Callable(dr)
14231428 func getAccBalanceWrapperREADONLY (bf) = $Tuple2(nil, be(bf))
14241429
14251430
14261431
14271432 @Callable(dr)
14281433 func calcPricesWrapperREADONLY (bx,by,bC) = {
14291434 let gL = bB(bx, by, bC)
14301435 $Tuple2(nil, [toString(gL[0]), toString(gL[1]), toString(gL[2])])
14311436 }
14321437
14331438
14341439
14351440 @Callable(dr)
14361441 func fromX18WrapperREADONLY (H,gM) = $Tuple2(nil, G(parseBigIntValue(H), gM))
14371442
14381443
14391444
14401445 @Callable(dr)
14411446 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14421447
14431448
14441449
14451450 @Callable(dr)
14461451 func calcPriceBigIntWrapperREADONLY (bh,bi) = $Tuple2(nil, toString(bg(parseBigIntValue(bh), parseBigIntValue(bi))))
14471452
14481453
14491454
14501455 @Callable(dr)
14511456 func estimatePutOperationWrapperREADONLY (bQ,bm,cp,cq,cr,cs,gN,ct,cu) = $Tuple2(nil, co(bQ, bm, cp, cq, cr, cs, gN, ct, cu, true, false, 0, ""))
14521457
14531458
14541459
14551460 @Callable(dr)
14561461 func estimateGetOperationWrapperREADONLY (bQ,gO,bS,gN) = {
14571462 let cJ = bP(bQ, gO, bS, addressFromStringValue(gN))
14581463 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
14591464 }
14601465
14611466
14621467
14631468 @Callable(dr)
14641469 func getFeeREADONLY () = $Tuple2(nil, af)
14651470
14661471
14671472 @Verifier(gP)
14681473 func gQ () = {
14691474 let gR = {
14701475 let av = eV()
14711476 if ($isInstanceOf(av, "ByteVector"))
14721477 then {
14731478 let eZ = av
14741479 eZ
14751480 }
14761481 else if ($isInstanceOf(av, "Unit"))
14771482 then gP.senderPublicKey
14781483 else throw("Match error")
14791484 }
14801485 let av = gP
14811486 if ($isInstanceOf(av, "Order"))
14821487 then {
14831488 let de = av
14841489 let gS = aE()
14851490 let gT = dd(de)
14861491 let gU = sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
14871492 let gV = sigVerify(de.bodyBytes, de.proofs[1], gS)
14881493 if (if (if (gT)
14891494 then gU
14901495 else false)
14911496 then gV
14921497 else false)
14931498 then true
14941499 else aq(gT, gU, gV)
14951500 }
14961501 else if ($isInstanceOf(av, "SetScriptTransaction"))
14971502 then {
14981503 let er = av
14991504 let gW = blake2b256(value(er.script))
15001505 let gX = fromBase64String(value(getString(aB, ao())))
15011506 let gY = scriptHash(this)
15021507 if (if ((gX == gW))
15031508 then (gY != gW)
15041509 else false)
15051510 then true
15061511 else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15071512 }
15081513 else sigVerify(gP.bodyBytes, gP.proofs[0], gR)
15091514 }
15101515

github/deemru/w8io/c3f4982 
124.74 ms