-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcore-infra.sh
executable file
·108 lines (88 loc) · 131 KB
/
core-infra.sh
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
# Store networks in array if provided, otherwise leave empty
networks=("$@")
while IFS='=' read -r network url; do
# Skip empty lines and comments
[[ -z $network || $network == \#* ]] && continue
# Skip if networks specified and current one not included
[[ ${#networks[@]} -gt 0 && ! " ${networks[@]} " =~ " ${network} " ]] && continue
expanded_url=$(echo "$url" | envsubst)
# Check required addresses
# Safe Singleton Factory
code=$(cast code 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
printf '%s\n' "Error: Safe Singleton Factory not deployed" >&2
exit 1
fi
# Deploy Dependencies
printf 'Checking Dependencies...\n'
# Safe Singleton
code=$(cast code 0x29fcB43b46531BcA003ddC8FCB67FFE91900C762 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b506001600481905550615f6580620000296000396000f3fe6080604052600436106101d15760003560e01c8063affed0e0116100f7578063e19a9dd911610095578063f08a032311610064578063f08a03231461156b578063f698da25146115bc578063f8dc5dd9146115e7578063ffa1ad741461166257610226565b8063e19a9dd9146112bf578063e318b52b14611310578063e75235b8146113a1578063e86637db146113cc57610226565b8063cc2f8452116100d1578063cc2f84521461100c578063d4d9bdcd146110d9578063d8d11f7814611114578063e009cfde1461124e57610226565b8063affed0e014610d89578063b4faba0914610db4578063b63e800d14610e9c57610226565b80635624b25b1161016f5780636a7612021161013e5780636a761202146109895780637d83297414610b45578063934f3a1114610bb4578063a0e67e2b14610d1d57610226565b80635624b25b146107f05780635ae6bd37146108ae578063610b5925146108fd578063694e80c31461094e57610226565b80632f54bf6e116101ab5780632f54bf6e146104c85780633408e4701461052f578063468721a71461055a5780635229073f1461066f57610226565b80630d582f131461029357806312fb68e0146102ee5780632d9ad53d1461046157610226565b36610226573373ffffffffffffffffffffffffffffffffffffffff167f3d0ce9bfc3ed7d6862dbb28b2dea94561fe714a1b4d019aa8af39730d1ad7c3d346040518082815260200191505060405180910390a2005b34801561023257600080fd5b5060007f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b905080548061026757600080f35b36600080373360601b365260008060143601600080855af13d6000803e8061028e573d6000fd5b3d6000f35b34801561029f57600080fd5b506102ec600480360360408110156102b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f2565b005b3480156102fa57600080fd5b5061045f6004803603608081101561031157600080fd5b81019080803590602001909291908035906020019064010000000081111561033857600080fd5b82018360208201111561034a57600080fd5b8035906020019184600183028401116401000000008311171561036c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156103cf57600080fd5b8201836020820111156103e157600080fd5b8035906020019184600183028401116401000000008311171561040357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050611ad8565b005b34801561046d57600080fd5b506104b06004803603602081101561048457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123d6565b60405180821515815260200191505060405180910390f35b3480156104d457600080fd5b50610517600480360360208110156104eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124a8565b60405180821515815260200191505060405180910390f35b34801561053b57600080fd5b5061054461257a565b6040518082815260200191505060405180910390f35b34801561056657600080fd5b506106576004803603608081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190505050612587565b60405180821515815260200191505060405180910390f35b34801561067b57600080fd5b5061076c6004803603608081101561069257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156106d957600080fd5b8201836020820111156106eb57600080fd5b8035906020019184600183028401116401000000008311171561070d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803560ff169060200190929190505050612692565b60405180831515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156107b4578082015181840152602081019050610799565b50505050905090810190601f1680156107e15780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3480156107fc57600080fd5b506108336004803603604081101561081357600080fd5b8101908080359060200190929190803590602001909291905050506126c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610873578082015181840152602081019050610858565b50505050905090810190601f1680156108a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108ba57600080fd5b506108e7600480360360208110156108d157600080fd5b810190808035906020019092919050505061274f565b6040518082815260200191505060405180910390f35b34801561090957600080fd5b5061094c6004803603602081101561092057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612767565b005b34801561095a57600080fd5b506109876004803603602081101561097157600080fd5b8101908080359060200190929190505050612aef565b005b610b2d60048036036101408110156109a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156109e757600080fd5b8201836020820111156109f957600080fd5b80359060200191846001830284011164010000000083111715610a1b57600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610aa757600080fd5b820183602082011115610ab957600080fd5b80359060200191846001830284011164010000000083111715610adb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612c29565b60405180821515815260200191505060405180910390f35b348015610b5157600080fd5b50610b9e60048036036040811015610b6857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612e68565b6040518082815260200191505060405180910390f35b348015610bc057600080fd5b50610d1b60048036036060811015610bd757600080fd5b810190808035906020019092919080359060200190640100000000811115610bfe57600080fd5b820183602082011115610c1057600080fd5b80359060200191846001830284011164010000000083111715610c3257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c9557600080fd5b820183602082011115610ca757600080fd5b80359060200191846001830284011164010000000083111715610cc957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612e8d565b005b348015610d2957600080fd5b50610d32612f1c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d75578082015181840152602081019050610d5a565b505050509050019250505060405180910390f35b348015610d9557600080fd5b50610d9e6130c5565b6040518082815260200191505060405180910390f35b348015610dc057600080fd5b50610e9a60048036036040811015610dd757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610e1457600080fd5b820183602082011115610e2657600080fd5b80359060200191846001830284011164010000000083111715610e4857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506130cb565b005b348015610ea857600080fd5b5061100a6004803603610100811015610ec057600080fd5b8101908080359060200190640100000000811115610edd57600080fd5b820183602082011115610eef57600080fd5b80359060200191846020830284011164010000000083111715610f1157600080fd5b909192939192939080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610f5c57600080fd5b820183602082011115610f6e57600080fd5b80359060200191846001830284011164010000000083111715610f9057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130ed565b005b34801561101857600080fd5b506110656004803603604081101561102f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132ab565b60405180806020018373ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019060200280838360005b838110156110c45780820151818401526020810190506110a9565b50505050905001935050505060405180910390f35b3480156110e557600080fd5b50611112600480360360208110156110fc57600080fd5b810190808035906020019092919050505061360e565b005b34801561112057600080fd5b50611238600480360361014081101561113857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561117f57600080fd5b82018360208201111561119157600080fd5b803590602001918460018302840111640100000000831117156111b357600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506137ad565b6040518082815260200191505060405180910390f35b34801561125a57600080fd5b506112bd6004803603604081101561127157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137da565b005b3480156112cb57600080fd5b5061130e600480360360208110156112e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b61565b005b34801561131c57600080fd5b5061139f6004803603606081101561133357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d4d565b005b3480156113ad57600080fd5b506113b66143ab565b6040518082815260200191505060405180910390f35b3480156113d857600080fd5b506114f060048036036101408110156113f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561143757600080fd5b82018360208201111561144957600080fd5b8035906020019184600183028401116401000000008311171561146b57600080fd5b9091929391929390803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506143b5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611530578082015181840152602081019050611515565b50505050905090810190601f16801561155d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561157757600080fd5b506115ba6004803603602081101561158e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061455d565b005b3480156115c857600080fd5b506115d16145b4565b6040518082815260200191505060405180910390f35b3480156115f357600080fd5b506116606004803603606081101561160a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614632565b005b34801561166e57600080fd5b50611677614a5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156116b757808201518184015260208101905061169c565b50505050905090810190601f1680156116e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6116fa614a94565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156117645750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561179c57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61180e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461190f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff167f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2660405160405180910390a28060045414611ad457611ad381612aef565b5b5050565b611aec604182614b3790919063ffffffff16565b82511015611b62576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000808060008060005b868110156123ca57611b7e8882614b71565b80945081955082965050505060008460ff1614156120035789898051906020012014611c12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323700000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8260001c9450611c2c604188614b3790919063ffffffff16565b8260001c1015611ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8751611cbd60208460001c614ba090919063ffffffff16565b1115611d31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006020838a01015190508851611d6782611d5960208760001c614ba090919063ffffffff16565b614ba090919063ffffffff16565b1115611ddb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60606020848b010190506320c13b0b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168773ffffffffffffffffffffffffffffffffffffffff166320c13b0b8d846040518363ffffffff1660e01b8152600401808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e7d578082015181840152602081019050611e62565b50505050905090810190601f168015611eaa5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015611ee3578082015181840152602081019050611ec8565b50505050905090810190601f168015611f105780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b158015611f2f57600080fd5b505afa158015611f43573d6000803e3d6000fd5b505050506040513d6020811015611f5957600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050612248565b60018460ff161415612117578260001c94508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806120a057506000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c81526020019081526020016000205414155b612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612247565b601e8460ff1611156121df5760018a60405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012060048603858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156121ce573d6000803e3d6000fd5b505050602060405103519450612246565b60018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612239573d6000803e3d6000fd5b5050506020604051035194505b5b5b8573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611801561230f5750600073ffffffffffffffffffffffffffffffffffffffff16600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b80156123485750600173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330323600000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8495508080600101915050611b6c565b50505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff16600173ffffffffffffffffffffffffffffffffffffffff16141580156124a15750600073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125735750600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000804690508091505090565b60007fb648d3644f584ed1c2232d53c46d87e693586486ad0d1175f8656013110b714e3386868686604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600181111561260157fe5b8152602001828103825284818151815260200191508051906020019080838360005b8381101561263e578082015181840152602081019050612623565b50505050905090810190601f16801561266b5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a161268885858585614bbf565b9050949350505050565b600060606126a286868686612587565b915060405160203d0181016040523d81523d6000602083013e8091505094509492505050565b606060006020830267ffffffffffffffff811180156126e657600080fd5b506040519080825280601f01601f1916602001820160405280156127195781602001600182028036833780820191505090505b50905060005b838110156127445780850154806020830260208501015250808060010191505061271f565b508091505092915050565b60076020528060005260406000206000915090505481565b61276f614a94565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156127d95750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61284b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461294c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fecdf3a3effea5783a3c4c2140e677577666428d44ed9d474a0b3a4c9943f844060405160405180910390a250565b612af7614a94565b600354811115612b6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001811015612be6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b806004819055507f610f7ff2b304ae8903c3de74c60c6ab1f7d6226b3f52c5161905bb5ad4039c936004546040518082815260200191505060405180910390a150565b6000606060055433600454604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405160208183030381529060405290507f66753cd2356569ee081232e3be8909b950e0a76c1f8460c3a5e3c2be32b11bed8d8d8d8d8d8d8d8d8d8d8d8c604051808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c8152602001806020018a6001811115612cdc57fe5b81526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200184810384528e8e82818152602001925080828437600081840152601f19601f820116905080830192505050848103835286818151815260200191508051906020019080838360005b83811015612d96578082015181840152602081019050612d7b565b50505050905090810190601f168015612dc35780820380516001836020036101000a031916815260200191505b50848103825285818151815260200191508051906020019080838360005b83811015612dfc578082015181840152602081019050612de1565b50505050905090810190601f168015612e295780820380516001836020036101000a031916815260200191505b509f5050505050505050505050505050505060405180910390a1612e568d8d8d8d8d8d8d8d8d8d8d614dc5565b9150509b9a5050505050505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000600454905060008111612f0a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b612f1684848484611ad8565b50505050565b6060600060035467ffffffffffffffff81118015612f3957600080fd5b50604051908082528060200260200182016040528015612f685781602001602082028036833780820191505090505b50905060008060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146130bc578083838151811061301357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050612fd2565b82935050505090565b60055481565b600080825160208401855af4806000523d6020523d600060403e60403d016000fd5b6131388a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050896152f4565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461317657613175846157f4565b5b6131c48787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506158c5565b60008211156131de576131dc82600060018685615b9b565b505b3373ffffffffffffffffffffffffffffffffffffffff167f141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a88b8b8b8b8960405180806020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281038252878782818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a250505050505050505050565b60606000600173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806132ef57506132ee846123d6565b5b613361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600083116133d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303600000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8267ffffffffffffffff811180156133ee57600080fd5b5060405190808252806020026020018201604052801561341d5781602001602082028036833780820191505090505b5091506000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156134ef5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134fa57508381105b156135b5578183828151811061350c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508080600101915050613485565b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613603578260018203815181106135f857fe5b602002602001015191505b808352509250929050565b600073ffffffffffffffffffffffffffffffffffffffff16600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613710576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330333000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16817ff2a0eb156472d1440255b0d7c1e19cc07115d1051fe605b0dce69acfec884d9c60405160405180910390a350565b60006137c28c8c8c8c8c8c8c8c8c8c8c6143b5565b8051906020012090509b9a5050505050505050505050565b6137e2614a94565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801561384c5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6138be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146139be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167faab4fa2b463f581b2b32cb3b7e3b704b9ce37cc209b5fb4d77e593ace405427660405160405180910390a25050565b613b69614a94565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613cdb578073ffffffffffffffffffffffffffffffffffffffff166301ffc9a77fe6d7a83a000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060206040518083038186803b158015613c2d57600080fd5b505afa158015613c41573d6000803e3d6000fd5b505050506040513d6020811015613c5757600080fd5b8101908080519060200190929190505050613cda576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475333303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b60007f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c860001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f1151116914515bc0891ff9047a6cb32cf902546f83066499bcf8ba33d2353fa260405160405180910390a25050565b613d55614a94565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613dbf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015613df757503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b613e69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613f6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613fd45750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b614046576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff167f9465fa0c962cc76958e6373a993326400c1c94f8be2fe3a952adfa7f60b2ea2660405160405180910390a2505050565b6000600454905090565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d860001b8d8d8d8d60405180838380828437808301925050509250505060405180910390208c8c8c8c8c8c8c604051602001808c81526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a815260200189815260200188600181111561444657fe5b81526020018781526020018681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019b505050505050505050505050604051602081830303815290604052805190602001209050601960f81b600160f81b6144d26145b4565b8360405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018381526020018281526020019450505050506040516020818303038152906040529150509b9a5050505050505050505050565b614565614a94565b61456e816157f4565b8073ffffffffffffffffffffffffffffffffffffffff167f5ac6c46c93c8d0e53714ba3b53db3e7c046da994313d7ed0d192028bc7c228b060405160405180910390a250565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921860001b6145e261257a565b30604051602001808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405160208183030381529060405280519060200120905090565b61463a614a94565b8060016003540310156146b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561471f5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b614791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614614891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508173ffffffffffffffffffffffffffffffffffffffff167ff8d49fc529812e9a7c5c50e69c20f0dccc0db8fa95c98bc58cc9a4f1c1299eaf60405160405180910390a28060045414614a5657614a5581612aef565b5b505050565b6040518060400160405280600581526020017f312e342e3100000000000000000000000000000000000000000000000000000081525081565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614614b35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330333100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b565b600080831415614b4a5760009050614b6b565b6000828402905082848281614b5b57fe5b0414614b6657600080fd5b809150505b92915050565b60008060008360410260208101860151925060408101860151915060ff60418201870151169350509250925092565b600080828401905083811015614bb557600080fd5b8091505092915050565b6000600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015614c8a5750600073ffffffffffffffffffffffffffffffffffffffff16600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b614cfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b614d29858585857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615da1565b90508015614d79573373ffffffffffffffffffffffffffffffffffffffff167f6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb860405160405180910390a2614dbd565b3373ffffffffffffffffffffffffffffffffffffffff167facd2c8702804128fdb0db2bb49f6d127dd0181c13fd45dbfe16de0930e2bd37560405160405180910390a25b949350505050565b6000806000614ddf8e8e8e8e8e8e8e8e8e8e6005546143b5565b905060056000815480929190600101919050555080805190602001209150614e08828286612e8d565b506000614e13615ded565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614ff9578073ffffffffffffffffffffffffffffffffffffffff166375f0bb528f8f8f8f8f8f8f8f8f8f8f336040518d63ffffffff1660e01b8152600401808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c8152602001806020018a6001811115614eb657fe5b81526020018981526020018881526020018781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018473ffffffffffffffffffffffffffffffffffffffff16815260200183810383528d8d82818152602001925080828437600081840152601f19601f820116905080830192505050838103825285818151815260200191508051906020019080838360005b83811015614f88578082015181840152602081019050614f6d565b50505050905090810190601f168015614fb55780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050600060405180830381600087803b158015614fe057600080fd5b505af1158015614ff4573d6000803e3d6000fd5b505050505b6101f46150206109c48b01603f60408d028161501157fe5b04615e1e90919063ffffffff16565b015a1015615096576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60005a90506150ff8f8f8f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508e60008d146150f4578e6150fa565b6109c45a035b615da1565b93506151145a82615e3890919063ffffffff16565b90508380615123575060008a14155b8061512f575060008814155b6151a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000808911156151bb576151b8828b8b8b8b615b9b565b90505b84156151fe57837f442e715f626346e8c54381002da614f62bee8d27386535b2521ec8540898556e826040518082815260200191505060405180910390a2615237565b837f23428b18acfb3ea64b08dc0c1d296ea9c09702c09083ca5272e64d115b687d23826040518082815260200191505060405180910390a25b5050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146152e3578073ffffffffffffffffffffffffffffffffffffffff16639327136883856040518363ffffffff1660e01b815260040180838152602001821515815260200192505050600060405180830381600087803b1580156152ca57600080fd5b505af11580156152de573d6000803e3d6000fd5b505050505b50509b9a5050505050505050505050565b60006004541461536c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81518111156153e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600181101561545a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006001905060005b835181101561576057600084828151811061547a57fe5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156154ee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561552657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561555e57508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6155d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303300000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146156d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475332303400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250508080600101915050615463565b506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550825160038190555081600481905550505050565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415615896576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475334303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60007f6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d560001b90508181555050565b600073ffffffffffffffffffffffffffffffffffffffff1660016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146159c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475331303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614615b9757615a8382615e58565b615af5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b615b248260008360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615da1565b615b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330303000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b5050565b600080600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614615bd85782615bda565b325b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415615cf257615c443a8610615c21573a615c23565b855b615c36888a614ba090919063ffffffff16565b614b3790919063ffffffff16565b91508073ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050615ced576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313100000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b615d97565b615d1785615d09888a614ba090919063ffffffff16565b614b3790919063ffffffff16565b9150615d24848284615e6b565b615d96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f475330313200000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5b5095945050505050565b6000600180811115615daf57fe5b836001811115615dbb57fe5b1415615dd4576000808551602087018986f49050615de4565b600080855160208701888a87f190505b95945050505050565b6000807f4a204f620c8c5ccdca3fd54d003badd85ba500436a431f0cbda4f558c93c34c860001b9050805491505090565b600081831015615e2e5781615e30565b825b905092915050565b600082821115615e4757600080fd5b600082840390508091505092915050565b600080823b905060008111915050919050565b60008063a9059cbb8484604051602401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050602060008251602084016000896127105a03f13d60008114615f125760208114615f1a5760009350615f25565b819350615f25565b600051158215171593505b505050939250505056fea2646970667358221220cd2bdb262f44c0636136d3c6bfed2c2458921f82c3bf476053bd2e9ac618b2da64736f6c63430007060033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
# Safe Proxy Factory
code=$(cast code 0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50610bee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631688f0b91461005c5780633408e4701461016b57806353e5d93514610189578063d18af54d1461020c578063ec9e80bb1461033b575b600080fd5b61013f6004803603606081101561007257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156100af57600080fd5b8201836020820111156100c157600080fd5b803590602001918460018302840111640100000000831117156100e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019092919050505061044a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101736104fe565b6040518082815260200191505060405180910390f35b61019161050b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d15780820151818401526020810190506101b6565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61030f6004803603608081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025f57600080fd5b82018360208201111561027157600080fd5b8035906020019184600183028401116401000000008311171561029357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610536565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61041e6004803603606081101561035157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460018302840111640100000000831117156103c257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506106e5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008083805190602001208360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012090506104908585836107a8565b91508173ffffffffffffffffffffffffffffffffffffffff167f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e23586604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2509392505050565b6000804690508091505090565b60606040518060200161051d906109c5565b6020820181038252601f19601f82011660405250905090565b6000808383604051602001808381526020018273ffffffffffffffffffffffffffffffffffffffff1660601b8152601401925050506040516020818303038152906040528051906020012060001c905061059186868361044a565b9150600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146106dc578273ffffffffffffffffffffffffffffffffffffffff16631e52b518838888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610674578082015181840152602081019050610659565b50505050905090810190601f1680156106a15780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156106c357600080fd5b505af11580156106d7573d6000803e3d6000fd5b505050505b50949350505050565b6000808380519060200120836106f96104fe565b60405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061073a8585836107a8565b91508173ffffffffffffffffffffffffffffffffffffffff167f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e23586604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a2509392505050565b60006107b3846109b2565b610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f53696e676c65746f6e20636f6e7472616374206e6f74206465706c6f7965640081525060200191505060405180910390fd5b600060405180602001610837906109c5565b6020820181038252601f19601f820116604052508573ffffffffffffffffffffffffffffffffffffffff166040516020018083805190602001908083835b602083106108985780518252602082019150602081019050602083039250610875565b6001836020036101000a038019825116818451168082178552505050505050905001828152602001925050506040516020818303038152906040529050828151826020016000f59150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610984576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f437265617465322063616c6c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b6000845111156109aa5760008060008651602088016000875af114156109a957600080fd5b5b509392505050565b600080823b905060008111915050919050565b6101e6806109d38339019056fe608060405234801561001057600080fd5b506040516101e63803806101e68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806101c46022913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060ab806101196000396000f3fe608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea264697066735822122003d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f31441364736f6c63430007060033496e76616c69642073696e676c65746f6e20616464726573732070726f7669646564a26469706673582212200fd975ca8e62d9bf08aa3d09c74b9bdc9d7acba7621835be4187989ddd0e54b164736f6c63430007060033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
# Compatibility Fallback Handler
code=$(cast code 0xfd0732Dc9E303f09fCEf3a7388Ad10A83459Ec99 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b50611605806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c8063230316401161007157806323031640146106535780636ac24784146107a7578063b2494df314610896578063bc197c81146108f5578063bd61951d14610a8b578063f23a6e6114610b9d576100b3565b806223de29146100b857806301ffc9a7146101f05780630a1028c414610253578063150b7a02146103225780631626ba7e1461041857806320c13b0b146104ce575b600080fd5b6101ee600480360360c08110156100ce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561015557600080fd5b82018360208201111561016757600080fd5b8035906020019184600183028401116401000000008311171561018957600080fd5b9091929391929390803590602001906401000000008111156101aa57600080fd5b8201836020820111156101bc57600080fd5b803590602001918460018302840111640100000000831117156101de57600080fd5b9091929391929390505050610c9d565b005b61023b6004803603602081101561020657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610ca7565b60405180821515815260200191505060405180910390f35b61030c6004803603602081101561026957600080fd5b810190808035906020019064010000000081111561028657600080fd5b82018360208201111561029857600080fd5b803590602001918460018302840111640100000000831117156102ba57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610de1565b6040518082815260200191505060405180910390f35b6103e36004803603608081101561033857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561039f57600080fd5b8201836020820111156103b157600080fd5b803590602001918460018302840111640100000000831117156103d357600080fd5b9091929391929390505050610df4565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6104996004803603604081101561042e57600080fd5b81019080803590602001909291908035906020019064010000000081111561045557600080fd5b82018360208201111561046757600080fd5b8035906020019184600183028401116401000000008311171561048957600080fd5b9091929391929390505050610e09565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61061e600480360360408110156104e457600080fd5b810190808035906020019064010000000081111561050157600080fd5b82018360208201111561051357600080fd5b8035906020019184600183028401116401000000008311171561053557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561059857600080fd5b8201836020820111156105aa57600080fd5b803590602001918460018302840111640100000000831117156105cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610fc1565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b61072c6004803603604081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156106a657600080fd5b8201836020820111156106b857600080fd5b803590602001918460018302840111640100000000831117156106da57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611249565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076c578082015181840152602081019050610751565b50505050905090810190601f1680156107995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610880600480360360408110156107bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156107fa57600080fd5b82018360208201111561080c57600080fd5b8035906020019184600183028401116401000000008311171561082e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506113b5565b6040518082815260200191505060405180910390f35b61089e6113d0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108e15780820151818401526020810190506108c6565b505050509050019250505060405180910390f35b610a56600480360360a081101561090b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561096857600080fd5b82018360208201111561097a57600080fd5b8035906020019184602083028401116401000000008311171561099c57600080fd5b9091929391929390803590602001906401000000008111156109bd57600080fd5b8201836020820111156109cf57600080fd5b803590602001918460208302840111640100000000831117156109f157600080fd5b909192939192939080359060200190640100000000811115610a1257600080fd5b820183602082011115610a2457600080fd5b80359060200191846001830284011164010000000083111715610a4657600080fd5b9091929391929390505050611537565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610b2260048036036040811015610aa157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610ade57600080fd5b820183602082011115610af057600080fd5b80359060200191846001830284011164010000000083111715610b1257600080fd5b909192939192939050505061154f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b62578082015181840152602081019050610b47565b50505050905090810190601f168015610b8f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c68600480360360a0811015610bb357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610c2457600080fd5b820183602082011115610c3657600080fd5b80359060200191846001830284011164010000000083111715610c5857600080fd5b90919293919293905050506115b9565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b5050505050505050565b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610d7257507f150b7a02000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610dda57507f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000610ded33836113b5565b9050919050565b600063150b7a0260e01b905095945050505050565b60008033905060008173ffffffffffffffffffffffffffffffffffffffff166320c13b0b876040516020018082815260200191505060405160208183030381529060405287876040518463ffffffff1660e01b8152600401808060200180602001838103835286818151815260200191508051906020019080838360005b83811015610ea2578082015181840152602081019050610e87565b50505050905090810190601f168015610ecf5780820380516001836020036101000a031916815260200191505b508381038252858582818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060206040518083038186803b158015610f1a57600080fd5b505afa158015610f2e573d6000803e3d6000fd5b505050506040513d6020811015610f4457600080fd5b810190808051906020019092919050505090506320c13b0b60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610fad57600060e01b610fb6565b631626ba7e60e01b5b925050509392505050565b6000803390506000610fd38286611249565b90506000818051906020012090506000855114156110f25760008373ffffffffffffffffffffffffffffffffffffffff16635ae6bd37836040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b810190808051906020019092919050505014156110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f48617368206e6f7420617070726f76656400000000000000000000000000000081525060200191505060405180910390fd5b611236565b8273ffffffffffffffffffffffffffffffffffffffff1663934f3a118284886040518463ffffffff1660e01b8152600401808481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561116a57808201518184015260208101905061114f565b50505050905090810190601f1680156111975780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156111d05780820151818401526020810190506111b5565b50505050905090810190601f1680156111fd5780820380516001836020036101000a031916815260200191505b509550505050505060006040518083038186803b15801561121d57600080fd5b505afa158015611231573d6000803e3d6000fd5b505050505b6320c13b0b60e01b935050505092915050565b606060007f60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca60001b83805190602001206040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209050601960f81b600160f81b8573ffffffffffffffffffffffffffffffffffffffff1663f698da256040518163ffffffff1660e01b815260040160206040518083038186803b1580156112f857600080fd5b505afa15801561130c573d6000803e3d6000fd5b505050506040513d602081101561132257600080fd5b81019080805190602001909291905050508360405160200180857effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101847effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260010183815260200182815260200194505050505060405160208183030381529060405291505092915050565b60006113c18383611249565b80519060200120905092915050565b6060600033905060008173ffffffffffffffffffffffffffffffffffffffff1663cc2f84526001600a6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060006040518083038186803b15801561144a57600080fd5b505afa15801561145e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250604081101561148857600080fd5b81019080805160405193929190846401000000008211156114a857600080fd5b838201915060208201858111156114be57600080fd5b82518660208202830111640100000000821117156114db57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156115125780820151818401526020810190506114f7565b5050505090500160405260200180519060200190929190505050509050809250505090565b600063bc197c8160e01b905098975050505050505050565b60606040517fb4faba09000000000000000000000000000000000000000000000000000000008152600436036004808301376020600036836000335af15060203d036040519250808301604052806020843e6000516115b057825160208401fd5b50509392505050565b600063f23a6e6160e01b9050969550505050505056fea26469706673582212201b4a724e94687b6683f72064694993023a1b3dbf13a3418c0926ebb253c030fe64736f6c63430007060033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
# MultiSend
code=$(cast code 0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x000000000000000000000000000000000000000000000000000000000000000060a060405234801561001057600080fd5b503073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505060805160601c6102756100646000398060e052506102756000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100dc6004803603602081101561003957600080fd5b810190808035906020019064010000000081111561005657600080fd5b82018360208201111561006857600080fd5b8035906020019184600183028401116401000000008311171561008a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100de565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415610183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806102106030913960400191505060405180910390fd5b805160205b8181101561020a578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146101cd57600181146101dd576101e8565b6000808585888a5af191506101e8565b6000808585895af491505b5060008114156101f757600080fd5b8260550187019650505050505050610188565b50505056fe4d756c746953656e642073686f756c64206f6e6c792062652063616c6c6564207669612064656c656761746563616c6ca264697066735822122021102e6d5bc1da75411b41fe2792a1748bf5c49c794e51e81405ccd2399da13564736f6c63430007060033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
# MultiSendCallOnly
code=$(cast code 0x40A2aCCbd92BCA938b02010E17A5b8929b49130D --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x4e59b44847b379578588920cA78FbF26c0B4956C 0x0000000000000000000000000000000000000000000000000000000000000000608060405234801561001057600080fd5b5061019a806100206000396000f3fe60806040526004361061001e5760003560e01c80638d80ff0a14610023575b600080fd5b6100dc6004803603602081101561003957600080fd5b810190808035906020019064010000000081111561005657600080fd5b82018360208201111561006857600080fd5b8035906020019184600183028401116401000000008311171561008a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506100de565b005b805160205b8181101561015f578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461012857600181146101385761013d565b6000808585888a5af1915061013d565b600080fd5b50600081141561014c57600080fd5b82605501870196505050505050506100e3565b50505056fea264697066735822122035246402746c96964495cae5b36461fd44dfb89f8e6cf6f6b8d60c0aa89f414864736f6c63430007060033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf "All dependencies deployed\n"
# Deploy Contracts
# Registry
code=$(cast code 0x000000000069E2a187AEFFb852bF3cCdC95151B2 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x0000000000000000000000000000000000000000d7f995ff1ea60f02e52877f761014060405234801561001157600080fd5b5060405161001e90610106565b604051809103906000f08015801561003a573d6000803e3d6000fd5b506001600160a01b03166080523060a0524660c05260608061009c60408051808201825260128152715268696e6573746f6e65526567697374727960701b60208083019190915282518084019093526004835263076312e360e41b9083015291565b815160209283012081519183019190912060e0829052610100819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061012052506101139050565b6101d9806149bc83390190565b60805160a05160c05160e051610100516101205161485a610162600039600061213d015260006121f7015260006121d1015260006121810152600061215e01526000611b8b015261485a6000f3fe6080604052600436106102045760003560e01c80637cb2afd811610118578063b65d1012116100a0578063dd0fd2781161006f578063dd0fd2781461069e578063e14f3d32146106cb578063f05c04e1146106eb578063f095ec1b1461070b578063f190e2b11461072b57600080fd5b8063b65d101214610604578063b6b791a114610624578063c23697a814610651578063d90486241461067157600080fd5b8063945e3641116100e7578063945e36411461054a57806396fb72171461056a5780639f3e1b531461058a578063b060cb1e146105aa578063b50b706b146105d757600080fd5b80637cb2afd8146104c257806384b0196e146104e257806388dc678d1461050a5780638e6ec8241461052a57600080fd5b80634990a6821161019b57806355f47dde1161016a57806355f47dde146103b6578063617734d0146103d657806370d2af24146103f657806371c61a2b1461041657806377efcab4146104a257600080fd5b80634990a682146103365780634c13560c146103565780634ece78ca14610376578063529562a11461039657600080fd5b80631d4d9810116101d75780631d4d98101461029b57806329757d37146102c95780632b30c899146102e95780632ed944671461031657600080fd5b806303b79c841461020957806304a1f298146102395780630bb30abc1461025b5780631896f70a1461027b575b600080fd5b61021c610217366004613836565b61073e565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024557600080fd5b5061025961025436600461393b565b6107b8565b005b34801561026757600080fd5b506102596102763660046139c6565b610875565b34801561028757600080fd5b50610259610296366004613a21565b61098c565b3480156102a757600080fd5b506102bb6102b6366004613a51565b610acf565b604051908152602001610230565b3480156102d557600080fd5b506102596102e4366004613ab9565b610cc2565b3480156102f557600080fd5b50610309610304366004613b3f565b610d77565b6040516102309190613c11565b34801561032257600080fd5b50610259610331366004613c60565b610eb9565b34801561034257600080fd5b50610259610351366004613cc3565b610fb0565b34801561036257600080fd5b50610259610371366004613d04565b610fbf565b34801561038257600080fd5b50610259610391366004613d32565b610fcb565b3480156103a257600080fd5b506102596103b1366004613d96565b611077565b3480156103c257600080fd5b506102bb6103d1366004613dd7565b611087565b3480156103e257600080fd5b506102bb6103f1366004613e1d565b6110c1565b34801561040257600080fd5b506102bb610411366004613e66565b6110fe565b34801561042257600080fd5b5061047b610431366004613e83565b60408051808201909152600080825260208201525060009081526020818152604091829020825180840190935280546001600160a01b039081168452600190910154169082015290565b6040805182516001600160a01b039081168252602093840151169281019290925201610230565b3480156104ae57600080fd5b506102596104bd366004613e9c565b611131565b3480156104ce57600080fd5b506102596104dd366004613a21565b61113e565b3480156104ee57600080fd5b506104f76111e0565b6040516102309796959493929190613f08565b34801561051657600080fd5b50610259610525366004613fa1565b611249565b34801561053657600080fd5b50610259610545366004613ff4565b6112a4565b34801561055657600080fd5b50610259610565366004614057565b611357565b34801561057657600080fd5b5061025961058536600461409d565b611362565b34801561059657600080fd5b506102bb6105a53660046140c9565b61136d565b3480156105b657600080fd5b506105ca6105c5366004613e83565b6114f0565b60405161023091906140e6565b3480156105e357600080fd5b506102bb6105f23660046140c9565b60056020526000908152604090205481565b34801561061057600080fd5b5061025961061f366004614125565b6115ea565b34801561063057600080fd5b5061064461063f3660046140c9565b6115f6565b6040516102309190614188565b34801561065d57600080fd5b5061025961066c3660046140c9565b611656565b34801561067d57600080fd5b5061069161068c366004613d04565b611662565b604051610230919061419b565b3480156106aa57600080fd5b506106be6106b93660046140c9565b6116fb565b60405161023091906141aa565b3480156106d757600080fd5b506102bb6106e6366004613e1d565b61184d565b3480156106f757600080fd5b506102596107063660046141eb565b611882565b34801561071757600080fd5b5061021c610726366004614211565b611af7565b61021c61073936600461424f565b611b04565b600087815260208190526040812060018101546001600160a01b031661077f5760405163f184406b60e01b8152600481018a90526024015b60405180910390fd5b61078a88888c611c1b565b9150600061079b83338c8a8a611cee565b90506107aa8184848888611e6c565b505098975050505050505050565b6001600160a01b0385166000908152600560205260408120805482906107dd906142f9565b9182905550905060006107f96107f4878785611f20565b61213b565b9050600061083e888387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061085e57604051638baa579f60e01b815260040160405180910390fd5b61086a888a8989612358565b505050505050505050565b81801580610881575081155b1561089f576040516305a74e6160e01b815260040160405180910390fd5b818110156108c0576040516339093e6560e21b815260040160405180910390fd5b6000805b8281101561096c5760008686838181106108e0576108e0614312565b90506020020160208101906108f591906140c9565b9050826001600160a01b0316816001600160a01b0316116109295760405163cd0ecff160e01b815260040160405180910390fd5b809250610941600061093b8a84612478565b906124a2565b156109525761094f85614328565b94505b846000036109635750505050610986565b506001016108c4565b506040516339093e6560e21b815260040160405180910390fd5b50505050565b806001600160a01b0381161580610a0f57506040516301ffc9a760e01b81526314f0f87d60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156109e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0d919061433f565b155b15610a385760405163f9492e7560e01b81526001600160a01b0382166004820152602401610776565b60008381526020819052604090206001015483906001600160a01b03163314610a7457604051634ca8886760e01b815260040160405180910390fd5b60008481526020819052604080822080546001600160a01b0319166001600160a01b03871690811782559151909287917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09190a35050505050565b6000816001600160a01b03811615801590610b5657506040516301ffc9a760e01b815263b2275fa960e01b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b54919061433f565b155b15610b7f57604051630f09140760e01b81526001600160a01b0382166004820152602401610776565b60006040518060600160405280610b934290565b65ffffffffffff168152602001856001600160a01b0316815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050610bf28161254a565b60008181526002602052604090205490935065ffffffffffff1615610c2d57604051635988c65560e11b815260048101849052602401610776565b60008381526002602090815260409182902083518154928501516001600160a01b0316600160301b026001600160d01b031990931665ffffffffffff90911617919091178155908201518291906001820190610c8990826143f3565b505060405133915084907fd16733fb8c2a502f4e1d1d63970cbab355e37ff6d6d12a215b7d0197ea5535f490600090a350509392505050565b6001600160a01b038416600090815260056020526040812080548290610ce7906142f9565b918290555090506000610cfd6107f48684612586565b90506000610d42878387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b905080610d6257604051638baa579f60e01b815260040160405180910390fd5b610d6d8789886126c8565b5050505050505050565b606081806001600160401b03811115610d9257610d92614361565b604051908082528060200260200182016040528015610dcb57816020015b610db86137aa565b815260200190600190039081610db05790505b50915060005b81811015610eb057610e0986868684818110610def57610def614312565b9050602002016020810190610e0491906140c9565b612478565b6040805161010081018252825465ffffffffffff8082168352600160301b820481166020840152600160601b82041692820192909252600160901b90910463ffffffff16606082015260018201546001600160a01b0390811660808301526002830154811660a083015260038301541660c082015260049091015460e08201528351849083908110610e9d57610e9d614312565b6020908102919091010152600101610dd1565b50509392505050565b81801580610ec5575081155b15610ee3576040516305a74e6160e01b815260040160405180910390fd5b81811015610f04576040516339093e6560e21b815260040160405180910390fd5b6000805b8281101561096c576000868683818110610f2457610f24614312565b9050602002016020810190610f3991906140c9565b9050826001600160a01b0316816001600160a01b031611610f6d5760405163cd0ecff160e01b815260040160405180910390fd5b809250610f7e8861093b8b84612478565b15610f8f57610f8c85614328565b94505b84600003610fa05750505050610fa9565b50600101610f08565b5050505050565b610fbb33838361270d565b5050565b610fbb82826000612807565b6001600160a01b038516600090815260056020526040812080548290610ff0906142f9565b9182905550905060006110076107f48787856129c0565b9050600061104c888387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061106c57604051638baa579f60e01b815260040160405180910390fd5b610d6d88888861270d565b611082838383612807565b505050565b6001600160a01b0381166000908152600560205260408120546110ba906107f4906110b39060016144b2565b8590612586565b9392505050565b6001600160a01b0381166000908152600560205260408120546110f6906107f4906110ed9060016144b2565b869086906129c0565b949350505050565b6001600160a01b0381166000908152600560205260408120546110ba906107f49061112a9060016144b2565b8590612ac5565b61113b3382612b39565b50565b60008281526020819052604090206001015482906001600160a01b0316331461117a57604051634ca8886760e01b815260040160405180910390fd5b6000838152602081815260409182902060010180546001600160a01b0319166001600160a01b038616908117909155915191825284917f7a2c54badf601a71ed23c3ec8c070bac418dfd4fb160e0351861983746662d77910160405180910390a2505050565b600f60f81b606080600080808361123760408051808201825260128152715268696e6573746f6e65526567697374727960701b60208083019190915282518084019093526004835263076312e360e41b9083015291565b97989097965046955030945091925090565b600086815260208190526040902060018101546001600160a01b03166112855760405163f184406b60e01b815260048101889052602401610776565b60006112958760008a8989611cee565b9050610d6d8188848787611e6c565b6001600160a01b0384166000908152600560205260408120805482906112c9906142f9565b9182905550905060006112df6107f48684612ac5565b90506000611324878387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061225392505050565b90508061134457604051638baa579f60e01b815260040160405180910390fd5b61134e8787612b39565b50505050505050565b610fbb3383836126c8565b610fbb338383612807565b6000816001600160a01b03811615806113f257506040516301ffc9a760e01b81526314f0f87d60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f0919061433f565b155b1561141b5760405163f9492e7560e01b81526001600160a01b0382166004820152602401610776565b604080518082019091526001600160a01b038416815233602082015261144081612b64565b6000818152602081905260409020549093506001600160a01b03161561147957604051630f5f2ba160e21b815260040160405180910390fd5b600083815260208181526040808320845181546001600160a01b03199081166001600160a01b03928316178355938601516001909201805490941691811691909117909255519086169185917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09190a35050919050565b604080516060808201835260008083526020830152918101919091526000828152600260209081526040918290208251606081018452815465ffffffffffff81168252600160301b90046001600160a01b031692810192909252600181018054929391929184019161156190614377565b80601f016020809104026020016040519081016040528092919081815260200182805461158d90614377565b80156115da5780601f106115af576101008083540402835291602001916115da565b820191906000526020600020905b8154815290600101906020018083116115bd57829003601f168201915b5050505050815250509050919050565b61108233848484612358565b6040805160608082018352600080835260208084018290528385018390526001600160a01b038681168352600180835292869020865194850187528054855292830154169083015260028101805493949293919284019161156190614377565b61113b33826000612807565b61166a6137aa565b6116748383612478565b6040805161010081018252825465ffffffffffff8082168352600160301b820481166020840152600160601b82041692820192909252600160901b90910463ffffffff16606082015260018201546001600160a01b0390811660808301526002830154811660a083015260038301541660c082015260049091015460e08201529392505050565b6001600160a01b0380821660009081526003602052604081208054606093919260ff821692620100009092049091169082900361173a57505050919050565b816001600160401b0381111561175257611752614361565b60405190808252806020026020018201604052801561177b578160200160208202803683370190505b509350808460008151811061179257611792614312565b6001600160a01b039092166020928302919091019091015260015b8281101561184457836001016000866001846117c991906144c5565b815181106117d9576117d9614312565b6020908102919091018101516001600160a01b03908116835282820193909352604091820160009081208a851682529091522054865191169086908390811061182457611824614312565b6001600160a01b03909216602092830291909101909101526001016117ad565b50505050919050565b6001600160a01b0381166000908152600560205260408120546110f6906107f4906118799060016144b2565b86908690611f20565b604080516020808402828101820190935283825283926118bf929186918591829190850190849080828437600092019190915250612b9692505050565b6118dc5760405163cd0ecff160e01b815260040160405180910390fd5b8015806118e9575060ff81115b156119075760405163cd0ecff160e01b815260040160405180910390fd5b8181146119275760405163cd0ecff160e01b815260040160405180910390fd5b60008383828161193957611939614312565b905060200201602081019061194e91906140c9565b6001600160a01b0316036119755760405163cd0ecff160e01b815260040160405180910390fd5b33600090815260036020526040902060ff85168210156119a85760405163aabd5a0960e01b815260040160405180910390fd5b805460ff8681166101000261ffff199092169084161717815583836000816119d2576119d2614312565b90506020020160208101906119e791906140c9565b81546001600160a01b0391909116620100000262010000600160b01b031990911617815581611a1581614328565b92505060005b82811015611ac4576000858583818110611a3757611a37614312565b9050602002016020810190611a4c91906140c9565b90508585611a5b8460016144b2565b818110611a6a57611a6a614312565b9050602002016020810190611a7f91906140c9565b6001600160a01b03918216600090815260018581016020908152604080842033855290915290912080546001600160a01b031916929093169190911790915501611a1b565b5060405133907ff689fb4afceb60ac48a5ca8113a5a57cb15e51d317f0ec57e07340192d9fb45990600090a25050505050565b60006110f6838386612ba1565b600083815260208190526040812060018101546001600160a01b0316611b405760405163f184406b60e01b815260048101869052602401610776565b306001600160a01b038b1603611b74576040516301b3a38360e21b81526001600160a01b038b166004820152602401610776565b604051630d84daa960e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636c26d548903490611bc6908e908e908e90600401614501565b60206040518083038185885af1158015611be4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c09919061452f565b9150600061079b836000888b8b611cee565b600081606081901c3314801590611c3b57506001600160601b0319811615155b15611c59576040516381e69d9b60e01b815260040160405180910390fd5b600085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250939450611ca1925089915088905087612ba1565b905081602001825186818334f595505050806001600160a01b0316846001600160a01b031614611ce45760405163e6c4247b60e01b815260040160405180910390fd5b5050509392505050565b604080516060808201835260008083526020830152918101919091526001600160a01b038616600090815260016020526040812054611d2c91141590565b15611d55576040516345ed80e960e01b81526001600160a01b0387166004820152602401610776565b6001600160a01b0386163b611d7d57604051637483e90760e01b815260040160405180910390fd5b6040518060600160405280858152602001866001600160a01b0316815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250506001600160a01b03898116825260016020818152604093849020865181559086015191810180546001600160a01b03191692909316919091179091559083015192935083929091506002820190611e2c90826143f3565b50506040516001600160a01b03881691507fbc854169953f463b8509327459b9a9785beb45f6cdafdad8e75b9a33f401676890600090a295945050505050565b82546001600160a01b03168015801590611efa5750604051633da3df8760e21b81526001600160a01b0382169063f68f7e1c90611eb590339089908b908990899060040161454c565b6020604051808303816000875af1158015611ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef8919061433f565b155b15611f1857604051633b0cfdad60e01b815260040160405180910390fd5b505050505050565b6000606083825b818110156120d457827fe78ff87b9693fc54b8a43c3b84702ae7bfbb7fc6235105790033913428381e1f888884818110611f6357611f63614312565b9050602002810190611f759190614597565b611f839060208101906140c9565b898985818110611f9557611f95614312565b9050602002810190611fa79190614597565b611fb89060408101906020016145b7565b8a8a86818110611fca57611fca614312565b9050602002810190611fdc9190614597565b611fea9060408101906145df565b604051611ff8929190614625565b60405180910390208b8b8781811061201257612012614312565b90506020028101906120249190614597565b612032906060810190614635565b60405160200161204392919061467e565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b039094169381019390935265ffffffffffff9091166060830152608082015260a081019190915260c001604051602081830303815290604052805190602001206040516020016120ba9291906146ad565b60408051601f198184030181529190529250600101611f27565b508151602080840191909120604080517f432f54a02ff5e7b0998295a12eea6e09f826e00e15ebb49cdb5dd6914e7eadf793810193909352820152606081018590526080015b60405160208183030381529060405280519060200120925050509392505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141661222e5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b6001600160a01b0390921691600083156110ba5760405183600052602083015160405260408351036122c3576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d15176122c1575060006060526040525060016110ba565b505b604183510361230957606083015160001a6020526040830151606052602060016080600060015afa805186183d1517612307575060006060526040525060016110ba565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b806000816001600160401b0381111561237357612373614361565b6040519080825280602002602001820160405280156123ac57816020015b6123996137aa565b8152602001906001900390816123915790505b5090506000805b838110156124455760006123eb888a8989868181106123d4576123d4614312565b90506020028101906123e69190614597565b612c2e565b8584815181106123fd576123fd614312565b6020026020010181935082905250508160000361241c5780925061243c565b82811461243c57604051631ac80ea760e01b815260040160405180910390fd5b506001016123b3565b50600086815260026020526040902061245f908390613047565b600081815260208190526040902061134e908390613119565b6001600160a01b039182166000908152600460209081526040808320939094168252919091522090565b815460009063ffffffff81811691603081901c821691606082901c81169160901c16836124d6576000945050505050612544565b82158015906124e457508242115b156124f6576000945050505050612544565b8115612509576000945050505050612544565b8515158015612529575061252763ffffffff8083169088906131bf16565b155b1561253b576000945050505050612544565b60019450505050505b92915050565b60003382604001518360200151604051602001612569939291906146cf565b604051602081830303815290604052805190602001209050919050565b60007fe6fb0252edfa0719f65bc4b7ff11df181a55bbef752d6bacaff6f4a369160b757fe78ff87b9693fc54b8a43c3b84702ae7bfbb7fc6235105790033913428381e1f6125d760208601866140c9565b6125e760408701602088016145b7565b6125f460408801886145df565b604051612602929190614625565b6040519081900390206126186060890189614635565b60405160200161262992919061467e565b60408051601f198184030181528282528051602091820120908301969096526001600160a01b039094169381019390935265ffffffffffff9091166060830152608082015260a081019190915260c0015b60408051601f19818403018152828252805160209182012090830193909352810191909152606081018390526080015b60405160208183030381529060405280519060200120905092915050565b6000806126d6848685612c2e565b600086815260026020526040902091935091506126f49083906131de565b6000818152602081905260409020610fa990839061324d565b806000816001600160401b0381111561272857612728614361565b60405190808252806020026020018201604052801561276157816020015b61274e6137aa565b8152602001906001900390816127465790505b5090506000805b838110156127ed5760006127938888888581811061278857612788614312565b9050602002016132f1565b8584815181106127a5576127a5614312565b602002602001018193508290525050816000036127c4578092506127e4565b8281146127e457604051631ac80ea760e01b815260040160405180910390fd5b50600101612768565b50600081815260208190526040902061134e9083906134e7565b6001600160a01b0380841660009081526003602052604090208054909160ff808316926101008104909116916201000090910416801580612846575081155b15612864576040516305a74e6160e01b815260040160405180910390fd5b816001036128f95760006128788783612478565b905061288481876124a2565b15612893575050505050505050565b60015b8481101561096c576001600160a01b03928316600090815260018701602090815260408083208c87168452909152902054909216916128d58884612478565b91506128e182886124a2565b156128f157505050505050505050565b600101612896565b60006129058783612478565b905061291181876124a2565b15612924578261292081614328565b9350505b60015b848110156129a0576001600160a01b03928316600090815260018701602090815260408083208c87168452909152902054909216916129668884612478565b915061297282886124a2565b15612985578361298181614328565b9450505b8360000361299857505050505050505050565b600101612927565b508215610d6d576040516339093e6560e21b815260040160405180910390fd5b6000606083825b81811015612a7b57827fe772c71320d83e91a3076e1414875f1affb9dbb84c39717315b34b38b9b4ef8e888884818110612a0357612a03614312565b612a179260209182020190810191506140c9565b604051602001612a3a9291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120604051602001612a619291906146ad565b60408051601f1981840301815291905292506001016129c7565b508151602080840191909120604080517f7d1efebd1edb795fc2fef1b96025f39b311dd4c4481a7f726342969d70b423c8938101939093528201526060810185905260800161211a565b60007f0c087e39c84c32f053f4f3e0086d64914296a605bd371cfe0bdca1d506aed4707fe772c71320d83e91a3076e1414875f1affb9dbb84c39717315b34b38b9b4ef8e612b1660208601866140c9565b60405160200161267a9291909182526001600160a01b0316602082015260400190565b600080612b4684846132f1565b60008181526020819052604090209193509150610fa99083906135cf565b80516040516001600160601b031933606090811b821660208401529290921b9091166034820152600090604801612569565b600061254482613618565b600030828585604051602001612bb8929190614625565b60405160208183030381529060405280519060200120604051602001612c0e939291906001600160f81b0319815260609390931b6001600160601b03191660018401526015830191909152603582015260550190565b60408051601f198184030181529190528051602090910120949350505050565b612c366137aa565b60008481526002602052604081205465ffffffffffff16612c6a57604051635f9bd90760e11b815260040160405180910390fd5b426000612c7d60408601602087016145b7565b65ffffffffffff1614158015612cb2575065ffffffffffff8116612ca760408601602087016145b7565b65ffffffffffff1611155b15612cd0576040516308e8b93760e01b815260040160405180910390fd5b6000612cdf60208601866140c9565b90506000612ced8288612478565b805490915065ffffffffffff1615801590612d1657508054600160601b900465ffffffffffff16155b15612d34576040516335d9080560e01b815260040160405180910390fd5b6001600160a01b038216600090815260016020526040902054935083612d7857604051634eb2dcd760e01b81526001600160a01b0383166004820152602401610776565b6000612d97612d906001600160a01b038a1685613651565b8890613689565b90506040518061010001604052808565ffffffffffff168152602001886020016020810190612dc691906145b7565b65ffffffffffff16815260006020820152604001612e21612dea60608b018b614635565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506136d792505050565b63ffffffff168152602001846001600160a01b03168152602001896001600160a01b03168152602001826001600160a01b031681526020018a81525095508560046000856001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548165ffffffffffff021916908365ffffffffffff16021790555060208201518160000160066101000a81548165ffffffffffff021916908365ffffffffffff160217905550604082015181600001600c6101000a81548165ffffffffffff021916908365ffffffffffff16021790555060608201518160000160126101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060c08201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160040155905050806001600160a01b0316886001600160a01b0316846001600160a01b03167ff68f1df3d74509783e9300e8637b046836c091fd39cdcd33b14b0ffdf6940d628c60405161303391815260200190565b60405180910390a450505050935093915050565b805465ffffffffffff1661306e57604051635f9bd90760e11b815260040160405180910390fd5b8054600160301b90046001600160a01b031680158015906130fb57506040516365b7641360e11b81526001600160a01b0382169063cb6ec826906130b6908690600401613c11565b6020604051808303816000875af11580156130d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f9919061433f565b155b1561108257604051635e1d867960e01b815260040160405180910390fd5b80546001600160a01b03168061312e57505050565b6040516367b14e7760e11b81526001600160a01b0382169063cf629cee9061315a908690600401613c11565b6020604051808303816000875af1158015613179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319d919061433f565b151560000361108257604051635b0ae41f60e01b815260040160405180910390fd5b60006131cc8260026147fb565b831663ffffffff161515905092915050565b805465ffffffffffff1661320557604051635f9bd90760e11b815260040160405180910390fd5b8054600160301b90046001600160a01b031680158015906130fb5750604051637949978f60e01b81526001600160a01b03821690637949978f906130b690869060040161419b565b80546001600160a01b031680158015906132d357506040516334c85d0760e01b81526001600160a01b038216906334c85d079061328e90869060040161419b565b6020604051808303816000875af11580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d1919061433f565b155b1561108257604051635b0ae41f60e01b815260040160405180910390fd5b6132f96137aa565b60008060048161330c60208701876140c9565b6001600160a01b0390811682526020808301939093526040918201600090812089831682528452828120835161010081018552815465ffffffffffff8082168352600160301b8204811683890152600160601b82041695820195909552600160901b90940463ffffffff166060850152600180820154841660808601526002820154841660a0860152600382015490931660c0850152600481015460e0850152929650919350916133bf908701876140c9565b6001600160a01b03908116825260208201929092526040016000205460c0850151909350166134015760405163120a2e7760e01b815260040160405180910390fd5b846001600160a01b03168360a001516001600160a01b03161461343757604051634ca8886760e01b815260040160405180910390fd5b604083015165ffffffffffff16156134625760405163905e710760e01b815260040160405180910390fd5b805465ffffffffffff60601b1916600160601b65ffffffffffff4216021781556001600160a01b03851661349960208601866140c9565b6001600160a01b03167feee7de70b290c411a060d8bb9b1cba152a40d74147fef0974d7c2b25ac9b718a8560e001516040516134d791815260200190565b60405180910390a3509250929050565b80546000906001600160a01b031680613504576001915050612544565b604051636ac403ff60e11b81526001600160a01b0382169063d58807fe90613530908790600401613c11565b6020604051808303816000875af192505050801561356b575060408051601f3d908101601f191682019092526135689181019061433f565b60015b6135b5576040516001600160a01b03821681527fbab8c8262d5baeb21d73c5944504fb6c26d6eb88d29af8653bd3382ad8fe56a99060200160405180910390a16000915050612544565b80156135c657600192505050612544565b505b5092915050565b80546000906001600160a01b0316806135ec576001915050612544565b604051638b6e59ff60e01b81526001600160a01b03821690638b6e59ff9061353090879060040161419b565b805160019060021161364c57815160051b82016020830192505b82516020909301805190931091508083188202613632575b505b919050565b6040516001600160601b0319606084811b8216602084015283901b1660348201524260488201524660688201526000906088016126aa565b60006110ba61369b60408501856145df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061375f915050565b80516000908180805b83811015613755578581815181106136fa576136fa614312565b60200260200101519150601f821180613718575061371883836131bf565b1561373657604051631092ef5760e11b815260040160405180910390fd5b6137418260026147fb565b61374b9084614807565b92506001016136e0565b5090949350505050565b60008251600181018060401b6bfd61000080600a3d393df3001761ffff821186015283600a8201601587016000f5925050816137a35763301164256000526004601cfd5b9092525090565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60008083601f84011261380057600080fd5b5081356001600160401b0381111561381757600080fd5b60208301915083602082850101111561382f57600080fd5b9250929050565b60008060008060008060008060a0898b03121561385257600080fd5b883597506020890135965060408901356001600160401b038082111561387757600080fd5b6138838c838d016137ee565b909850965060608b013591508082111561389c57600080fd5b6138a88c838d016137ee565b909650945060808b01359150808211156138c157600080fd5b506138ce8b828c016137ee565b999c989b5096995094979396929594505050565b6001600160a01b038116811461113b57600080fd5b60008083601f84011261390957600080fd5b5081356001600160401b0381111561392057600080fd5b6020830191508360208260051b850101111561382f57600080fd5b6000806000806000806080878903121561395457600080fd5b863595506020870135613966816138e2565b945060408701356001600160401b038082111561398257600080fd5b61398e8a838b016138f7565b909650945060608901359150808211156139a757600080fd5b506139b489828a016137ee565b979a9699509497509295939492505050565b600080600080606085870312156139dc57600080fd5b84356139e7816138e2565b935060208501356001600160401b03811115613a0257600080fd5b613a0e878288016138f7565b9598909750949560400135949350505050565b60008060408385031215613a3457600080fd5b823591506020830135613a46816138e2565b809150509250929050565b600080600060408486031215613a6657600080fd5b83356001600160401b03811115613a7c57600080fd5b613a88868287016137ee565b9094509250506020840135613a9c816138e2565b809150509250925092565b60006080828403121561364a57600080fd5b600080600080600060808688031215613ad157600080fd5b853594506020860135613ae3816138e2565b935060408601356001600160401b0380821115613aff57600080fd5b613b0b89838a01613aa7565b94506060880135915080821115613b2157600080fd5b50613b2e888289016137ee565b969995985093965092949392505050565b600080600060408486031215613b5457600080fd5b8335613b5f816138e2565b925060208401356001600160401b03811115613b7a57600080fd5b613b86868287016138f7565b9497909650939450505050565b65ffffffffffff8082511683528060208301511660208401528060408301511660408401525063ffffffff6060820151166060830152608081015160018060a01b0380821660808501528060a08401511660a0850152505060c0810151613c0560c08401826001600160a01b03169052565b5060e090810151910152565b6020808252825182820181905260009190848201906040850190845b81811015613c5457613c40838551613b93565b928401926101009290920191600101613c2d565b50909695505050505050565b600080600080600060808688031215613c7857600080fd5b8535613c83816138e2565b94506020860135935060408601356001600160401b03811115613ca557600080fd5b613cb1888289016138f7565b96999598509660600135949350505050565b60008060208385031215613cd657600080fd5b82356001600160401b03811115613cec57600080fd5b613cf8858286016138f7565b90969095509350505050565b60008060408385031215613d1757600080fd5b8235613d22816138e2565b91506020830135613a46816138e2565b600080600080600060608688031215613d4a57600080fd5b8535613d55816138e2565b945060208601356001600160401b0380821115613d7157600080fd5b613d7d89838a016138f7565b90965094506040880135915080821115613b2157600080fd5b600080600060608486031215613dab57600080fd5b8335613db6816138e2565b92506020840135613dc6816138e2565b929592945050506040919091013590565b60008060408385031215613dea57600080fd5b82356001600160401b03811115613e0057600080fd5b613e0c85828601613aa7565b9250506020830135613a46816138e2565b600080600060408486031215613e3257600080fd5b83356001600160401b03811115613e4857600080fd5b613a88868287016138f7565b60006020828403121561364a57600080fd5b60008060408385031215613e7957600080fd5b613d228484613e54565b600060208284031215613e9557600080fd5b5035919050565b600060208284031215613eae57600080fd5b6110ba8383613e54565b60005b83811015613ed3578181015183820152602001613ebb565b50506000910152565b60008151808452613ef4816020860160208601613eb8565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e06020840152613f2960e084018a613edc565b8381036040850152613f3b818a613edc565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015613f8f57835183529284019291840191600101613f73565b50909c9b505050505050505050505050565b60008060008060008060808789031215613fba57600080fd5b863595506020870135613fcc816138e2565b945060408701356001600160401b0380821115613fe857600080fd5b61398e8a838b016137ee565b6000806000806060858703121561400a57600080fd5b8435614015816138e2565b93506140248660208701613e54565b925060408501356001600160401b0381111561403f57600080fd5b61404b878288016137ee565b95989497509550505050565b6000806040838503121561406a57600080fd5b8235915060208301356001600160401b0381111561408757600080fd5b61409385828601613aa7565b9150509250929050565b600080604083850312156140b057600080fd5b82356140bb816138e2565b946020939093013593505050565b6000602082840312156140db57600080fd5b81356110ba816138e2565b6020815265ffffffffffff825116602082015260018060a01b036020830151166040820152600060408301516060808401526110f66080840182613edc565b60008060006040848603121561413a57600080fd5b8335925060208401356001600160401b03811115613b7a57600080fd5b8051825260018060a01b03602082015116602083015260006040820151606060408501526110f66060850182613edc565b6020815260006110ba6020830184614157565b61010081016125448284613b93565b6020808252825182820181905260009190848201906040850190845b81811015613c545783516001600160a01b0316835292840192918401916001016141c6565b60008060006040848603121561420057600080fd5b833560ff81168114613b5f57600080fd5b60008060006040848603121561422657600080fd5b8335925060208401356001600160401b0381111561424357600080fd5b613b86868287016137ee565b60008060008060008060008060a0898b03121561426b57600080fd5b8835614276816138e2565b975060208901356001600160401b038082111561429257600080fd5b61429e8c838d016137ee565b909950975060408b01359150808211156142b757600080fd5b6142c38c838d016137ee565b909750955060608b0135945060808b01359150808211156138c157600080fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161430b5761430b6142e3565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600081614337576143376142e3565b506000190190565b60006020828403121561435157600080fd5b815180151581146110ba57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061438b57607f821691505b60208210810361364a57634e487b7160e01b600052602260045260246000fd5b601f821115611082576000816000526020600020601f850160051c810160208610156143d45750805b601f850160051c820191505b81811015611f18578281556001016143e0565b81516001600160401b0381111561440c5761440c614361565b6144208161441a8454614377565b846143ab565b602080601f831160018114614455576000841561443d5750858301515b600019600386901b1c1916600185901b178555611f18565b600085815260208120601f198616915b8281101561448457888601518255948401946001909101908401614465565b50858210156144a25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115612544576125446142e3565b81810381811115612544576125446142e3565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038416815260406020820181905260009061452690830184866144d8565b95945050505050565b60006020828403121561454157600080fd5b81516110ba816138e2565b6001600160a01b0386811682528516602082015260806040820181905260009061457890830186614157565b828103606084015261458b8185876144d8565b98975050505050505050565b60008235607e198336030181126145ad57600080fd5b9190910192915050565b6000602082840312156145c957600080fd5b813565ffffffffffff811681146110ba57600080fd5b6000808335601e198436030181126145f657600080fd5b8301803591506001600160401b0382111561461057600080fd5b60200191503681900382131561382f57600080fd5b8183823760009101908152919050565b6000808335601e1984360301811261464c57600080fd5b8301803591506001600160401b0382111561466657600080fd5b6020019150600581901b360382131561382f57600080fd5b60008184825b858110156146a2578135835260209283019290910190600101614684565b509095945050505050565b600083516146bf818460208801613eb8565b9190910191825250602001919050565b60006bffffffffffffffffffffffff19808660601b16835284516146fa816014860160208901613eb8565b60609490941b169190920160148101919091526028019392505050565b600181815b80851115614752578160001904821115614738576147386142e3565b8085161561474557918102915b93841c939080029061471c565b509250929050565b60008261476957506001612544565b8161477657506000612544565b816001811461478c5760028114614796576147b2565b6001915050612544565b60ff8411156147a7576147a76142e3565b50506001821b612544565b5060208310610133831016604e8410600b84101617156147d5575081810a612544565b6147df8383614717565b80600019048211156147f3576147f36142e3565b029392505050565b60006110ba838361475a565b63ffffffff8181168382160190808211156135c8576135c86142e356fea2646970667358221220807a0dcf2c6cec2c89009e31067a7ecb222a220b82380e3501b0be4d5c970b7a64736f6c634300081900336080604052348015600f57600080fd5b506101ba8061001f6000396000f3fe60806040526004361061001e5760003560e01c80636c26d54814610023575b600080fd5b6100366100313660046100b4565b610052565b6040516001600160a01b03909116815260200160405180910390f35b6000806020600084516020860134885af19050600051915080610097576040516301b3a38360e21b81526001600160a01b038516600482015260240160405180910390fd5b5092915050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156100c757600080fd5b82356001600160a01b03811681146100de57600080fd5b9150602083013567ffffffffffffffff808211156100fb57600080fd5b818501915085601f83011261010f57600080fd5b8135818111156101215761012161009e565b604051601f8201601f19908116603f011681019083821181831017156101495761014961009e565b8160405282815288602084870101111561016257600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea264697066735822122082f36f23f015ada9d664f10f5d27ddc7546765cf8fc5e39ce6bf9a4c41ed5a7564736f6c63430008190033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x000000000069E2a187AEFFb852bF3cCdC95151B2\e\\Registry successfully deployed\e]8;;\e\\\n'
# Schema Validator Impl
code=$(cast code 0x6a1154d99087f6bdb183cfc8cf7b6e67c641d9e3 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x7109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000006080604052348015600f57600080fd5b506104768061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a7146100515780636b122fe01461008a5780637949978f1461009f578063cb6ec826146100b3575b600080fd5b61007561005f3660046100ec565b6001600160e01b03191663b2275fa960e01b1490565b60405190151581526020015b60405180910390f35b6100926100c9565b604051610081919061011d565b6100756100ad36600461016c565b50600190565b6100756100c1366004610185565b600192915050565b606060405180610280016040528061024681526020016101fb6102469139905090565b6000602082840312156100fe57600080fd5b81356001600160e01b03198116811461011657600080fd5b9392505050565b60006020808352835180602085015260005b8181101561014b5785810183015185820160400152820161012f565b506000604082860101526040601f19601f8301168501019250505092915050565b6000610100828403121561017f57600080fd5b50919050565b6000806020838503121561019857600080fd5b823567ffffffffffffffff808211156101b057600080fd5b818501915085601f8301126101c457600080fd5b8135818111156101d357600080fd5b8660208260081b85010111156101e857600080fd5b6020929092019691955090935050505056fe28656e756d20455243373537394d6f64756c655479706520284e6f6e652c56616c696461746f722c4578656375746f722c46616c6c6261636b2c486f6f6b292c737472756374204d6f64756c6554797065417474726962757465732028455243373537394d6f64756c6554797065206d6f64756c65547970652c627974657320656e636f64656441747472696275746573292c737472756374204d6f64756c6541747472696275746573202861646472657373206d6f64756c65416464726573732c6279746573207061636b6564417474726962757465732c4d6f64756c6554797065417474726962757465735b5d2074797065417474726962757465732c6279746573207061636b656445787465726e616c446570656e64656e6379292c656e756d205369676e61747572655479706520284e6f6e652c534543503235364b312c45524331323731292c7374727563742041756469746f722028737472696e67206e616d652c737472696e67207572692c737472696e675b5d20617574686f7273292c737472756374205369676e617475726520285369676e61747572655479706520736967547970652c61646472657373207369676e65722c6279746573207369676e6174757265446174612c627974657333322068617368292c73747275637420417564697453756d6d6172792028737472696e67207469746c652c41756469746f722061756469746f722c4d6f64756c6541747472696275746573206d6f64756c65417474726962757465732c5369676e6174757265207369676e61747572652929a26469706673582212204726af82f957cdb631a52b984e7986b85ac718da9f73354a4e4e4aba1e0f7c9e64736f6c63430008190033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x6a1154d99087f6bdb183cfc8cf7b6e67c641d9e3\e\\Schema Validator successfully deployed\e]8;;\e\\\n'
# Schema Validator Proxy
code=$(cast code 0x86430e19d7d204807bbb8cda997bb57b7ee785dd --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x7109709ecfa91a80626ff3989d68f67f5b1dd12b00000000000000000000000060a0604052604051610e6e380380610e6e8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b505050610489565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e600080516020610e4e833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f8919061046d565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b80600080516020610e4e8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6105248061092a83390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b03808211156103e657600080fd5b818601915086601f8301126103fa57600080fd5b81518181111561040c5761040c610363565b604051601f8201601f19908116603f0116810190838211818310171561043457610434610363565b8160405282815289602084870101111561044d57600080fd5b61045e836020830160208801610379565b80955050505050509250925092565b6000825161047f818460208701610379565b9190910192915050565b6080516104876104a36000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a9a894a6bcae36ad95efe9ad586ba6184ef220ff9186606dcd0cc687f032365d64736f6c63430008190033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212203fbd8cfb2d4fbb0565995a90dbae5aab0a992ab7c875f2fd813f8b9e260d040664736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000006a1154d99087f6bdb183cfc8cf7b6e67c641d9e3000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x86430e19d7d204807bbb8cda997bb57b7ee785dd\e\\Schema Validator Proxy successfully deployed\e]8;;\e\\\n'
# Resolver Impl
code=$(cast code 0x80227007ea32188620ce93ed8702807dd7e5af61 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x7109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000006080604052348015600f57600080fd5b506102b18061001f6000396000f3fe6080604052600436106100555760003560e01c806301ffc9a71461005a57806334c85d071461009f5780638b6e59ff1461009f578063cf629cee146100b3578063d58807fe146100b3578063f68f7e1c146100c9575b600080fd5b34801561006657600080fd5b5061008b6100753660046100e2565b6001600160e01b0319166314f0f87d60e21b1490565b604051901515815260200160405180910390f35b61008b6100ad366004610113565b50600190565b61008b6100c136600461012c565b600192915050565b61008b6100d73660046101bd565b600195945050505050565b6000602082840312156100f457600080fd5b81356001600160e01b03198116811461010c57600080fd5b9392505050565b6000610100828403121561012657600080fd5b50919050565b6000806020838503121561013f57600080fd5b823567ffffffffffffffff8082111561015757600080fd5b818501915085601f83011261016b57600080fd5b81358181111561017a57600080fd5b8660208260081b850101111561018f57600080fd5b60209290920196919550909350505050565b80356001600160a01b03811681146101b857600080fd5b919050565b6000806000806000608086880312156101d557600080fd5b6101de866101a1565b94506101ec602087016101a1565b9350604086013567ffffffffffffffff8082111561020957600080fd5b908701906060828a03121561021d57600080fd5b9093506060870135908082111561023357600080fd5b818801915088601f83011261024757600080fd5b81358181111561025657600080fd5b89602082850101111561026857600080fd5b969995985093965060200194939250505056fea26469706673582212200fd7510f89312a1ee1883bc4ed18362003432e2dd98611e0980494e3b20c65b764736f6c63430008190033 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x80227007ea32188620ce93ed8702807dd7e5af61\e\\Resolver successfully deployed\e]8;;\e\\\n'
# Resolver Proxy
code=$(cast code 0xf0f468571e764664c93308504642af941d9f77f1 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7 0x7109709ecfa91a80626ff3989d68f67f5b1dd12b00000000000000000000000060a0604052604051610e6e380380610e6e8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b505050610489565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e600080516020610e4e833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f8919061046d565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b80600080516020610e4e8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6105248061092a83390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b03808211156103e657600080fd5b818601915086601f8301126103fa57600080fd5b81518181111561040c5761040c610363565b604051601f8201601f19908116603f0116810190838211818310171561043457610434610363565b8160405282815289602084870101111561044d57600080fd5b61045e836020830160208801610379565b80955050505050509250925092565b6000825161047f818460208701610379565b9190910192915050565b6080516104876104a36000396000601001526104876000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516102129190610422565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff8082111561039957600080fd5b818501915085601f8301126103ad57600080fd5b8135818111156103bf576103bf61033c565b604051601f8201601f19908116603f011681019083821181831017156103e7576103e761033c565b8160405282815288602084870101111561040057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156104435760208186018101518583015201610429565b50600092019182525091905056fea2646970667358221220a9a894a6bcae36ad95efe9ad586ba6184ef220ff9186606dcd0cc687f032365d64736f6c63430008190033608060405234801561001057600080fd5b5060405161052438038061052483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610427806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a919061038e565b3480156100f057600080fd5b506100646100ff3660046103a8565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103c5565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff808211156102bf57600080fd5b818601915086601f8301126102d357600080fd5b8135818111156102e5576102e561025c565b604051601f8201601f19908116603f0116810190838211818310171561030d5761030d61025c565b8160405282815289602084870101111561032657600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000815180845260005b8181101561036e57602081850181015186830182015201610352565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a16020830184610348565b9392505050565b6000602082840312156103ba57600080fd5b81356103a181610247565b6001600160a01b03831681526040602082018190526000906103e990830184610348565b94935050505056fea26469706673582212203fbd8cfb2d4fbb0565995a90dbae5aab0a992ab7c875f2fd813f8b9e260d040664736f6c63430008190033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000080227007ea32188620ce93ed8702807dd7e5af61000000000000000000000000000000333034e9f539ce08819e12c1b8cb29084d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0xf0f468571e764664c93308504642af941d9f77f1\e\\Resolver Proxy successfully deployed\e]8;;\e\\\n'
# RS Attester
code=$(cast code 0x000000333034e9f539ce08819e12c1b8cb29084d --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67 0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c7620000000000000000000000000000000000000000000000000000000000000060ec137d270033177e21241c638ae1ec48c607da859317fb7d630ee571b791889a00000000000000000000000000000000000000000000000000000000000001a4b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000fd0732dc9e303f09fcef3a7388ad10a83459ec99000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000099c6012a4c2642a23685b060b670f888d6f9fe66000000000000000000000000310c756ce9f58e16bae0408098e2e5977bca3236000000000000000000000000c92e00c1b9e71db83c9c474d66078df141d6652d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x000000333034e9f539ce08819e12c1b8cb29084d\e\\Rhinestone Attester successfully deployed\e]8;;\e\\\n'
# Staff Safe
code=$(cast code 0x99c6012a4c2642a23685b060b670f888d6f9fe66 --rpc-url "$expanded_url")
if [ "$code" == "0x" ]; then
cast send 0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67 0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000005390000000000000000000000000000000000000000000000000000000000000164b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000fd0732dc9e303f09fcef3a7388ad10a83459ec990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000eb8d74dab414625bccf0df8c3c40bec7ab3d3729000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 --rpc-url "$expanded_url" --private-key "$PRIVATE_KEY"
fi
printf '\e]8;;https://contractscan.xyz/contract/0x99c6012a4c2642a23685b060b670f888d6f9fe66\e\\Staff Safe successfully deployed\e]8;;\e\\\n'
done < <(curl -s https://raw.githubusercontent.com/rhinestonewtf/constants/refs/heads/main/networks.txt)