-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathConstants.sol
50 lines (42 loc) · 39.5 KB
/
Constants.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// SPDX-License-Identifier: UNLICENSED
pragma solidity =0.8.24;
/// @dev The default deterministic deployment salt prefix.
string constant DEFAULT_DEPLOYMENT_SALT = "ScrollStack";
/// @dev The address of DeterministicDeploymentProxy.
/// See https://github.com/Arachnid/deterministic-deployment-proxy.
address constant DETERMINISTIC_DEPLOYMENT_PROXY_ADDR = 0x4e59b44847b379578588920cA78FbF26c0B4956C;
/// @dev The default minimum withdraw amount configured on L2TxFeeVault.
uint256 constant FEE_VAULT_MIN_WITHDRAW_AMOUNT = 1 ether;
// input files
string constant CONFIG_PATH = "./scripts/deterministic/config/config.toml";
// template files
string constant CONFIG_CONTRACTS_TEMPLATE_PATH = "./scripts/deterministic/config/config-contracts.toml.template";
string constant GENESIS_JSON_TEMPLATE_PATH = "../../config/genesis/config.json.template";
string constant ROLLUP_CONFIG_TEMPLATE_PATH = "../../config/rollup-relayer/config.json.template";
string constant COORDINATOR_CONFIG_TEMPLATE_PATH = "../../config/coordinator-api/config.json.template";
string constant CHAIN_MONITOR_CONFIG_TEMPLATE_PATH = "../../config/chain-monitorv2/config.json.template";
string constant BRIDGE_HISTORY_CONFIG_TEMPLATE_PATH = "../../config/bridge-historyv2-fetcher/config.json.template";
string constant BALANCE_CHECKER_CONFIG_TEMPLATE_PATH = "../../config/balance-checker/config.json.template";
string constant ROLLUP_EXPLORER_BACKEND_CONFIG_TEMPLATE_PATH = "../../config/rollup-explorer-backend/config.json.template";
string constant ADMIN_SYSTEM_BACKEND_CONFIG_TEMPLATE_PATH = "../../config/scroll-admin-backend/config.json.template";
// output files
string constant CONFIG_CONTRACTS_PATH = "./scripts/deterministic/config/config-contracts.toml";
string constant GENESIS_ALLOC_JSON_PATH = "../../config/__genesis-alloc.json";
string constant GENESIS_JSON_PATH = "../../config/genesis/config.json";
string constant ROLLUP_CONFIG_PATH = "../../config/rollup-relayer/config.json";
string constant GAS_ORACLE_CONFIG_PATH = "../../config/rollup-relayer/config.json";
string constant COORDINATOR_API_CONFIG_PATH = "../../config/coordinator-api/config.json";
string constant COORDINATOR_CRON_CONFIG_PATH = "../../config/coordinator-cron/config.json";
string constant CHAIN_MONITOR_CONFIG_PATH = "../../config/chain-monitorv2/config.json";
string constant BRIDGE_HISTORY_API_CONFIG_PATH = "../../config/bridge-historyv2-api/config.json";
string constant BRIDGE_HISTORY_FETCHER_CONFIG_PATH = "../../config/bridge-historyv2-fetcher/config.json";
string constant BALANCE_CHECKER_CONFIG_PATH = "../../config/balance-checker/config.json";
string constant ROLLUP_EXPLORER_BACKEND_CONFIG_PATH = "../../config/rollup-explorer-backend/config.json";
string constant ADMIN_SYSTEM_BACKEND_CONFIG_PATH = "../../config/scroll-admin-backend/config.json";
string constant ADMIN_SYSTEM_CRON_CONFIG_PATH = "../../config/scroll-admin-cron/config.json";
// verifier 0.2.0 VERIFIER_DIGEST
// https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/0.2.0/bundle/digest_2.hex
bytes32 constant VERIFIER_DIGEST = 0x0038553adf417a6a3df35d2fdfd14b892f1e49ba18937ece7960c1e7cee6e3dc;
// openvm verifier 0.2.0 creation code
// https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/0.2.0/bundle/verifier.bin
bytes constant PLONK_VERIFIER_CREATION_CODE = hex"608060405234801561001057600080fd5b50614842806100206000396000f3fe608060405234801561001057600080fd5b5060003660606040516080811461002657600080fd5b60017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd477f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610162565b60007f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4782107f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478410808216925050507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478384097f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478384097f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478482097f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47600382088381148086169550505050505092915050565b806000350660a052806020350660c052806040350660e0528060603506610100528060803506610120528060a03506610140528060c03506610160528060e03506610180528061010035066101a0528061012035066101c0528061014035066101e0528061016035066102005280610180350661022052806101a0350661024052806101c0350661026052806101e03506610280528061020035066102a0528061022035066102c0528061024035066102e0528061026035066103005280610280350661032052806102a0350661034052806102c0350661036052806102e03506610380528061030035066103a0528061032035066103c0528061034035066103e0528061036035066104005280610380350661042052806103a0350661044052806103c0350661046052806103e03506610480528061040035066104a0528061042035066104c0528061044035066104e0528061046035066105005280610480350661052052806104a0350661054052806104c0350661056052806104e03506610580528061050035066105a0528061052035066105c0528061054035066105e0528061056035066106005280610580350661062052806105a03506610640527f2afa0dd006fb6a9768832d01002e379b45e16c96954f9531f4045dd440c668386080526105c03580610660526105e035806106805284610364828461006f565b16945050506106206080206106a0526106a0518181066106c052806106e05250610600358061070052610620358061072052846103a1828461006f565b1694505050610640358061074052610660358061076052846103c3828461006f565b169450505060a06106e02061078052610780518181066107a052806107c0525060016107e05360216107c0206107e0526107e051818106610800528061082052506106803580610840526106a035806108605284610421828461006f565b16945050506106c03580610880526106e035806108a05284610443828461006f565b169450505061070035806108c05261072035806108e05284610465828461006f565b169450505060e061082020610900526109005181810661092052806109405250610740358061096052610760358061098052846104a2828461006f565b169450505061078035806109a0526107a035806109c052846104c4828461006f565b16945050506107c035806109e0526107e03580610a0052846104e6828461006f565b16945050506108003580610a20526108203580610a405284610508828461006f565b169450505061012061094020610a6052610a6051818106610a805280610aa05250806108403506610ac052806108603506610ae052806108803506610b0052806108a03506610b2052806108c03506610b4052806108e03506610b6052806109003506610b8052806109203506610ba052806109403506610bc052806109603506610be052806109803506610c0052806109a03506610c2052806109c03506610c4052806109e03506610c605280610a003506610c805280610a203506610ca05280610a403506610cc05280610a603506610ce05280610a803506610d0052610280610aa020610d2052610d2051818106610d405280610d6052506001610d80536021610d6020610d8052610d8051818106610da05280610dc05250610aa03580610de052610ac03580610e005284610641828461006f565b16945050506060610dc020610e2052610e2051818106610e405280610e605250610ae03580610e8052610b003580610ea0528461067e828461006f565b169450505060a05160c05160581b8101905060e05160b01b8101905080610ec052610100516101205160581b810190506101405160b01b8101905080610ee052846106c9828461006f565b1694505050610160516101805160581b810190506101a05160b01b8101905080610f00526101c0516101e05160581b810190506102005160b01b8101905080610f205284610717828461006f565b169450505080610a8051610a805109610f405280610f4051610f405109610f605280610f6051610f605109610f805280610f8051610f805109610fa05280610fa051610fa05109610fc05280610fc051610fc05109610fe05280610fe051610fe05109611000528061100051611000510961102052806110205161102051096110405280611040516110405109611060528061106051611060510961108052806110805161108051096110a052806110a0516110a051096110c052806110c0516110c051096110e052806110e0516110e05109611100528061110051611100510961112052806111205161112051096111405280611140516111405109611160528061116051611160510961118052806111805161118051096111a052806111a0516111a051096111c052806111c0516111c051096111e052807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006111e0510861120052807f30644db14ff7d4a4f1cf9ed5406a7e5722d273a7aa184eaa5e1fb0846829b041611200510961122052807f1d3d878f52016737bda697d23b0cee81488efd02d67b27eae3edab5f39ef347d611220510961124052807f1326c6e38f3038f1faa9ade4467469dbdfa4eb45a33e48a65ff44a34b610cb84610a80510861126052807f182fa146dab5070e1897c235ff7425a25d09f820206545e69bf946c2f6057429611220510961128052807f1834ad2c067c991b9fb88380820d32bacb29f02859542aaaa7e8aed0f9fa8bd8610a8051086112a052807f185afb17aed5e3d828526ac8e534436afa30f7196772de397fd9b6be79fe8c9361122051096112c052807f1809535b325bbc518ffddaed9c4d14f22e02f12f12469257c4083ed57601736e610a8051086112e052807f220db0d8bf832baf9eecbf4fa49947e0b2a3d31df0a733ea5ae8abbdab442d5f611220510961130052807f0e569d9a21ae747a19638666dce8107c7590152a89123ca6e8f949d644bbd2a2610a80510861132052807f2fffa2b50d66f628412d9782f09d3386d766a1168304babe2165fe7ec962e65b611220510961134052807e64abbdd3caaa017722ae3390e424d650cd4731f6b4b5d3227bf715269d19a6610a80510861136052807f06288b9d40ec1915c3a20817de7179beeccf4c4fd02f202c064a0cc13e38c2f8611220510961138052807f2a3bc2d5a0458713f4ae3d9ea30fde9e3b649bf8a98a50653d97e8d2b1c73d09610a8051086113a052807f134f571fe34eb8c7b1685e875b324820e199bd70157493377cd65b204d1a396461122051096113c052807f1d14f752fde2e76206e7e72f264f103c469a2ad86444dd59c70b9a73a2e5c69d610a8051086113e052806001611220510961140052807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610a80510861142052807f18c95f1ae6514e11a1b30fd7923947c5ffcec5347f16e91b4dd654168326bede611220510961144052807f179aef57fae05218169d35deef48109728652313faa28775f60ba17d6cd94123610a80510861146052807f032750f8f3c2493d0828c7285d0258e1bdcaa463f4442a52747b5c96639659bb611220510961148052807f2d3cfd79ed6f56ecb0277e8e247eff7b6a6943e48575463ecf6698fd8c69a646610a8051086114a052807f1be6734ccb6588d60d469def6bf0b0f39af67bb568a3b63e3773e3dd306ba07061122051096114c052807f147ddb2615cc1753ab09a7c71590a7698d3d6c931115ba530c6e11b6bf945f91610a8051086114e052807f2a14464f1ff42de3856402b62520e670745e39fada049d5b2f0e1e3182673378611220510961150052807f06500823c13d724632ec43005c6071ecb3d5ae4d9fb4d33614d3d7626d98cc89610a80510861152052807f0205f4c81bd8bfadd87e3771dc61e489caf1a2f61f6fe94419612b1039f806ba611220510961154052807f2e5e59aac558e07bdfd20e44a51f73d35d4245525a49874d2a80ca83b607f947610a80510861156052807f085386d3273d6903e6ca9388a9b29e81643977d523db6f6db1fdc5acf965b809611220510961158052807f2810c79fb9f43725d185b22dd7ceb9dbc3fa707355de012391e42fe6f69a47f8610a8051086115a052807f0962d59f2fea9851331073aa7b9a65add88e25cdcf9a7908665722e5c57e1c2561122051096115c052807f270178d3b14707d8853fd20c05e6f2af4fa5c27aaa1ef788dd8ad2ae2a81e3dc610a8051086115e052807f0cf1526aaafac6bacbb67d11a4077806b123f767e4b0883d14cc0193568fc082611220510961160052807f2372fc083636d96eec99c8a4dd79e056770ff0e09508e8542f15f40099703f7f610a80510861162052807f0d38d63833e51358021fc5aeb30483105d8b48022cd28fc4ccc55739e57166f4611220510961164052807f232b783aad4c8cd1b6308007ce7cd54ccaa8a0464ce6e0cc771c9e5a0a8e990d610a80510861166052807f202efdf29fbbf7251b99f728e6317b3a58a0e579b827f9d622ab713b5d76ba5e611220510961168052807f103550804175a9049cb64e8d9b4fdd22cf9302cec19176bb21368458928945a3610a8051086116a052807f1df73deb96a4785f63b25489c52178d4b3f95e41d1a1d6aec678d35d2d2095b861122051096116c052807f126d10874a8d27ca549df12cbc5fdf88743a8a06a81799e27d692236c2df6a49610a8051086116e052807f157057e61fa68c20f015bccca35a72daa53b29abd151cfa1431a92029ece5c0e611220510961170052807f1af3f68cc18b1408c83a88e9de26e58282f8be9ca867a0f000c763915131a3f3610a80510861172052807f17e4f62c667b201826284c6918cfd09f571a62f09dfca2d54702a220c92f178b611220510961174052807f187f58467ab680119227f94d68b187bdd1198557dbbccdbbfcdf537326d0e876610a80510861176052807f1b8c0911077b8645a2dcd11044ecedef18d199a893d5f3814f789252af93e53c611220510961178052807f14d84561d9b619e4157374a63c946a6e0f624e9fe5e37d0ff4696341406c1ac5610a8051086117a052807f23755b45f23db9743c690e5570b1e2983e8369f76981f85609c5154a03a922df61122051096117c052807f0ceef32ceef3e6b57be7376110cf75c4e9b07e511037783b3a1ce049ec56dd22610a8051086117e052807f0f60c8fe0414cb9379b2d39267945f6bd60d06a05216231b26a9fcf88ddbfebe611220510961180052807f21038574dd1cd4963e9d722419ecf8f15226e1a827a34d761d37f89b62240143610a80510861182052807f1dd804edc273c3b32894f7d1f5ad573c785b068883b719276149bcfcbd7c8735611220510961184052807f128c49851ebddc768fbb4de48bd40120afd8e1bff6025769e2983897328378cc610a80510861186052807f2cfb3ee365fa96d90152e17588a5c8109aba50a36f0e6cc5d38caa708844f09d611220510961188052807f03690f8f7b370950b6fd6440f8db904c8d7997a50aab03cb70554b2367bb0f64610a8051086118a052807f01bf77e1640452989576495d56797caee1f6c4a3529d7ad6cf9f068ba23f509561122051096118c052807f2ea4d6917d2d4d9122d9fc592b07dbae463d23a5271bf5ba7442ef084dc0af6c610a8051086118e052807f0bb1b800e0fc2016082cf25a117ee7ebc61bdc048d093fbf025ec0794556abea611220510961190052807f24b2967200358013b023535c7002707162180c43ecb030d24183351aaaa95417610a80510861192052807f2184edd1ba10180eb3174c08e41cd0981126e96545bbe8fa6be74d0f5139a939611220510961194052807f0edf60a12721881b0538f9ad9d6487c5170cfee333fd8796d7faa8849ec656c8610a80510861196052807f013b926b615dadae89c76ce93dbd4b79cd3fad8e402744b6151a79df33fb48e3611220510961198052807f2f28bc077fd3f27b2e88d8cd43c40ce35af43aba39922bdb2ec77bb4bc04b71e610a8051086119a052807f24b9e65b23e30a1fb8b8ea2a50caa34abf79322f88ecc1e5c72c863f6fbebd1761122051096119c052807f0baa6817bd4e9609ff975b8c30b6b51268bab618f0ccaeab7cb56f54804142ea610a8051086119e052807f09f83b8b9c5b192f9193a231814c3163b9b8c636b1d40961a83ac1f42dc63b266112205109611a0052807f266c12e744d686fa26bca385003526f96e7b2211c7e5672f9ba7339fc239c4db610a805108611a2052807f0f2e46e84503e0bec563379085b7d3ef78102bd590fbd619be21ce2c1b9945bf6112205109611a4052807f2136078a9c2dbf6af2ed0e25fbc9846db023bc72e8bd9a7785c02767d466ba42610a805108611a6052807f2c9741ded62f041c7cc95ad55d1d3649468d8a5ec530f048bbeeffdfd0a9d6526112205109611a8052807f03cd0c940b029c0d3b86eae124642213e1a65de9b488804887f2f5b41f5629af610a805108611aa052807f20e2808bc9ff5d255ed9de0f29147692fff955773b6ad07c69f232bfd55f00596112205109611ac052807f0f81cde717324304597667a7586ce1ca283a92d13e4ea014d9efc2d41aa0ffa8610a805108611ae052807f05b432e46216fc6bed772f92cde45c9ebc2d8703af094c331522356351ce2c776112205109611b0052807f2ab01b8e7f1aa3bdcad91623b39cfbbe6c066144cab0245e2ebfc0309e31d38a610a805108611b2052807f259c031d10081ea697e9997cdcf8c47964c227e4fb4e77e807713f00585956de6112205109611b4052807f0ac84b55d12981832066ac39a48893e3c371c0637e6af8a93c70b69397a6a923610a805108611b6052807f04290a1d7601de8e3c98923f48b2304f4ca974f5376d42c80bbec5eb53070bc56112205109611b8052807f2c3b44556b2fc19b7bb7b37738cf280ddb8a7353424c2dc938232fa89cf8f43c610a805108611ba052807f2fe46b4c6e0df90591d8336da5638fb4c1859ede12103bc04dd0e995a9d8e77d6112205109611bc052807e7fe3267323a72426781248dc1dc8a866ae496a67a934d0f6110bfe46271884610a805108611be052807f304cd1e79cfa5b0f054e981a27ed7706e7ea6b06a7f266ef8db819c179c2c3ea6112205109611c0052807e177c8b4437451ab301ad9c5993e15640497d41d1c709a1b629dbd2763d3c17610a805108611c2052807f1a05ef04e20b042a06c61577a4a9b54771c327c3672c0357d55d04e22aa2f1c96112205109611c4052807f165e5f6dff269bffb18a303edcd7a315b670c085128d6d396e84f0b1c55d0e38610a805108611c6052807f1cc839f9cc5012a73f3b56e2417eb951f46c04af98489f776d1dd847b247f2b56112205109611c8052807f139c147914e18d827914eed440029f0b33c7e398e170d119d6c41d4c3db80d4c610a805108611ca052807f0baa43683ba5a5fa31558c98a045a4b0109b2efb97fe1e2d352c28456d499def6112205109611cc052807f24ba0b0aa58bfa2f86fab91de13bb3ad1798b94ce1bb52640eb5cd4e82b66212610a805108611ce052807f033a1069fe5e06d412520dc1eb795e5c1a9fbf099908ee0d7891c86e2e2746c56112205109611d0052807f2d2a3e08e2d39955a5fe37f49607fa010d94293ee0b08283cb502d25c1d8b93c610a805108611d2052807f07102fcd8e37f581514a697a842c2f7a57aa1ca017fd7c2c81c4481ef51a4af86112205109611d4052807f29541ea552f9aaa86705dc3bfd5528e2d089cba861bbf464c21dad74fae5b509610a805108611d6052807f06d5223674254f4051450d63a7815877be218cff2ae41bf96a519f97d5f893696112205109611d8052807f298f2c3c6d0c50e9670b3852d9ffffe56a125b494ed55497d99055fc1a076c98610a805108611da052807f2336c94d73c29901a712ac079b7f50d62e10f1d075badfbbf438f74afbbabe9d6112205109611dc052807f0d2d85256d6f0728113d99aee6020786fa22f67803fe90d54fa8fe48f4454164610a805108611de052807f2fbe09de40a6ef2c32ad177045a51c5033c7186172461c2658a0f93cf36bfa3f6112205109611e0052807ea64494a08ab0fd85a32e463bdc3c0cf46ccfe70773546aeb40fc56fc9405c2610a805108611e2052807f292ec9ad99cfce95b2da745a36ddf7b05337dd83ece3597760f62c2ebf21c3106112205109611e4052807f073584c54761d1940575d15c4aa360acd4fc0ac48cd61719e2ebc96530de3cf1610a805108611e6052807f21ae116f5f57a4cc6e3f8d02345f04778d257b7e8200f6cfe5c69aa1692cc8fb6112205109611e8052807f0eb63d0381d9fb5d4a10b8b44d2253e59b0e6cc9f7b879c15e1b5af286d33706610a805108611ea052807f1bfee385b2c5cfc01238741207046900bb91b5598bc6cc1cf2f5c1019ec024016112205109611ec052807f14656aed2e6bd069a617d1a47a7cef5c6ca232eeedf2a47450ec3492513fdc00610a805108611ee052807f146723ce0d2732187545ca1441a36f872027c0262cd646a42fa20c7f648a061e6112205109611f0052807f1bfd2aa4d40a6e11430a7ba23fdde8d6080c28224ce329ed143fe9148b75f9e3610a805108611f2052807f0f4411b99f1a27148940c80178d5446f0c54afb342542fd6b7d56e8c8c4cb5cc6112205109611f4052807f21203cb9421779152f0f7db508ac13ee1bdf3895376540ba8c0c870763b34a35610a805108611f60526112605181816112a05109905080611f805281816112e05109905080611fa05281816113205109905080611fc05281816113605109905080611fe05281816113a051099050806120005281816113e05109905080612020528181611420510990508061204052818161146051099050806120605281816114a051099050806120805281816114e051099050806120a052818161152051099050806120c052818161156051099050806120e05281816115a051099050806121005281816115e05109905080612120528181611620510990508061214052818161166051099050806121605281816116a051099050806121805281816116e051099050806121a052818161172051099050806121c052818161176051099050806121e05281816117a051099050806122005281816117e05109905080612220528181611820510990508061224052818161186051099050806122605281816118a051099050806122805281816118e051099050806122a052818161192051099050806122c052818161196051099050806122e05281816119a051099050806123005281816119e05109905080612320528181611a205109905080612340528181611a605109905080612360528181611aa05109905080612380528181611ae051099050806123a0528181611b2051099050806123c0528181611b6051099050806123e0528181611ba05109905080612400528181611be05109905080612420528181611c205109905080612440528181611c605109905080612460528181611ca05109905080612480528181611ce051099050806124a0528181611d2051099050806124c0528181611d6051099050806124e0528181611da05109905080612500528181611de05109905080612520528181611e205109905080612540528181611e605109905080612560528181611ea05109905080612580528181611ee051099050806125a0528181611f2051099050806125c0528181611f6051099050806125e052818161120051099050806126005250602061264052602061266052602061268052612600516126a0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6126c0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016126e052826001602061262060c061264060055afa1416925061262051600061120051905082826125e0510961120052828282099150611f6051905082826125c05109611f6052828282099150611f2051905082826125a05109611f2052828282099150611ee051905082826125805109611ee052828282099150611ea051905082826125605109611ea052828282099150611e6051905082826125405109611e6052828282099150611e2051905082826125205109611e2052828282099150611de051905082826125005109611de052828282099150611da051905082826124e05109611da052828282099150611d6051905082826124c05109611d6052828282099150611d2051905082826124a05109611d2052828282099150611ce051905082826124805109611ce052828282099150611ca051905082826124605109611ca052828282099150611c6051905082826124405109611c6052828282099150611c2051905082826124205109611c2052828282099150611be051905082826124005109611be052828282099150611ba051905082826123e05109611ba052828282099150611b6051905082826123c05109611b6052828282099150611b2051905082826123a05109611b2052828282099150611ae051905082826123805109611ae052828282099150611aa051905082826123605109611aa052828282099150611a6051905082826123405109611a6052828282099150611a2051905082826123205109611a20528282820991506119e0519050828261230051096119e0528282820991506119a051905082826122e051096119a05282828209915061196051905082826122c051096119605282828209915061192051905082826122a05109611920528282820991506118e0519050828261228051096118e0528282820991506118a0519050828261226051096118a052828282099150611860519050828261224051096118605282828209915061182051905082826122205109611820528282820991506117e0519050828261220051096117e0528282820991506117a051905082826121e051096117a05282828209915061176051905082826121c051096117605282828209915061172051905082826121a05109611720528282820991506116e0519050828261218051096116e0528282820991506116a0519050828261216051096116a052828282099150611660519050828261214051096116605282828209915061162051905082826121205109611620528282820991506115e0519050828261210051096115e0528282820991506115a051905082826120e051096115a05282828209915061156051905082826120c051096115605282828209915061152051905082826120a05109611520528282820991506114e0519050828261208051096114e0528282820991506114a0519050828261206051096114a052828282099150611460519050828261204051096114605282828209915061142051905082826120205109611420528282820991506113e0519050828261200051096113e0528282820991506113a05190508282611fe051096113a0528282820991506113605190508282611fc05109611360528282820991506113205190508282611fa05109611320528282820991506112e05190508282611f8051096112e0528282820991506112a0519050828261126051096112a052828282099150816112605250508061126051611240510961270052806112a051611280510961272052806112e0516112c051096127405280611320516113005109612760528061136051611340510961278052806113a05161138051096127a052806113e0516113c051096127c052806114205161140051096127e0528061146051611440510961280052806114a051611480510961282052806114e0516114c051096128405280611520516115005109612860528061156051611540510961288052806115a05161158051096128a052806115e0516115c051096128c052806116205161160051096128e0528061166051611640510961290052806116a051611680510961292052806116e0516116c051096129405280611720516117005109612960528061176051611740510961298052806117a05161178051096129a052806117e0516117c051096129c052806118205161180051096129e05280611860516118405109612a0052806118a0516118805109612a2052806118e0516118c05109612a405280611920516119005109612a605280611960516119405109612a8052806119a0516119805109612aa052806119e0516119c05109612ac05280611a2051611a005109612ae05280611a6051611a405109612b005280611aa051611a805109612b205280611ae051611ac05109612b405280611b2051611b005109612b605280611b6051611b405109612b805280611ba051611b805109612ba05280611be051611bc05109612bc05280611c2051611c005109612be05280611c6051611c405109612c005280611ca051611c805109612c205280611ce051611cc05109612c405280611d2051611d005109612c605280611d6051611d405109612c805280611da051611d805109612ca05280611de051611dc05109612cc05280611e2051611e005109612ce05280611e6051611e405109612d005280611ea051611e805109612d205280611ee051611ec05109612d405280611f2051611f005109612d605280611f6051611f405109612d80528060a0516127e0510981818360c051612800510908905081818360e0516128205109089050818183610100516128405109089050818183610120516128605109089050818183610140516128805109089050818183610160516128a05109089050818183610180516128c051090890508181836101a0516128e051090890508181836101c05161290051090890508181836101e0516129205109089050818183610200516129405109089050818183610220516129605109089050818183610240516129805109089050818183610260516129a05109089050818183610280516129c051090890508181836102a0516129e051090890508181836102c051612a0051090890508181836102e051612a20510908905081818361030051612a40510908905081818361032051612a60510908905081818361034051612a80510908905081818361036051612aa0510908905081818361038051612ac051090890508181836103a051612ae051090890508181836103c051612b0051090890508181836103e051612b20510908905081818361040051612b40510908905081818361042051612b60510908905081818361044051612b80510908905081818361046051612ba0510908905081818361048051612bc051090890508181836104a051612be051090890508181836104c051612c0051090890508181836104e051612c20510908905081818361050051612c40510908905081818361052051612c60510908905081818361054051612c80510908905081818361056051612ca0510908905081818361058051612cc051090890508181836105a051612ce051090890508181836105c051612d0051090890508181836105e051612d20510908905081818361060051612d40510908905081818361062051612d60510908905081818361064051612d80510908905080612da0525080610ae051610b005109612dc05280612dc051610ac05108612de05280610b20518203612de05108612e005280610b8051612e005109612e205280612e20516109205109612e405280610c40518203600108612e6052806127e051612e605109612e805280612e8051612e405108612ea05280612ea0516109205109612ec05280610c4051610c405109612ee05280610c40518203612ee05108612f00528061270051612f005109612f205280612f2051612ec05108612f405280612f40516109205109612f605280612700518203600108612f805280612740516127205108612fa0528061276051612fa05108612fc0528061278051612fc05108612fe052806127a051612fe0510861300052806127c05161300051086130205280613020518203612f80510861304052806107a051610be05109613060528061306051610b40510861308052806108005161308051086130a052806107a051610c0051096130c052806130c051610ac051086130e05280610800516130e0510861310052806130a051613100510961312052806107a051610c205109613140528061314051612da05108613160528061080051613160510861318052806131205161318051096131a05280610c60516131a051096131c052806107a0516001096131e052806131e051610a805109613200528061320051610b405108613220528061080051613220510861324052806107a0517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209613260528061326051610a805109613280528061328051610ac051086132a05280610800516132a051086132c05280613240516132c051096132e052806107a0517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09613300528061330051610a805109613320528061332051612da05108613340528061080051613340510861336052806132e05161336051096133805280610c405161338051096133a052806133a05182036131c051086133c05280613040516133c051096133e052806133e051612f60510861340052806134005161092051096134205280610c8051820360010861344052806127e0516134405109613460528061346051613420510861348052806134805161092051096134a05280610c8051610c8051096134c05280610c805182036134c051086134e05280612700516134e051096135005280613500516134a05108613520528061352051610920510961354052806107a051610cc051086135605280610ca0516135605109613580528061080051610d0051086135a05280613580516135a051096135c05280610ba051610ac051096135e052806107a0516135e051086136005280610c80516136005109613620528061080051610b605108613640528061362051613640510961366052806136605182036135c0510861368052806130405161368051096136a052806136a05161354051086136c052806136c05161092051096136e05280610d00518203610cc0510861370052806127e05161370051096137205280613720516136e05108613740528061374051610920510961376052806130405161370051096137805280610ce0518203610cc051086137a05280613780516137a051096137c052806137c05161376051086137e052806111e0516111e0510961380052806111e051613800510961382052806111e051613820510961384052806111e0516001096138605280613800516001096138805280613820516001096138a05280611200516137e051096138c05280610a8051610f4051096138e05280610a80516138e0510961390052807f134f571fe34eb8c7b1685e875b324820e199bd70157493377cd65b204d1a3964610a8051096139205280613920518203610e40510861394052806001610a8051096139605280613960518203610e40510861398052807f18c95f1ae6514e11a1b30fd7923947c5ffcec5347f16e91b4dd654168326bede610a8051096139a052806139a0518203610e4051086139c052807f032750f8f3c2493d0828c7285d0258e1bdcaa463f4442a52747b5c96639659bb610a8051096139e052806139e0518203610e405108613a0052807f1be6734ccb6588d60d469def6bf0b0f39af67bb568a3b63e3773e3dd306ba070610a805109613a205280613a20518203610e405108613a4052806138e0517f07d604303a7bed3ecd3bcf9f68948bd11d7cfb83623e03c3d41fd2e7dc3c699109613a6052806001613a605109613a805280613a6051610e405109818183613a80518503610a80510908905080613aa05250806138e0517f0888e470b16311ed8fe253a4ea4c86161e449ca748456e7e35c5e51c92b691b909613ac052807f18c95f1ae6514e11a1b30fd7923947c5ffcec5347f16e91b4dd654168326bede613ac05109613ae05280613ac051610e405109818183613ae0518503610a80510908905080613b005250806138e0517f2fcabb9b6c70a7190da3d756fc7c6c21f286a22d2029c27d5ebffb1638ea8d6f09613b2052807f032750f8f3c2493d0828c7285d0258e1bdcaa463f4442a52747b5c96639659bb613b205109613b405280613b2051610e405109818183613b40518503610a80510908905080613b605250806138e0517f071875f8c967190753f4712b28f4bf6278328c0809585ee0629d98255557240f09613b8052807f1be6734ccb6588d60d469def6bf0b0f39af67bb568a3b63e3773e3dd306ba070613b805109613ba05280613b8051610e405109818183613ba0518503610a80510908905080613bc052508061398051600109613be052806139c051613be05109613c005280613a0051613c005109613c205280613a4051613c205109613c405280610a80517f179aef57fae05218169d35deef48109728652313faa28775f60ba17d6cd9412409613c6052806001613c605109613c805280613c6051610e405109818183613c80518503610a80510908905080613ca0525080610a80517f18c95f1ae6514e11a1b30fd7923947c5ffcec5347f16e91b4dd654168326bedd09613cc052807f18c95f1ae6514e11a1b30fd7923947c5ffcec5347f16e91b4dd654168326bede613cc05109613ce05280613cc051610e405109818183613ce0518503610a80510908905080613d00525080610a80517f1d14f752fde2e76206e7e72f264f103c469a2ad86444dd59c70b9a73a2e5c69e09613d2052806001613d205109613d405280613d2051610e405109818183613d40518503610a80510908905080613d60525080610a80517f134f571fe34eb8c7b1685e875b324820e199bd70157493377cd65b204d1a396309613d8052807f134f571fe34eb8c7b1685e875b324820e199bd70157493377cd65b204d1a3964613d805109613da05280613d8051610e405109818183613da0518503610a80510908905080613dc052508061394051613be05109613de052806001610e4051098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610a80510908905080613e005250613aa0518181613b005109905080613e20528181613b605109905080613e40528181613bc05109905080613e60528181613ca05109905080613e80528181613d005109905080613ea0528181613c005109905080613ec0528181613d605109905080613ee0528181613dc05109905080613f00528181613de05109905080613f20528181613e005109905080613f40528181613be05109905080613f6052506020613fa0526020613fc0526020613fe052613f6051614000527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff614020527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001614040528260016020613f8060c0613fa060055afa14169250613f80516000613be05190508282613f405109613be052828282099150613e005190508282613f205109613e0052828282099150613de05190508282613f005109613de052828282099150613dc05190508282613ee05109613dc052828282099150613d605190508282613ec05109613d6052828282099150613c005190508282613ea05109613c0052828282099150613d005190508282613e805109613d0052828282099150613ca05190508282613e605109613ca052828282099150613bc05190508282613e405109613bc052828282099150613b605190508282613e205109613b6052828282099150613b005190508282613aa05109613b005282828209915081613aa0525050613aa0518181613b00510890508181613b60510890508181613bc05108905080614060525080613c0051613c40510961408052613ca0518181613d0051089050806140a0525080613de051613c4051096140c052613d60518181613dc051089050806140e0525080613be051613c40510961410052613e00518061412052506140605181816140a051099050806141405281816140e051099050806141605281816141205109905080614180525060206141c05260206141e05260206142005261418051614220527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff614240527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016142605282600160206141a060c06141c060055afa141692506141a051600061412051905082826141605109614120528282820991506140e0519050828261414051096140e0528282820991506140a0519050828261406051096140a05282828209915081614060525050806140a051614080510961428052806140e0516140c051096142a052806141205161410051096142c05280610d4051610d4051096142e05280610d40516142e051096143005280610d405161430051096143205280610d405161432051096143405280610d405161434051096143605280610d405161436051096143805280610d405161438051096143a05280610d40516143a051096143c05280610d40516143c051096143e05280610da051610da051096144005280610da05161440051096144205280610da05161442051096144405280613aa051610ac05109818183613b0051610ae05109089050818183613b6051610b005109089050818183613bc051610b2051090890508061446052508061406051614460510961448052806001614480518303096144a0528060016144a051096144c05280614080516001096144e05280613ca051610c405109818183613d0051610c605109089050806145005250806142805161450051096145205280600161452051830309614540528060016144e051096145605280613ca051610c805109818183613d0051610ca05109089050806145805250806142805161458051096145a05280610d40516145a0518303096145c05280610d40516144e051096145e052806145c05161454051086146005280610da05161460051096146205280610da05161456051096146405280610da0516145e051096146605280614620516144c0510861468052806140c0516001096146a05280613d6051610cc05109818183613dc051610ce05109089050806146c05250806142a0516146c051096146e0528060016146e051830309614700528060016146a051096147205280614400516147005109614740528061440051614720510961476052806147405161468051086147805280614100516001096147a05280613e0051610d005109806147c05250806142c0516147c051096147e0528060016147e051830309614800528060016147a051096148205280613e0051610b405109806148405250806142c05161484051096148605280610d4051614860518303096148805280610d40516147a051096148a052806148805161480051086148c05280613e0051610b605109806148e05250806142c0516148e0510961490052806142e0516149005183030961492052806142e0516147a051096149405280614920516148c051086149605280613e0051610b805109806149805250806142c05161498051096149a05280614300516149a0518303096149c05280614300516147a051096149e052806149c0516149605108614a005280613e0051610ba0510980614a205250806142c051614a205109614a40528061432051614a4051830309614a605280614320516147a05109614a805280614a6051614a005108614aa05280613e0051610be0510980614ac05250806142c051614ac05109614ae0528061434051614ae051830309614b005280614340516147a05109614b205280614b0051614aa05108614b405280613e0051610c00510980614b605250806142c051614b605109614b80528061436051614b8051830309614ba05280614360516147a05109614bc05280614ba051614b405108614be05280613e0051610c20510980614c005250806142c051614c005109614c20528061438051614c2051830309614c405280614380516147a05109614c605280614c4051614be05108614c805280614100516138605109614ca05280614100516138805109614cc05280614100516138a05109614ce05280613e00516138c0510980614d005250806142c051614d005109614d2052806143a051614d2051830309614d4052806143a0516147a05109614d6052806143a051614ca05109614d8052806143a051614cc05109614da052806143a051614ce05109614dc05280614d4051614c805108614de05280613e0051610bc0510980614e005250806142c051614e005109614e2052806143c051614e2051830309614e4052806143c0516147a05109614e605280614e4051614de05108614e80528061442051614e805109614ea05280614420516148205109614ec05280614420516148a05109614ee05280614420516149405109614f005280614420516149e05109614f20528061442051614a805109614f40528061442051614b205109614f60528061442051614bc05109614f80528061442051614c605109614fa0528061442051614d605109614fc0528061442051614d805109614fe0528061442051614da05109615000528061442051614dc05109615020528061442051614e6051096150405280614ea05161478051086150605280613c40516001096150805280610e40516001096150a05260016150c05260026150e052615060516151005282600160406150c060606150c060075afa141692506150c051615120526150e05161514052610660516151605261068051615180528260016040615120608061512060065afa14169250610840516151a052610860516151c052614640516151e05282600160406151a060606151a060075afa14169250615120516152005261514051615220526151a051615240526151c051615260528260016040615200608061520060065afa1416925061088051615280526108a0516152a052614660516152c0528260016040615280606061528060075afa14169250615200516152e052615220516153005261528051615320526152a0516153405282600160406152e060806152e060065afa1416925061070051615360526107205161538052614760516153a0528260016040615360606061536060075afa141692506152e0516153c052615300516153e0526153605161540052615380516154205282600160406153c060806153c060065afa1416925061074051615440526107605161546052614ec051615480528260016040615440606061544060075afa141692506153c0516154a0526153e0516154c052615440516154e052615460516155005282600160406154a060806154a060065afa141692507f1701d83c9ad410f3d61886c39b7b8a618f42219a1404264208f838c1672b8e71615520527f0868e69339d5d3bbd747b6e7772a9760a7277c0993a420c2848808b15de0424c61554052614ee051615560528260016040615520606061552060075afa141692506154a051615580526154c0516155a052615520516155c052615540516155e0528260016040615580608061558060065afa141692507f21c6ea7d6dbcd767ffb9d9beeb4f9c2f8243bc65290f2d75a59aea4f65ba8f3d615600527f24d0a0acb031c9a5687da08cdaf96650aae5c60435739bda8bbd574eb962622c61562052614f0051615640528260016040615600606061560060075afa1416925061558051615660526155a05161568052615600516156a052615620516156c0528260016040615660608061566060065afa141692507f289feda4952fe4464c9716d071e291bbecdcd5432356042dc79b76ed38cbbb0d6156e0527f07f3ca14a8801fa413462ad72ea448da5d7cf8c5218534cdc39bb23779b70bb961570052614f20516157205282600160406156e060606156e060075afa14169250615660516157405261568051615760526156e05161578052615700516157a0528260016040615740608061574060065afa141692507f259670bd2f2f6fce3b18100f92a2e59874da3b66a9ddd61e163eb4b071e24a976157c0527f097f07272f7ca89070ad9c06d9a3da1bb6e91d0e69bf7872f44cc5d332291eb56157e052614f40516158005282600160406157c060606157c060075afa14169250615740516158205261576051615840526157c051615860526157e051615880528260016040615820608061582060065afa141692507f26eaa658ef237183330c716cf9d5d978d8618788db2551142e1a9af837ecc8106158a0527f1fa793c6b0f3df4a8a1017daa531a45fdfa8b5da433308f71716565f8b85aa7d6158c052614f60516158e05282600160406158a060606158a060075afa14169250615820516159005261584051615920526158a051615940526158c051615960528260016040615900608061590060065afa141692507f186694283d847cec7609ca9b642f46fc751a61e3ac330841cdf6a938a3439c02615980527f16eb0141342ab5f9ca76fcaef38c222f51dd1afd5d45943e3676ba0c2ceb4f6d6159a052614f80516159c0528260016040615980606061598060075afa14169250615900516159e05261592051615a005261598051615a20526159a051615a405282600160406159e060806159e060065afa141692507f0f76818adad3c635f139fde306f33aba7249952bdbbf72cf477a51f9d84f3ccc615a60527f23f89f9896b1cc39de92659098ea839186ff2e997ffa3413c1a7af4f31abe4ce615a8052614fa051615aa0528260016040615a606060615a6060075afa141692506159e051615ac052615a0051615ae052615a6051615b0052615a8051615b20528260016040615ac06080615ac060065afa1416925061096051615b405261098051615b6052614fc051615b80528260016040615b406060615b4060075afa14169250615ac051615ba052615ae051615bc052615b4051615be052615b6051615c00528260016040615ba06080615ba060065afa141692506109a051615c20526109c051615c4052614fe051615c60528260016040615c206060615c2060075afa14169250615ba051615c8052615bc051615ca052615c2051615cc052615c4051615ce0528260016040615c806080615c8060065afa141692506109e051615d0052610a0051615d205261500051615d40528260016040615d006060615d0060075afa14169250615c8051615d6052615ca051615d8052615d0051615da052615d2051615dc0528260016040615d606080615d6060065afa14169250610a2051615de052610a4051615e005261502051615e20528260016040615de06060615de060075afa14169250615d6051615e4052615d8051615e6052615de051615e8052615e0051615ea0528260016040615e406080615e4060065afa141692506108c051615ec0526108e051615ee05261504051615f00528260016040615ec06060615ec060075afa14169250615e4051615f2052615e6051615f4052615ec051615f6052615ee051615f80528260016040615f206080615f2060065afa14169250610de051615fa052610e0051615fc052615080518103615fe0528260016040615fa06060615fa060075afa14169250615f205161600052615f405161602052615fa05161604052615fc051616060528260016040616000608061600060065afa14169250610e805161608052610ea0516160a0526150a0516160c0528260016040616080606061608060075afa14169250616000516160e052616020516161005261608051616120526160a0516161405282600160406160e060806160e060065afa141692506160e051616160526161005161618052610e80516161a052610ea0516161c052610ec0516161e052610ee05161620052610f005161622052610f205161624052610100616160206162605280616260510661628052806162805161628051096162a05280616280516001096162c0526161e0516162e05261620051616300526162c0516163205282600160406162e060606162e060075afa14169250616160516163405261618051616360526162e05161638052616300516163a0528260016040616340608061634060065afa14169250616220516163c052616240516163e0526162c0516164005282600160406163c060606163c060075afa141692506161a051616420526161c051616440526163c051616460526163e051616480528260016040616420608061642060065afa14169250616340516164a052616360516164c0527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26164e0527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed616500527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b616520527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa61654052616420516165605261644051616580527f172aa93c41f16e1e04d62ac976a5d945f4be0acab990c6dc19ac4a7cf68bf77b6165a0527f2ae0c8c3a090f7200ff398ee9845bbae8f8c1445ae7b632212775f60a0e216006165c0527f190fa476a5b352809ed41d7a0d7fe12b8f685e3c12a6d83855dba27aaf4696436165e0527f1c0a500618907df9e4273d5181e31088deb1f05132de037cbfe73888f97f77c96166005282600160206164a06101806164a060085afa141692508260016164a051141692508261480757600080fd5b600080f3fea264697066735822122026e891e5d925cf339bec37559839722b8fe67c5fbcb9bf916360d10c4212867164736f6c63430008130033";