logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: ff65b662d6db2446dd1341c3e54cdb8e55064cf8abb091b03f6c5d3083a705dd Type SC

Block: 434ed71706ffcb0bbefa889a669635a56e8de7067981dd9206c5458ad1957ed3 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 0
SCID string variables
key value
C 2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20226465726f63616c6c732e6a7322290a33312053544f524528226465736372486472222c20224465726f2063616c6c7320763322290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20226465726f63616c6c732e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c20223161303537646633336237353232306633376539333664396636303366613266613736653864386564356561333233383963653136373762623134383966333022290a33372053544f5245282266696c65436865636b53222c20223263313035386531333737343335316461393134636162316337336232626330363462356134623037373432323065636237356161353134383266306532646122290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a6c6574206c6173745f626c6f636b5f7570646174653d303b0a0a6173796e632066756e6374696f6e2073756273637269626528297b200a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d202230223b0a094a534f4e522e6d6574686f64203d2022537562736372696265223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d73203d207b224576656e74223a20226e65775f746f706f686569676874227d3b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09092f2f657863656c6c656e740a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a0a6173796e632066756e6374696f6e2067657448656967687428297b20202020200a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6d6574686f64203d20224445524f2e476574486569676874223b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09096c61746573745f626c6f636b2e696e6e657248544d4c203d20726573706f6e73652e726573756c742e6865696768743b0a090972657475726e20726573706f6e73652e726573756c742e6865696768743b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a0a0a616c65727454696d65724964203d303b0a66756e6374696f6e206d7946756e6374696f6e2829207b0a0974696d6572203d20736563733b0a09636c65617254696d656f757428616c65727454696d65724964293b0a09616c65727454696d65724964203d202073657454696d656f757428646f54696d652c2031303030293b20200a7d3b0a0a7661722072756e6974203d206173796e632066756e6374696f6e2829207b0a09696628726566726573685f6d6f6465203d3d2274696d657222297b0a0909696628635f7374617475732e636c6173734c6973742e636f6e7461696e7328276f6b2729297b0a0909096177616974207265667265736842696473282274696d657222293b0a09097d0a09096d7946756e6374696f6e28293b200a097d0a7d3b0a0a7661722073656373203d2033303b0a766172207365636f6e6473203d2073656373202a20313030303b0a7661722072756e6e696e67203d20736574496e74657276616c2872756e69742c2073656373202a2031303030293b0a0a7661722074696d6572203d20736563733b0a0a66756e6374696f6e20646f54696d652829207b200a09696620282d2d74696d6572203e3d203029207b0a09092f2f43616c6c2073656c66206576657279207365636f6e642e0a0909616c65727454696d65724964203d2073657454696d656f757428646f54696d652c2031303030293b200a097d0a7d0a77696e646f772e6164644576656e744c697374656e657228276c6f6164272c206173796e632066756e6374696f6e202829207b0a73657454696d656f75742861776169742072756e697428292c2032303030293b200a7d293b0a0a6c6574206c6f6164696e67203d2066616c73653b090a6c657420636f6f6b6564203d20303b090a636f6e7374207265667265736842696473203d206173796e632066756e6374696f6e202863616c6c65723d2222297b090a0969662863616c6c657220213d20726566726573685f6d6f64652026262063616c6c657220213d202222297b0a090972657475726e3b0a097d0a096966286c6f6164696e67297b09090a09096966282b2b636f6f6b6564203e2032297b0a0909096c6f6164696e67203d2066616c73653b0a090909636f6f6b6564203d20303b0a09097d0a090972657475726e3b0a097d0a09636f6f6b6564203d20303b0a096c6f6164696e67203d20747275653b0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d2066616c73653b0a094a534f4e522e706172616d732e7661726961626c6573203d20747275653b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a097265667265736862696473627574746f6e2e696e6e657254657874203d20224c6f6164696e672e2e2e220a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0909090a0909617761697420646973706c61794269647328726573706f6e73652e726573756c74293b09090a090969662863616c6c657220213d2022746f706f68656967687422297b0a09090961776169742067657448656967687428293b0a09097d090a097d0a097265667265736862696473627574746f6e2e696e6e657254657874203d20225265667265736820426964204c697374223b0a096c6f6164696e67203d2066616c73653b090a0a7d0a2f2f6164642061206269640966726f6d2068746d6c20696e707574730a76617220637265617465626964627574746f6e203d20646f63756d656e742e676574456c656d656e744279496428276372656174655f62696427293b202020200a637265617465626964627574746f6e2e6164644576656e744c697374656e65722827636c69636b272c206173796e632066756e6374696f6e20637265617465426964286576656e7429207b20200a096966287061727365466c6f6174286465726f5f6269645f616d742e76616c756529203d3d2030207c7c200a09097061727365466c6f617428706c735f6269645f616d742e76616c756529203d3d2030207c7c200a09096465726f5f6269645f616d742e76616c7565203d3d202222207c7c200a0909706c735f6269645f616d742e76616c7565203d3d20222209090a09297b0a0909617761697420616c6572744d6f64616c28225a65726f3f20496e63726561736520616d74732e22293b0a090972657475726e3b0a097d656c73652069662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e3b0a097d0a096966286269645f7377697463685f6d6f6465203d3d2022706c732d6465726f22202626202120617761697420636f6e6e656374696f6e4f4b2829297b0a090972657475726e3b0a097d0a0a096966286269645f7377697463685f6d6f6465203d3d2022706c732d6465726f22297b0a09097265616c5f7377697463685f6d6f6465203d20226465726f2d706c73220a097d656c73657b0a09097265616c5f7377697463685f6d6f6465203d2022706c732d6465726f220a097d0a0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b2020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022437265617465426964227d2c0a09097b4e616d653a20226465726f5f616d74222c2044617461547970653a202255222c2056616c75653a207061727365466c6f617428636f6e76657274546f41746f6d6963556e697473286465726f5f6269645f616d742e76616c756529297d2c0a09097b4e616d653a2022706c735f616d74222c2044617461547970653a202255222c2056616c75653a207061727365466c6f617428706c735f6269645f616d742e76616c7565297d2c0a09097b4e616d653a202266726f6d5f746f222c2044617461547970653a202253222c2056616c75653a207265616c5f7377697463685f6d6f64657d2c0a09097b4e616d653a2022706c735f6269645f61646472657373222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d0a095d3b0a0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28224f6666657220637265617465642c20747869643a222b726573706f6e73652e726573756c742e74786964293b0a0909617761697420726566726573684269647328293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a090a7d293b0a0a2f2f72656d6f76652061206269642066726f6d20627574746f6e20696e207461626c650a6173796e632066756e6374696f6e2072656d6f766542696428696e646578297b0a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a202252656d6f7665426964227d2c0a097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a20696e6465787d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28224f666665722072656d6f7665642c20747869643a222b726573706f6e73652e726573756c742e74786964293b0a0909617761697420726566726573684269647328293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a0a7d0a0a0a6173796e632066756e6374696f6e206163636570744465726f546f504c534f66666572286f66666572297b0a096966282120617761697420636f6e6e656374696f6e4f4b2829297b72657475726e2066616c73653b7d0a0969662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e2066616c73653b0a097d0a092f2f6163636570746572206d757374206465706c6f79202e736f6c20636f6e747261637420616e642066756e64206974206574630a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a092f2f416c736f2061646420455448204164647265737320686572650a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416363657074426964227d2c0a09097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a09097b4e616d653a202261636365707465645f62795f706c73222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28275761697420666f7220796f7572206163636570746564206f6666657220746f2061707065617220696e2022416374697665204f666665727322206f7220224f6666657273204920746f6f6b222c207468656e20636f6e74696e756520627920696e7374616c6c696e67207468652048544c20636f6e74726163742e20416363657074656420545849443a27202b20726573706f6e73652e726573756c742e74786964293b0a0909646f63756d656e742e676574456c656d656e744279496428226d795f74616b656e22292e636c69636b28293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a6173796e632066756e6374696f6e20616363657074504c53546f4465726f4f66666572286f66666572297b0a092f2f4465706c6f79203438687220636f6e7472616374090a092f2f6163636570746572206d757374206465706c6f792064766d20636f6e747261637420616e642066756e64206974206574630a0a096966282120617761697420636f6e6e656374696f6e4f4b2829297b72657475726e2066616c73653b7d0a0969662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e2066616c73653b0a097d0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a092f2f416c736f2061646420455448204164647265737320686572650a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416363657074426964227d2c0a09097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a09097b4e616d653a202261636365707465645f62795f706c73222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28275761697420666f7220796f7572206163636570746564206f6666657220746f2061707065617220696e2022416374697665204f666665727322206f7220224f6666657273204920746f6f6b222c207468656e20636f6e74696e756520627920696e7374616c6c696e67207468652048544c20636f6e74726163742e20416363657074656420545849443a27202b20726573706f6e73652e726573756c742e74786964293b0a0909646f63756d656e742e676574456c656d656e744279496428226d795f74616b656e22292e636c69636b28293b09090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d090a2f2f41646420746f20626964206c697374206166746572207374617274696e6720616e642066756e64696e67206861736865642074696d65206c6f636b20636f6e74726163740a6173796e632066756e6374696f6e2061646453434944546f4c6973742861737365742c68746c5f736369642c6f66666572297b0a092f2f61737365742073686f756c64206265204164644445524f53434944206f7220416464504c53534349440a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416464222b61737365742b2253434944227d2c0a097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a097b4e616d653a202273636964222c2044617461547970653a202253222c2056616c75653a2068746c5f736369647d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a090a09696628726573706f6e73652e726573756c74297b0a09096c657420636f6e6669726d6564203d20617761697420706f7374436f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964293b0a0909696628636f6e6669726d6564297b0a090909617761697420616c6572744d6f64616c2822596f7527766520706f737465642074686520222b61737365742b2220736d61727420636f6e7472616374206e6f77206974206e6565647320746f2062652066756e64656420746f20636f6d706c657465207468697320737465702e22293b0a09097d656c73657b0a0909096c657420726573756c74203d20617761697420636f6e6669726d4d6f64616c28224661696c656420746f20706f737420636f6e747261637420696420746f2074686520696e6465782c2074727920616761696e3f204966206e6f742c207468656e20796f75276c6c206e65656420746f20696e7374616c6c20616e6f7468657220636f6e74726163742e22293b0a090909696628726573756c74297b0a0909090961776169742061646453434944546f4c6973742861737365742c68746c5f736369642c6f66666572293b0a0909097d656c73657b0a09090909627574746f6e5f7374617465733d5b5d0a0909097d0a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a0909627574746f6e5f7374617465733d5b5d0a097d0a7d0a0a0a6173796e632066756e6374696f6e2067657454785374617475732874786964297b0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745472616e73616374696f6e223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b090a094a534f4e522e706172616d732e74785f686173686573203d205b747869645d3b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909696628726573706f6e73652e726573756c742e737461747573297b0a090909696628726573706f6e73652e726573756c742e737461747573203d3d20224f4b22297b0a0909090972657475726e20747275653b0a0909097d0a09097d0a090972657475726e2066616c73653b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a0909627574746f6e5f7374617465733d5b5d0a097d0a7d0a0a6c657420706f73745f636f6e6669726d5f6865696768743d303b0a6173796e632066756e6374696f6e20706f7374436f6e6669726d6174696f6e287478696429207b0a09706f73745f636f6e6669726d5f686569676874203d2061776169742067657448656967687428293b0a0972657475726e206e65772050726f6d6973652866756e6374696f6e20287265736f6c766529207b09090a09096c657420617474656d707473203d20303b09090a0909090a0909636f6e737420617474656d7074203d206173796e632829203d3e207b090a090909617474656d7074732b2b3b0a0909096c657420746869735f686569676874203d2061776169742067657448656967687428293b0909090a090909696628746869735f686569676874203e20706f73745f636f6e6669726d5f686569676874297b0a09090909696628617474656d707473203e203138297b0a0909090909636c656172496e74657276616c28726574727954696d6572293b0a09090909097265736f6c76652866616c7365290a090909097d09090a090909096c6574207374617475735f6f6b203d2061776169742067657454785374617475732874786964290a090909096966287374617475735f6f6b297b0a0909090909636c65617254696d656f757428726574727954696d6572293b0a09090909097265736f6c76652874727565290a090909097d0a0909097d0a09097d0a09096c657420726574727954696d6572203d20736574496e74657276616c28617474656d70742c2032303030290909090a097d292020200a7d0a0a0a2f2f2d2d2d2d2d2d2d2d2d0a2f2f6765742067617320666565732071756f746520666f722068746c20736320696e7374616c6c6174696f6e200a0a6173796e632066756e6374696f6e20696e7374616c6c4465726f48544c28646179735f746f5f6c6f636b2c6465726f5f72656365697665725f61646472657373297b2020200a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b090a0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022496e697469616c697a65227d2c0a09097b4e616d653a20227265636569766572222c2044617461547970653a202253222c2056616c75653a206465726f5f72656365697665725f616464726573737d2c0a095d3b2f2f72656365697665720a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7363203d206765744465726f48544c436f6e747261637428646179735f746f5f6c6f636b293b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b09090a090972657475726e2066616c73653b0a097d0a092f2f696e7374616c6c2068746c20636f6e74726163742c2073657420746865207265636569766572090a094a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227472616e73666572223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e66656573203d20303b0a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b0a090a094a534f4e522e706172616d732e7363203d20726573706f6e73652e726573756c742e67617373746f726167653b0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022496e697469616c697a65227d2c0a09097b4e616d653a20227265636569766572222c2044617461547970653a202253222c2056616c75653a206465726f5f72656365697665725f616464726573737d2c0a095d3b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7363203d206765744465726f48544c436f6e747261637428646179735f746f5f6c6f636b293b0a090a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09096c657420636f6e6669726d6564203d20617761697420636f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964293b0a0909696628636f6e6669726d6564297b0a090909617761697420616c6572744d6f64616c2822496e7374616c6c6564207769746820646561646c696e6520696e20646179733a20222b646179735f746f5f6c6f636b293b090a09090972657475726e20726573706f6e73652e726573756c742e747869643b090909090a09097d656c73657b0a090909617761697420616c6572744d6f64616c282243616e27742066696e642074686520636f64652c20696e7374616c6c20616761696e20776974682074786964222b726573706f6e73652e726573756c742e74786964293b0a09090972657475726e2066616c73653b090a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2066616c73653b0a097d0909090a7d0a0a6c657420636f6e6669726d5f6865696768743d303b0a6173796e632066756e6374696f6e20636f6e6669726d6174696f6e287478696429207b0a09636f6e6669726d5f686569676874203d2061776169742067657448656967687428293b0a0972657475726e206e65772050726f6d6973652866756e6374696f6e20287265736f6c766529207b09090a09096c657420617474656d707473203d20303b09090a0909090a0909636f6e737420617474656d7074203d206173796e632829203d3e207b090a090909617474656d7074732b2b3b0a0909096c657420746869735f686569676874203d2061776169742067657448656967687428293b0909090a090909696628746869735f686569676874203e20636f6e6669726d5f686569676874297b0a09090909696628617474656d707473203e203138297b0a0909090909636c656172496e74657276616c28726574727954696d6572293b0a09090909097265736f6c76652866616c7365290a090909097d09090a090909096c657420636f64655f76616c6964203d206177616974206765744465726f48544c436f64652874786964290a09090909696628636f64655f76616c6964297b0a0909090909636c65617254696d656f757428726574727954696d6572293b0a09090909097265736f6c76652874727565290a090909097d0a0909097d0a09097d0a09096c657420726574727954696d6572203d20736574496e74657276616c28617474656d70742c2032303030290909090a097d292020200a7d0a0a2f2f53746f7265206b65797320666f7220636f6e76656e69656e636520696620796f752073746179206f6e20746865206170702e0a6c6574206b657973203d205b5d3b0a6173796e632066756e6374696f6e2066756e644465726f48544c2869642c6465726f5f68746c5f736369642c6465726f5f616d742c6861736829207b2020200a09696628686173682e6c656e677468203d3d203636297b0a090968617368203d20686173682e736c6963652832293b0a097d0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e73636964203d2022223b0a090a094a534f4e522e706172616d732e73635f6465726f5f6465706f736974203d207061727365496e74286465726f5f616d74293b0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022537461727453776170227d2c0a097b4e616d653a202268617368222c2044617461547970653a202253222c2056616c75653a20686173687d0a095d3b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a090a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c282246756e6473204465706f736974656420616e64206c6f636b656420776974682070726f766964656420686173682e22202b20223c62723e205458494422202b20726573706f6e73652e726573756c742e74786964293b0909090a0909617761697420726566726573684269647328293b0909090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2066616c73653b0a097d0a7d090a6173796e632066756e6374696f6e20636865636b4465726f48544c436f646528646179732c6465726f48544c297b090a096c6574206f726967696e616c203d206765744465726f48544c436f6e74726163742864617973293b0a096c657420696e7374616c6c6564203d206465726f48544c2e636f64653b0a096966286f726967696e616c203d3d3d20696e7374616c6c6564202626206f726967696e616c20213d3d2066616c7365297b0a09096465726f48544c2e636f64655f76616c6964203d20747275653b0a090972657475726e20747275653b0a097d0a0972657475726e2066616c73653b0a7d090a6173796e632066756e6374696f6e206765744465726f48544c436f6465286465726f5f68746c5f73636964297b090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d20747275653b0a094a534f4e522e706172616d732e7661726961626c6573203d2066616c73653b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628747970656f6620726573706f6e73652e726573756c7420213d3d2027756e646566696e656427297b0a0909696628726573706f6e73652e726573756c742e636f646520213d202222297b0a09090972657475726e20726573706f6e73652e726573756c742e636f64653b0a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a090972657475726e2066616c73653b0a097d090a0972657475726e2066616c73653b0a090a7d0a0a6173796e632066756e6374696f6e206765744465726f48544c44657461696c73286465726f5f68746c5f736369642c5f6465726f5f616d6f756e74297b0a096c6574206465726f48544c203d207b7d3b0a096c6574204a534f4e52203d207b7d3b0a0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d20747275653b0a094a534f4e522e706172616d732e6b657973737472696e67203d205b2268617368222c226465706f7369746564222c22646561646c696e65222c226b6579222c227265636569766572225d3b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909696628747970656f6620726573706f6e73652e726573756c7420213d3d2027756e646566696e65642720262620747970656f6620726573706f6e73652e726573756c742e636f646520213d3d2027756e646566696e656427297b09090a0909096465726f48544c2e636f6465203d20726573706f6e73652e726573756c742e636f64653b090909090a09097d656c73657b0a0909096465726f48544c2e636f6465203d2022223b0a09097d090a09096465726f48544c2e73636964203d206465726f5f68746c5f736369643b0a09096465726f48544c2e686173685f6f6b203d20747275653b0a09096465726f48544c2e62616c616e63655f6f6b203d20747275653b0a09096465726f48544c2e646561646c696e655f6f6b203d20747275653b0a09096465726f48544c2e6b65795f6f6b203d20747275653b0a09096465726f48544c2e68617368203d20726573706f6e73652e726573756c742e76616c756573737472696e675b305d3b0909090a09096465726f48544c2e6465706f7369746564203d20726573706f6e73652e726573756c742e76616c756573737472696e675b315d3b0a09096465726f48544c2e646561646c696e65203d20726573706f6e73652e726573756c742e76616c756573737472696e675b325d3b0a09096465726f48544c2e6b6579203d20726573706f6e73652e726573756c742e76616c756573737472696e675b335d3b0a09096465726f48544c2e7265636569766572203d20726573706f6e73652e726573756c742e76616c756573737472696e675b345d3b0a09096966286465726f48544c2e72656365697665722e6c656e677468203d3d20313332297b0a0909096465726f48544c2e7265636569766572203d20686578546f55746638286465726f48544c2e7265636569766572293b0a09097d0a09096465726f48544c2e62616c616e6365203d20726573706f6e73652e726573756c742e62616c616e63653b0a0a09090a0909696628216465726f48544c2e686173682e696e636c7564657328224e4f5420415641494c41424c452229297b0a0909096465726f48544c2e68617368203d20686578546f55746638286465726f48544c2e68617368293b0a09097d656c73657b0a0909096465726f48544c2e686173685f6f6b203d2066616c73653b0a09097d090a09090a0909696628216465726f48544c2e6b65792e696e636c7564657328224e4f5420415641494c41424c452229297b0a0909096465726f48544c2e6b6579203d20686578546f55746638286465726f48544c2e6b6579293b0a09097d656c73657b0a0909096465726f48544c2e6b65795f6f6b203d2066616c73653b0a0909096465726f48544c2e6b6579203d2022223b0a09097d090a09090a09096465726f48544c2e6465706f7369746564203d097061727365496e74286465726f48544c2e6465706f7369746564293b0909090a09096966286465726f48544c2e6465706f7369746564203c2031207c7c0a09095f6465726f5f616d6f756e7420213d206465726f48544c2e6465706f7369746564207c7c0a09095f6465726f5f616d6f756e7420213d206465726f48544c2e62616c616e63650a0909297b090a0909096465726f48544c2e62616c616e63655f6f6b203d2066616c73653b0a09097d0a09090a09096465726f48544c2e646561646c696e65203d097061727365496e74286465726f48544c2e646561646c696e65293b0a09096966286465726f48544c2e646561646c696e65203c206e6f77496e5365636f6e64732829297b090909090a0909096465726f48544c2e646561646c696e655f6f6b203d2066616c73653b0a09097d0a09090a090972657475726e286465726f48544c293b090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e726573756c742e6572726f722e6d657373616765293b0a097d0a7d0a6173796e632066756e6374696f6e206465726f5769746864726177616c286b65792c6465726f5f68746c5f7363696429207b2020090920200a0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d20353b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b09090a20200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a20225769746864726177227d2c0a097b4e616d653a20226b6579222c2044617461547970653a2253222c2056616c75653a20537472696e67286b6579297d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a090a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e3b0a097d0a094a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d20363b0a094a534f4e522e6d6574686f64203d20227472616e73666572220a094a534f4e522e706172616d73203d207b7d3b0a090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b09202020200a2020200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a20225769746864726177227d2c0a097b4e616d653a20226b6579222c2044617461547970653a2253222c2056616c75653a20537472696e67286b6579297d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a094a534f4e522e706172616d732e66656573203d20726573706f6e73652e726573756c742e67617373746f726167653b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e726573756c742e74786964293b0a090972657475726e20726573706f6e73652e726573756c742e747869643b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2022223b0a097d090a7d3b0a0a6173796e632066756e6374696f6e20726566756e644465726f286465726f5f68746c5f7363696429207b2020200a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022526566756e64227d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a092f2f63757272656e745f6d6f6465203d2022726566756e64223b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e3b0a097d0a094a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227472616e73666572220a094a534f4e522e706172616d73203d207b7d3b0a090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b20200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022526566756e64227d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a094a534f4e522e706172616d732e66656573203d20726573706f6e73652e726573756c742e67617373746f726167653b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c2822526566756e64205375636365737366756c207769746820545849443a222b726573706f6e73652e726573756c742e74786964293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a090a7d3b0a0a2f2f2d2d536d61727420436f6e74726163740a66756e6374696f6e206765744465726f48544c436f6e74726163742864617973297b0a096c6574207365636f6e64733b0a0969662864617973203d3d3d2031297b0a09097365636f6e6473203d206f6e655f6461795f696e5f736563733b0a097d656c73652069662864617973203d3d3d2032297b0a09097365636f6e6473203d2074776f5f646179735f696e5f736563733b0a097d656c73657b0a090972657475726e2066616c73653b0a097d0a72657475726e6046756e6374696f6e20496e697469616c697a6528726563656976657220537472696e67292055696e7436340a312053544f524528226f776e6572222c5349474e45522829290a322049462049535f414444524553535f56414c494428414444524553535f5241572872656365697665722929205448454e20474f544f20340a332052455455524e20300a342053544f524528227265636569766572222c7265636569766572290a352053544f52452822646561646c696e65222c3029200a362053544f524528226465706f7369746564222c3029200a372052455455524e20300a456e642046756e6374696f6e0a46756e6374696f6e20537461727453776170286861736820537472696e67292055696e7436340a31204946204445524f56414c55452829203d3d2030205448454e20474f544f20370a322049462045584953545328226861736822293d3d31205448454e20474f544f20370a332053544f5245282268617368222c68617368290a342053544f52452822646561646c696e65222c424c4f434b5f54494d455354414d502829202b20602b207365636f6e6473202b60290a352053544f524528226465706f7369746564222c4445524f56414c55452829290a362052455455524e20300a372052455455524e20310a456e642046756e6374696f6e0a46756e6374696f6e205769746864726177286b657920537472696e67292055696e743634200a3120494620414444524553535f524157284c4f4144282272656365697665722229293d3d5349474e45522829205448454e20474f544f20330a322052455455524e20310a33204946204c4f41442822646561646c696e6522293e424c4f434b5f54494d455354414d502829205448454e20474f544f20350a342052455455524e20310a35204946205354524c454e286b6579293c3d3332205448454e20474f544f20370a362052455455524e20310a37204946204c4f414428226861736822293d3d48455828534841323536286b65792929205448454e20474f544f20390a382052455455524e20310a392053454e445f4445524f5f544f5f41444452455353285349474e455228292c4c4f414428226465706f73697465642229290a31302053544f524528226b6579222c6b657929200a31312052455455524e20300a456e642046756e6374696f6e0a46756e6374696f6e20526566756e6428292055696e743634200a31204946204c4f414428226f776e657222293d3d5349474e45522829205448454e20474f544f20330a322052455455524e20310a33204946204c4f41442822646561646c696e6522293c424c4f434b5f54494d455354414d502829205448454e20474f544f20350a342052455455524e20310a352053454e445f4445524f5f544f5f41444452455353285349474e455228292c4c4f414428226465706f73697465642229290a362052455455524e20300a456e642046756e6374696f6e603b0a7d2a2f
dURL 6465726f63616c6c732e6a73
descrHdr 4465726f2063616c6c73207633
dislikes 0
docType 54454c412d4a532d31
docVersion 312e302e30
fileCheckC 31613035376466333362373532323066333765393336643966363033666132666137366538643865643565613332333839636531363737626231343839663330
fileCheckS 32633130353865313337373433353164613931346361623163373362326263303634623561346230373734323230656362373561613531343832663065326461
hash 66663635623636326436646232343436646431333431633365353463646238653535303634636638616262303931623033663663356433303833613730356464
iconURLHdr
likes 0
nameHdr 6465726f63616c6c732e6a73
owner 6465726f317179347966376335373777717a767a7134347833306c7967686135776a7a377772687736646e76356e337071346634643761716c75717133306d37616b
subDir
SCID uint64 variables
key value
built BLID : 958b194553293499869040d1894c843378b36ba0f80bc28bdc481c282e62266a
Tx RootHash: 085491b1199d603f08916f439289976e1de3c99d3093db62a562214ec6a53cf3 built height : 5830972
Timestamp: 1755883984921 Timestamp [UTC]: 2025-08-22 17:33:04 Age [y:d:h:m:s]: 4:11:59.73
Block: 5830977 Fee: 0.29526 Tx size: 20.813 kB
Tx version: 1 No of confirmations: 790 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.29526 Deposited to SC 0.00000
Sender : dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
address
dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270
dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
SC Balance: 0.00000 DERO
SC CODE:
  //  Copyright 2024. Civilware. All rights reserved.
//  TELA Decentralized Web Document (TELA-DOC-1)
Function InitializePrivate() Uint64
10 IF init() == 0 THEN GOTO 30
20 RETURN 1
30 STORE("nameHdr", "derocalls.js")
31 STORE("descrHdr", "Dero calls v3")
32 STORE("iconURLHdr", "")
33 STORE("dURL", "derocalls.js")
34 STORE("docType", "TELA-JS-1")
35 STORE("subDir", "")
36 STORE("fileCheckC", "1a057df33b75220f37e936d9f603fa2fa76e8d8ed5ea32389ce1677bb1489f30")
37 STORE("fileCheckS", "2c1058e13774351da914cab1c73b2bc064b5a4b0774220ecb75aa51482f0e2da")
100 RETURN 0
End Function

Function init() Uint64
10 IF EXISTS("owner") == 0 THEN GOTO 30
20 RETURN 1
30 STORE("owner", address())
50 STORE("docVersion", "1.0.0")
60 STORE("hash", HEX(TXID()))
70 STORE("likes", 0)
80 STORE("dislikes", 0)
100 RETURN 0
End Function

Function address() String
10 DIM s as String
20 LET s = SIGNER()
30 IF IS_ADDRESS_VALID(s) THEN GOTO 50
40 RETURN "anon"
50 RETURN ADDRESS_STRING(s)
End Function

Function Rate(r Uint64) Uint64
10 DIM addr as String
15 LET addr = address()
16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30
20 RETURN 1
30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT())
40 IF r < 50 THEN GOTO 70
50 STORE("likes", LOAD("likes")+1)
60 RETURN 0
70 STORE("dislikes", LOAD("dislikes")+1)
100 RETURN 0
End Function

/*let last_block_update=0;

async function subscribe(){ 
	
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.id = "0";
	JSONR.method = "Subscribe";
	JSONR.params = {};
	JSONR.params = {"Event": "new_topoheight"};
	response = await socketSend(JSONR);
	if(response.result){
		//excellent
	}else if(response.error){
		await alertModal(response.error.message);
	}		
}

async function getHeight(){     
	
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.method = "DERO.GetHeight";
	response = await socketSend(JSONR);
	if(response.result){
		latest_block.innerHTML = response.result.height;
		return response.result.height;
	}else if(response.error){
		await alertModal(response.error.message);
	}		
}


alertTimerId =0;
function myFunction() {
	timer = secs;
	clearTimeout(alertTimerId);
	alertTimerId =  setTimeout(doTime, 1000);  
};

var runit = async function() {
	if(refresh_mode =="timer"){
		if(c_status.classList.contains('ok')){
			await refreshBids("timer");
		}
		myFunction(); 
	}
};

var secs = 30;
var seconds = secs * 1000;
var running = setInterval(runit, secs * 1000);

var timer = secs;

function doTime() { 
	if (--timer >= 0) {
		//Call self every second.
		alertTimerId = setTimeout(doTime, 1000); 
	}
}
window.addEventListener('load', async function () {
setTimeout(await runit(), 2000); 
});

let loading = false;	
let cooked = 0;	
const refreshBids = async function (caller=""){	
	if(caller != refresh_mode && caller != ""){
		return;
	}
	if(loading){		
		if(++cooked > 2){
			loading = false;
			cooked = 0;
		}
		return;
	}
	cooked = 0;
	loading = true;
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.method = "DERO.GetSC";
	JSONR.params = {};
	JSONR.params.scid = "";
	JSONR.params.code = false;
	JSONR.params.variables = true;
	JSONR.params.scid = bids_sc_id;
	refreshbidsbutton.innerText = "Loading..."
	let response = await socketSend(JSONR);
	if(response.result){			
		await displayBids(response.result);		
		if(caller != "topoheight"){
			await getHeight();
		}	
	}
	refreshbidsbutton.innerText = "Refresh Bid List";
	loading = false;	

}
//add a bid	from html inputs
var createbidbutton = document.getElementById('create_bid');    
createbidbutton.addEventListener('click', async function createBid(event) {  
	if(parseFloat(dero_bid_amt.value) == 0 || 
		parseFloat(pls_bid_amt.value) == 0 || 
		dero_bid_amt.value == "" || 
		pls_bid_amt.value == ""		
	){
		await alertModal("Zero? Increase amts.");
		return;
	}else if(banned.find(addr=>addr==connected_dero_account)){
		removeBanHandler();
		return;
	}
	if(bid_switch_mode == "pls-dero" && ! await connectionOK()){
		return;
	}

	if(bid_switch_mode == "pls-dero"){
		real_switch_mode = "dero-pls"
	}else{
		real_switch_mode = "pls-dero"
	}

	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};
	JSONR.params.scid = "";   

	JSONR.params.sc_rpc = [
		{Name: "entrypoint", DataType: "S", Value: "CreateBid"},
		{Name: "dero_amt", DataType: "U", Value: parseFloat(convertToAtomicUnits(dero_bid_amt.value))},
		{Name: "pls_amt", DataType: "U", Value: parseFloat(pls_bid_amt.value)},
		{Name: "from_to", DataType: "S", Value: real_switch_mode},
		{Name: "pls_bid_address", DataType: "S", Value: connected_evm_account}
	];

	JSONR.params.scid = bids_sc_id;
	JSONR.params.ringsize = 2;

	let response = await socketSend(JSONR);
	if(response.result){
		await alertModal("Offer created, txid:"+response.result.txid);
		await refreshBids();
	}else if(response.error){
		await alertModal(response.error.message);
	}		
	
});

//remove a bid from button in table
async function removeBid(index){
	
	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};
	JSONR.params.scid = "";    

	JSONR.params.sc_rpc = [
	{Name: "entrypoint", DataType: "S", Value: "RemoveBid"},
	{Name: "bid_id", DataType: "S", Value: index},
	];
	JSONR.params.scid = bids_sc_id;
	JSONR.params.ringsize = 2;

	let response = await socketSend(JSONR);
	if(response.result){
		await alertModal("Offer removed, txid:"+response.result.txid);
		await refreshBids();
	}else if(response.error){
		await alertModal(response.error.message);
	}		

}


async function acceptDeroToPLSOffer(offer){
	if(! await connectionOK()){return false;}
	if(banned.find(addr=>addr==connected_dero_account)){
		removeBanHandler();
		return false;
	}
	//accepter must deploy .sol contract and fund it etc
	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};
	JSONR.params.scid = "";    
	//Also add ETH Address here
	JSONR.params.sc_rpc = [
		{Name: "entrypoint", DataType: "S", Value: "AcceptBid"},
		{Name: "bid_id", DataType: "S", Value: offer.id},
		{Name: "accepted_by_pls", DataType: "S", Value: connected_evm_account},
	];
	JSONR.params.scid = bids_sc_id;
	JSONR.params.ringsize = 2;
	let response = await socketSend(JSONR);
	if(response.result){
		await alertModal('Wait for your accepted offer to appear in "Active Offers" or "Offers I took", then continue by installing the HTL contract. Accepted TXID:' + response.result.txid);
		document.getElementById("my_taken").click();
	}else if(response.error){
		await alertModal(response.error.message);
	}		
}
async function acceptPLSToDeroOffer(offer){
	//Deploy 48hr contract	
	//accepter must deploy dvm contract and fund it etc

	if(! await connectionOK()){return false;}
	if(banned.find(addr=>addr==connected_dero_account)){
		removeBanHandler();
		return false;
	}
	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};
	JSONR.params.scid = "";    
	//Also add ETH Address here
	JSONR.params.sc_rpc = [
		{Name: "entrypoint", DataType: "S", Value: "AcceptBid"},
		{Name: "bid_id", DataType: "S", Value: offer.id},
		{Name: "accepted_by_pls", DataType: "S", Value: connected_evm_account},
	];
	JSONR.params.scid = bids_sc_id;
	JSONR.params.ringsize = 2;

	let response = await socketSend(JSONR);
	if(response.result){
		await alertModal('Wait for your accepted offer to appear in "Active Offers" or "Offers I took", then continue by installing the HTL contract. Accepted TXID:' + response.result.txid);
		document.getElementById("my_taken").click();		
	}else if(response.error){
		await alertModal(response.error.message);
	}		
}	
//Add to bid list after starting and funding hashed time lock contract
async function addSCIDToList(asset,htl_scid,offer){
	//asset should be AddDEROSCID or AddPLSSCID
	
	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};
	JSONR.params.scid = "";    

	JSONR.params.sc_rpc = [
	{Name: "entrypoint", DataType: "S", Value: "Add"+asset+"SCID"},
	{Name: "bid_id", DataType: "S", Value: offer.id},
	{Name: "scid", DataType: "S", Value: htl_scid},
	];
	JSONR.params.scid = bids_sc_id;
	JSONR.params.ringsize = 2;

	response = await socketSend(JSONR);
	
	if(response.result){
		let confirmed = await postConfirmation(response.result.txid);
		if(confirmed){
			await alertModal("You've posted the "+asset+" smart contract now it needs to be funded to complete this step.");
		}else{
			let result = await confirmModal("Failed to post contract id to the index, try again? If not, then you'll need to install another contract.");
			if(result){
				await addSCIDToList(asset,htl_scid,offer);
			}else{
				button_states=[]
			}
		}
	}else if(response.error){
		await alertModal(response.error.message);
		button_states=[]
	}
}


async function getTxStatus(txid){
	let JSONR = {};
	JSONR.method = "DERO.GetTransaction";
	JSONR.params = {};
	JSONR.params.scid = "";	
	JSONR.params.tx_hashes = [txid];

	response = await socketSend(JSONR);
	if(response.result){
		if(response.result.status){
			if(response.result.status == "OK"){
				return true;
			}
		}
		return false;
	}else if(response.error){
		await alertModal(response.error.message);
		button_states=[]
	}
}

let post_confirm_height=0;
async function postConfirmation(txid) {
	post_confirm_height = await getHeight();
	return new Promise(function (resolve) {		
		let attempts = 0;		
			
		const attempt = async() => {	
			attempts++;
			let this_height = await getHeight();			
			if(this_height > post_confirm_height){
				if(attempts > 18){
					clearInterval(retryTimer);
					resolve(false)
				}		
				let status_ok = await getTxStatus(txid)
				if(status_ok){
					clearTimeout(retryTimer);
					resolve(true)
				}
			}
		}
		let retryTimer = setInterval(attempt, 2000)			
	})   
}


//---------
//get gas fees quote for htl sc installation 

async function installDeroHTL(days_to_lock,dero_receiver_address){   
	let JSONR = {};
	JSONR.method = "DERO.GetGasEstimate";
	JSONR.params = {};
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[] 
	}];
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;	

	JSONR.params.sc_rpc = [
		{Name: "entrypoint", DataType: "S", Value: "Initialize"},
		{Name: "receiver", DataType: "S", Value: dero_receiver_address},
	];//receiver
	JSONR.params.ringsize = 2;
	JSONR.params.sc = getDeroHTLContract(days_to_lock);

	let response = await socketSend(JSONR);
	if(response.error){
		await alertModal(response.error.message);		
		return false;
	}
	//install htl contract, set the receiver	
	JSONR = {};
	JSONR.method = "transfer";
	JSONR.params = {};
	JSONR.params.fees = 0;
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[] 
	}];
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;
	
	JSONR.params.sc = response.result.gasstorage;
	JSONR.params.sc_rpc = [
		{Name: "entrypoint", DataType: "S", Value: "Initialize"},
		{Name: "receiver", DataType: "S", Value: dero_receiver_address},
	];
	JSONR.params.ringsize = 2;
	JSONR.params.sc = getDeroHTLContract(days_to_lock);
	
	response = await socketSend(JSONR);
	if(response.result){
		let confirmed = await confirmation(response.result.txid);
		if(confirmed){
			await alertModal("Installed with deadline in days: "+days_to_lock);	
			return response.result.txid;				
		}else{
			await alertModal("Can't find the code, install again with txid"+response.result.txid);
			return false;	
		}
	}else if(response.error){
		await alertModal(response.error.message);
		return false;
	}			
}

let confirm_height=0;
async function confirmation(txid) {
	confirm_height = await getHeight();
	return new Promise(function (resolve) {		
		let attempts = 0;		
			
		const attempt = async() => {	
			attempts++;
			let this_height = await getHeight();			
			if(this_height > confirm_height){
				if(attempts > 18){
					clearInterval(retryTimer);
					resolve(false)
				}		
				let code_valid = await getDeroHTLCode(txid)
				if(code_valid){
					clearTimeout(retryTimer);
					resolve(true)
				}
			}
		}
		let retryTimer = setInterval(attempt, 2000)			
	})   
}

//Store keys for convenience if you stay on the app.
let keys = [];
async function fundDeroHTL(id,dero_htl_scid,dero_amt,hash) {   
	if(hash.length == 66){
		hash = hash.slice(2);
	}
	let JSONR = {};
	JSONR.method = "scinvoke";
	JSONR.params = {};	
	JSONR.params.scid = "";
	
	JSONR.params.sc_dero_deposit = parseInt(dero_amt);
	JSONR.params.sc_rpc = [
	{Name: "entrypoint", DataType: "S", Value: "StartSwap"},
	{Name: "hash", DataType: "S", Value: hash}
	];
	JSONR.params.scid = dero_htl_scid;
	
	let response = await socketSend(JSONR);
	if(response.result){
		await alertModal("Funds Deposited and locked with provided hash." + "<br> TXID" + response.result.txid);			
		await refreshBids();			
	}else if(response.error){
		await alertModal(response.error.message);
		return false;
	}
}	
async function checkDeroHTLCode(days,deroHTL){	
	let original = getDeroHTLContract(days);
	let installed = deroHTL.code;
	if(original === installed && original !== false){
		deroHTL.code_valid = true;
		return true;
	}
	return false;
}	
async function getDeroHTLCode(dero_htl_scid){	
	let JSONR = {};
	JSONR.method = "DERO.GetSC";
	JSONR.params = {};
	JSONR.params.scid = "";
	JSONR.params.code = true;
	JSONR.params.variables = false;
	JSONR.params.scid = dero_htl_scid;
	let response = await socketSend(JSONR);
	if(typeof response.result !== 'undefined'){
		if(response.result.code != ""){
			return response.result.code;
		}
	}else if(response.error){
		return false;
	}	
	return false;
	
}

async function getDeroHTLDetails(dero_htl_scid,_dero_amount){
	let deroHTL = {};
	let JSONR = {};

	JSONR.method = "DERO.GetSC";
	JSONR.params = {};
	JSONR.params.scid = "";
	JSONR.params.code = true;
	JSONR.params.keysstring = ["hash","deposited","deadline","key","receiver"];
	JSONR.params.scid = dero_htl_scid;
	let response = await socketSend(JSONR);
	if(response.result){
		if(typeof response.result !== 'undefined' && typeof response.result.code !== 'undefined'){		
			deroHTL.code = response.result.code;				
		}else{
			deroHTL.code = "";
		}	
		deroHTL.scid = dero_htl_scid;
		deroHTL.hash_ok = true;
		deroHTL.balance_ok = true;
		deroHTL.deadline_ok = true;
		deroHTL.key_ok = true;
		deroHTL.hash = response.result.valuesstring[0];			
		deroHTL.deposited = response.result.valuesstring[1];
		deroHTL.deadline = response.result.valuesstring[2];
		deroHTL.key = response.result.valuesstring[3];
		deroHTL.receiver = response.result.valuesstring[4];
		if(deroHTL.receiver.length == 132){
			deroHTL.receiver = hexToUtf8(deroHTL.receiver);
		}
		deroHTL.balance = response.result.balance;

		
		if(!deroHTL.hash.includes("NOT AVAILABLE")){
			deroHTL.hash = hexToUtf8(deroHTL.hash);
		}else{
			deroHTL.hash_ok = false;
		}	
		
		if(!deroHTL.key.includes("NOT AVAILABLE")){
			deroHTL.key = hexToUtf8(deroHTL.key);
		}else{
			deroHTL.key_ok = false;
			deroHTL.key = "";
		}	
		
		deroHTL.deposited =	parseInt(deroHTL.deposited);			
		if(deroHTL.deposited < 1 ||
		_dero_amount != deroHTL.deposited ||
		_dero_amount != deroHTL.balance
		){	
			deroHTL.balance_ok = false;
		}
		
		deroHTL.deadline =	parseInt(deroHTL.deadline);
		if(deroHTL.deadline < nowInSeconds()){				
			deroHTL.deadline_ok = false;
		}
		
		return(deroHTL);	
	}else if(response.error){
		await alertModal(response.result.error.message);
	}
}
async function deroWithdrawal(key,dero_htl_scid) {  		  

	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.id = 5;
	JSONR.method = "DERO.GetGasEstimate";
	JSONR.params = {};	
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[]
	}];	
	
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;		
  
	JSONR.params.sc_rpc = [
	{Name: "SC_ACTION", DataType: "U", Value: 0},
	{Name: "SC_ID", DataType: "H", Value: dero_htl_scid},
	{Name: "entrypoint", DataType: "S", Value: "Withdraw"},
	{Name: "key", DataType:"S", Value: String(key)},
	];	
	JSONR.params.ringsize = 2;
	JSONR.params.signer = connected_dero_account;
	
	let response = await socketSend(JSONR);
	if(response.error){
		await alertModal(response.error.message);
		return;
	}
	JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.id = 6;
	JSONR.method = "transfer"
	JSONR.params = {};
	
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[]
	}];	
	
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;	    
   
	JSONR.params.sc_rpc = [
	{Name: "SC_ACTION", DataType: "U", Value: 0},
	{Name: "SC_ID", DataType: "H", Value: dero_htl_scid},
	{Name: "entrypoint", DataType: "S", Value: "Withdraw"},
	{Name: "key", DataType:"S", Value: String(key)},
	];	
	JSONR.params.ringsize = 2;
	JSONR.params.signer = connected_dero_account;
	JSONR.params.fees = response.result.gasstorage;

	response = await socketSend(JSONR);
	if(response.result){
		await alertModal(response.result.txid);
		return response.result.txid;
	}else if(response.error){
		await alertModal(response.error.message);
		return "";
	}	
};

async function refundDero(dero_htl_scid) {   
	let JSONR = {};
	JSONR.method = "DERO.GetGasEstimate";
	JSONR.params = {};	
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[]
	}];	
	
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;
	JSONR.params.sc_rpc = [
	{Name: "SC_ACTION", DataType: "U", Value: 0},
	{Name: "SC_ID", DataType: "H", Value: dero_htl_scid},
	{Name: "entrypoint", DataType: "S", Value: "Refund"},
	];	
	JSONR.params.ringsize = 2;
	JSONR.params.signer = connected_dero_account;
	//current_mode = "refund";
	let response = await socketSend(JSONR);
	if(response.error){
		await alertModal(response.error.message);
		return;
	}
	JSONR = {};
	JSONR.method = "transfer"
	JSONR.params = {};
	
	JSONR.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[]
	}];	
	
	JSONR.params.sc = "";
	JSONR.params.sc_value = 0;  
	JSONR.params.sc_rpc = [
	{Name: "SC_ACTION", DataType: "U", Value: 0},
	{Name: "SC_ID", DataType: "H", Value: dero_htl_scid},
	{Name: "entrypoint", DataType: "S", Value: "Refund"},
	];	
	JSONR.params.ringsize = 2;
	JSONR.params.signer = connected_dero_account;
	JSONR.params.fees = response.result.gasstorage;

	response = await socketSend(JSONR);
	if(response.result){
		await alertModal("Refund Successful with TXID:"+response.result.txid);
	}else if(response.error){
		await alertModal(response.error.message);
	}		
	
};

//--Smart Contract
function getDeroHTLContract(days){
	let seconds;
	if(days === 1){
		seconds = one_day_in_secs;
	}else if(days === 2){
		seconds = two_days_in_secs;
	}else{
		return false;
	}
return`Function Initialize(receiver String) Uint64
1 STORE("owner",SIGNER())
2 IF IS_ADDRESS_VALID(ADDRESS_RAW(receiver)) THEN GOTO 4
3 RETURN 0
4 STORE("receiver",receiver)
5 STORE("deadline",0) 
6 STORE("deposited",0) 
7 RETURN 0
End Function
Function StartSwap(hash String) Uint64
1 IF DEROVALUE() == 0 THEN GOTO 7
2 IF EXISTS("hash")==1 THEN GOTO 7
3 STORE("hash",hash)
4 STORE("deadline",BLOCK_TIMESTAMP() + `+ seconds +`)
5 STORE("deposited",DEROVALUE())
6 RETURN 0
7 RETURN 1
End Function
Function Withdraw(key String) Uint64 
1 IF ADDRESS_RAW(LOAD("receiver"))==SIGNER() THEN GOTO 3
2 RETURN 1
3 IF LOAD("deadline")>BLOCK_TIMESTAMP() THEN GOTO 5
4 RETURN 1
5 IF STRLEN(key)<=32 THEN GOTO 7
6 RETURN 1
7 IF LOAD("hash")==HEX(SHA256(key)) THEN GOTO 9
8 RETURN 1
9 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD("deposited"))
10 STORE("key",key) 
11 RETURN 0
End Function
Function Refund() Uint64 
1 IF LOAD("owner")==SIGNER() THEN GOTO 3
2 RETURN 1
3 IF LOAD("deadline")<BLOCK_TIMESTAMP() THEN GOTO 5
4 RETURN 1
5 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD("deposited"))
6 RETURN 0
End Function`;
}*/
SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'// Copyright 2024. Civilware. All rights reserved. // TELA Decentralized Web Document (TELA-DOC-1) Function InitializePrivate() Uint64 10 IF init() == 0 THEN GOTO 30 20 RETURN 1 30 STORE("nameHdr", "derocalls.js") 31 STORE("descrHdr", "Dero calls v3") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "derocalls.js") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "") 36 STORE("fileCheckC", "1a057df33b75220f37e936d9f603fa2fa76e8d8ed5ea32389ce1677bb1489f30") 37 STORE("fileCheckS", "2c1058e13774351da914cab1c73b2bc064b5a4b0774220ecb75aa51482f0e2da") 100 RETURN 0 End Function Function init() Uint64 10 IF EXISTS("owner") == 0 THEN GOTO 30 20 RETURN 1 30 STORE("owner", address()) 50 STORE("docVersion", "1.0.0") 60 STORE("hash", HEX(TXID())) 70 STORE("likes", 0) 80 STORE("dislikes", 0) 100 RETURN 0 End Function Function address() String 10 DIM s as String 20 LET s = SIGNER() 30 IF IS_ADDRESS_VALID(s) THEN GOTO 50 40 RETURN "anon" 50 RETURN ADDRESS_STRING(s) End Function Function Rate(r Uint64) Uint64 10 DIM addr as String 15 LET addr = address() 16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30 20 RETURN 1 30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT()) 40 IF r < 50 THEN GOTO 70 50 STORE("likes", LOAD("likes")+1) 60 RETURN 0 70 STORE("dislikes", LOAD("dislikes")+1) 100 RETURN 0 End Function /*let last_block_update=0; async function subscribe(){ let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.id = "0"; JSONR.method = "Subscribe"; JSONR.params = {}; JSONR.params = {"Event": "new_topoheight"}; response = await socketSend(JSONR); if(response.result){ //excellent }else if(response.error){ await alertModal(response.error.message); } } async function getHeight(){ let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.method = "DERO.GetHeight"; response = await socketSend(JSONR); if(response.result){ latest_block.innerHTML = response.result.height; return response.result.height; }else if(response.error){ await alertModal(response.error.message); } } alertTimerId =0; function myFunction() { timer = secs; clearTimeout(alertTimerId); alertTimerId = setTimeout(doTime, 1000); }; var runit = async function() { if(refresh_mode =="timer"){ if(c_status.classList.contains('ok')){ await refreshBids("timer"); } myFunction(); } }; var secs = 30; var seconds = secs * 1000; var running = setInterval(runit, secs * 1000); var timer = secs; function doTime() { if (--timer >= 0) { //Call self every second. alertTimerId = setTimeout(doTime, 1000); } } window.addEventListener('load', async function () { setTimeout(await runit(), 2000); }); let loading = false; let cooked = 0; const refreshBids = async function (caller=""){ if(caller != refresh_mode && caller != ""){ return; } if(loading){ if(++cooked > 2){ loading = false; cooked = 0; } return; } cooked = 0; loading = true; let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.method = "DERO.GetSC"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.code = false; JSONR.params.variables = true; JSONR.params.scid = bids_sc_id; refreshbidsbutton.innerText = "Loading..." let response = await socketSend(JSONR); if(response.result){ await displayBids(response.result); if(caller != "topoheight"){ await getHeight(); } } refreshbidsbutton.innerText = "Refresh Bid List"; loading = false; } //add a bid from html inputs var createbidbutton = document.getElementById('create_bid'); createbidbutton.addEventListener('click', async function createBid(event) { if(parseFloat(dero_bid_amt.value) == 0 || parseFloat(pls_bid_amt.value) == 0 || dero_bid_amt.value == "" || pls_bid_amt.value == "" ){ await alertModal("Zero? Increase amts."); return; }else if(banned.find(addr=>addr==connected_dero_account)){ removeBanHandler(); return; } if(bid_switch_mode == "pls-dero" && ! await connectionOK()){ return; } if(bid_switch_mode == "pls-dero"){ real_switch_mode = "dero-pls" }else{ real_switch_mode = "pls-dero" } let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "CreateBid"}, {Name: "dero_amt", DataType: "U", Value: parseFloat(convertToAtomicUnits(dero_bid_amt.value))}, {Name: "pls_amt", DataType: "U", Value: parseFloat(pls_bid_amt.value)}, {Name: "from_to", DataType: "S", Value: real_switch_mode}, {Name: "pls_bid_address", DataType: "S", Value: connected_evm_account} ]; JSONR.params.scid = bids_sc_id; JSONR.params.ringsize = 2; let response = await socketSend(JSONR); if(response.result){ await alertModal("Offer created, txid:"+response.result.txid); await refreshBids(); }else if(response.error){ await alertModal(response.error.message); } }); //remove a bid from button in table async function removeBid(index){ let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "RemoveBid"}, {Name: "bid_id", DataType: "S", Value: index}, ]; JSONR.params.scid = bids_sc_id; JSONR.params.ringsize = 2; let response = await socketSend(JSONR); if(response.result){ await alertModal("Offer removed, txid:"+response.result.txid); await refreshBids(); }else if(response.error){ await alertModal(response.error.message); } } async function acceptDeroToPLSOffer(offer){ if(! await connectionOK()){return false;} if(banned.find(addr=>addr==connected_dero_account)){ removeBanHandler(); return false; } //accepter must deploy .sol contract and fund it etc let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; //Also add ETH Address here JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "AcceptBid"}, {Name: "bid_id", DataType: "S", Value: offer.id}, {Name: "accepted_by_pls", DataType: "S", Value: connected_evm_account}, ]; JSONR.params.scid = bids_sc_id; JSONR.params.ringsize = 2; let response = await socketSend(JSONR); if(response.result){ await alertModal('Wait for your accepted offer to appear in "Active Offers" or "Offers I took", then continue by installing the HTL contract. Accepted TXID:' + response.result.txid); document.getElementById("my_taken").click(); }else if(response.error){ await alertModal(response.error.message); } } async function acceptPLSToDeroOffer(offer){ //Deploy 48hr contract //accepter must deploy dvm contract and fund it etc if(! await connectionOK()){return false;} if(banned.find(addr=>addr==connected_dero_account)){ removeBanHandler(); return false; } let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; //Also add ETH Address here JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "AcceptBid"}, {Name: "bid_id", DataType: "S", Value: offer.id}, {Name: "accepted_by_pls", DataType: "S", Value: connected_evm_account}, ]; JSONR.params.scid = bids_sc_id; JSONR.params.ringsize = 2; let response = await socketSend(JSONR); if(response.result){ await alertModal('Wait for your accepted offer to appear in "Active Offers" or "Offers I took", then continue by installing the HTL contract. Accepted TXID:' + response.result.txid); document.getElementById("my_taken").click(); }else if(response.error){ await alertModal(response.error.message); } } //Add to bid list after starting and funding hashed time lock contract async function addSCIDToList(asset,htl_scid,offer){ //asset should be AddDEROSCID or AddPLSSCID let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "Add"+asset+"SCID"}, {Name: "bid_id", DataType: "S", Value: offer.id}, {Name: "scid", DataType: "S", Value: htl_scid}, ]; JSONR.params.scid = bids_sc_id; JSONR.params.ringsize = 2; response = await socketSend(JSONR); if(response.result){ let confirmed = await postConfirmation(response.result.txid); if(confirmed){ await alertModal("You've posted the "+asset+" smart contract now it needs to be funded to complete this step."); }else{ let result = await confirmModal("Failed to post contract id to the index, try again? If not, then you'll need to install another contract."); if(result){ await addSCIDToList(asset,htl_scid,offer); }else{ button_states=[] } } }else if(response.error){ await alertModal(response.error.message); button_states=[] } } async function getTxStatus(txid){ let JSONR = {}; JSONR.method = "DERO.GetTransaction"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.tx_hashes = [txid]; response = await socketSend(JSONR); if(response.result){ if(response.result.status){ if(response.result.status == "OK"){ return true; } } return false; }else if(response.error){ await alertModal(response.error.message); button_states=[] } } let post_confirm_height=0; async function postConfirmation(txid) { post_confirm_height = await getHeight(); return new Promise(function (resolve) { let attempts = 0; const attempt = async() => { attempts++; let this_height = await getHeight(); if(this_height > post_confirm_height){ if(attempts > 18){ clearInterval(retryTimer); resolve(false) } let status_ok = await getTxStatus(txid) if(status_ok){ clearTimeout(retryTimer); resolve(true) } } } let retryTimer = setInterval(attempt, 2000) }) } //--------- //get gas fees quote for htl sc installation async function installDeroHTL(days_to_lock,dero_receiver_address){ let JSONR = {}; JSONR.method = "DERO.GetGasEstimate"; JSONR.params = {}; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "Initialize"}, {Name: "receiver", DataType: "S", Value: dero_receiver_address}, ];//receiver JSONR.params.ringsize = 2; JSONR.params.sc = getDeroHTLContract(days_to_lock); let response = await socketSend(JSONR); if(response.error){ await alertModal(response.error.message); return false; } //install htl contract, set the receiver JSONR = {}; JSONR.method = "transfer"; JSONR.params = {}; JSONR.params.fees = 0; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc = response.result.gasstorage; JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "Initialize"}, {Name: "receiver", DataType: "S", Value: dero_receiver_address}, ]; JSONR.params.ringsize = 2; JSONR.params.sc = getDeroHTLContract(days_to_lock); response = await socketSend(JSONR); if(response.result){ let confirmed = await confirmation(response.result.txid); if(confirmed){ await alertModal("Installed with deadline in days: "+days_to_lock); return response.result.txid; }else{ await alertModal("Can't find the code, install again with txid"+response.result.txid); return false; } }else if(response.error){ await alertModal(response.error.message); return false; } } let confirm_height=0; async function confirmation(txid) { confirm_height = await getHeight(); return new Promise(function (resolve) { let attempts = 0; const attempt = async() => { attempts++; let this_height = await getHeight(); if(this_height > confirm_height){ if(attempts > 18){ clearInterval(retryTimer); resolve(false) } let code_valid = await getDeroHTLCode(txid) if(code_valid){ clearTimeout(retryTimer); resolve(true) } } } let retryTimer = setInterval(attempt, 2000) }) } //Store keys for convenience if you stay on the app. let keys = []; async function fundDeroHTL(id,dero_htl_scid,dero_amt,hash) { if(hash.length == 66){ hash = hash.slice(2); } let JSONR = {}; JSONR.method = "scinvoke"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.sc_dero_deposit = parseInt(dero_amt); JSONR.params.sc_rpc = [ {Name: "entrypoint", DataType: "S", Value: "StartSwap"}, {Name: "hash", DataType: "S", Value: hash} ]; JSONR.params.scid = dero_htl_scid; let response = await socketSend(JSONR); if(response.result){ await alertModal("Funds Deposited and locked with provided hash." + "<br> TXID" + response.result.txid); await refreshBids(); }else if(response.error){ await alertModal(response.error.message); return false; } } async function checkDeroHTLCode(days,deroHTL){ let original = getDeroHTLContract(days); let installed = deroHTL.code; if(original === installed && original !== false){ deroHTL.code_valid = true; return true; } return false; } async function getDeroHTLCode(dero_htl_scid){ let JSONR = {}; JSONR.method = "DERO.GetSC"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.code = true; JSONR.params.variables = false; JSONR.params.scid = dero_htl_scid; let response = await socketSend(JSONR); if(typeof response.result !== 'undefined'){ if(response.result.code != ""){ return response.result.code; } }else if(response.error){ return false; } return false; } async function getDeroHTLDetails(dero_htl_scid,_dero_amount){ let deroHTL = {}; let JSONR = {}; JSONR.method = "DERO.GetSC"; JSONR.params = {}; JSONR.params.scid = ""; JSONR.params.code = true; JSONR.params.keysstring = ["hash","deposited","deadline","key","receiver"]; JSONR.params.scid = dero_htl_scid; let response = await socketSend(JSONR); if(response.result){ if(typeof response.result !== 'undefined' && typeof response.result.code !== 'undefined'){ deroHTL.code = response.result.code; }else{ deroHTL.code = ""; } deroHTL.scid = dero_htl_scid; deroHTL.hash_ok = true; deroHTL.balance_ok = true; deroHTL.deadline_ok = true; deroHTL.key_ok = true; deroHTL.hash = response.result.valuesstring[0]; deroHTL.deposited = response.result.valuesstring[1]; deroHTL.deadline = response.result.valuesstring[2]; deroHTL.key = response.result.valuesstring[3]; deroHTL.receiver = response.result.valuesstring[4]; if(deroHTL.receiver.length == 132){ deroHTL.receiver = hexToUtf8(deroHTL.receiver); } deroHTL.balance = response.result.balance; if(!deroHTL.hash.includes("NOT AVAILABLE")){ deroHTL.hash = hexToUtf8(deroHTL.hash); }else{ deroHTL.hash_ok = false; } if(!deroHTL.key.includes("NOT AVAILABLE")){ deroHTL.key = hexToUtf8(deroHTL.key); }else{ deroHTL.key_ok = false; deroHTL.key = ""; } deroHTL.deposited = parseInt(deroHTL.deposited); if(deroHTL.deposited < 1 || _dero_amount != deroHTL.deposited || _dero_amount != deroHTL.balance ){ deroHTL.balance_ok = false; } deroHTL.deadline = parseInt(deroHTL.deadline); if(deroHTL.deadline < nowInSeconds()){ deroHTL.deadline_ok = false; } return(deroHTL); }else if(response.error){ await alertModal(response.result.error.message); } } async function deroWithdrawal(key,dero_htl_scid) { let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.id = 5; JSONR.method = "DERO.GetGasEstimate"; JSONR.params = {}; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc_rpc = [ {Name: "SC_ACTION", DataType: "U", Value: 0}, {Name: "SC_ID", DataType: "H", Value: dero_htl_scid}, {Name: "entrypoint", DataType: "S", Value: "Withdraw"}, {Name: "key", DataType:"S", Value: String(key)}, ]; JSONR.params.ringsize = 2; JSONR.params.signer = connected_dero_account; let response = await socketSend(JSONR); if(response.error){ await alertModal(response.error.message); return; } JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.id = 6; JSONR.method = "transfer" JSONR.params = {}; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc_rpc = [ {Name: "SC_ACTION", DataType: "U", Value: 0}, {Name: "SC_ID", DataType: "H", Value: dero_htl_scid}, {Name: "entrypoint", DataType: "S", Value: "Withdraw"}, {Name: "key", DataType:"S", Value: String(key)}, ]; JSONR.params.ringsize = 2; JSONR.params.signer = connected_dero_account; JSONR.params.fees = response.result.gasstorage; response = await socketSend(JSONR); if(response.result){ await alertModal(response.result.txid); return response.result.txid; }else if(response.error){ await alertModal(response.error.message); return ""; } }; async function refundDero(dero_htl_scid) { let JSONR = {}; JSONR.method = "DERO.GetGasEstimate"; JSONR.params = {}; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc_rpc = [ {Name: "SC_ACTION", DataType: "U", Value: 0}, {Name: "SC_ID", DataType: "H", Value: dero_htl_scid}, {Name: "entrypoint", DataType: "S", Value: "Refund"}, ]; JSONR.params.ringsize = 2; JSONR.params.signer = connected_dero_account; //current_mode = "refund"; let response = await socketSend(JSONR); if(response.error){ await alertModal(response.error.message); return; } JSONR = {}; JSONR.method = "transfer" JSONR.params = {}; JSONR.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; JSONR.params.sc = ""; JSONR.params.sc_value = 0; JSONR.params.sc_rpc = [ {Name: "SC_ACTION", DataType: "U", Value: 0}, {Name: "SC_ID", DataType: "H", Value: dero_htl_scid}, {Name: "entrypoint", DataType: "S", Value: "Refund"}, ]; JSONR.params.ringsize = 2; JSONR.params.signer = connected_dero_account; JSONR.params.fees = response.result.gasstorage; response = await socketSend(JSONR); if(response.result){ await alertModal("Refund Successful with TXID:"+response.result.txid); }else if(response.error){ await alertModal(response.error.message); } }; //--Smart Contract function getDeroHTLContract(days){ let seconds; if(days === 1){ seconds = one_day_in_secs; }else if(days === 2){ seconds = two_days_in_secs; }else{ return false; } return`Function Initialize(receiver String) Uint64 1 STORE("owner",SIGNER()) 2 IF IS_ADDRESS_VALID(ADDRESS_RAW(receiver)) THEN GOTO 4 3 RETURN 0 4 STORE("receiver",receiver) 5 STORE("deadline",0) 6 STORE("deposited",0) 7 RETURN 0 End Function Function StartSwap(hash String) Uint64 1 IF DEROVALUE() == 0 THEN GOTO 7 2 IF EXISTS("hash")==1 THEN GOTO 7 3 STORE("hash",hash) 4 STORE("deadline",BLOCK_TIMESTAMP() + `+ seconds +`) 5 STORE("deposited",DEROVALUE()) 6 RETURN 0 7 RETURN 1 End Function Function Withdraw(key String) Uint64 1 IF ADDRESS_RAW(LOAD("receiver"))==SIGNER() THEN GOTO 3 2 RETURN 1 3 IF LOAD("deadline")>BLOCK_TIMESTAMP() THEN GOTO 5 4 RETURN 1 5 IF STRLEN(key)<=32 THEN GOTO 7 6 RETURN 1 7 IF LOAD("hash")==HEX(SHA256(key)) THEN GOTO 9 8 RETURN 1 9 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD("deposited")) 10 STORE("key",key) 11 RETURN 0 End Function Function Refund() Uint64 1 IF LOAD("owner")==SIGNER() THEN GOTO 3 2 RETURN 1 3 IF LOAD("deadline")<BLOCK_TIMESTAMP() THEN GOTO 5 4 RETURN 1 5 SEND_DERO_TO_ADDRESS(SIGNER(),LOAD("deposited")) 6 RETURN 0 End Function`; }*/']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
0100000500bcf2e302958b194553293499869040d1894c843378b36ba0f80bc28bdc481c282e62266a01000000000000000000000000000000000000000000000000000000000000000000010ed972c196ef74161df6e31f027d1c4526b62796bbb1e5e44e90757a24f845b30082112af3b4bc9bcae81f0fa657bae5049c522952d97246e9a0fdd50b242312ce338b7661cda1eec814bcd773d8c43021e5fdbca1e91077d31151b6b0286c66fa22afb66c9ccd5b798011f274470df103f6b5764357b4420442039d4ad1931bf0db386ac23589240f7c5bcf4d4d702e8b0104d6e6012a07032d74ab5bff549d89eee0bf2cb3802df9d956026237bcaf0efe822458f600635d6e4e0652cc4b2bc23ff6f84080e5b896883ec65001eb8db8c18c8afbd3b3b2349ef443763eb9000a006765891cc772f9f637ba3951f994b93af502a67589b1304782d26093795200085491b1199d603f08916f439289976e1de3c99d3093db62a562214ec6a53cf3949901a26853435f434f444553794c7b2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20226465726f63616c6c732e6a7322290a33312053544f524528226465736372486472222c20224465726f2063616c6c7320763322290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20226465726f63616c6c732e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c20223161303537646633336237353232306633376539333664396636303366613266613736653864386564356561333233383963653136373762623134383966333022290a33372053544f5245282266696c65436865636b53222c20223263313035386531333737343335316461393134636162316337336232626330363462356134623037373432323065636237356161353134383266306532646122290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a6c6574206c6173745f626c6f636b5f7570646174653d303b0a0a6173796e632066756e6374696f6e2073756273637269626528297b200a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d202230223b0a094a534f4e522e6d6574686f64203d2022537562736372696265223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d73203d207b224576656e74223a20226e65775f746f706f686569676874227d3b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09092f2f657863656c6c656e740a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a0a6173796e632066756e6374696f6e2067657448656967687428297b20202020200a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6d6574686f64203d20224445524f2e476574486569676874223b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09096c61746573745f626c6f636b2e696e6e657248544d4c203d20726573706f6e73652e726573756c742e6865696768743b0a090972657475726e20726573706f6e73652e726573756c742e6865696768743b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a0a0a616c65727454696d65724964203d303b0a66756e6374696f6e206d7946756e6374696f6e2829207b0a0974696d6572203d20736563733b0a09636c65617254696d656f757428616c65727454696d65724964293b0a09616c65727454696d65724964203d202073657454696d656f757428646f54696d652c2031303030293b20200a7d3b0a0a7661722072756e6974203d206173796e632066756e6374696f6e2829207b0a09696628726566726573685f6d6f6465203d3d2274696d657222297b0a0909696628635f7374617475732e636c6173734c6973742e636f6e7461696e7328276f6b2729297b0a0909096177616974207265667265736842696473282274696d657222293b0a09097d0a09096d7946756e6374696f6e28293b200a097d0a7d3b0a0a7661722073656373203d2033303b0a766172207365636f6e6473203d2073656373202a20313030303b0a7661722072756e6e696e67203d20736574496e74657276616c2872756e69742c2073656373202a2031303030293b0a0a7661722074696d6572203d20736563733b0a0a66756e6374696f6e20646f54696d652829207b200a09696620282d2d74696d6572203e3d203029207b0a09092f2f43616c6c2073656c66206576657279207365636f6e642e0a0909616c65727454696d65724964203d2073657454696d656f757428646f54696d652c2031303030293b200a097d0a7d0a77696e646f772e6164644576656e744c697374656e657228276c6f6164272c206173796e632066756e6374696f6e202829207b0a73657454696d656f75742861776169742072756e697428292c2032303030293b200a7d293b0a0a6c6574206c6f6164696e67203d2066616c73653b090a6c657420636f6f6b6564203d20303b090a636f6e7374207265667265736842696473203d206173796e632066756e6374696f6e202863616c6c65723d2222297b090a0969662863616c6c657220213d20726566726573685f6d6f64652026262063616c6c657220213d202222297b0a090972657475726e3b0a097d0a096966286c6f6164696e67297b09090a09096966282b2b636f6f6b6564203e2032297b0a0909096c6f6164696e67203d2066616c73653b0a090909636f6f6b6564203d20303b0a09097d0a090972657475726e3b0a097d0a09636f6f6b6564203d20303b0a096c6f6164696e67203d20747275653b0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d2066616c73653b0a094a534f4e522e706172616d732e7661726961626c6573203d20747275653b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a097265667265736862696473627574746f6e2e696e6e657254657874203d20224c6f6164696e672e2e2e220a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0909090a0909617761697420646973706c61794269647328726573706f6e73652e726573756c74293b09090a090969662863616c6c657220213d2022746f706f68656967687422297b0a09090961776169742067657448656967687428293b0a09097d090a097d0a097265667265736862696473627574746f6e2e696e6e657254657874203d20225265667265736820426964204c697374223b0a096c6f6164696e67203d2066616c73653b090a0a7d0a2f2f6164642061206269640966726f6d2068746d6c20696e707574730a76617220637265617465626964627574746f6e203d20646f63756d656e742e676574456c656d656e744279496428276372656174655f62696427293b202020200a637265617465626964627574746f6e2e6164644576656e744c697374656e65722827636c69636b272c206173796e632066756e6374696f6e20637265617465426964286576656e7429207b20200a096966287061727365466c6f6174286465726f5f6269645f616d742e76616c756529203d3d2030207c7c200a09097061727365466c6f617428706c735f6269645f616d742e76616c756529203d3d2030207c7c200a09096465726f5f6269645f616d742e76616c7565203d3d202222207c7c200a0909706c735f6269645f616d742e76616c7565203d3d20222209090a09297b0a0909617761697420616c6572744d6f64616c28225a65726f3f20496e63726561736520616d74732e22293b0a090972657475726e3b0a097d656c73652069662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e3b0a097d0a096966286269645f7377697463685f6d6f6465203d3d2022706c732d6465726f22202626202120617761697420636f6e6e656374696f6e4f4b2829297b0a090972657475726e3b0a097d0a0a096966286269645f7377697463685f6d6f6465203d3d2022706c732d6465726f22297b0a09097265616c5f7377697463685f6d6f6465203d20226465726f2d706c73220a097d656c73657b0a09097265616c5f7377697463685f6d6f6465203d2022706c732d6465726f220a097d0a0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b2020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022437265617465426964227d2c0a09097b4e616d653a20226465726f5f616d74222c2044617461547970653a202255222c2056616c75653a207061727365466c6f617428636f6e76657274546f41746f6d6963556e697473286465726f5f6269645f616d742e76616c756529297d2c0a09097b4e616d653a2022706c735f616d74222c2044617461547970653a202255222c2056616c75653a207061727365466c6f617428706c735f6269645f616d742e76616c7565297d2c0a09097b4e616d653a202266726f6d5f746f222c2044617461547970653a202253222c2056616c75653a207265616c5f7377697463685f6d6f64657d2c0a09097b4e616d653a2022706c735f6269645f61646472657373222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d0a095d3b0a0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28224f6666657220637265617465642c20747869643a222b726573706f6e73652e726573756c742e74786964293b0a0909617761697420726566726573684269647328293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a090a7d293b0a0a2f2f72656d6f76652061206269642066726f6d20627574746f6e20696e207461626c650a6173796e632066756e6374696f6e2072656d6f766542696428696e646578297b0a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a202252656d6f7665426964227d2c0a097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a20696e6465787d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28224f666665722072656d6f7665642c20747869643a222b726573706f6e73652e726573756c742e74786964293b0a0909617761697420726566726573684269647328293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a0a7d0a0a0a6173796e632066756e6374696f6e206163636570744465726f546f504c534f66666572286f66666572297b0a096966282120617761697420636f6e6e656374696f6e4f4b2829297b72657475726e2066616c73653b7d0a0969662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e2066616c73653b0a097d0a092f2f6163636570746572206d757374206465706c6f79202e736f6c20636f6e747261637420616e642066756e64206974206574630a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a092f2f416c736f2061646420455448204164647265737320686572650a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416363657074426964227d2c0a09097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a09097b4e616d653a202261636365707465645f62795f706c73222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28275761697420666f7220796f7572206163636570746564206f6666657220746f2061707065617220696e2022416374697665204f666665727322206f7220224f6666657273204920746f6f6b222c207468656e20636f6e74696e756520627920696e7374616c6c696e67207468652048544c20636f6e74726163742e20416363657074656420545849443a27202b20726573706f6e73652e726573756c742e74786964293b0a0909646f63756d656e742e676574456c656d656e744279496428226d795f74616b656e22292e636c69636b28293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a6173796e632066756e6374696f6e20616363657074504c53546f4465726f4f66666572286f66666572297b0a092f2f4465706c6f79203438687220636f6e7472616374090a092f2f6163636570746572206d757374206465706c6f792064766d20636f6e747261637420616e642066756e64206974206574630a0a096966282120617761697420636f6e6e656374696f6e4f4b2829297b72657475726e2066616c73653b7d0a0969662862616e6e65642e66696e6428616464723d3e616464723d3d636f6e6e65637465645f6465726f5f6163636f756e7429297b0a090972656d6f766542616e48616e646c657228293b0a090972657475726e2066616c73653b0a097d0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a092f2f416c736f2061646420455448204164647265737320686572650a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416363657074426964227d2c0a09097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a09097b4e616d653a202261636365707465645f62795f706c73222c2044617461547970653a202253222c2056616c75653a20636f6e6e65637465645f65766d5f6163636f756e747d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28275761697420666f7220796f7572206163636570746564206f6666657220746f2061707065617220696e2022416374697665204f666665727322206f7220224f6666657273204920746f6f6b222c207468656e20636f6e74696e756520627920696e7374616c6c696e67207468652048544c20636f6e74726163742e20416363657074656420545849443a27202b20726573706f6e73652e726573756c742e74786964293b0a0909646f63756d656e742e676574456c656d656e744279496428226d795f74616b656e22292e636c69636b28293b09090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d090a2f2f41646420746f20626964206c697374206166746572207374617274696e6720616e642066756e64696e67206861736865642074696d65206c6f636b20636f6e74726163740a6173796e632066756e6374696f6e2061646453434944546f4c6973742861737365742c68746c5f736369642c6f66666572297b0a092f2f61737365742073686f756c64206265204164644445524f53434944206f7220416464504c53534349440a090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b202020200a0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022416464222b61737365742b2253434944227d2c0a097b4e616d653a20226269645f6964222c2044617461547970653a202253222c2056616c75653a206f666665722e69647d2c0a097b4e616d653a202273636964222c2044617461547970653a202253222c2056616c75653a2068746c5f736369647d2c0a095d3b0a094a534f4e522e706172616d732e73636964203d20626964735f73635f69643b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a090a09696628726573706f6e73652e726573756c74297b0a09096c657420636f6e6669726d6564203d20617761697420706f7374436f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964293b0a0909696628636f6e6669726d6564297b0a090909617761697420616c6572744d6f64616c2822596f7527766520706f737465642074686520222b61737365742b2220736d61727420636f6e7472616374206e6f77206974206e6565647320746f2062652066756e64656420746f20636f6d706c657465207468697320737465702e22293b0a09097d656c73657b0a0909096c657420726573756c74203d20617761697420636f6e6669726d4d6f64616c28224661696c656420746f20706f737420636f6e747261637420696420746f2074686520696e6465782c2074727920616761696e3f204966206e6f742c207468656e20796f75276c6c206e65656420746f20696e7374616c6c20616e6f7468657220636f6e74726163742e22293b0a090909696628726573756c74297b0a0909090961776169742061646453434944546f4c6973742861737365742c68746c5f736369642c6f66666572293b0a0909097d656c73657b0a09090909627574746f6e5f7374617465733d5b5d0a0909097d0a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a0909627574746f6e5f7374617465733d5b5d0a097d0a7d0a0a0a6173796e632066756e6374696f6e2067657454785374617475732874786964297b0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745472616e73616374696f6e223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b090a094a534f4e522e706172616d732e74785f686173686573203d205b747869645d3b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909696628726573706f6e73652e726573756c742e737461747573297b0a090909696628726573706f6e73652e726573756c742e737461747573203d3d20224f4b22297b0a0909090972657475726e20747275653b0a0909097d0a09097d0a090972657475726e2066616c73653b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a0909627574746f6e5f7374617465733d5b5d0a097d0a7d0a0a6c657420706f73745f636f6e6669726d5f6865696768743d303b0a6173796e632066756e6374696f6e20706f7374436f6e6669726d6174696f6e287478696429207b0a09706f73745f636f6e6669726d5f686569676874203d2061776169742067657448656967687428293b0a0972657475726e206e65772050726f6d6973652866756e6374696f6e20287265736f6c766529207b09090a09096c657420617474656d707473203d20303b09090a0909090a0909636f6e737420617474656d7074203d206173796e632829203d3e207b090a090909617474656d7074732b2b3b0a0909096c657420746869735f686569676874203d2061776169742067657448656967687428293b0909090a090909696628746869735f686569676874203e20706f73745f636f6e6669726d5f686569676874297b0a09090909696628617474656d707473203e203138297b0a0909090909636c656172496e74657276616c28726574727954696d6572293b0a09090909097265736f6c76652866616c7365290a090909097d09090a090909096c6574207374617475735f6f6b203d2061776169742067657454785374617475732874786964290a090909096966287374617475735f6f6b297b0a0909090909636c65617254696d656f757428726574727954696d6572293b0a09090909097265736f6c76652874727565290a090909097d0a0909097d0a09097d0a09096c657420726574727954696d6572203d20736574496e74657276616c28617474656d70742c2032303030290909090a097d292020200a7d0a0a0a2f2f2d2d2d2d2d2d2d2d2d0a2f2f6765742067617320666565732071756f746520666f722068746c20736320696e7374616c6c6174696f6e200a0a6173796e632066756e6374696f6e20696e7374616c6c4465726f48544c28646179735f746f5f6c6f636b2c6465726f5f72656365697665725f61646472657373297b2020200a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b090a0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022496e697469616c697a65227d2c0a09097b4e616d653a20227265636569766572222c2044617461547970653a202253222c2056616c75653a206465726f5f72656365697665725f616464726573737d2c0a095d3b2f2f72656365697665720a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7363203d206765744465726f48544c436f6e747261637428646179735f746f5f6c6f636b293b0a0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b09090a090972657475726e2066616c73653b0a097d0a092f2f696e7374616c6c2068746c20636f6e74726163742c2073657420746865207265636569766572090a094a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227472616e73666572223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e66656573203d20303b0a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b0a090a094a534f4e522e706172616d732e7363203d20726573706f6e73652e726573756c742e67617373746f726167653b0a094a534f4e522e706172616d732e73635f727063203d205b0a09097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022496e697469616c697a65227d2c0a09097b4e616d653a20227265636569766572222c2044617461547970653a202253222c2056616c75653a206465726f5f72656365697665725f616464726573737d2c0a095d3b0a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7363203d206765744465726f48544c436f6e747261637428646179735f746f5f6c6f636b293b0a090a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a09096c657420636f6e6669726d6564203d20617761697420636f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964293b0a0909696628636f6e6669726d6564297b0a090909617761697420616c6572744d6f64616c2822496e7374616c6c6564207769746820646561646c696e6520696e20646179733a20222b646179735f746f5f6c6f636b293b090a09090972657475726e20726573706f6e73652e726573756c742e747869643b090909090a09097d656c73657b0a090909617761697420616c6572744d6f64616c282243616e27742066696e642074686520636f64652c20696e7374616c6c20616761696e20776974682074786964222b726573706f6e73652e726573756c742e74786964293b0a09090972657475726e2066616c73653b090a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2066616c73653b0a097d0909090a7d0a0a6c657420636f6e6669726d5f6865696768743d303b0a6173796e632066756e6374696f6e20636f6e6669726d6174696f6e287478696429207b0a09636f6e6669726d5f686569676874203d2061776169742067657448656967687428293b0a0972657475726e206e65772050726f6d6973652866756e6374696f6e20287265736f6c766529207b09090a09096c657420617474656d707473203d20303b09090a0909090a0909636f6e737420617474656d7074203d206173796e632829203d3e207b090a090909617474656d7074732b2b3b0a0909096c657420746869735f686569676874203d2061776169742067657448656967687428293b0909090a090909696628746869735f686569676874203e20636f6e6669726d5f686569676874297b0a09090909696628617474656d707473203e203138297b0a0909090909636c656172496e74657276616c28726574727954696d6572293b0a09090909097265736f6c76652866616c7365290a090909097d09090a090909096c657420636f64655f76616c6964203d206177616974206765744465726f48544c436f64652874786964290a09090909696628636f64655f76616c6964297b0a0909090909636c65617254696d656f757428726574727954696d6572293b0a09090909097265736f6c76652874727565290a090909097d0a0909097d0a09097d0a09096c657420726574727954696d6572203d20736574496e74657276616c28617474656d70742c2032303030290909090a097d292020200a7d0a0a2f2f53746f7265206b65797320666f7220636f6e76656e69656e636520696620796f752073746179206f6e20746865206170702e0a6c6574206b657973203d205b5d3b0a6173796e632066756e6374696f6e2066756e644465726f48544c2869642c6465726f5f68746c5f736369642c6465726f5f616d742c6861736829207b2020200a09696628686173682e6c656e677468203d3d203636297b0a090968617368203d20686173682e736c6963652832293b0a097d0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227363696e766f6b65223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e73636964203d2022223b0a090a094a534f4e522e706172616d732e73635f6465726f5f6465706f736974203d207061727365496e74286465726f5f616d74293b0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022537461727453776170227d2c0a097b4e616d653a202268617368222c2044617461547970653a202253222c2056616c75653a20686173687d0a095d3b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a090a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c282246756e6473204465706f736974656420616e64206c6f636b656420776974682070726f766964656420686173682e22202b20223c62723e205458494422202b20726573706f6e73652e726573756c742e74786964293b0909090a0909617761697420726566726573684269647328293b0909090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2066616c73653b0a097d0a7d090a6173796e632066756e6374696f6e20636865636b4465726f48544c436f646528646179732c6465726f48544c297b090a096c6574206f726967696e616c203d206765744465726f48544c436f6e74726163742864617973293b0a096c657420696e7374616c6c6564203d206465726f48544c2e636f64653b0a096966286f726967696e616c203d3d3d20696e7374616c6c6564202626206f726967696e616c20213d3d2066616c7365297b0a09096465726f48544c2e636f64655f76616c6964203d20747275653b0a090972657475726e20747275653b0a097d0a0972657475726e2066616c73653b0a7d090a6173796e632066756e6374696f6e206765744465726f48544c436f6465286465726f5f68746c5f73636964297b090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d20747275653b0a094a534f4e522e706172616d732e7661726961626c6573203d2066616c73653b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628747970656f6620726573706f6e73652e726573756c7420213d3d2027756e646566696e656427297b0a0909696628726573706f6e73652e726573756c742e636f646520213d202222297b0a09090972657475726e20726573706f6e73652e726573756c742e636f64653b0a09097d0a097d656c736520696628726573706f6e73652e6572726f72297b0a090972657475726e2066616c73653b0a097d090a0972657475726e2066616c73653b0a090a7d0a0a6173796e632066756e6374696f6e206765744465726f48544c44657461696c73286465726f5f68746c5f736369642c5f6465726f5f616d6f756e74297b0a096c6574206465726f48544c203d207b7d3b0a096c6574204a534f4e52203d207b7d3b0a0a094a534f4e522e6d6574686f64203d20224445524f2e4765745343223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e73636964203d2022223b0a094a534f4e522e706172616d732e636f6465203d20747275653b0a094a534f4e522e706172616d732e6b657973737472696e67203d205b2268617368222c226465706f7369746564222c22646561646c696e65222c226b6579222c227265636569766572225d3b0a094a534f4e522e706172616d732e73636964203d206465726f5f68746c5f736369643b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909696628747970656f6620726573706f6e73652e726573756c7420213d3d2027756e646566696e65642720262620747970656f6620726573706f6e73652e726573756c742e636f646520213d3d2027756e646566696e656427297b09090a0909096465726f48544c2e636f6465203d20726573706f6e73652e726573756c742e636f64653b090909090a09097d656c73657b0a0909096465726f48544c2e636f6465203d2022223b0a09097d090a09096465726f48544c2e73636964203d206465726f5f68746c5f736369643b0a09096465726f48544c2e686173685f6f6b203d20747275653b0a09096465726f48544c2e62616c616e63655f6f6b203d20747275653b0a09096465726f48544c2e646561646c696e655f6f6b203d20747275653b0a09096465726f48544c2e6b65795f6f6b203d20747275653b0a09096465726f48544c2e68617368203d20726573706f6e73652e726573756c742e76616c756573737472696e675b305d3b0909090a09096465726f48544c2e6465706f7369746564203d20726573706f6e73652e726573756c742e76616c756573737472696e675b315d3b0a09096465726f48544c2e646561646c696e65203d20726573706f6e73652e726573756c742e76616c756573737472696e675b325d3b0a09096465726f48544c2e6b6579203d20726573706f6e73652e726573756c742e76616c756573737472696e675b335d3b0a09096465726f48544c2e7265636569766572203d20726573706f6e73652e726573756c742e76616c756573737472696e675b345d3b0a09096966286465726f48544c2e72656365697665722e6c656e677468203d3d20313332297b0a0909096465726f48544c2e7265636569766572203d20686578546f55746638286465726f48544c2e7265636569766572293b0a09097d0a09096465726f48544c2e62616c616e6365203d20726573706f6e73652e726573756c742e62616c616e63653b0a0a09090a0909696628216465726f48544c2e686173682e696e636c7564657328224e4f5420415641494c41424c452229297b0a0909096465726f48544c2e68617368203d20686578546f55746638286465726f48544c2e68617368293b0a09097d656c73657b0a0909096465726f48544c2e686173685f6f6b203d2066616c73653b0a09097d090a09090a0909696628216465726f48544c2e6b65792e696e636c7564657328224e4f5420415641494c41424c452229297b0a0909096465726f48544c2e6b6579203d20686578546f55746638286465726f48544c2e6b6579293b0a09097d656c73657b0a0909096465726f48544c2e6b65795f6f6b203d2066616c73653b0a0909096465726f48544c2e6b6579203d2022223b0a09097d090a09090a09096465726f48544c2e6465706f7369746564203d097061727365496e74286465726f48544c2e6465706f7369746564293b0909090a09096966286465726f48544c2e6465706f7369746564203c2031207c7c0a09095f6465726f5f616d6f756e7420213d206465726f48544c2e6465706f7369746564207c7c0a09095f6465726f5f616d6f756e7420213d206465726f48544c2e62616c616e63650a0909297b090a0909096465726f48544c2e62616c616e63655f6f6b203d2066616c73653b0a09097d0a09090a09096465726f48544c2e646561646c696e65203d097061727365496e74286465726f48544c2e646561646c696e65293b0a09096966286465726f48544c2e646561646c696e65203c206e6f77496e5365636f6e64732829297b090909090a0909096465726f48544c2e646561646c696e655f6f6b203d2066616c73653b0a09097d0a09090a090972657475726e286465726f48544c293b090a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e726573756c742e6572726f722e6d657373616765293b0a097d0a7d0a6173796e632066756e6374696f6e206465726f5769746864726177616c286b65792c6465726f5f68746c5f7363696429207b2020090920200a0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d20353b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b09090a20200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a20225769746864726177227d2c0a097b4e616d653a20226b6579222c2044617461547970653a2253222c2056616c75653a20537472696e67286b6579297d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a090a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e3b0a097d0a094a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d20363b0a094a534f4e522e6d6574686f64203d20227472616e73666572220a094a534f4e522e706172616d73203d207b7d3b0a090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b09202020200a2020200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a20225769746864726177227d2c0a097b4e616d653a20226b6579222c2044617461547970653a2253222c2056616c75653a20537472696e67286b6579297d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a094a534f4e522e706172616d732e66656573203d20726573706f6e73652e726573756c742e67617373746f726167653b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e726573756c742e74786964293b0a090972657475726e20726573706f6e73652e726573756c742e747869643b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e2022223b0a097d090a7d3b0a0a6173796e632066756e6374696f6e20726566756e644465726f286465726f5f68746c5f7363696429207b2020200a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a094a534f4e522e706172616d73203d207b7d3b090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b0a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022526566756e64227d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a092f2f63757272656e745f6d6f6465203d2022726566756e64223b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e3b0a097d0a094a534f4e52203d207b7d3b0a094a534f4e522e6d6574686f64203d20227472616e73666572220a094a534f4e522e706172616d73203d207b7d3b0a090a094a534f4e522e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d0a097d5d3b090a090a094a534f4e522e706172616d732e7363203d2022223b0a094a534f4e522e706172616d732e73635f76616c7565203d20303b20200a094a534f4e522e706172616d732e73635f727063203d205b0a097b4e616d653a202253435f414354494f4e222c2044617461547970653a202255222c2056616c75653a20307d2c0a097b4e616d653a202253435f4944222c2044617461547970653a202248222c2056616c75653a206465726f5f68746c5f736369647d2c0a097b4e616d653a2022656e747279706f696e74222c2044617461547970653a202253222c2056616c75653a2022526566756e64227d2c0a095d3b090a094a534f4e522e706172616d732e72696e6773697a65203d20323b0a094a534f4e522e706172616d732e7369676e6572203d20636f6e6e65637465645f6465726f5f6163636f756e743b0a094a534f4e522e706172616d732e66656573203d20726573706f6e73652e726573756c742e67617373746f726167653b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909617761697420616c6572744d6f64616c2822526566756e64205375636365737366756c207769746820545849443a222b726573706f6e73652e726573756c742e74786964293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c6572744d6f64616c28726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a090a7d3b0a0a2f2f2d2d536d61727420436f6e74726163740a66756e6374696f6e206765744465726f48544c436f6e74726163742864617973297b0a096c6574207365636f6e64733b0a0969662864617973203d3d3d2031297b0a09097365636f6e6473203d206f6e655f6461795f696e5f736563733b0a097d656c73652069662864617973203d3d3d2032297b0a09097365636f6e6473203d2074776f5f646179735f696e5f736563733b0a097d656c73657b0a090972657475726e2066616c73653b0a097d0a72657475726e6046756e6374696f6e20496e697469616c697a6528726563656976657220537472696e67292055696e7436340a312053544f524528226f776e6572222c5349474e45522829290a322049462049535f414444524553535f56414c494428414444524553535f5241572872656365697665722929205448454e20474f544f20340a332052455455524e20300a342053544f524528227265636569766572222c7265636569766572290a352053544f52452822646561646c696e65222c3029200a362053544f524528226465706f7369746564222c3029200a372052455455524e20300a456e642046756e6374696f6e0a46756e6374696f6e20537461727453776170286861736820537472696e67292055696e7436340a31204946204445524f56414c55452829203d3d2030205448454e20474f544f20370a322049462045584953545328226861736822293d3d31205448454e20474f544f20370a332053544f5245282268617368222c68617368290a342053544f52452822646561646c696e65222c424c4f434b5f54494d455354414d502829202b20602b207365636f6e6473202b60290a352053544f524528226465706f7369746564222c4445524f56414c55452829290a362052455455524e20300a372052455455524e20310a456e642046756e6374696f6e0a46756e6374696f6e205769746864726177286b657920537472696e67292055696e743634200a3120494620414444524553535f524157284c4f4144282272656365697665722229293d3d5349474e45522829205448454e20474f544f20330a322052455455524e20310a33204946204c4f41442822646561646c696e6522293e424c4f434b5f54494d455354414d502829205448454e20474f544f20350a342052455455524e20310a35204946205354524c454e286b6579293c3d3332205448454e20474f544f20370a362052455455524e20310a37204946204c4f414428226861736822293d3d48455828534841323536286b65792929205448454e20474f544f20390a382052455455524e20310a392053454e445f4445524f5f544f5f41444452455353285349474e455228292c4c4f414428226465706f73697465642229290a31302053544f524528226b6579222c6b657929200a31312052455455524e20300a456e642046756e6374696f6e0a46756e6374696f6e20526566756e6428292055696e743634200a31204946204c4f414428226f776e657222293d3d5349474e45522829205448454e20474f544f20330a322052455455524e20310a33204946204c4f41442822646561646c696e6522293c424c4f434b5f54494d455354414d502829205448454e20474f544f20350a342052455455524e20310a352053454e445f4445524f5f544f5f41444452455353285349474e455228292c4c4f414428226465706f73697465642229290a362052455455524e20300a456e642046756e6374696f6e603b0a7d2a2f6a53435f414354494f4e55011ad7395456ff125ef5d3d04274bed4c4055e0b732b0c4cbe9c4785b685f3f998002ec78979089a1b667f75e9270fd5ad400bcf07fdeaebb32e6153519681c0e55601282653925ad7c89ac40f6603b009687256a9f345003d7d251c8e478691e755aa012163ec09ef480d83ba71d46f046dec57b43e12066ebe328a2071eb41de14103f01068185f7b8262c0a5ebf1dd36cccb92179cd83c4298aa4bb29ed78b69a5dccda0020714fa54c434cff01833db1c6597e46722cb7833b0f15f2a88665f975c4df1101259c9197f3959732f04c7064f60203fcbdd569d64b6021f6272dce7816cd0d43012abdb7e7afcf250ce6801b2e076e070c86ef34566128480848bb7970fa341dbc0011b221770ee690c1a6e8a4b8c19e16eacfb25aca6d8f8c8c708dd4afd227b6d2001f61dfccb2206388ff9c642625114fc9e4adc48d14a009f078787d10a99b3308000b1dd373b47f0998ead63a75fcaef55e8110c3d8fe541679849cb83a065d84a60000479cb18c3f102b6b6a3f9bfc355e7c348dc4c35150071f90ba272cd4093f38001cd23f4fc312a58a87923ba5e61b9e75822abf2067049cf4f54e4c62435209f301104f9610c7c567546acdecbb625018a64db7820b473684fee9488803a1a3079000000000000000000000000000000000000000000000000000000000000000001a14f92e44557db16b1451af9998132468393328f970063fa181c9289d6708a704207762081463c657d9a2a4806930a40cede4dd14bb06494d2cd75bc57aa9ee0119b2ac5cbabc8d255050a7c623613fa46f860cf7aa4aac529c3a9813a350993d01063cb2abd8cfec7fe21e765abaa422809994c65ffad3c667a2dad9282ccbcab616057addb2448cfccd6b0a15af4e63ba1ab21445549e93d5b6929e6c11c8e1540e6d78c920a4f3a659c65882e256197e6ccc7d95c4fc3adc41f4c81f5573b84e24821b0a48a3eaa74b7e7d926158807bb5424472b68c8f7f649c317c9ff9e8ec1be65c08679ceb1dda1e69b466384727a4833a44ce257e6d4558d85ced9c19ab27500cd2535063cd4432a0361637db0fca8db519adb21d5535da55f4b74e09040d8101df5a0ea4e38ae70ae15b85f2a73aaf8b374d3d7403fa4f12ba2ff65c1c0919f9ad299ab55f3fa584e01a53a3965390449703c634bd014472a457de71321fa8cf0a0f10fae4f46821cd22ef1867a97bad48cbd65a656785ed8614e3ae4c0429553be8129f21deb61bffb18ae9e61d8c82402d184a806056b69d5470bd2500257d91d73ad2f7a66543423733799fb0fcfa5b70241141bb548948734a108850010ecbecef8077417b686f58e69d808e293d39f9a6f3fb01d6644da42c3b2c3ffb002009bcd472fea70ba9b9976fdb9ef2062e638e72ca8bb3f0f27aab25d2f0b8e0001dcd24c29a6500a2330f0cd05c76f8d878fdf47092de1f57896b2d37867c6560011a7fc5efe43ff68cfeaf601fc4fb8ef365177911dccffe83141a7a7f45442d10012e30353fa99e3b98aaad8c66aa1f88af68ee08c3875439c7e42f77ae624691da0114422cfcd3810bbeb408b7bad84b0115968ceee7e3ff40a9edb1f1a3216abd3f01041510c2c6ca76f56f20955b798eae5f6d107cc2c32950d232deb17700f5d381002ea5d2acf0773ba913779d552f26479bfe2df17b4dbc561be5f292ea343528630101fc8cce41914ea96b198976bc344b62623cb050d49a75a1e20b9516cd6b8d39011265ed6fbeeea0d5b59532421855e11a5b6dcdb5389f7df6c6147dd2148d73f300038f694b58b6737d524c0a6e06c3fa41141dcfef962616edbe359cd2674f9f6f0113ec31d7dcd19dbbc132615832f699991442070cd6df65c6c260f10c048fa74501
DERO source code | explorer version (api): under development (1.1) | dero version: 3.5.3-140.DEROHE.STARGATE+28102023 | Copyright 2017-2023 Dero Project