tx · 3b8EK6QdA3wvsyzRcUHwXuu341SWRCW3Ehmh6u4Lix7o

3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG:  -0.01400000 Waves

2020.10.15 13:56 [1221583] smart account 3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG > SELF 0.00000000 Waves

{ "type": 13, "id": "3b8EK6QdA3wvsyzRcUHwXuu341SWRCW3Ehmh6u4Lix7o", "fee": 1400000, "feeAssetId": null, "timestamp": 1602759420275, "version": 2, "chainId": 84, "sender": "3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG", "senderPublicKey": "9SULUbW7L2jV2nv8v48Kdzox4cZ8jEfg778yJHJpgVwM", "proofs": [ "4otrJRqexFewKSB3LTwCDgzpZZgQcj33RgoCsBD35cHEBkqCjamA9MNEEVhizRwkW9V41zyWmfMKukn3BLrz4FRx" ], "script": "base64:AAIEAAAAAAAAAFoIAhIGCgQICAgIEgMKAQgSBgoECAgICBIECgIICBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIECgIICBIGCgQIAQEIEgQKAggIEgMKAQgAAAA6AAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAAB3NpZ25DdXQAAAAAAAAAAAgAAAAAB3VzZG5DdXQAAAAAAAAAAAoAAAAACHdhdmVzQ3V0AAAAAAAAAAAKAAAAAAVhZG1pbgIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABmFkbWluMgIAAAAjM016bTRWTHdzTjl1WndiVE16UGozWHV4VjZrRWZBUjhVRE4AAAAAD1dISVRFTElTVEVET05MWQYAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAAAAAA51c2VyUmVnaXN0ZXJlZAIAAAAKUkVHSVNURVJFRAAAAAAMdXNlclZlcmlmaWVkAgAAAAhWRVJJRklFRAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAl1c2VyUmVzZXQCAAAABVJFU0VUAAAAAAZvblNhbGUCAAAAB09OX1NBTEUAAAAABHNvbGQCAAAABFNPTEQAAAAACGNhbmNlbGVkAgAAAAhDQU5DRUxFRAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQAAAAAAAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpBwEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADAAAABnNpZ25JRAAAAAVPd25lcgAAAApzaGEyNTZIYXNoBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAADHNpZ25WZXJpZmllcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9mY18FAAAABnNpZ25JRAIAAAABXwUAAAAFT3duZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAMJAQAAAAhjb250YWlucwAAAAIFAAAAAWEFAAAACnNoYTI1Nkhhc2gGBwcBAAAAC3ZhbGlkYXRlQ0lEAAAAAQAAAANjaWQDAwkAAGYAAAACAAAAAAAAAABLCQABMQAAAAEFAAAAA2NpZAkAAGYAAAACAAAAAAAAAAA8CQABMQAAAAEJAAGRAAAAAgkABLUAAAACBQAAAANjaWQCAAAAAS8AAAAAAAAAAAAHCQAAZgAAAAIAAAAAAAAAABAJAAExAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAAA2NpZAIAAAABLwAAAAAAAAAAAQcBAAAADHZhbGlkYXRlSGFzaAAAAAEAAAAEaGFzaAkAAGYAAAACAAAAAAAAAABBCQABMQAAAAEFAAAABGhhc2gBAAAAC2tleVVzZXJBZGRyAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAABXVzZXJfBQAAAApjYWxsZXJBZGRyAQAAAAtrZXlVc2VyTmFtZQAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAp1c2VyX25hbWVfBQAAAApjYWxsZXJBZGRyAQAAAAtrZXlVc2VyRGVzYwAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAp1c2VyX2Rlc2NfBQAAAApjYWxsZXJBZGRyAQAAAA1rZXlVc2VyU29jaWFsAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADHVzZXJfc29jaWFsXwUAAAAKY2FsbGVyQWRkcgEAAAAMa2V5VXNlclRodW1iAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAAC3VzZXJfdGh1bWJfBQAAAApjYWxsZXJBZGRyAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlckRhdGUAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9kYXRlXwUAAAAKY2FsbGVyQWRkcgEAAAAKa2V5QXJ0RGF0ZQAAAAIAAAAKY2FsbGVyQWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X2RhdGVfBQAAAAVhcnRJZAIAAAABXwUAAAAKY2FsbGVyQWRkcgEAAAAKa2V5QXJ0TmFtZQAAAAIAAAAKY2FsbGVyQWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X25hbWVfBQAAAAVhcnRJZAIAAAABXwUAAAAKY2FsbGVyQWRkcgEAAAAKa2V5QXJ0RGVzYwAAAAIAAAAKY2FsbGVyQWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X2Rlc2NfBQAAAAVhcnRJZAIAAAABXwUAAAAKY2FsbGVyQWRkcgEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIAAAAKY2FsbGVyQWRkcgAAAAVh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c2hhMjU2TGljZW5jZQcJAAACAAAAAQIAAAAsTGljZW5jZSBIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0GAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIAAAADc3RyAAAAA21heAMJAAAAAAAAAgkAATEAAAABBQAAAANzdHIAAAAAAAAAAAAJAAACAAAAAQIAAAAYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAA3N0cgUAAAADbWF4CQAAAgAAAAEJAAEsAAAAAgUAAAADc3RyAgAAAAwgaXMgdG9vIGxvbmcGAAAACwAAAAFpAQAAAAxyZWdpc3RlclVzZXIAAAAEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAFdGh1bWIAAAAGc29jaWFsBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAPdXNlckNhblJlZ2lzdGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAACmNhbGxlckFkZHIEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADXVzZXJTdXNwZW5kZWQGCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAABLWW91IGFyZSBub3cgYWxsb3dlZCB0byByZWdpc3RlciwgeW91ciBhY2NvdW50IGhhdmUgYmVlbiBzdXNwZW5kZWQvIHJlbW92ZWQuAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAADnVzZXJSZWdpc3RlcmVkCQAAAgAAAAECAAAAPVlvdSBhcmUgYWxyZWFkeSByZWdpc3RlcmVkLCBwbGVhc2UgdXNlIHVwZGF0ZSBtZXRob2QgaW5zdGVhZC4DAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXICAAAAAAUAAAAPV0hJVEVMSVNURURPTkxZBwkAAAIAAAABAgAAAE1Zb3UgYXJlIG5vdyBhbGxvd2VkIHRvIHJlZ2lzdGVyIHlldCwgcGxlYXNlIGNvbnRhY3QgdXMgZmlyc3QgdG8gZ2V0IGFwcHJvdmVkLgMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALa2V5VXNlckRhdGUAAAABBQAAAApjYWxsZXJBZGRyBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJBZGRyAAAAAQUAAAAKY2FsbGVyQWRkcgkAASwAAAACCQABLAAAAAIFAAAAAmlkAgAAAAFfCQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAALZGVsZXRlRW50cnkAAAABAAAABWVudHJ5BAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAFZW50cnkFAAAAA25pbAkAAAIAAAABAgAAAAJubwAAAAFpAQAAAAp1cGRhdGVVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD3VzZXJDYW5SZWdpc3RlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAS1lvdSBhcmUgbm93IGFsbG93ZWQgdG8gcmVnaXN0ZXIsIHlvdXIgYWNjb3VudCBoYXZlIGJlZW4gc3VzcGVuZGVkLyByZW1vdmVkLgMDCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgIAAAAABgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJBbGxvd2VkCQAAAgAAAAECAAAAJ1BsZWFzZSByZWdpc3RlciBmaXJzdCB3aXRoIHJlZ2lzdGVyVXNlcgQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAJdGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAqNjAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAUAAAADbmlsAAAAAWkBAAAAEGNoYW5nZVVzZXJTdGF0dXMAAAACAAAAB2FkZHJlc3MAAAAGc3RhdHVzBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANY3VycmVudFN0YXR1cwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBAAAAAtzdGF0dXNUb1NldAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAx1c2VyVmVyaWZpZWQFAAAADHVzZXJWZXJpZmllZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA51c2VyUmVnaXN0ZXJlZAUAAAAOdXNlclJlZ2lzdGVyZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAUAAAANdXNlclN1c3BlbmRlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAUAAAALdXNlclJlbW92ZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQFAAAAC3VzZXJBbGxvd2VkAwMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAl1c2VyUmVzZXQJAAAAAAAAAgUAAAANY3VycmVudFN0YXR1cwUAAAALdXNlckFsbG93ZWQHAgAAAAAJAAACAAAAAQIAAAAOVW5rbm93biBzdGF0dXMDAwkAAAAAAAACBQAAAA1jdXJyZW50U3RhdHVzBQAAAAt1c2VyQWxsb3dlZAkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJBbGxvd2VkBwkAAAIAAAABAgAAABxUaGlzIHVzZXIgaXMgYWxyZWFkeSBhbGxvd2VkAwMJAAAAAAAAAgUAAAANY3VycmVudFN0YXR1cwUAAAAOdXNlclJlZ2lzdGVyZWQJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAcJAAACAAAAAQIAAAArVGhpcyB1c2VyIGlzIGFscmVhZHkgYWxsb3dlZCBhbmQgcmVnaXN0ZXJlZAMDCQAAAAAAAAIFAAAADWN1cnJlbnRTdGF0dXMFAAAADHVzZXJWZXJpZmllZAkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJBbGxvd2VkBwkAAAIAAAABAgAAAClUaGlzIHVzZXIgaXMgYWxyZWFkeSBhbGxvd2VkIGFuZCB2ZXJpZmllZAMDCQAAAAAAAAIFAAAACmNhbGxlckFkZHIFAAAABWFkbWluBgkAAAAAAAACBQAAAApjYWxsZXJBZGRyBQAAAAZhZG1pbjIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBQAAAAtzdGF0dXNUb1NldAkABEwAAAACCQEAAAALU3RyaW5nRW50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YW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAqWW91IGFscmVhZHkgYWRkZWQgdGhpcyBhcnR3b3JrIG9uIFNpZ24gQXJ0BAAAAAloYXNoRXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gDCQEAAAACIT0AAAACBQAAAAloYXNoRXhpc3QCAAAAAAkAAAIAAAABAgAAADNUaGlzIGFydHdvcmsgaGFzaCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgb24gU2lnbiBBcnQEAAAAD2lzU2lnbkNlcnRpZmllZAkBAAAAFGNoZWNrU2lnbkNlcnRpZmljYXRlAAAAAwUAAAAGc2lnbklEBQAAAA1jYWxsZXJBZGRyZXNzBQAAAApzaGEyNTZIYXNoAwkBAAAAASEAAAABBQAAAA9pc1NpZ25DZXJ0aWZpZWQJAAACAAAAAQIAAABLU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgb24gU2lnbi13ZWIuYXBwIHNtYXJ0IGNvbnRyYWN0IGZvciB0aGlzIGFkZHJlc3MuAwkAAAAAAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAAAJAAACAAAAAQIAAAAbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAIzEwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBuYW1lAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAD6AkAAAIAAAABAgAAACsxMDAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uBAAAAAh0YWdzTGlzdAkABLUAAAACBQAAAAR0YWdzAgAAAAEsAwkAAGYAAAACCQABkAAAAAEFAAAACHRhZ3NMaXN0AAAAAAAAAAAFCQAAAgAAAAECAAAAOFRhZ3Mgc2hvdWxkIGJlIG1heGltdW0gNSBzaW5nbGUgd29yZCBzZXBhcmF0ZWQgYnkgc3BhY2UuBAAAABB1c2VySXNSZWdpc3RlcmVkBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAA1jYWxsZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMFAAAAEHVzZXJVbnJlZ2lzdGVyZWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEHVzZXJJc1JlZ2lzdGVyZWQJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAAQdXNlclVucmVnaXN0ZXJlZAcJAAACAAAAAQIAAAA4UGxlYXNlIHJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJVc2VyIGluZm9zIiB0YWIDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAADXVzZXJTdXNwZW5kZWQJAAACAAAAAQIAAAAZWW91ciBhY2NvdW50IGlzIHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAeWW91ciBhY2NvdW50IGhhdmUgYmVlbiByZW1vdmVkAwkAAGYAAAACBQAAAAdtYXhtaW50AAAAAAAAAAAKCQAAAgAAAAECAAAAH01heGltdW0gMTAgZWRpdGlvbnMgcGVyIGFydHdvcmsDCQEAAAACIT0AAAACCQABMQAAAAEFAAAACnNoYTI1Nkhhc2gAAAAAAAAAAEAJAAACAAAAAQIAAAAxSGFzaCBzaG91bGQgYmUgc2hhMjU2IHN0cmluZyBjb21wb3NlZCBvZiA2NCBjaGFyLgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmtleUFydERhdGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACWNpZEV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAxzaGEyNTZFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAADXNoYTI1NkxpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VHlwZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABHRhZ3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAZzaWduSUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5QXJ0QXJ0aWRCeVNpZ25pZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABnNpZ25JRAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRrZXlBcnRIYXNoQnlUeGlkQWRkcgAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApzaGEyNTZIYXNoCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAAGYW1vdW50BQAAAAdhc3NldElkBQAAAANuaWwAAAAGaW52b2tlAQAAAA11cGRhdGVBcnR3b3JrAAAACwAAAAR0eGlkAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwAAAAR0eXBlAAAAB21heG1pbnQAAAAKY2lkRGlzcGxheQAAAAxzaGEyNTZFeHBvcnQAAAAJY2lkRXhwb3J0AAAADXNoYTI1NkxpY2VuY2UAAAAKY2lkTGljZW5jZQQAAAAIdXBkYXRlSWQJAAJYAAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlQWxsQ0lEAAAAAwUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApjaWRMaWNlbmNlCQAAAgAAAAECAAAAEFByb2JsZW0gd2l0aCBDSUQDCQEAAAABIQAAAAEJAQAAAA92YWxpZGF0ZUFsbEhhc2gAAAACBQAAAAxzaGEyNTZFeHBvcnQFAAAADXNoYTI1NkxpY2VuY2UJAAACAAAAAQIAAAATUHJvYmxlbSB3aXRoIEhhc2hlcwQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACmtleUFydE5hbWUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkAwkAAAAAAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAPRW50cnkgbm90IGZvdW5kAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAGjEwMCBDaGFyLiBtYXggZm9yIHRoZSBuYW1lAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAD6AkAAAIAAAABAgAAACIxMDAwIENoYXIuIG1heCBmb3IgdGhlIGRlc2NyaXB0aW9uBAAAAA1hcnR3b3JrTWludGVkBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDADCQAAAAAAAAIFAAAAAWIAAAAAAAAAAAAHBgcDCQAAZgAAAAIJAAGQAAAAAQkABLUAAAACBQAAAAR0YWdzAgAAAAEsAAAAAAAAAAAFCQAAAgAAAAECAAAACzUgdGFncyBtYXguBAAAABB1c2VySXNSZWdpc3RlcmVkBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAA1jYWxsZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMFAAAAEHVzZXJVbnJlZ2lzdGVyZWQDAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEHVzZXJJc1JlZ2lzdGVyZWQJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAAQdXNlclVucmVnaXN0ZXJlZAcJAAACAAAAAQIAAAA4UGxlYXNlIHJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJVc2VyIGluZm9zIiB0YWIDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAADXVzZXJTdXNwZW5kZWQJAAACAAAAAQIAAAAZWW91ciBhY2NvdW50IGlzIHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAeWW91ciBhY2NvdW50IGhhdmUgYmVlbiByZW1vdmVkAwkAAGYAAAACBQAAAAdtYXhtaW50AAAAAAAAAAAKCQAAAgAAAAECAAAAH01heGltdW0gMTAgZWRpdGlvbnMgcGVyIGFydHdvcmsDCQEAAAABIQAAAAEFAAAADWFydHdvcmtNaW50ZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydE5hbWUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnREZXNjAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAljaWRFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAxzaGEyNTZFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAApjaWRMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAADXNoYTI1NkxpY2VuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAHbWF4bWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABHRhZ3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAh1cGRhdGVJZAUAAAADbmlsCQAAAgAAAAECAAAAN1lvdSBjYW5ub3QgZWRpdCBhcnR3b3JrIHRoYXQgaGF2ZSBhbHJlYWR5IG1pbnRlZCBORlQocykAAAABaQEAAAANZGVsZXRlQXJ0d29yawAAAAIAAAAFYXJ0SWQAAAAHYWRkcmVzcwQAAAANY2FsbGVyQWRkcmVzcwkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAADGFkZHJlc3NUb1VzZQMDCQAAAAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFkbWluBgkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAZhZG1pbjIFAAAAB2FkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MEAAAACmVudHJ5RXhpc3QEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkBAAAACmtleUFydE5hbWUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAA3Tm8gYXJ0d29yayBtYXRjaGluZyB0aGlzIHJlcXVlc3Qgb3IgeW91IGFyZSBub3QgYWxsb3dlZAQAAAANYXJ0d29ya01pbnRlZAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAAMa2V5QXJ0SXNzdWVkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwAwkBAAAAAiE9AAAAAgUAAAABYgAAAAAAAAAAAAYHBwQAAAAHbWF4TWludAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAQAAAAKc2hhMjU2SGFzaAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAlTm8gYXJ0d29yayBoYXNoIG1hdGNoaW5nIHRoaXMgcmVxdWVzdAQAAAAGc2lnbklEBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAgTm8gU0lHTiBJRCBtYXRjaGluZyB0aGlzIHJlcXVlc3QEAAAADGRhdGFUb0RlbGV0ZQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0RGF0ZQAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydE5hbWUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREZXNjAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAICAAAADmxhc3RfaW52b2tlX2lkBQAAAAJpZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABNrZXlBcnRBcnRpZEJ5U2lnbmlkAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAZzaWduSUQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADGFkZHJlc3NUb1VzZQkABEwAAAACCQEA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ZGl0aW9uIGFsbG93ZWQgdG8gc2VsbCBmb3IgdGhpcyBlZGl0aW9uLgMDCQAAZgAAAAIFAAAACmFtb3VudFNvbGQAAAAAAAAAAAAJAQAAAAIhPQAAAAIFAAAACm1heENhblNlbGwFAAAAB21heE1pbnQHCQAAAgAAAAECAAAALllvdSBjYW5ub3QgY2hhbmdlIHRoZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAADXVzZXJTdXNwZW5kZWQJAAACAAAAAQIAAAAZWW91ciBhY2NvdW50IGlzIHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAeWW91ciBhY2NvdW50IGhhdmUgYmVlbiBkZWxldGVkBAAAAApzZWxsU3RhdHVzAwkAAGYAAAACBQAAAAVwcmljZQAAAAAAAAAAAAYHCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACnNlbGxTdGF0dXMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAtrZXlBcnRQcmljZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHbWF4TWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAVa2V5QXJ0QXNzZXRJZEFjY2VwdGVkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAAGaW52b2tlAQAAAApidXlBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAAAmlkCQACWAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACHRvdGFsTkZUCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQIAAAAQdG90YWxfbmZ0X2lzc3VlZAQAAAAGc2lnbklECQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALYXJ0d29ya05hbWUEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkBAAAACmtleUFydE5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMJAAACAAAAAQIAAAAZVGhpcyBhcnR3b3JrIGRvZXNuJ3QgZXhpdAQAAAAKZGlzcGxheUNJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAlleHBvcnRDSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAApleHBvcnRIYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmxpY2VuY2VDSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALbGljZW5jZUhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAAC2Rlc2NyaXB0aW9uCQABLwAAAAIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAprZXlBcnREZXNjAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAAAAAAAAAAAMgQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxhcnR3b3JrUHJpY2UJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAALa2V5QXJ0UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxwcmljZUFzc2V0SWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAApzb3VyY2VIYXNoCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAxhcnR3b3JrUHJpY2UAAAAAAAAAAAAJAAACAAAAAQIAAAAcVGhpcyBhcnR3b3JrIGlzIG5vdCBmb3Igc2VsbAMJAQAAAAEhAAAAAQUAAAAIaXNPblNhbGUJAAACAAAAAQIAAAAcVGhpcyBhcnR3b3JrIGlzIG5vdCBmb3Igc2FsZQQAAAAKbWF4Q2FuU2VsbAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQACWQAAAAEF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", "height": 1221583, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HdEyAaGRNuY2Wixqq3D7um2AkTyxToZHmGie4tXScPBy Next: CxHg64HGcYtsbZ9MTpLG2yaupKsd14esi2545sDP313B Diff:
OldNewDifferences
9191 }
9292
9393
94-func H (I,J) = {
95- let K = value(assetInfo(fromBase58String(J)))
96- if (if (if ((K.quantity != 1))
97- then true
98- else (K.decimals != 0))
99- then true
100- else (K.reissuable != false))
101- then (I + 0)
102- else (I + 1)
103- }
104-
105-
106-func L (M) = if (if ((75 > size(M)))
107- then (60 > size(split(M, "/")[0]))
94+func H (I) = if (if ((75 > size(I)))
95+ then (60 > size(split(I, "/")[0]))
10896 else false)
109- then (16 > size(split(M, "/")[1]))
97+ then (16 > size(split(I, "/")[1]))
11098 else false
11199
112100
113-func N (O) = (65 > size(O))
101+func J (K) = (65 > size(K))
114102
115103
116-func P (Q) = {
117- let y = getString(this, ("user_status_" + Q))
118- if ($isInstanceOf(y, "String"))
119- then {
120- let R = y
121- R
122- }
123- else throw("Something went wrong.")
124- }
104+func L (M) = ("user_" + M)
125105
126106
127-func S (T) = ("user_" + T)
107+func N (M) = ("user_name_" + M)
128108
129109
130-func U (T) = ("user_name_" + T)
110+func O (M) = ("user_desc_" + M)
131111
132112
133-func V (T) = ("user_desc_" + T)
113+func P (M) = ("user_social_" + M)
134114
135115
136-func W (T) = ("user_social_" + T)
116+func Q (M) = ("user_thumb_" + M)
137117
138118
139-func X (T) = ("user_thumb_" + T)
119+func R (M) = ("user_status_" + M)
140120
141121
142-func Y (T) = ("user_status_" + T)
122+func S (M) = ("user_date_" + M)
143123
144124
145-func Z (T) = ("user_date_" + T)
125+func T (M,U) = ((("art_date_" + U) + "_") + M)
146126
147127
148-func aa (T,ab) = ((("art_date_" + ab) + "_") + T)
128+func V (M,U) = ((("art_name_" + U) + "_") + M)
149129
150130
151-func ac (T,ab) = ((("art_name_" + ab) + "_") + T)
131+func W (M,U) = ((("art_desc_" + U) + "_") + M)
152132
153133
154-func ad (T,ab) = ((("art_desc_" + ab) + "_") + T)
134+func X (M,U) = ((("art_display_cid_" + U) + "_") + M)
155135
156136
157-func ae (T,ab) = ((("art_display_cid_" + ab) + "_") + T)
137+func Y (M,U) = ((("art_export_hash_" + U) + "_") + M)
158138
159139
160-func af (T,ab) = ((("art_export_hash_" + ab) + "_") + T)
140+func Z (M,U) = ((("art_export_cid_" + U) + "_") + M)
161141
162142
163-func ag (T,ab) = ((("art_export_cid_" + ab) + "_") + T)
143+func aa (M,U) = ((("art_maxmint_" + U) + "_") + M)
164144
165145
166-func ah (T,ab) = ((("art_maxmint_" + ab) + "_") + T)
146+func ab (M,U) = ((("art_signid_" + U) + "_") + M)
167147
168148
169-func ai (T,ab) = ((("art_signid_" + ab) + "_") + T)
149+func ac (M,U) = ((("art_issued_" + U) + "_") + M)
170150
171151
172-func aj (T,ab) = ((("art_issued_" + ab) + "_") + T)
152+func ad (M,U) = ((("art_onsale_" + U) + "_") + M)
173153
174154
175-func ak (T,ab) = ((("art_onsale_" + ab) + "_") + T)
155+func ae (M,U) = ((("art_licence_hash_" + U) + "_") + M)
176156
177157
178-func al (T,ab) = ((("art_licence_hash_" + ab) + "_") + T)
158+func af (M,U) = ((("art_licence_cid_" + U) + "_") + M)
179159
180160
181-func am (T,ab) = ((("art_licence_cid_" + ab) + "_") + T)
161+func ag (M,U) = ((("art_tags_" + U) + "_") + M)
182162
183163
184-func an (T,ab) = ((("art_tags_" + ab) + "_") + T)
164+func ah (M,U) = ((("art_type_" + U) + "_") + M)
185165
186166
187-func ao (T,ab) = ((("art_type_" + ab) + "_") + T)
167+func ai (M,U) = ((("art_price_" + U) + "_") + M)
188168
189169
190-func ap (T,ab) = ((("art_price_" + ab) + "_") + T)
170+func aj (M,U) = ((("art_assetAccepted_" + U) + "_") + M)
191171
192172
193-func aq (T,ab) = ((("art_assetAccepted_" + ab) + "_") + T)
173+func ak (M,al) = ((("get_hashbytxidaddr_" + al) + "_") + M)
194174
195175
196-func ar (T,as) = ((("get_hashbytxidaddr_" + as) + "_") + T)
176+func am (G) = ("get_owner_by_hash_" + G)
197177
198178
199-func at (G) = ("get_owner_by_hash_" + G)
179+func an (M,ao) = ((("get_artidbysignid_" + ao) + "_") + M)
200180
201181
202-func au (T,av) = ((("get_artidbysignid_" + av) + "_") + T)
182+func ap (G,M) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + M)))))
203183
204184
205-func aw (G,T) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + T)))))
185+func aq (ar,as,at) = if (if ((ar != ""))
186+ then !(H(ar))
187+ else false)
188+ then throw("Wrong Display CID length")
189+ else if (if ((as != ""))
190+ then !(H(as))
191+ else false)
192+ then throw("Wrong Export CID length")
193+ else if (if ((at != ""))
194+ then !(H(at))
195+ else false)
196+ then throw("Wrong Licence CID length")
197+ else true
198+
199+
200+func au (av,aw) = if (if ((av != ""))
201+ then !(J(av))
202+ else false)
203+ then throw("Export Hash should be 64 characters maximum")
204+ else if (if ((aw != ""))
205+ then !(J(aw))
206+ else false)
207+ then throw("Licence Hash should be 64 characters maximum")
208+ else true
209+
210+
211+func ax (ay,az) = if ((size(ay) == 0))
212+ then throw("Field cannot be is empty")
213+ else if ((size(ay) > az))
214+ then throw((ay + " is too long"))
215+ else true
206216
207217
208218 @Callable(B)
209-func registerUser (ax,ay,az,aA) = {
210- let T = toString(addressFromPublicKey(B.callerPublicKey))
211- let aB = w(Y(T))
212- let J = toBase58String(B.transactionId)
213- let aC = lastBlock.timestamp
214- if (if ((aB == p))
219+func registerUser (aA,aB,aC,aD) = {
220+ let M = toString(addressFromPublicKey(B.callerPublicKey))
221+ let aE = w(R(M))
222+ let aF = toBase58String(B.transactionId)
223+ let aG = lastBlock.timestamp
224+ if (if ((aE == p))
215225 then true
216- else (aB == q))
226+ else (aE == q))
217227 then throw("You are now allowed to register, your account have been suspended/ removed.")
218- else if ((aB == n))
228+ else if ((aE == n))
219229 then throw("You are already registered, please use update method instead.")
220- else if (if ((aB == ""))
230+ else if (if ((aE == ""))
221231 then l
222232 else false)
223233 then throw("You are now allowed to register yet, please contact us first to get approved.")
224- else if (if ((ax == ""))
234+ else if (if ((aA == ""))
225235 then true
226- else (ay == ""))
236+ else (aB == ""))
227237 then throw("Name and description cannot be empty")
228- else if ((size(ay) > 600))
238+ else if ((size(aB) > 600))
229239 then throw("600 Characters maximum for the description")
230- else [IntegerEntry(Z(T), aC), StringEntry(S(T), ((J + "_") + toString(lastBlock.timestamp))), StringEntry(U(T), ax), StringEntry(V(T), ay), StringEntry(W(T), aA), StringEntry(X(T), az), StringEntry(Y(T), n), StringEntry("last_invoke_id", J)]
240+ else [IntegerEntry(S(M), aG), StringEntry(L(M), ((aF + "_") + toString(lastBlock.timestamp))), StringEntry(N(M), aA), StringEntry(O(M), aB), StringEntry(P(M), aD), StringEntry(Q(M), aC), StringEntry(R(M), n), StringEntry("last_invoke_id", aF)]
231241 }
232242
233243
234244
235245 @Callable(B)
236-func deleteEntry (aD) = {
237- let T = toString(addressFromPublicKey(B.callerPublicKey))
238- if ((T == j))
239- then [DeleteEntry(aD)]
246+func deleteEntry (aH) = {
247+ let M = toString(addressFromPublicKey(B.callerPublicKey))
248+ if ((M == j))
249+ then [DeleteEntry(aH)]
240250 else throw("no")
241251 }
242252
243253
244254
245255 @Callable(B)
246-func updateUser (ax,ay,az,aA) = {
247- let T = toString(addressFromPublicKey(B.callerPublicKey))
248- let aB = w(Y(T))
249- if (if ((aB == p))
256+func updateUser (aA,aB,aC,aD) = {
257+ let M = toString(addressFromPublicKey(B.callerPublicKey))
258+ let aE = w(R(M))
259+ if (if ((aE == p))
250260 then true
251- else (aB == q))
261+ else (aE == q))
252262 then throw("You are now allowed to register, your account have been suspended/ removed.")
253- else if (if ((aB == ""))
263+ else if (if ((aE == ""))
254264 then true
255- else (aB == m))
265+ else (aE == m))
256266 then throw("Please register first with registerUser")
257267 else {
258- let J = toBase58String(B.transactionId)
259- let aC = lastBlock.timestamp
260- if (if ((ax == ""))
268+ let aF = toBase58String(B.transactionId)
269+ let aG = lastBlock.timestamp
270+ if (if ((aA == ""))
261271 then true
262- else (ay == ""))
272+ else (aB == ""))
263273 then throw("Name and description cannot be empty")
264- else if ((size(ay) > 600))
274+ else if ((size(aB) > 600))
265275 then throw("600 Characters maximum for the description")
266- else [StringEntry(U(T), ax), StringEntry(V(T), ay), StringEntry(W(T), aA), StringEntry(X(T), az), StringEntry("last_invoke_id", J)]
276+ else [StringEntry(N(M), aA), StringEntry(O(M), aB), StringEntry(P(M), aD), StringEntry(Q(M), aC), StringEntry("last_invoke_id", aF)]
267277 }
268278 }
269279
270280
271281
272282 @Callable(B)
273-func changeUserStatus (aE,aF) = {
274- let T = toString(addressFromPublicKey(B.callerPublicKey))
275- let J = toBase58String(B.transactionId)
276- let aG = w(Y(aE))
277- let aH = if ((aF == o))
283+func changeUserStatus (aI,aJ) = {
284+ let M = toString(addressFromPublicKey(B.callerPublicKey))
285+ let aF = toBase58String(B.transactionId)
286+ let aK = w(R(aI))
287+ let aL = if ((aJ == o))
278288 then o
279- else if ((aF == n))
289+ else if ((aJ == n))
280290 then n
281- else if ((aF == p))
291+ else if ((aJ == p))
282292 then p
283- else if ((aF == q))
293+ else if ((aJ == q))
284294 then q
285- else if ((aF == m))
295+ else if ((aJ == m))
286296 then m
287- else if (if ((aF == s))
288- then (aG == m)
297+ else if (if ((aJ == s))
298+ then (aK == m)
289299 else false)
290300 then ""
291301 else throw("Unknown status")
292- if (if ((aG == m))
293- then (aF == m)
302+ if (if ((aK == m))
303+ then (aJ == m)
294304 else false)
295305 then throw("This user is already allowed")
296- else if (if ((aG == n))
297- then (aF == m)
306+ else if (if ((aK == n))
307+ then (aJ == m)
298308 else false)
299309 then throw("This user is already allowed and registered")
300- else if (if ((aG == o))
301- then (aF == m)
310+ else if (if ((aK == o))
311+ then (aJ == m)
302312 else false)
303313 then throw("This user is already allowed and verified")
304- else if (if ((T == j))
314+ else if (if ((M == j))
305315 then true
306- else (T == k))
307- then [StringEntry(Y(aE), aH), StringEntry("last_invoke_id", J)]
308- else throw(((("You are not allowed to change user status " + T) + " / ") + j))
316+ else (M == k))
317+ then [StringEntry(R(aI), aL), StringEntry("last_invoke_id", aF)]
318+ else throw(((("You are not allowed to change user status " + M) + " / ") + j))
309319 }
310320
311321
312322
313323 @Callable(B)
314-func creditUser (aE) = {
315- let T = toString(addressFromPublicKey(B.callerPublicKey))
316- let J = toBase58String(B.transactionId)
317- if (if ((T == j))
324+func creditUser (aI) = {
325+ let M = toString(addressFromPublicKey(B.callerPublicKey))
326+ let aF = toBase58String(B.transactionId)
327+ if (if ((M == j))
318328 then true
319- else (T == k))
320- then [ScriptTransfer(Address(fromBase58String(aE)), 150000000000, d)]
329+ else (M == k))
330+ then [ScriptTransfer(Address(fromBase58String(aI)), 150000000000, d)]
321331 else throw("You are not allowed to do that")
322332 }
323333
324334
325335
326-@Callable(aI)
327-func addArtwork (G,E,ax,ay,aJ,aK,aL,aM,aN,aO,aP,aQ) = {
328- let ab = toBase58String(aI.transactionId)
329- let aR = toBase58String(aI.caller.bytes)
330- if (if ((aM != ""))
331- then !(L(aM))
332- else false)
333- then throw("Wrong Display CID length")
334- else if (if ((aO != ""))
335- then !(L(aO))
336- else false)
337- then throw("Wrong Export CID length")
338- else if (if ((aQ != ""))
339- then !(L(aQ))
340- else false)
341- then throw("Wrong Licence CID length")
342- else if (!(N(G)))
343- then throw("Source Hash should be 64 characters maximum")
344- else if (if ((aN != ""))
345- then !(N(aN))
346- else false)
347- then throw("Export Hash should be 64 characters maximum")
348- else if (if ((aP != ""))
349- then !(N(aP))
336+@Callable(aM)
337+func addArtwork (G,E,aA,aB,aN,aO,aP,ar,av,as,aw,at) = {
338+ let U = toBase58String(aM.transactionId)
339+ let aQ = toBase58String(aM.caller.bytes)
340+ if (!(aq(ar, as, at)))
341+ then throw("Problem with CID")
342+ else if (!(J(G)))
343+ then throw("Hash should be 64 characters maximum")
344+ else if (!(au(av, aw)))
345+ then throw("Problem with Hashes")
346+ else if ((size(aM.payments) == 0))
347+ then throw("No payment attached")
348+ else {
349+ let aR = value(aM.payments[0])
350+ let aS = value(aR.amount)
351+ let aT = if (if (isDefined(aR.assetId))
352+ then (aR.assetId == d)
350353 else false)
351- then throw("Licence Hash should be 64 characters maximum")
352- else if ((size(aI.payments) == 0))
353- then throw("No payment attached")
354- else {
355- let aS = value(aI.payments[0])
356- let aT = value(aS.amount)
357- let aU = if (if (isDefined(aS.assetId))
358- then (aS.assetId == d)
359- else false)
360- then aS.assetId
361- else throw("Only SIGN token accepted at the moment")
362- let aV = {
363- let y = getInteger(a, ("certification_fee_" + toBase58String(d)))
364- if ($isInstanceOf(y, "Int"))
365- then {
366- let aW = y
367- aW
354+ then aR.assetId
355+ else throw("Only SIGN token accepted at the moment")
356+ let aU = {
357+ let y = getInteger(a, ("certification_fee_" + toBase58String(d)))
358+ if ($isInstanceOf(y, "Int"))
359+ then {
360+ let aV = y
361+ aV
362+ }
363+ else throw("Price undefined in oracle")
364+ }
365+ if ((aS != aU))
366+ then throw(("Payment amount should be " + toString(aU)))
367+ else {
368+ let aW = w(ap(G, aQ))
369+ if ((aW != ""))
370+ then throw("You already added this artwork on Sign Art")
371+ else {
372+ let aX = w(am(G))
373+ if ((aX != ""))
374+ then throw("This artwork hash is already registered on Sign Art")
375+ else {
376+ let aY = D(E, aQ, G)
377+ if (!(aY))
378+ then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
379+ else if ((size(ar) == 0))
380+ then throw("Display CID cannot be empty")
381+ else if (!(ax(aA, 100)))
382+ then throw("100 Characters maximum for the name")
383+ else if (!(ax(aB, 1000)))
384+ then throw("1000 Characters maximum for the description")
385+ else {
386+ let aZ = split(aN, ",")
387+ if ((size(aZ) > 5))
388+ then throw("Tags should be maximum 5 single word separated by space.")
389+ else {
390+ let ba = {
391+ let y = getString(this, ("user_status_" + aQ))
392+ if ($isInstanceOf(y, "String"))
393+ then {
394+ let bb = y
395+ bb
396+ }
397+ else r
398+ }
399+ let aG = lastBlock.timestamp
400+ if (if (isDefined(ba))
401+ then (ba == r)
402+ else false)
403+ then throw("Please register this account first with \"User infos\" tab")
404+ else if ((ba == p))
405+ then throw("Your account is suspended")
406+ else if ((ba == q))
407+ then throw("Your account have been removed")
408+ else if ((aP > 10))
409+ then throw("Maximum 10 editions per artwork")
410+ else if ((size(G) != 64))
411+ then throw("Hash should be sha256 string composed of 64 char.")
412+ else [StringEntry(am(G), aQ), StringEntry(ap(G, aQ), U), IntegerEntry(T(aQ, U), aG), StringEntry(V(aQ, U), aA), StringEntry(W(aQ, U), aB), StringEntry(X(aQ, U), ar), StringEntry(Z(aQ, U), as), StringEntry(Y(aQ, U), av), StringEntry(ae(aQ, U), aw), StringEntry(af(aQ, U), at), StringEntry(ah(aQ, U), aO), StringEntry(ag(aQ, U), aN), IntegerEntry(aa(aQ, U), aP), StringEntry(ab(aQ, U), E), IntegerEntry(ac(aQ, U), 0), BooleanEntry(ad(aQ, U), false), StringEntry(an(aQ, E), U), StringEntry("last_invoke_id", U), StringEntry(ak(aQ, U), G), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
413+ }
414+ }
368415 }
369- else throw("Price undefined in oracle")
370416 }
371- if ((aT != aV))
372- then throw(("Payment amount should be " + toString(aV)))
373- else {
374- let aX = w(aw(G, aR))
375- if ((aX != ""))
376- then throw("You already added this artwork on Sign Art")
377- else {
378- let aY = w(at(G))
379- if ((aY != ""))
380- then throw("This artwork hash is already registered on Sign Art")
381- else {
382- let aZ = D(E, aR, G)
383- if (!(aZ))
384- then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
385- else if ((size(aM) == 0))
386- then throw("Display CID cannot be empty")
387- else if ((size(ax) == 0))
388- then throw("Title cannot be empty")
389- else if ((size(ax) > 100))
390- then throw("100 Characters maximum for the name")
391- else if ((size(ay) > 1000))
392- then throw("1000 Characters maximum for the description")
393- else if ((size(ay) == 0))
394- then throw("Description cannot be empty")
395- else {
396- let ba = split(aJ, ",")
397- if ((size(ba) > 5))
398- then throw("Tags should be maximum 5 single word separated by space.")
399- else {
400- let bb = {
401- let y = getString(this, ("user_status_" + aR))
402- if ($isInstanceOf(y, "String"))
403- then {
404- let bc = y
405- bc
406- }
407- else r
408- }
409- let aC = lastBlock.timestamp
410- if (if (isDefined(bb))
411- then (bb == r)
412- else false)
413- then throw("Please register this account first with \"User infos\" tab")
414- else if ((bb == p))
415- then throw("Your account is suspended")
416- else if ((bb == q))
417- then throw("Your account have been removed")
418- else if ((aL > 10))
419- then throw("Maximum 10 editions per artwork")
420- else if ((size(G) != 64))
421- then throw("Hash should be sha256 string composed of 64 char.")
422- else [StringEntry(at(G), aR), StringEntry(aw(G, aR), ab), IntegerEntry(aa(aR, ab), aC), StringEntry(ac(aR, ab), ax), StringEntry(ad(aR, ab), ay), StringEntry(ae(aR, ab), aM), StringEntry(ag(aR, ab), aO), StringEntry(af(aR, ab), aN), StringEntry(al(aR, ab), aP), StringEntry(am(aR, ab), aQ), StringEntry(ao(aR, ab), aK), StringEntry(an(aR, ab), aJ), IntegerEntry(ah(aR, ab), aL), StringEntry(ai(aR, ab), E), IntegerEntry(aj(aR, ab), 0), BooleanEntry(ak(aR, ab), false), StringEntry(au(aR, E), ab), StringEntry("last_invoke_id", ab), StringEntry(ar(aR, ab), G), ScriptTransfer(Address(fromBase58String(c)), aT, aU)]
423- }
424- }
425- }
426- }
427- }
428- }
417+ }
418+ }
429419 }
430420
431421
432422
433-@Callable(aI)
434-func updateArtwork (as,ax,ay,aJ,aK,aL,aM,aN,aO,aP,aQ) = {
435- let bd = toBase58String(aI.transactionId)
436- let aR = toBase58String(aI.caller.bytes)
437- if (if ((aM != ""))
438- then !(L(aM))
439- else false)
440- then throw("Wrong Display CID length")
441- else if (if ((aO != ""))
442- then !(L(aO))
443- else false)
444- then throw("Wrong Export CID length")
445- else if (if ((aQ != ""))
446- then !(L(aQ))
447- else false)
448- then throw("Wrong Licence CID length")
449- else if (if ((aN != ""))
450- then !(N(aN))
451- else false)
452- then throw("Export Hash should be 64 characters maximum")
453- else if (if ((aP != ""))
454- then !(N(aP))
455- else false)
456- then throw("Licence Hash should be 64 characters maximum")
457- else {
458- let aX = w(ac(aR, as))
459- if ((aX == ""))
460- then throw("This entry doesn't exist or you are not the owner")
461- else if ((size(ax) == 0))
462- then throw("Title cannot be empty")
463- else if ((size(ax) > 100))
464- then throw("100 Characters maximum for the name")
465- else if ((size(ay) > 1000))
466- then throw("1000 Characters maximum for the description")
467- else if ((size(ay) == 0))
468- then throw("Description cannot be empty")
469- else {
470- let be = {
471- let y = getInteger(this, aj(aR, as))
472- if ($isInstanceOf(y, "Int"))
473- then {
474- let R = y
475- if ((R == 0))
476- then false
477- else true
478- }
479- else false
480- }
481- let ba = split(aJ, ",")
482- if ((size(ba) > 5))
483- then throw("Tags should be maximum 5 single word separated by space.")
484- else {
485- let bb = {
486- let y = getString(this, ("user_status_" + aR))
487- if ($isInstanceOf(y, "String"))
488- then {
489- let bc = y
490- bc
491- }
492- else r
493- }
494- if (if (isDefined(bb))
495- then (bb == r)
496- else false)
497- then throw("Please register this account first with \"User infos\" tab")
498- else if ((bb == p))
499- then throw("Your account is suspended")
500- else if ((bb == q))
501- then throw("Your account have been removed")
502- else if ((aL > 10))
503- then throw("Maximum 10 editions per artwork")
504- else if (!(be))
505- then [StringEntry(ac(aR, as), ax), StringEntry(ad(aR, as), ay), StringEntry(ae(aR, as), aM), StringEntry(ag(aR, as), aO), StringEntry(af(aR, as), aN), StringEntry(am(aR, as), aQ), StringEntry(al(aR, as), aP), IntegerEntry(ah(aR, as), aL), StringEntry(an(aR, as), aJ), StringEntry(ao(aR, as), aK), StringEntry("last_invoke_id", bd)]
506- else throw("You cannot edit artwork that have already minted NFT(s)")
507- }
423+@Callable(aM)
424+func updateArtwork (al,aA,aB,aN,aO,aP,ar,av,as,aw,at) = {
425+ let bc = toBase58String(aM.transactionId)
426+ let aQ = toBase58String(aM.caller.bytes)
427+ if (!(aq(ar, as, at)))
428+ then throw("Problem with CID")
429+ else if (!(au(av, aw)))
430+ then throw("Problem with Hashes")
431+ else {
432+ let aW = w(V(aQ, al))
433+ if ((aW == ""))
434+ then throw("Entry not found")
435+ else if (!(ax(aA, 100)))
436+ then throw("100 Char. max for the name")
437+ else if (!(ax(aB, 1000)))
438+ then throw("1000 Char. max for the description")
439+ else {
440+ let bd = {
441+ let y = getInteger(this, ac(aQ, al))
442+ if ($isInstanceOf(y, "Int"))
443+ then {
444+ let be = y
445+ if ((be == 0))
446+ then false
447+ else true
448+ }
449+ else false
450+ }
451+ if ((size(split(aN, ",")) > 5))
452+ then throw("5 tags max.")
453+ else {
454+ let ba = {
455+ let y = getString(this, ("user_status_" + aQ))
456+ if ($isInstanceOf(y, "String"))
457+ then {
458+ let bb = y
459+ bb
508460 }
509- }
461+ else r
462+ }
463+ if (if (isDefined(ba))
464+ then (ba == r)
465+ else false)
466+ then throw("Please register this account first with \"User infos\" tab")
467+ else if ((ba == p))
468+ then throw("Your account is suspended")
469+ else if ((ba == q))
470+ then throw("Your account have been removed")
471+ else if ((aP > 10))
472+ then throw("Maximum 10 editions per artwork")
473+ else if (!(bd))
474+ then [StringEntry(V(aQ, al), aA), StringEntry(W(aQ, al), aB), StringEntry(X(aQ, al), ar), StringEntry(Z(aQ, al), as), StringEntry(Y(aQ, al), av), StringEntry(af(aQ, al), at), StringEntry(ae(aQ, al), aw), IntegerEntry(aa(aQ, al), aP), StringEntry(ag(aQ, al), aN), StringEntry(ah(aQ, al), aO), StringEntry("last_invoke_id", bc)]
475+ else throw("You cannot edit artwork that have already minted NFT(s)")
476+ }
477+ }
478+ }
510479 }
511480
512481
513482
514483 @Callable(B)
515-func deleteArtwork (ab,aE) = {
516- let aR = toString(addressFromPublicKey(B.callerPublicKey))
517- let J = toBase58String(B.transactionId)
518- let bf = if (if ((aR == j))
484+func deleteArtwork (U,aI) = {
485+ let aQ = toString(addressFromPublicKey(B.callerPublicKey))
486+ let aF = toBase58String(B.transactionId)
487+ let bf = if (if ((aQ == j))
519488 then true
520- else (aR == k))
521- then aE
522- else aR
523- let aX = {
524- let y = getString(this, ac(bf, ab))
489+ else (aQ == k))
490+ then aI
491+ else aQ
492+ let aW = {
493+ let y = getString(this, V(bf, U))
525494 if ($isInstanceOf(y, "String"))
526495 then {
527- let bc = y
528- bc
496+ let bb = y
497+ bb
529498 }
530499 else throw("No artwork matching this request or you are not allowed")
531500 }
532- let be = {
533- let y = getInteger(this, aj(bf, ab))
501+ let bd = {
502+ let y = getInteger(this, ac(bf, U))
534503 if ($isInstanceOf(y, "Int"))
535504 then {
536- let R = y
537- if ((R != 0))
505+ let be = y
506+ if ((be != 0))
538507 then true
539508 else false
540509 }
541510 else false
542511 }
543- let bg = A(ah(bf, ab))
512+ let bg = A(aa(bf, U))
544513 let G = {
545- let y = getString(this, ar(bf, ab))
514+ let y = getString(this, ak(bf, U))
546515 if ($isInstanceOf(y, "String"))
547516 then {
548- let bc = y
549- bc
517+ let bb = y
518+ bb
550519 }
551520 else throw("No artwork hash matching this request")
552521 }
553522 let E = {
554- let y = getString(this, ai(bf, ab))
523+ let y = getString(this, ab(bf, U))
555524 if ($isInstanceOf(y, "String"))
556525 then {
557- let bc = y
558- bc
526+ let bb = y
527+ bb
559528 }
560529 else throw("No SIGN ID matching this request")
561530 }
562- let bh = [DeleteEntry(aa(bf, ab)), DeleteEntry(ac(bf, ab)), DeleteEntry(ad(bf, ab)), DeleteEntry(ae(bf, ab)), DeleteEntry(ag(bf, ab)), DeleteEntry(af(bf, ab)), DeleteEntry(al(bf, ab)), DeleteEntry(am(bf, ab)), DeleteEntry(ao(bf, ab)), DeleteEntry(an(bf, ab)), DeleteEntry(ah(bf, ab)), DeleteEntry(ai(bf, ab)), DeleteEntry(aj(bf, ab)), DeleteEntry(ak(bf, ab)), StringEntry("last_invoke_id", J), DeleteEntry(at(G)), DeleteEntry(au(bf, E)), DeleteEntry(aw(G, bf)), DeleteEntry(ap(bf, ab)), DeleteEntry(ah(bf, ab)), DeleteEntry(aq(bf, ab)), DeleteEntry(((((("art_sold_1_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_2_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_3_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_4_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_5_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_6_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_7_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_8_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_9_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_10_of_" + toString(bg)) + "_") + ab) + "_") + bf))]
563- if (if ((aR == j))
531+ let bh = [DeleteEntry(T(bf, U)), DeleteEntry(V(bf, U)), DeleteEntry(W(bf, U)), DeleteEntry(X(bf, U)), DeleteEntry(Z(bf, U)), DeleteEntry(Y(bf, U)), DeleteEntry(ae(bf, U)), DeleteEntry(af(bf, U)), DeleteEntry(ah(bf, U)), DeleteEntry(ag(bf, U)), DeleteEntry(aa(bf, U)), DeleteEntry(ab(bf, U)), DeleteEntry(ac(bf, U)), DeleteEntry(ad(bf, U)), StringEntry("last_invoke_id", aF), DeleteEntry(am(G)), DeleteEntry(an(bf, E)), DeleteEntry(ap(G, bf)), DeleteEntry(ai(bf, U)), DeleteEntry(aa(bf, U)), DeleteEntry(aj(bf, U)), DeleteEntry(((((("art_sold_1_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_2_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_3_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_4_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_5_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_6_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_7_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_8_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_9_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_10_of_" + toString(bg)) + "_") + U) + "_") + bf))]
532+ if (if ((aQ == j))
564533 then true
565- else (aR == k))
534+ else (aQ == k))
566535 then bh
567- else if (!(be))
536+ else if (!(bd))
568537 then bh
569538 else throw("This artwork already have minted NFT, you cannot delete it")
570539 }
571540
572541
573542
574-@Callable(aI)
575-func sellArtwork (ab,aW,bg,aU) = {
576- let J = toBase58String(aI.transactionId)
577- let aR = toBase58String(aI.caller.bytes)
543+@Callable(aM)
544+func sellArtwork (U,aV,bg,aT) = {
545+ let aF = toBase58String(aM.transactionId)
546+ let aQ = toBase58String(aM.caller.bytes)
578547 let bi = lastBlock.timestamp
579- let bj = w(ag(aR, ab))
548+ let bj = w(Z(aQ, U))
580549 if ((size(split(bj, "/")[0]) != 59))
581550 then throw("You cannot sell artwork with no export file")
582551 else {
583- let bk = w(af(aR, ab))
552+ let bk = w(Y(aQ, U))
584553 if ((size(bk) != 64))
585554 then throw("You cannot sell artwork with no export hash")
586- else if (if (if ((aU != toBase58String(d)))
587- then (aU != toBase58String(f))
555+ else if (if (if ((aT != toBase58String(d)))
556+ then (aT != toBase58String(f))
588557 else false)
589- then (aU != toBase58String(e))
558+ then (aT != toBase58String(e))
590559 else false)
591560 then throw("Only SIGN, USDN or WAVES currency accepted at the moment")
592561 else {
593562 let bl = {
594- let y = getString(this, ac(aR, ab))
563+ let y = getString(this, V(aQ, U))
595564 if ($isInstanceOf(y, "String"))
596565 then {
597- let bc = y
598- bc
566+ let bb = y
567+ bb
599568 }
600569 else throw("This artwork doesn't exit or you are not the owner")
601570 }
602- let bb = {
603- let y = getString(this, Y(aR))
571+ let ba = {
572+ let y = getString(this, R(aQ))
604573 if ($isInstanceOf(y, "String"))
605574 then {
606- let bc = y
607- bc
575+ let bb = y
576+ bb
608577 }
609578 else throw("Please register this account first")
610579 }
611580 let bm = {
612- let y = getInteger(this, aj(aR, ab))
581+ let y = getInteger(this, ac(aQ, U))
613582 if ($isInstanceOf(y, "Int"))
614583 then {
615584 let bn = y
618587 else 0
619588 }
620589 let bo = {
621- let y = getInteger(this, ah(aR, ab))
590+ let y = getInteger(this, aa(aQ, U))
622591 if ($isInstanceOf(y, "Int"))
623592 then {
624593 let bn = y
634603 then (bo != bg)
635604 else false)
636605 then throw("You cannot change the maximum issuable anymore")
637- else if ((bb == p))
606+ else if ((ba == p))
638607 then throw("Your account is suspended")
639- else if ((bb == q))
608+ else if ((ba == q))
640609 then throw("Your account have been deleted")
641610 else {
642- let bp = if ((aW > 0))
611+ let bp = if ((aV > 0))
643612 then true
644613 else false
645-[BooleanEntry(ak(aR, ab), bp), IntegerEntry(ap(aR, ab), aW), IntegerEntry(ah(aR, ab), bg), StringEntry(aq(aR, ab), aU), StringEntry("last_invoke_id", J)]
614+[BooleanEntry(ad(aQ, U), bp), IntegerEntry(ai(aQ, U), aV), IntegerEntry(aa(aQ, U), bg), StringEntry(aj(aQ, U), aT), StringEntry("last_invoke_id", aF)]
646615 }
647616 }
648617 }
650619
651620
652621
653-@Callable(aI)
654-func buyArtwork (ab,bq) = {
655- let J = toBase58String(aI.transactionId)
656- let aR = toBase58String(aI.caller.bytes)
622+@Callable(aM)
623+func buyArtwork (U,bq) = {
624+ let aF = toBase58String(aM.transactionId)
625+ let aQ = toBase58String(aM.caller.bytes)
657626 let br = A("total_nft_issued")
658- let E = w(ai(bq, ab))
627+ let E = w(ab(bq, U))
659628 let bl = {
660- let y = getString(this, ac(bq, ab))
629+ let y = getString(this, V(bq, U))
661630 if ($isInstanceOf(y, "String"))
662631 then {
663- let bc = y
664- bc
632+ let bb = y
633+ bb
665634 }
666635 else throw("This artwork doesn't exit")
667636 }
668- let bs = w(ae(bq, ab))
669- let bj = w(ag(bq, ab))
670- let bk = w(af(bq, ab))
671- let bt = w(am(bq, ab))
672- let bu = w(al(bq, ab))
673- let ay = take(w(ad(bq, ab)), 50)
674- let bm = A(aj(bq, ab))
675- let bv = A(ap(bq, ab))
676- let bw = C(ak(bq, ab))
677- let bx = w(aq(bq, ab))
678- let by = w(ar(bq, ab))
637+ let bs = w(X(bq, U))
638+ let bj = w(Z(bq, U))
639+ let bk = w(Y(bq, U))
640+ let bt = w(af(bq, U))
641+ let bu = w(ae(bq, U))
642+ let aB = take(w(W(bq, U)), 50)
643+ let bm = A(ac(bq, U))
644+ let bv = A(ai(bq, U))
645+ let bw = C(ad(bq, U))
646+ let bx = w(aj(bq, U))
647+ let by = w(ak(bq, U))
679648 if ((bv == 0))
680649 then throw("This artwork is not for sell")
681650 else if (!(bw))
682651 then throw("This artwork is not for sale")
683652 else {
684- let bo = A(ah(bq, ab))
685- let aS = value(aI.payments[0])
686- let aT = value(aS.amount)
687- let aU = if (if (isDefined(aS.assetId))
688- then (aS.assetId == fromBase58String(bx))
653+ let bo = A(aa(bq, U))
654+ let aR = value(aM.payments[0])
655+ let aS = value(aR.amount)
656+ let aT = if (if (isDefined(aR.assetId))
657+ then (aR.assetId == fromBase58String(bx))
689658 else false)
690- then aS.assetId
659+ then aR.assetId
691660 else throw((("Only " + bx) + " token id accepted at the moment"))
692661 let bz = if ((bx == toBase58String(d)))
693662 then 8
694663 else 10
695- let bA = ((aT / 100) * bz)
696- let bB = (aT - bA)
664+ let bA = ((aS / 100) * bz)
665+ let bB = (aS - bA)
697666 if ((bm == bo))
698667 then throw("Cannot buy this artwork anymore, maximum editions reached")
699- else if ((bv != aT))
700- then throw(((("Payment don't match seller price: " + toString(bv)) + " vs ") + toString(aT)))
668+ else if ((bv != aS))
669+ then throw(((("Payment don't match seller price: " + toString(bv)) + " vs ") + toString(aS)))
701670 else {
702671 let bC = (bm + 1)
703672 let bD = lastBlock.timestamp
704673 let bE = (((((((((((((((((((((((((((("{\"version\": 1,
705674 \"creator\": \"" + bq) + "\",
706- \"artID\": \"") + ab) + "\",
675+ \"artID\": \"") + U) + "\",
707676 \"signID\": \"") + E) + "\",
708677 \"artwork_name\": \"") + bl) + "\",
709- \"artwork_desc\": \"") + ay) + "\",
678+ \"artwork_desc\": \"") + aB) + "\",
710679 \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
711680 \"maxIssuable\": \"") + toString(bo)) + "\",
712681 \"source_hash\": \"") + by) + "\",
720689 let bp = if ((bC == bo))
721690 then false
722691 else true
723-[IntegerEntry(aj(bq, ab), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + ab) + "_") + bq), ((((((((aR + "_") + toString(bD)) + "_") + J) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ak(bq, ab), bp), StringEntry("last_invoke_id", J), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aU), ScriptTransfer(Address(fromBase58String(c)), bA, aU), ScriptTransfer(aI.caller, 1, bG)]
692+[IntegerEntry(ac(bq, U), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + U) + "_") + bq), ((((((((aQ + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ad(bq, U), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(aM.caller, 1, bG)]
724693 }
725694 }
726695 }
728697
729698
730699 @Callable(B)
731-func deleteUser (aE) = {
732- let T = toString(addressFromPublicKey(B.callerPublicKey))
733- let J = toBase58String(B.transactionId)
734- if (if ((T == j))
700+func deleteUser (aI) = {
701+ let M = toString(addressFromPublicKey(B.callerPublicKey))
702+ let aF = toBase58String(B.transactionId)
703+ if (if ((M == j))
735704 then true
736- else (T == k))
737- then [DeleteEntry(Z(aE)), DeleteEntry(S(aE)), DeleteEntry(U(aE)), DeleteEntry(V(aE)), DeleteEntry(W(aE)), DeleteEntry(X(aE)), StringEntry(Y(aE), q), StringEntry("last_invoke_id", J)]
738- else throw("You are not allowed to do that")
705+ else (M == k))
706+ then [DeleteEntry(S(aI)), DeleteEntry(L(aI)), DeleteEntry(N(aI)), DeleteEntry(O(aI)), DeleteEntry(P(aI)), DeleteEntry(Q(aI)), StringEntry(R(aI), q), StringEntry("last_invoke_id", aF)]
707+ else throw("You are not allowed")
739708 }
740709
741710
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
77
88 let c = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
99
1010 let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1111
1212 let e = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
1313
1414 let f = base58''
1515
1616 let g = 8
1717
1818 let h = 10
1919
2020 let i = 10
2121
2222 let j = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2323
2424 let k = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2525
2626 let l = true
2727
2828 let m = "ALLOWED"
2929
3030 let n = "REGISTERED"
3131
3232 let o = "VERIFIED"
3333
3434 let p = "SUSPENDED"
3535
3636 let q = "REMOVED"
3737
3838 let r = "UNREGISTERED"
3939
4040 let s = "RESET"
4141
4242 let t = "ON_SALE"
4343
4444 let u = "SOLD"
4545
4646 let v = "CANCELED"
4747
4848 func w (x) = {
4949 let y = getString(this, x)
5050 if ($isInstanceOf(y, "String"))
5151 then {
5252 let z = y
5353 z
5454 }
5555 else ""
5656 }
5757
5858
5959 func A (x) = {
6060 let y = getInteger(this, x)
6161 if ($isInstanceOf(y, "Int"))
6262 then {
6363 let B = y
6464 B
6565 }
6666 else 0
6767 }
6868
6969
7070 func C (x) = {
7171 let y = getBoolean(this, x)
7272 if ($isInstanceOf(y, "Boolean"))
7373 then {
7474 let B = y
7575 B
7676 }
7777 else false
7878 }
7979
8080
8181 func D (E,F,G) = {
8282 let y = getString(b, ((("data_fc_" + E) + "_") + F))
8383 if ($isInstanceOf(y, "String"))
8484 then {
8585 let z = y
8686 if (contains(z, G))
8787 then true
8888 else false
8989 }
9090 else false
9191 }
9292
9393
94-func H (I,J) = {
95- let K = value(assetInfo(fromBase58String(J)))
96- if (if (if ((K.quantity != 1))
97- then true
98- else (K.decimals != 0))
99- then true
100- else (K.reissuable != false))
101- then (I + 0)
102- else (I + 1)
103- }
104-
105-
106-func L (M) = if (if ((75 > size(M)))
107- then (60 > size(split(M, "/")[0]))
94+func H (I) = if (if ((75 > size(I)))
95+ then (60 > size(split(I, "/")[0]))
10896 else false)
109- then (16 > size(split(M, "/")[1]))
97+ then (16 > size(split(I, "/")[1]))
11098 else false
11199
112100
113-func N (O) = (65 > size(O))
101+func J (K) = (65 > size(K))
114102
115103
116-func P (Q) = {
117- let y = getString(this, ("user_status_" + Q))
118- if ($isInstanceOf(y, "String"))
119- then {
120- let R = y
121- R
122- }
123- else throw("Something went wrong.")
124- }
104+func L (M) = ("user_" + M)
125105
126106
127-func S (T) = ("user_" + T)
107+func N (M) = ("user_name_" + M)
128108
129109
130-func U (T) = ("user_name_" + T)
110+func O (M) = ("user_desc_" + M)
131111
132112
133-func V (T) = ("user_desc_" + T)
113+func P (M) = ("user_social_" + M)
134114
135115
136-func W (T) = ("user_social_" + T)
116+func Q (M) = ("user_thumb_" + M)
137117
138118
139-func X (T) = ("user_thumb_" + T)
119+func R (M) = ("user_status_" + M)
140120
141121
142-func Y (T) = ("user_status_" + T)
122+func S (M) = ("user_date_" + M)
143123
144124
145-func Z (T) = ("user_date_" + T)
125+func T (M,U) = ((("art_date_" + U) + "_") + M)
146126
147127
148-func aa (T,ab) = ((("art_date_" + ab) + "_") + T)
128+func V (M,U) = ((("art_name_" + U) + "_") + M)
149129
150130
151-func ac (T,ab) = ((("art_name_" + ab) + "_") + T)
131+func W (M,U) = ((("art_desc_" + U) + "_") + M)
152132
153133
154-func ad (T,ab) = ((("art_desc_" + ab) + "_") + T)
134+func X (M,U) = ((("art_display_cid_" + U) + "_") + M)
155135
156136
157-func ae (T,ab) = ((("art_display_cid_" + ab) + "_") + T)
137+func Y (M,U) = ((("art_export_hash_" + U) + "_") + M)
158138
159139
160-func af (T,ab) = ((("art_export_hash_" + ab) + "_") + T)
140+func Z (M,U) = ((("art_export_cid_" + U) + "_") + M)
161141
162142
163-func ag (T,ab) = ((("art_export_cid_" + ab) + "_") + T)
143+func aa (M,U) = ((("art_maxmint_" + U) + "_") + M)
164144
165145
166-func ah (T,ab) = ((("art_maxmint_" + ab) + "_") + T)
146+func ab (M,U) = ((("art_signid_" + U) + "_") + M)
167147
168148
169-func ai (T,ab) = ((("art_signid_" + ab) + "_") + T)
149+func ac (M,U) = ((("art_issued_" + U) + "_") + M)
170150
171151
172-func aj (T,ab) = ((("art_issued_" + ab) + "_") + T)
152+func ad (M,U) = ((("art_onsale_" + U) + "_") + M)
173153
174154
175-func ak (T,ab) = ((("art_onsale_" + ab) + "_") + T)
155+func ae (M,U) = ((("art_licence_hash_" + U) + "_") + M)
176156
177157
178-func al (T,ab) = ((("art_licence_hash_" + ab) + "_") + T)
158+func af (M,U) = ((("art_licence_cid_" + U) + "_") + M)
179159
180160
181-func am (T,ab) = ((("art_licence_cid_" + ab) + "_") + T)
161+func ag (M,U) = ((("art_tags_" + U) + "_") + M)
182162
183163
184-func an (T,ab) = ((("art_tags_" + ab) + "_") + T)
164+func ah (M,U) = ((("art_type_" + U) + "_") + M)
185165
186166
187-func ao (T,ab) = ((("art_type_" + ab) + "_") + T)
167+func ai (M,U) = ((("art_price_" + U) + "_") + M)
188168
189169
190-func ap (T,ab) = ((("art_price_" + ab) + "_") + T)
170+func aj (M,U) = ((("art_assetAccepted_" + U) + "_") + M)
191171
192172
193-func aq (T,ab) = ((("art_assetAccepted_" + ab) + "_") + T)
173+func ak (M,al) = ((("get_hashbytxidaddr_" + al) + "_") + M)
194174
195175
196-func ar (T,as) = ((("get_hashbytxidaddr_" + as) + "_") + T)
176+func am (G) = ("get_owner_by_hash_" + G)
197177
198178
199-func at (G) = ("get_owner_by_hash_" + G)
179+func an (M,ao) = ((("get_artidbysignid_" + ao) + "_") + M)
200180
201181
202-func au (T,av) = ((("get_artidbysignid_" + av) + "_") + T)
182+func ap (G,M) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + M)))))
203183
204184
205-func aw (G,T) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + T)))))
185+func aq (ar,as,at) = if (if ((ar != ""))
186+ then !(H(ar))
187+ else false)
188+ then throw("Wrong Display CID length")
189+ else if (if ((as != ""))
190+ then !(H(as))
191+ else false)
192+ then throw("Wrong Export CID length")
193+ else if (if ((at != ""))
194+ then !(H(at))
195+ else false)
196+ then throw("Wrong Licence CID length")
197+ else true
198+
199+
200+func au (av,aw) = if (if ((av != ""))
201+ then !(J(av))
202+ else false)
203+ then throw("Export Hash should be 64 characters maximum")
204+ else if (if ((aw != ""))
205+ then !(J(aw))
206+ else false)
207+ then throw("Licence Hash should be 64 characters maximum")
208+ else true
209+
210+
211+func ax (ay,az) = if ((size(ay) == 0))
212+ then throw("Field cannot be is empty")
213+ else if ((size(ay) > az))
214+ then throw((ay + " is too long"))
215+ else true
206216
207217
208218 @Callable(B)
209-func registerUser (ax,ay,az,aA) = {
210- let T = toString(addressFromPublicKey(B.callerPublicKey))
211- let aB = w(Y(T))
212- let J = toBase58String(B.transactionId)
213- let aC = lastBlock.timestamp
214- if (if ((aB == p))
219+func registerUser (aA,aB,aC,aD) = {
220+ let M = toString(addressFromPublicKey(B.callerPublicKey))
221+ let aE = w(R(M))
222+ let aF = toBase58String(B.transactionId)
223+ let aG = lastBlock.timestamp
224+ if (if ((aE == p))
215225 then true
216- else (aB == q))
226+ else (aE == q))
217227 then throw("You are now allowed to register, your account have been suspended/ removed.")
218- else if ((aB == n))
228+ else if ((aE == n))
219229 then throw("You are already registered, please use update method instead.")
220- else if (if ((aB == ""))
230+ else if (if ((aE == ""))
221231 then l
222232 else false)
223233 then throw("You are now allowed to register yet, please contact us first to get approved.")
224- else if (if ((ax == ""))
234+ else if (if ((aA == ""))
225235 then true
226- else (ay == ""))
236+ else (aB == ""))
227237 then throw("Name and description cannot be empty")
228- else if ((size(ay) > 600))
238+ else if ((size(aB) > 600))
229239 then throw("600 Characters maximum for the description")
230- else [IntegerEntry(Z(T), aC), StringEntry(S(T), ((J + "_") + toString(lastBlock.timestamp))), StringEntry(U(T), ax), StringEntry(V(T), ay), StringEntry(W(T), aA), StringEntry(X(T), az), StringEntry(Y(T), n), StringEntry("last_invoke_id", J)]
240+ else [IntegerEntry(S(M), aG), StringEntry(L(M), ((aF + "_") + toString(lastBlock.timestamp))), StringEntry(N(M), aA), StringEntry(O(M), aB), StringEntry(P(M), aD), StringEntry(Q(M), aC), StringEntry(R(M), n), StringEntry("last_invoke_id", aF)]
231241 }
232242
233243
234244
235245 @Callable(B)
236-func deleteEntry (aD) = {
237- let T = toString(addressFromPublicKey(B.callerPublicKey))
238- if ((T == j))
239- then [DeleteEntry(aD)]
246+func deleteEntry (aH) = {
247+ let M = toString(addressFromPublicKey(B.callerPublicKey))
248+ if ((M == j))
249+ then [DeleteEntry(aH)]
240250 else throw("no")
241251 }
242252
243253
244254
245255 @Callable(B)
246-func updateUser (ax,ay,az,aA) = {
247- let T = toString(addressFromPublicKey(B.callerPublicKey))
248- let aB = w(Y(T))
249- if (if ((aB == p))
256+func updateUser (aA,aB,aC,aD) = {
257+ let M = toString(addressFromPublicKey(B.callerPublicKey))
258+ let aE = w(R(M))
259+ if (if ((aE == p))
250260 then true
251- else (aB == q))
261+ else (aE == q))
252262 then throw("You are now allowed to register, your account have been suspended/ removed.")
253- else if (if ((aB == ""))
263+ else if (if ((aE == ""))
254264 then true
255- else (aB == m))
265+ else (aE == m))
256266 then throw("Please register first with registerUser")
257267 else {
258- let J = toBase58String(B.transactionId)
259- let aC = lastBlock.timestamp
260- if (if ((ax == ""))
268+ let aF = toBase58String(B.transactionId)
269+ let aG = lastBlock.timestamp
270+ if (if ((aA == ""))
261271 then true
262- else (ay == ""))
272+ else (aB == ""))
263273 then throw("Name and description cannot be empty")
264- else if ((size(ay) > 600))
274+ else if ((size(aB) > 600))
265275 then throw("600 Characters maximum for the description")
266- else [StringEntry(U(T), ax), StringEntry(V(T), ay), StringEntry(W(T), aA), StringEntry(X(T), az), StringEntry("last_invoke_id", J)]
276+ else [StringEntry(N(M), aA), StringEntry(O(M), aB), StringEntry(P(M), aD), StringEntry(Q(M), aC), StringEntry("last_invoke_id", aF)]
267277 }
268278 }
269279
270280
271281
272282 @Callable(B)
273-func changeUserStatus (aE,aF) = {
274- let T = toString(addressFromPublicKey(B.callerPublicKey))
275- let J = toBase58String(B.transactionId)
276- let aG = w(Y(aE))
277- let aH = if ((aF == o))
283+func changeUserStatus (aI,aJ) = {
284+ let M = toString(addressFromPublicKey(B.callerPublicKey))
285+ let aF = toBase58String(B.transactionId)
286+ let aK = w(R(aI))
287+ let aL = if ((aJ == o))
278288 then o
279- else if ((aF == n))
289+ else if ((aJ == n))
280290 then n
281- else if ((aF == p))
291+ else if ((aJ == p))
282292 then p
283- else if ((aF == q))
293+ else if ((aJ == q))
284294 then q
285- else if ((aF == m))
295+ else if ((aJ == m))
286296 then m
287- else if (if ((aF == s))
288- then (aG == m)
297+ else if (if ((aJ == s))
298+ then (aK == m)
289299 else false)
290300 then ""
291301 else throw("Unknown status")
292- if (if ((aG == m))
293- then (aF == m)
302+ if (if ((aK == m))
303+ then (aJ == m)
294304 else false)
295305 then throw("This user is already allowed")
296- else if (if ((aG == n))
297- then (aF == m)
306+ else if (if ((aK == n))
307+ then (aJ == m)
298308 else false)
299309 then throw("This user is already allowed and registered")
300- else if (if ((aG == o))
301- then (aF == m)
310+ else if (if ((aK == o))
311+ then (aJ == m)
302312 else false)
303313 then throw("This user is already allowed and verified")
304- else if (if ((T == j))
314+ else if (if ((M == j))
305315 then true
306- else (T == k))
307- then [StringEntry(Y(aE), aH), StringEntry("last_invoke_id", J)]
308- else throw(((("You are not allowed to change user status " + T) + " / ") + j))
316+ else (M == k))
317+ then [StringEntry(R(aI), aL), StringEntry("last_invoke_id", aF)]
318+ else throw(((("You are not allowed to change user status " + M) + " / ") + j))
309319 }
310320
311321
312322
313323 @Callable(B)
314-func creditUser (aE) = {
315- let T = toString(addressFromPublicKey(B.callerPublicKey))
316- let J = toBase58String(B.transactionId)
317- if (if ((T == j))
324+func creditUser (aI) = {
325+ let M = toString(addressFromPublicKey(B.callerPublicKey))
326+ let aF = toBase58String(B.transactionId)
327+ if (if ((M == j))
318328 then true
319- else (T == k))
320- then [ScriptTransfer(Address(fromBase58String(aE)), 150000000000, d)]
329+ else (M == k))
330+ then [ScriptTransfer(Address(fromBase58String(aI)), 150000000000, d)]
321331 else throw("You are not allowed to do that")
322332 }
323333
324334
325335
326-@Callable(aI)
327-func addArtwork (G,E,ax,ay,aJ,aK,aL,aM,aN,aO,aP,aQ) = {
328- let ab = toBase58String(aI.transactionId)
329- let aR = toBase58String(aI.caller.bytes)
330- if (if ((aM != ""))
331- then !(L(aM))
332- else false)
333- then throw("Wrong Display CID length")
334- else if (if ((aO != ""))
335- then !(L(aO))
336- else false)
337- then throw("Wrong Export CID length")
338- else if (if ((aQ != ""))
339- then !(L(aQ))
340- else false)
341- then throw("Wrong Licence CID length")
342- else if (!(N(G)))
343- then throw("Source Hash should be 64 characters maximum")
344- else if (if ((aN != ""))
345- then !(N(aN))
346- else false)
347- then throw("Export Hash should be 64 characters maximum")
348- else if (if ((aP != ""))
349- then !(N(aP))
336+@Callable(aM)
337+func addArtwork (G,E,aA,aB,aN,aO,aP,ar,av,as,aw,at) = {
338+ let U = toBase58String(aM.transactionId)
339+ let aQ = toBase58String(aM.caller.bytes)
340+ if (!(aq(ar, as, at)))
341+ then throw("Problem with CID")
342+ else if (!(J(G)))
343+ then throw("Hash should be 64 characters maximum")
344+ else if (!(au(av, aw)))
345+ then throw("Problem with Hashes")
346+ else if ((size(aM.payments) == 0))
347+ then throw("No payment attached")
348+ else {
349+ let aR = value(aM.payments[0])
350+ let aS = value(aR.amount)
351+ let aT = if (if (isDefined(aR.assetId))
352+ then (aR.assetId == d)
350353 else false)
351- then throw("Licence Hash should be 64 characters maximum")
352- else if ((size(aI.payments) == 0))
353- then throw("No payment attached")
354- else {
355- let aS = value(aI.payments[0])
356- let aT = value(aS.amount)
357- let aU = if (if (isDefined(aS.assetId))
358- then (aS.assetId == d)
359- else false)
360- then aS.assetId
361- else throw("Only SIGN token accepted at the moment")
362- let aV = {
363- let y = getInteger(a, ("certification_fee_" + toBase58String(d)))
364- if ($isInstanceOf(y, "Int"))
365- then {
366- let aW = y
367- aW
354+ then aR.assetId
355+ else throw("Only SIGN token accepted at the moment")
356+ let aU = {
357+ let y = getInteger(a, ("certification_fee_" + toBase58String(d)))
358+ if ($isInstanceOf(y, "Int"))
359+ then {
360+ let aV = y
361+ aV
362+ }
363+ else throw("Price undefined in oracle")
364+ }
365+ if ((aS != aU))
366+ then throw(("Payment amount should be " + toString(aU)))
367+ else {
368+ let aW = w(ap(G, aQ))
369+ if ((aW != ""))
370+ then throw("You already added this artwork on Sign Art")
371+ else {
372+ let aX = w(am(G))
373+ if ((aX != ""))
374+ then throw("This artwork hash is already registered on Sign Art")
375+ else {
376+ let aY = D(E, aQ, G)
377+ if (!(aY))
378+ then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
379+ else if ((size(ar) == 0))
380+ then throw("Display CID cannot be empty")
381+ else if (!(ax(aA, 100)))
382+ then throw("100 Characters maximum for the name")
383+ else if (!(ax(aB, 1000)))
384+ then throw("1000 Characters maximum for the description")
385+ else {
386+ let aZ = split(aN, ",")
387+ if ((size(aZ) > 5))
388+ then throw("Tags should be maximum 5 single word separated by space.")
389+ else {
390+ let ba = {
391+ let y = getString(this, ("user_status_" + aQ))
392+ if ($isInstanceOf(y, "String"))
393+ then {
394+ let bb = y
395+ bb
396+ }
397+ else r
398+ }
399+ let aG = lastBlock.timestamp
400+ if (if (isDefined(ba))
401+ then (ba == r)
402+ else false)
403+ then throw("Please register this account first with \"User infos\" tab")
404+ else if ((ba == p))
405+ then throw("Your account is suspended")
406+ else if ((ba == q))
407+ then throw("Your account have been removed")
408+ else if ((aP > 10))
409+ then throw("Maximum 10 editions per artwork")
410+ else if ((size(G) != 64))
411+ then throw("Hash should be sha256 string composed of 64 char.")
412+ else [StringEntry(am(G), aQ), StringEntry(ap(G, aQ), U), IntegerEntry(T(aQ, U), aG), StringEntry(V(aQ, U), aA), StringEntry(W(aQ, U), aB), StringEntry(X(aQ, U), ar), StringEntry(Z(aQ, U), as), StringEntry(Y(aQ, U), av), StringEntry(ae(aQ, U), aw), StringEntry(af(aQ, U), at), StringEntry(ah(aQ, U), aO), StringEntry(ag(aQ, U), aN), IntegerEntry(aa(aQ, U), aP), StringEntry(ab(aQ, U), E), IntegerEntry(ac(aQ, U), 0), BooleanEntry(ad(aQ, U), false), StringEntry(an(aQ, E), U), StringEntry("last_invoke_id", U), StringEntry(ak(aQ, U), G), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
413+ }
414+ }
368415 }
369- else throw("Price undefined in oracle")
370416 }
371- if ((aT != aV))
372- then throw(("Payment amount should be " + toString(aV)))
373- else {
374- let aX = w(aw(G, aR))
375- if ((aX != ""))
376- then throw("You already added this artwork on Sign Art")
377- else {
378- let aY = w(at(G))
379- if ((aY != ""))
380- then throw("This artwork hash is already registered on Sign Art")
381- else {
382- let aZ = D(E, aR, G)
383- if (!(aZ))
384- then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
385- else if ((size(aM) == 0))
386- then throw("Display CID cannot be empty")
387- else if ((size(ax) == 0))
388- then throw("Title cannot be empty")
389- else if ((size(ax) > 100))
390- then throw("100 Characters maximum for the name")
391- else if ((size(ay) > 1000))
392- then throw("1000 Characters maximum for the description")
393- else if ((size(ay) == 0))
394- then throw("Description cannot be empty")
395- else {
396- let ba = split(aJ, ",")
397- if ((size(ba) > 5))
398- then throw("Tags should be maximum 5 single word separated by space.")
399- else {
400- let bb = {
401- let y = getString(this, ("user_status_" + aR))
402- if ($isInstanceOf(y, "String"))
403- then {
404- let bc = y
405- bc
406- }
407- else r
408- }
409- let aC = lastBlock.timestamp
410- if (if (isDefined(bb))
411- then (bb == r)
412- else false)
413- then throw("Please register this account first with \"User infos\" tab")
414- else if ((bb == p))
415- then throw("Your account is suspended")
416- else if ((bb == q))
417- then throw("Your account have been removed")
418- else if ((aL > 10))
419- then throw("Maximum 10 editions per artwork")
420- else if ((size(G) != 64))
421- then throw("Hash should be sha256 string composed of 64 char.")
422- else [StringEntry(at(G), aR), StringEntry(aw(G, aR), ab), IntegerEntry(aa(aR, ab), aC), StringEntry(ac(aR, ab), ax), StringEntry(ad(aR, ab), ay), StringEntry(ae(aR, ab), aM), StringEntry(ag(aR, ab), aO), StringEntry(af(aR, ab), aN), StringEntry(al(aR, ab), aP), StringEntry(am(aR, ab), aQ), StringEntry(ao(aR, ab), aK), StringEntry(an(aR, ab), aJ), IntegerEntry(ah(aR, ab), aL), StringEntry(ai(aR, ab), E), IntegerEntry(aj(aR, ab), 0), BooleanEntry(ak(aR, ab), false), StringEntry(au(aR, E), ab), StringEntry("last_invoke_id", ab), StringEntry(ar(aR, ab), G), ScriptTransfer(Address(fromBase58String(c)), aT, aU)]
423- }
424- }
425- }
426- }
427- }
428- }
417+ }
418+ }
429419 }
430420
431421
432422
433-@Callable(aI)
434-func updateArtwork (as,ax,ay,aJ,aK,aL,aM,aN,aO,aP,aQ) = {
435- let bd = toBase58String(aI.transactionId)
436- let aR = toBase58String(aI.caller.bytes)
437- if (if ((aM != ""))
438- then !(L(aM))
439- else false)
440- then throw("Wrong Display CID length")
441- else if (if ((aO != ""))
442- then !(L(aO))
443- else false)
444- then throw("Wrong Export CID length")
445- else if (if ((aQ != ""))
446- then !(L(aQ))
447- else false)
448- then throw("Wrong Licence CID length")
449- else if (if ((aN != ""))
450- then !(N(aN))
451- else false)
452- then throw("Export Hash should be 64 characters maximum")
453- else if (if ((aP != ""))
454- then !(N(aP))
455- else false)
456- then throw("Licence Hash should be 64 characters maximum")
457- else {
458- let aX = w(ac(aR, as))
459- if ((aX == ""))
460- then throw("This entry doesn't exist or you are not the owner")
461- else if ((size(ax) == 0))
462- then throw("Title cannot be empty")
463- else if ((size(ax) > 100))
464- then throw("100 Characters maximum for the name")
465- else if ((size(ay) > 1000))
466- then throw("1000 Characters maximum for the description")
467- else if ((size(ay) == 0))
468- then throw("Description cannot be empty")
469- else {
470- let be = {
471- let y = getInteger(this, aj(aR, as))
472- if ($isInstanceOf(y, "Int"))
473- then {
474- let R = y
475- if ((R == 0))
476- then false
477- else true
478- }
479- else false
480- }
481- let ba = split(aJ, ",")
482- if ((size(ba) > 5))
483- then throw("Tags should be maximum 5 single word separated by space.")
484- else {
485- let bb = {
486- let y = getString(this, ("user_status_" + aR))
487- if ($isInstanceOf(y, "String"))
488- then {
489- let bc = y
490- bc
491- }
492- else r
493- }
494- if (if (isDefined(bb))
495- then (bb == r)
496- else false)
497- then throw("Please register this account first with \"User infos\" tab")
498- else if ((bb == p))
499- then throw("Your account is suspended")
500- else if ((bb == q))
501- then throw("Your account have been removed")
502- else if ((aL > 10))
503- then throw("Maximum 10 editions per artwork")
504- else if (!(be))
505- then [StringEntry(ac(aR, as), ax), StringEntry(ad(aR, as), ay), StringEntry(ae(aR, as), aM), StringEntry(ag(aR, as), aO), StringEntry(af(aR, as), aN), StringEntry(am(aR, as), aQ), StringEntry(al(aR, as), aP), IntegerEntry(ah(aR, as), aL), StringEntry(an(aR, as), aJ), StringEntry(ao(aR, as), aK), StringEntry("last_invoke_id", bd)]
506- else throw("You cannot edit artwork that have already minted NFT(s)")
507- }
423+@Callable(aM)
424+func updateArtwork (al,aA,aB,aN,aO,aP,ar,av,as,aw,at) = {
425+ let bc = toBase58String(aM.transactionId)
426+ let aQ = toBase58String(aM.caller.bytes)
427+ if (!(aq(ar, as, at)))
428+ then throw("Problem with CID")
429+ else if (!(au(av, aw)))
430+ then throw("Problem with Hashes")
431+ else {
432+ let aW = w(V(aQ, al))
433+ if ((aW == ""))
434+ then throw("Entry not found")
435+ else if (!(ax(aA, 100)))
436+ then throw("100 Char. max for the name")
437+ else if (!(ax(aB, 1000)))
438+ then throw("1000 Char. max for the description")
439+ else {
440+ let bd = {
441+ let y = getInteger(this, ac(aQ, al))
442+ if ($isInstanceOf(y, "Int"))
443+ then {
444+ let be = y
445+ if ((be == 0))
446+ then false
447+ else true
448+ }
449+ else false
450+ }
451+ if ((size(split(aN, ",")) > 5))
452+ then throw("5 tags max.")
453+ else {
454+ let ba = {
455+ let y = getString(this, ("user_status_" + aQ))
456+ if ($isInstanceOf(y, "String"))
457+ then {
458+ let bb = y
459+ bb
508460 }
509- }
461+ else r
462+ }
463+ if (if (isDefined(ba))
464+ then (ba == r)
465+ else false)
466+ then throw("Please register this account first with \"User infos\" tab")
467+ else if ((ba == p))
468+ then throw("Your account is suspended")
469+ else if ((ba == q))
470+ then throw("Your account have been removed")
471+ else if ((aP > 10))
472+ then throw("Maximum 10 editions per artwork")
473+ else if (!(bd))
474+ then [StringEntry(V(aQ, al), aA), StringEntry(W(aQ, al), aB), StringEntry(X(aQ, al), ar), StringEntry(Z(aQ, al), as), StringEntry(Y(aQ, al), av), StringEntry(af(aQ, al), at), StringEntry(ae(aQ, al), aw), IntegerEntry(aa(aQ, al), aP), StringEntry(ag(aQ, al), aN), StringEntry(ah(aQ, al), aO), StringEntry("last_invoke_id", bc)]
475+ else throw("You cannot edit artwork that have already minted NFT(s)")
476+ }
477+ }
478+ }
510479 }
511480
512481
513482
514483 @Callable(B)
515-func deleteArtwork (ab,aE) = {
516- let aR = toString(addressFromPublicKey(B.callerPublicKey))
517- let J = toBase58String(B.transactionId)
518- let bf = if (if ((aR == j))
484+func deleteArtwork (U,aI) = {
485+ let aQ = toString(addressFromPublicKey(B.callerPublicKey))
486+ let aF = toBase58String(B.transactionId)
487+ let bf = if (if ((aQ == j))
519488 then true
520- else (aR == k))
521- then aE
522- else aR
523- let aX = {
524- let y = getString(this, ac(bf, ab))
489+ else (aQ == k))
490+ then aI
491+ else aQ
492+ let aW = {
493+ let y = getString(this, V(bf, U))
525494 if ($isInstanceOf(y, "String"))
526495 then {
527- let bc = y
528- bc
496+ let bb = y
497+ bb
529498 }
530499 else throw("No artwork matching this request or you are not allowed")
531500 }
532- let be = {
533- let y = getInteger(this, aj(bf, ab))
501+ let bd = {
502+ let y = getInteger(this, ac(bf, U))
534503 if ($isInstanceOf(y, "Int"))
535504 then {
536- let R = y
537- if ((R != 0))
505+ let be = y
506+ if ((be != 0))
538507 then true
539508 else false
540509 }
541510 else false
542511 }
543- let bg = A(ah(bf, ab))
512+ let bg = A(aa(bf, U))
544513 let G = {
545- let y = getString(this, ar(bf, ab))
514+ let y = getString(this, ak(bf, U))
546515 if ($isInstanceOf(y, "String"))
547516 then {
548- let bc = y
549- bc
517+ let bb = y
518+ bb
550519 }
551520 else throw("No artwork hash matching this request")
552521 }
553522 let E = {
554- let y = getString(this, ai(bf, ab))
523+ let y = getString(this, ab(bf, U))
555524 if ($isInstanceOf(y, "String"))
556525 then {
557- let bc = y
558- bc
526+ let bb = y
527+ bb
559528 }
560529 else throw("No SIGN ID matching this request")
561530 }
562- let bh = [DeleteEntry(aa(bf, ab)), DeleteEntry(ac(bf, ab)), DeleteEntry(ad(bf, ab)), DeleteEntry(ae(bf, ab)), DeleteEntry(ag(bf, ab)), DeleteEntry(af(bf, ab)), DeleteEntry(al(bf, ab)), DeleteEntry(am(bf, ab)), DeleteEntry(ao(bf, ab)), DeleteEntry(an(bf, ab)), DeleteEntry(ah(bf, ab)), DeleteEntry(ai(bf, ab)), DeleteEntry(aj(bf, ab)), DeleteEntry(ak(bf, ab)), StringEntry("last_invoke_id", J), DeleteEntry(at(G)), DeleteEntry(au(bf, E)), DeleteEntry(aw(G, bf)), DeleteEntry(ap(bf, ab)), DeleteEntry(ah(bf, ab)), DeleteEntry(aq(bf, ab)), DeleteEntry(((((("art_sold_1_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_2_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_3_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_4_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_5_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_6_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_7_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_8_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_9_of_" + toString(bg)) + "_") + ab) + "_") + bf)), DeleteEntry(((((("art_sold_10_of_" + toString(bg)) + "_") + ab) + "_") + bf))]
563- if (if ((aR == j))
531+ let bh = [DeleteEntry(T(bf, U)), DeleteEntry(V(bf, U)), DeleteEntry(W(bf, U)), DeleteEntry(X(bf, U)), DeleteEntry(Z(bf, U)), DeleteEntry(Y(bf, U)), DeleteEntry(ae(bf, U)), DeleteEntry(af(bf, U)), DeleteEntry(ah(bf, U)), DeleteEntry(ag(bf, U)), DeleteEntry(aa(bf, U)), DeleteEntry(ab(bf, U)), DeleteEntry(ac(bf, U)), DeleteEntry(ad(bf, U)), StringEntry("last_invoke_id", aF), DeleteEntry(am(G)), DeleteEntry(an(bf, E)), DeleteEntry(ap(G, bf)), DeleteEntry(ai(bf, U)), DeleteEntry(aa(bf, U)), DeleteEntry(aj(bf, U)), DeleteEntry(((((("art_sold_1_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_2_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_3_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_4_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_5_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_6_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_7_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_8_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_9_of_" + toString(bg)) + "_") + U) + "_") + bf)), DeleteEntry(((((("art_sold_10_of_" + toString(bg)) + "_") + U) + "_") + bf))]
532+ if (if ((aQ == j))
564533 then true
565- else (aR == k))
534+ else (aQ == k))
566535 then bh
567- else if (!(be))
536+ else if (!(bd))
568537 then bh
569538 else throw("This artwork already have minted NFT, you cannot delete it")
570539 }
571540
572541
573542
574-@Callable(aI)
575-func sellArtwork (ab,aW,bg,aU) = {
576- let J = toBase58String(aI.transactionId)
577- let aR = toBase58String(aI.caller.bytes)
543+@Callable(aM)
544+func sellArtwork (U,aV,bg,aT) = {
545+ let aF = toBase58String(aM.transactionId)
546+ let aQ = toBase58String(aM.caller.bytes)
578547 let bi = lastBlock.timestamp
579- let bj = w(ag(aR, ab))
548+ let bj = w(Z(aQ, U))
580549 if ((size(split(bj, "/")[0]) != 59))
581550 then throw("You cannot sell artwork with no export file")
582551 else {
583- let bk = w(af(aR, ab))
552+ let bk = w(Y(aQ, U))
584553 if ((size(bk) != 64))
585554 then throw("You cannot sell artwork with no export hash")
586- else if (if (if ((aU != toBase58String(d)))
587- then (aU != toBase58String(f))
555+ else if (if (if ((aT != toBase58String(d)))
556+ then (aT != toBase58String(f))
588557 else false)
589- then (aU != toBase58String(e))
558+ then (aT != toBase58String(e))
590559 else false)
591560 then throw("Only SIGN, USDN or WAVES currency accepted at the moment")
592561 else {
593562 let bl = {
594- let y = getString(this, ac(aR, ab))
563+ let y = getString(this, V(aQ, U))
595564 if ($isInstanceOf(y, "String"))
596565 then {
597- let bc = y
598- bc
566+ let bb = y
567+ bb
599568 }
600569 else throw("This artwork doesn't exit or you are not the owner")
601570 }
602- let bb = {
603- let y = getString(this, Y(aR))
571+ let ba = {
572+ let y = getString(this, R(aQ))
604573 if ($isInstanceOf(y, "String"))
605574 then {
606- let bc = y
607- bc
575+ let bb = y
576+ bb
608577 }
609578 else throw("Please register this account first")
610579 }
611580 let bm = {
612- let y = getInteger(this, aj(aR, ab))
581+ let y = getInteger(this, ac(aQ, U))
613582 if ($isInstanceOf(y, "Int"))
614583 then {
615584 let bn = y
616585 bn
617586 }
618587 else 0
619588 }
620589 let bo = {
621- let y = getInteger(this, ah(aR, ab))
590+ let y = getInteger(this, aa(aQ, U))
622591 if ($isInstanceOf(y, "Int"))
623592 then {
624593 let bn = y
625594 bn
626595 }
627596 else 0
628597 }
629598 if (if ((bm != 0))
630599 then (bm == bo)
631600 else false)
632601 then throw("You reached the max edition allowed to sell for this edition.")
633602 else if (if ((bm > 0))
634603 then (bo != bg)
635604 else false)
636605 then throw("You cannot change the maximum issuable anymore")
637- else if ((bb == p))
606+ else if ((ba == p))
638607 then throw("Your account is suspended")
639- else if ((bb == q))
608+ else if ((ba == q))
640609 then throw("Your account have been deleted")
641610 else {
642- let bp = if ((aW > 0))
611+ let bp = if ((aV > 0))
643612 then true
644613 else false
645-[BooleanEntry(ak(aR, ab), bp), IntegerEntry(ap(aR, ab), aW), IntegerEntry(ah(aR, ab), bg), StringEntry(aq(aR, ab), aU), StringEntry("last_invoke_id", J)]
614+[BooleanEntry(ad(aQ, U), bp), IntegerEntry(ai(aQ, U), aV), IntegerEntry(aa(aQ, U), bg), StringEntry(aj(aQ, U), aT), StringEntry("last_invoke_id", aF)]
646615 }
647616 }
648617 }
649618 }
650619
651620
652621
653-@Callable(aI)
654-func buyArtwork (ab,bq) = {
655- let J = toBase58String(aI.transactionId)
656- let aR = toBase58String(aI.caller.bytes)
622+@Callable(aM)
623+func buyArtwork (U,bq) = {
624+ let aF = toBase58String(aM.transactionId)
625+ let aQ = toBase58String(aM.caller.bytes)
657626 let br = A("total_nft_issued")
658- let E = w(ai(bq, ab))
627+ let E = w(ab(bq, U))
659628 let bl = {
660- let y = getString(this, ac(bq, ab))
629+ let y = getString(this, V(bq, U))
661630 if ($isInstanceOf(y, "String"))
662631 then {
663- let bc = y
664- bc
632+ let bb = y
633+ bb
665634 }
666635 else throw("This artwork doesn't exit")
667636 }
668- let bs = w(ae(bq, ab))
669- let bj = w(ag(bq, ab))
670- let bk = w(af(bq, ab))
671- let bt = w(am(bq, ab))
672- let bu = w(al(bq, ab))
673- let ay = take(w(ad(bq, ab)), 50)
674- let bm = A(aj(bq, ab))
675- let bv = A(ap(bq, ab))
676- let bw = C(ak(bq, ab))
677- let bx = w(aq(bq, ab))
678- let by = w(ar(bq, ab))
637+ let bs = w(X(bq, U))
638+ let bj = w(Z(bq, U))
639+ let bk = w(Y(bq, U))
640+ let bt = w(af(bq, U))
641+ let bu = w(ae(bq, U))
642+ let aB = take(w(W(bq, U)), 50)
643+ let bm = A(ac(bq, U))
644+ let bv = A(ai(bq, U))
645+ let bw = C(ad(bq, U))
646+ let bx = w(aj(bq, U))
647+ let by = w(ak(bq, U))
679648 if ((bv == 0))
680649 then throw("This artwork is not for sell")
681650 else if (!(bw))
682651 then throw("This artwork is not for sale")
683652 else {
684- let bo = A(ah(bq, ab))
685- let aS = value(aI.payments[0])
686- let aT = value(aS.amount)
687- let aU = if (if (isDefined(aS.assetId))
688- then (aS.assetId == fromBase58String(bx))
653+ let bo = A(aa(bq, U))
654+ let aR = value(aM.payments[0])
655+ let aS = value(aR.amount)
656+ let aT = if (if (isDefined(aR.assetId))
657+ then (aR.assetId == fromBase58String(bx))
689658 else false)
690- then aS.assetId
659+ then aR.assetId
691660 else throw((("Only " + bx) + " token id accepted at the moment"))
692661 let bz = if ((bx == toBase58String(d)))
693662 then 8
694663 else 10
695- let bA = ((aT / 100) * bz)
696- let bB = (aT - bA)
664+ let bA = ((aS / 100) * bz)
665+ let bB = (aS - bA)
697666 if ((bm == bo))
698667 then throw("Cannot buy this artwork anymore, maximum editions reached")
699- else if ((bv != aT))
700- then throw(((("Payment don't match seller price: " + toString(bv)) + " vs ") + toString(aT)))
668+ else if ((bv != aS))
669+ then throw(((("Payment don't match seller price: " + toString(bv)) + " vs ") + toString(aS)))
701670 else {
702671 let bC = (bm + 1)
703672 let bD = lastBlock.timestamp
704673 let bE = (((((((((((((((((((((((((((("{\"version\": 1,
705674 \"creator\": \"" + bq) + "\",
706- \"artID\": \"") + ab) + "\",
675+ \"artID\": \"") + U) + "\",
707676 \"signID\": \"") + E) + "\",
708677 \"artwork_name\": \"") + bl) + "\",
709- \"artwork_desc\": \"") + ay) + "\",
678+ \"artwork_desc\": \"") + aB) + "\",
710679 \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
711680 \"maxIssuable\": \"") + toString(bo)) + "\",
712681 \"source_hash\": \"") + by) + "\",
713682 \"display_cid\": \"") + bs) + "\",
714683 \"export_cid\": \"") + bj) + "\",
715684 \"export_hash\": \"") + bk) + "\",
716685 \"licence_cid\": \"") + bt) + "\",
717686 \"licence_hash\": \"") + bu) + "\"}")
718687 let bF = Issue(("SA_" + toString((br + 1))), bE, 1, 0, false)
719688 let bG = calculateAssetId(bF)
720689 let bp = if ((bC == bo))
721690 then false
722691 else true
723-[IntegerEntry(aj(bq, ab), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + ab) + "_") + bq), ((((((((aR + "_") + toString(bD)) + "_") + J) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ak(bq, ab), bp), StringEntry("last_invoke_id", J), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aU), ScriptTransfer(Address(fromBase58String(c)), bA, aU), ScriptTransfer(aI.caller, 1, bG)]
692+[IntegerEntry(ac(bq, U), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + U) + "_") + bq), ((((((((aQ + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx)), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ad(bq, U), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(aM.caller, 1, bG)]
724693 }
725694 }
726695 }
727696
728697
729698
730699 @Callable(B)
731-func deleteUser (aE) = {
732- let T = toString(addressFromPublicKey(B.callerPublicKey))
733- let J = toBase58String(B.transactionId)
734- if (if ((T == j))
700+func deleteUser (aI) = {
701+ let M = toString(addressFromPublicKey(B.callerPublicKey))
702+ let aF = toBase58String(B.transactionId)
703+ if (if ((M == j))
735704 then true
736- else (T == k))
737- then [DeleteEntry(Z(aE)), DeleteEntry(S(aE)), DeleteEntry(U(aE)), DeleteEntry(V(aE)), DeleteEntry(W(aE)), DeleteEntry(X(aE)), StringEntry(Y(aE), q), StringEntry("last_invoke_id", J)]
738- else throw("You are not allowed to do that")
705+ else (M == k))
706+ then [DeleteEntry(S(aI)), DeleteEntry(L(aI)), DeleteEntry(N(aI)), DeleteEntry(O(aI)), DeleteEntry(P(aI)), DeleteEntry(Q(aI)), StringEntry(R(aI), q), StringEntry("last_invoke_id", aF)]
707+ else throw("You are not allowed")
739708 }
740709
741710

github/deemru/w8io/3ef1775 
305.50 ms