70 txs
77 calls
constructor
constructor(string _name, string _symbol, address[2] _coins, address _math, bytes32 _salt, uint256 packed_precisions, uint256 packed_gamma_A, uint256 packed_fee_params, uint256 packed_rebalancing_params, uint256 initial_price)
functions
A
viewfunction A() view returns (uint256)
adjustment_step
viewfunction adjustment_step() view returns (uint256)
admin_fee
viewfunction admin_fee() view returns (uint256)
admin
viewfunction admin() view returns (address)
allowance
viewfunction allowance(address arg0, address arg1) view returns (uint256)
allowed_extra_profit
viewfunction allowed_extra_profit() view returns (uint256)
balanceOf
viewfunction balanceOf(address arg0) view returns (uint256)
balances
viewfunction balances(uint256 arg0) view returns (uint256)
calc_token_amount
viewfunction calc_token_amount(uint256[2] amounts, bool deposit) view returns (uint256)
calc_token_fee
viewfunction calc_token_fee(uint256[2] amounts, uint256[2] xp, bool donation, bool deposit) view returns (uint256)
calc_token_fee
viewfunction calc_token_fee(uint256[2] amounts, uint256[2] xp, bool donation) view returns (uint256)
calc_token_fee
viewfunction calc_token_fee(uint256[2] amounts, uint256[2] xp) view returns (uint256)
calc_withdraw_fixed_out
viewfunction calc_withdraw_fixed_out(uint256 lp_token_amount, uint256 i, uint256 amount_i) view returns (uint256)
calc_withdraw_one_coin
viewfunction calc_withdraw_one_coin(uint256 lp_token_amount, uint256 i) view returns (uint256)
coins
viewfunction coins(uint256 arg0) view returns (address)
D
viewfunction D() view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
donation_duration
viewfunction donation_duration() view returns (uint256)
donation_protection_expiry_ts
viewfunction donation_protection_expiry_ts() view returns (uint256)
donation_protection_lp_threshold
viewfunction donation_protection_lp_threshold() view returns (uint256)
donation_protection_period
viewfunction donation_protection_period() view returns (uint256)
donation_shares_max_ratio
viewfunction donation_shares_max_ratio() view returns (uint256)
donation_shares
viewfunction donation_shares() view returns (uint256)
factory
viewfunction factory() view returns (address)
fee_calc
viewfunction fee_calc(uint256[2] xp) view returns (uint256)
fee_gamma
viewfunction fee_gamma() view returns (uint256)
fee_receiver
viewfunction fee_receiver() view returns (address)
fee
viewfunction fee() view returns (uint256)
future_A_gamma_time
viewfunction future_A_gamma_time() view returns (uint256)
future_A_gamma
viewfunction future_A_gamma() view returns (uint256)
gamma
viewfunction gamma() view returns (uint256)
get_dx
viewfunction get_dx(uint256 i, uint256 j, uint256 dy, uint256 n_iter) view returns (uint256)
get_dx
viewfunction get_dx(uint256 i, uint256 j, uint256 dy) view returns (uint256)
get_dy
viewfunction get_dy(uint256 i, uint256 j, uint256 dx) view returns (uint256)
get_virtual_price
viewfunction get_virtual_price() view returns (uint256)
initial_A_gamma_time
viewfunction initial_A_gamma_time() view returns (uint256)
initial_A_gamma
viewfunction initial_A_gamma() view returns (uint256)
last_donation_release_ts
viewfunction last_donation_release_ts() view returns (uint256)
last_prices
viewfunction last_prices() view returns (uint256)
last_timestamp
viewfunction last_timestamp() view returns (uint256)
lp_price
viewfunction lp_price() view returns (uint256)
ma_time
viewfunction ma_time() view returns (uint256)
MATH
viewfunction MATH() view returns (address)
mid_fee
viewfunction mid_fee() view returns (uint256)
name
viewfunction name() view returns (string)
out_fee
viewfunction out_fee() view returns (uint256)
packed_fee_params
viewfunction packed_fee_params() view returns (uint256)
packed_rebalancing_params
viewfunction packed_rebalancing_params() view returns (uint256)
precisions
viewfunction precisions() view returns (uint256[2])
price_oracle
viewfunction price_oracle() view returns (uint256)
price_scale
viewfunction price_scale() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
user_supply
viewfunction user_supply() view returns (uint256)
version
viewfunction version() view returns (string)
VIEW
viewfunction VIEW() view returns (address)
virtual_price
viewfunction virtual_price() view returns (uint256)
xcp_profit_a
viewfunction xcp_profit_a() view returns (uint256)
xcp_profit
viewfunction xcp_profit() view returns (uint256)
add_liquidity
nonpayablefunction add_liquidity(uint256[2] amounts, uint256 min_mint_amount, address receiver, bool donation) returns (uint256)
add_liquidity
nonpayablefunction add_liquidity(uint256[2] amounts, uint256 min_mint_amount, address receiver) returns (uint256)
add_liquidity
nonpayablefunction add_liquidity(uint256[2] amounts, uint256 min_mint_amount) returns (uint256)
apply_new_parameters
nonpayablefunction apply_new_parameters(uint256 _new_mid_fee, uint256 _new_out_fee, uint256 _new_fee_gamma, uint256 _new_allowed_extra_profit, uint256 _new_adjustment_step, uint256 _new_ma_time)
approve
nonpayablefunction approve(address _spender, uint256 _value) returns (bool)
exchange_received
nonpayablefunction exchange_received(uint256 i, uint256 j, uint256 dx, uint256 min_dy, address receiver) returns (uint256)
exchange_received
nonpayablefunction exchange_received(uint256 i, uint256 j, uint256 dx, uint256 min_dy) returns (uint256)
exchange
nonpayablefunction exchange(uint256 i, uint256 j, uint256 dx, uint256 min_dy, address receiver) returns (uint256)
exchange
nonpayablefunction exchange(uint256 i, uint256 j, uint256 dx, uint256 min_dy) returns (uint256)
ramp_A_gamma
nonpayablefunction ramp_A_gamma(uint256 future_A, uint256 future_gamma, uint256 future_time)
remove_liquidity_fixed_out
nonpayablefunction remove_liquidity_fixed_out(uint256 token_amount, uint256 i, uint256 amount_i, uint256 min_amount_j, address receiver) returns (uint256)
remove_liquidity_fixed_out
nonpayablefunction remove_liquidity_fixed_out(uint256 token_amount, uint256 i, uint256 amount_i, uint256 min_amount_j) returns (uint256)
remove_liquidity_one_coin
nonpayablefunction remove_liquidity_one_coin(uint256 lp_token_amount, uint256 i, uint256 min_amount, address receiver) returns (uint256)
remove_liquidity_one_coin
nonpayablefunction remove_liquidity_one_coin(uint256 lp_token_amount, uint256 i, uint256 min_amount) returns (uint256)
remove_liquidity
nonpayablefunction remove_liquidity(uint256 amount, uint256[2] min_amounts, address receiver) returns (uint256[2])
remove_liquidity
nonpayablefunction remove_liquidity(uint256 amount, uint256[2] min_amounts) returns (uint256[2])
set_admin_fee
nonpayablefunction set_admin_fee(uint256 admin_fee)
set_donation_duration
nonpayablefunction set_donation_duration(uint256 duration)
set_donation_protection_params
nonpayablefunction set_donation_protection_params(uint256 _period, uint256 _threshold, uint256 _max_shares_ratio)
set_periphery
nonpayablefunction set_periphery(address views, address math)
stop_ramp_A_gamma
nonpayablefunction stop_ramp_A_gamma()
transfer
nonpayablefunction transfer(address _to, uint256 _value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address _from, address _to, uint256 _value) returns (bool)
events
AddLiquidity
event AddLiquidity(address indexed receiver, uint256[2] token_amounts, uint256 fee, uint256 token_supply, uint256 price_scale)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimAdminFee
event ClaimAdminFee(address indexed admin, uint256[2] tokens)
Donation
event Donation(address indexed donor, uint256[2] token_amounts)
NewParameters
event NewParameters(uint256 mid_fee, uint256 out_fee, uint256 fee_gamma, uint256 allowed_extra_profit, uint256 adjustment_step, uint256 ma_time)
RampAgamma
event RampAgamma(uint256 initial_A, uint256 future_A, uint256 initial_gamma, uint256 future_gamma, uint256 initial_time, uint256 future_time)
RemoveLiquidity
event RemoveLiquidity(address indexed provider, uint256[2] token_amounts, uint256 token_supply)
RemoveLiquidityImbalance
event RemoveLiquidityImbalance(address indexed provider, uint256 lp_token_amount, uint256[2] token_amounts, uint256 approx_fee, uint256 price_scale)
SetAdminFee
event SetAdminFee(uint256 admin_fee)
SetDonationDuration
event SetDonationDuration(uint256 duration)
SetDonationProtection
event SetDonationProtection(uint256 donation_protection_period, uint256 donation_protection_lp_threshold, uint256 donation_shares_max_ratio)
SetPeriphery
event SetPeriphery(address views, address math)
StopRampA
event StopRampA(uint256 current_A, uint256 current_gamma, uint256 time)
TokenExchange
event TokenExchange(address indexed buyer, uint256 sold_id, uint256 tokens_sold, uint256 bought_id, uint256 tokens_bought, uint256 fee, uint256 price_scale)
Transfer
event Transfer(address indexed sender, address indexed receiver, uint256 value)
errors
No errors.
creation bytecode
0x615b22515034610487576020615ec65f395f51602081615ec6015f395f51604081116104875750606081615ec601606039506020615ee65f395f51602081615ec6015f395f51602081116104875750604081615ec60160c039506020615f065f395f518060a01c61048757610100526020615f265f395f518060a01c61048757610120526020615f465f395f518060a01c610487576101405273caa015e69ee5afec0b9af280c130998aaab0390660015573113813f1dc481f1924de22f77fa69c946393ee995f55639502f90060195533615a82526020606051015f81601f0160051c6003811161048757801561011157905b8060051b606001518160051b60a001615a0201526001018181186100f2575b50505060c051615b025260e051615b225261010051615a425261012051615a62526020615f86604039610145610160610462565b6101608051615a02526020810151615a2252506020615fa660403961016b6101a0610462565b6101a06040816101605e506402540be4006101605110156101fe576020806102005260096101a0527f67616d6d613c4d494e00000000000000000000000000000000000000000000006101c0526101a08161020001602982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101e052806004016101fcfd5b6702c2fd72164d8000610160511115610289576020806102005260096101a0527f67616d6d613e4d415800000000000000000000000000000000000000000000006101c0526101a08161020001602982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101e052806004016101fcfd5b614e2061018051101561030e576020806102005260056101a0527f413c4d494e0000000000000000000000000000000000000000000000000000006101c0526101a08161020001602582825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101e052806004016101fcfd5b6305f5e100610180511115610395576020806102005260056101a0527f413e4d41580000000000000000000000000000000000000000000000000000006101c0526101a08161020001602582825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101e052806004016101fcfd5b6020615fa65f395f516006556020615fa65f395f516008556020615fe65f395f516017556020615fc65f395f5160185560206160065f395f5160025560206160065f395f5160035560206160065f395f5160045542600555670de0b6b3a764000060155562093a80600c555f600e55610258600f556702c68af0bb14000060105567016345785d8a0000600b55305f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f6101a05260206101a0a3615a0261048b61000039615b42610000f35b6fffffffffffffffffffffffffffffffff60405116815260405160801c602082015250565b5f80fd5f3560e01c60026048820660011b61597201601e395f51565b635b41b90881186100375760843610341761596e5733610900526100aa565b63d5f8da308118612c965760643610341761596e576020610059610760612f6d565b6107606040816108405e50606060046108803760a06108406103805e6100806107a0614dd5565b6107a0f35b63a64833a081186101785760a43610341761596e576084358060a01c61596e57610900525b5f5c60011461596e5760015f5d600435604052604435606052336080525f60a0526100d6610940612c9a565b610940516109205260406004610600376109205161064052606435610660526101006109a0613d63565b6109a06060816109405e506024356040526109405160605261090051608052610127614363565b337f143f1f8e861fbdeddd5b46e844b7d3ac7b86a122f36e8c463859ee6811b1f29c6004356109a052610920516109c0526024356109e0526060610940610a005e60c06109a0a260206109405f5f5df35b633dd654788118612c96573461596e5760175460405260206040f35b6329b244bb8118612c965760843610341761596e5733610900526101d8565b63767691e781186102a75760a43610341761596e576084358060a01c61596e57610900525b5f5c60011461596e5760015f5d60043560405260443560605233608052600160a052610205610940612c9a565b6109405161092052604060046106003761092051610640526064356106605261022f6109a0613d63565b6109a06060816109405e506024356040526109405160605261090051608052610256614363565b337f143f1f8e861fbdeddd5b46e844b7d3ac7b86a122f36e8c463859ee6811b1f29c6004356109a052610920516109c0526024356109e0526060610940610a005e60c06109a0a260206109405f5f5df35b6348155d2781186103075760843610341761596e576064356040525b60206001546333e39968606052606060046080373060e052604051610100526020606060a4607c845afa6102f9573d5f5f3e3d5ffd5b60203d1061596e5760609050f35b63f9ed95978118612c96573461596e5760095460405260206040f35b630b4c7e4d81186103475760643610341761596e5733610600525f610620526103f1565b63083812e58118612c96573461596e576020601754604052610369606061313d565b6060602081019050f35b630c3e4b5481186103a15760843610341761596e576064358060a01c61596e57610600525f610620526103f1565b63c146bf948118612c96573461596e5760045460405260206040f35b63865147388118612c965760a43610341761596e576064358060a01c61596e57610600526084358060011c61596e57610620525b5f5c60011461596e5760015f5d60043560243580820182811061596e579050905061048e576020806106a052600f610640527f6e6f20636f696e7320746f20616464000000000000000000000000000000000061066052610640816106a001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610680528060040161069cfd5b6011546106405260125461066052604036610680376011546106c0526012546106e0525f6002905b806107005261070051600281101561596e5760051b600401351561055b576107005160405261070051600281101561596e5760051b60040135606052336080525f60a052610505610720612c9a565b6107205161070051600281101561596e5760051b610680015261070051600281101561596e5760051b6106c001805161070051600281101561596e5760051b610680015180820182811061596e57905090508152505b6001018181186104b65750506002546107005260406106c060405e610700516080526105886107606130c6565b6107606040816107205e50604061064060405e610700516080526105ad6107a06130c6565b6107a06040816107605e506013546105c457426009555b6105cf6107e0612f6d565b6107e06040816107a05e5060406107a060405e604061076060805e6105f5610800614492565b610800516107e0525f5463e68647666108205260406107a06108405e60406107206108805e5f6108c052602061082060a461083c845afa610638573d5f5f3e3d5ffd5b60203d1061596e5761082090505161080052601d54610820525f610840526107e051156106a757610820516108005180820281158383830414171561596e57905090506107e051801561596e57808204905090506108205180820382811161596e5790509050610840526106c9565b61080051604052610700516060526106c0610860613426565b61086051610840525b61084051610749576020806108c052600e610860527f6e6f7468696e67206d696e74656400000000000000000000000000000000000061088052610860816108c001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06108a052806004016108bcfd5b5f610860526107e05115610b3c5760406106806101605e60406107206101a05e610620516101e0526001610200525f610220526107876108806144f7565b610880516108405180820281158383830414171561596e57905090506402540be400810490506001810181811061596e57905061086052610840516108605180820382811161596e579050905061084052610620516109045761084051670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050610820516108405180820182811061596e5790509050801561596e578082049050905061088052610880511561083c57600a54151561083e565b5f5b156108e257600f546108a052610880516108a05180820281158383830414171561596e5790509050601054801561596e57808204905090506108a051808281188284100218905090506108c052600e5442808281188284110218905090506108e0526108e0516108c05180820182811061596e5790509050426108a05180820182811061596e5790509050808281188284100218905090506109005261090051600e555b61060051604052610840516060526108fb6108a06147c6565b6108a050610b0a565b6106005115610985576020806108e0526010610880527f6e6f6e7a65726f207265636569766572000000000000000000000000000000006108a052610880816108e001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06108c052806004016108dcfd5b600a546108405180820182811061596e579050905061088052600b5461088051670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050610820516108405180820182811061596e5790509050801561596e57808204905090501115610a64576020806109005260136108a0527f646f6e6174696f6e2061626f76652063617021000000000000000000000000006108c0526108a08161090001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06108e052806004016108fcfd5b5f604052610a736108c06132f0565b6108c051600c5480820281158383830414171561596e579050905061088051801561596e57808204905090506108a052426108a05180820382811161596e5790509050600d5561088051600a55601d546108405180820182811061596e5790509050601d55337fc05458c16b884817a70d3d18223db5fe4adb4cb541a5573bef0daae7a6f2054260406106806108c05e60406108c0a25b60406107a06101005e60406107206101405e6108005161018052610b2f610880613560565b6108805161070052610b85565b61080051601355670de0b6b3a7640000601655670de0b6b3a7640000601455670de0b6b3a76400006015556106005160405261084051606052610b806108806147c6565b610880505b604435610840511015610c0a576020806108e0526008610880527f736c6970706167650000000000000000000000000000000000000000000000006108a052610880816108e001602882825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06108c052806004016108dcfd5b610600517f7196cbf63df1f2ec20638e683ebe51d18260be510592ee1e2efe3f3cfd4c33e960406106806108805e610860516108c052610820516108405180820182811061596e57905090506108e052610700516109005260a0610880a260206108405f5f5df35b635b36389c8118610c915760643610341761596e57336102a052610cdc565b6392526c0c8118612c96573461596e576020601854604052610cb3606061313d565b6060f35b633eb1719f8118610f455760843610341761596e576064358060a01c61596e576102a0525b5f5c60011461596e5760015f5d601d546102c05233604052600435606052610d056102e0614838565b6102e0506040366102e037601354610320526102c05160043518610d64575f6002905b806103405261034051600281101561596e576011015461034051600281101561596e5760051b6102e00152600101818118610d28575050610e70565b5f6002905b806103405261034051600281101561596e576011015460043580820281158383830414171561596e57905090506102c051801561596e578082049050905061034051600281101561596e5760051b6102e0015261034051600281101561596e5760051b6024013561034051600281101561596e5760051b6102e001511015610e63576020806103c0526008610360527f736c69707061676500000000000000000000000000000000000000000000000061038052610360816103c001602882825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06103a052806004016103bcfd5b600101818118610d695750505b610320516102c0516103205160043580820281158383830414171561596e57905090500480820382811161596e57905090506013555f6002905b80610340526103405160405261034051600281101561596e5760051b6102e001516060526102a051608052610edd614363565b600101818118610eaa575050337fdd3c0336a16f1b64f172b7bb0dad5b2b3c7c76f91e8c4aafd6aae60dce80015360406102e06103405e6102c05160043580820382811161596e5790509050610380526060610340a2610f3b6148aa565b60406102e05f5f5df35b637c71109f8118612c96573461596e57600d5460405260206040f35b63512d63658118610f805760843610341761596e5733610a2052611071565b6323b872dd8118612c965760643610341761596e576004358060a01c61596e57610180526024358060a01c61596e576101a052601c610180516020525f5260405f2080336020525f5260405f209050546101c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c051146110295761018051604052336060526101c05160443580820382811161596e57905090506080526110296155ae565b604061018060405e60443560805261103f615603565b60016101e05260206101e0f35b63b2f9173e8118612c965760a43610341761596e576084358060a01c61596e57610a20525b5f5c60011461596e5760015f5d60206080600461076037610a20516107e05261109b610a40615368565b610a405f5f5df35b63f1dc3cc981186110c25760643610341761596e5733610a2052611115565b634903b0d18118612c965760243610341761596e57600435600281101561596e576011015460405260206040f35b630fbcee6e8118612c965760843610341761596e576064358060a01c61596e57610a20525b5f5c60011461596e5760015f5d602060043561076052602435806001036001811161596e579050610780525f6107a0526044356107c052610a20516107e05261115f610a40615368565b610a405f5f5df35b631a2430cc8118612c96573461596e57601d54600a5480820382811161596e579050905060405260206040f35b634fb08c5e81186111fb5760443610341761596e5760206111b6610760612f6d565b6107606040816108405e5060043561088052602435806001036001811161596e5790506108a0525f6108c05260a06108406103805e6111f66107a0614dd5565b6107a0f35b63244c7c2e8118612c96573461596e5761121361588a565b61121e6101a0612f6d565b6101a06040816101605e506101605160801b6101a052610180516101a051176101a0526101a0516006556101a05160085542600755426009557f5f0e7fba3d100c9e19446e1c92fe436f0a9a22fe99669360e4fdd6d3de2fc28460406101606101c05e426102005260606101c0a1005b63a9059cbb81186112d85760443610341761596e576004358060a01c61596e576101805233604052610180516060526024356080526112cb615603565b60016101a05260206101a0f35b6386fc88d38118611303573461596e575f5c60011461596e5760206112fe61016061570e565b610160f35b630b7b594b8118612c96573461596e5760155460405260206040f35b63095ea7b38118612c965760443610341761596e576004358060a01c61596e5760c0523360405260c05160605260243560805261135a6155ae565b600160e052602060e0f35b63cab4d3db81186113ca573461596e5760206020615a825f395f5163cab4d3db604052602060406004605c845afa61139f573d5f5f3e3d5ffd5b3d602081183d60201002188060400160601161596e576040518060a01c61596e576080525060809050f35b632a3f192b8118612c96573461596e5760015460405260206040f35b63f851a4408118612c96573461596e5760206020615a825f395f5163f851a440604052602060406004605c845afa611420573d5f5f3e3d5ffd5b3d602081183d60201002188060400160601161596e576040518060a01c61596e576080525060809050f35b63ed8e84f381186114b15760643610341761596e576044358060011c61596e57604052602060015463bc5bc6b76060526040600460803760405160c0523060e052602060606084607c845afa6114a3573d5f5f3e3d5ffd5b60203d1061596e5760609050f35b6306fdde038118612c96573461596e57602080604052806040016060615aa282398051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63556d6e9f811861154d5760643610341761596e576020600154633bb1f8c1604052606060046060373060c052602060406084605c845afa61153f573d5f5f3e3d5ffd5b60203d1061596e5760409050f35b63c661065781186115835760243610341761596e576020600435600281101561596e5760051b604001615a020160403960206040f35b63e89876ff8118612c96573461596e5760075460405260206040f35b6337ed3a7a81186115be5760643610341761596e5760056040526102c3565b630c46b72a8118612c96573461596e5760165460405260206040f35b6354f0f7d5811861173f573461596e575f5c60011461596e576016548060011b818160011c1861596e57905061161161016061570e565b61016051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790508060b571010000000000000000000000000000000000821061165c578160801c91508060401b90505b6901000000000000000000821061167a578160401c91508060201b90505b650100000000008210611694578160201c91508060101b90505b630100000082106116ac578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905080820281158383830414171561596e5790509050670de0b6b3a764000081049050610180526020610180f35b63b9e8c9fd8118612c96573461596e575f5c60011461596e5760025460405260206040f35b63bb7b8b8081186117cd573461596e575f5c60011461596e576013546040526002546060526117936080613426565b608051670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050601d54801561596e578082049050905060a052602060a0f35b63f446c1d081186117ef573461596e5760206117ea610120612f6d565b610120f35b634d23bfa08118612c96573461596e5760055460405260206040f35b63ddca3f438118612c96573461596e57602060115460405260125460605260025460805261183a6101606130c6565b6101606040816101c05e5060406101c060605e6118586101a0613179565b6101a0f35b63bcc8342e811861187e5760843610341761596e5760403661038037611922565b63fe192e9e8118612c96573461596e5760105460405260206040f35b63326cc61781186118c85760a43610341761596e576084358060011c61596e57610380525f6103a052611922565b6349fe9e778118612c96573461596e5760206017546040526118ea606061313d565b6060f35b6357832be68118612c965760c43610341761596e576084358060011c61596e576103805260a4358060011c61596e576103a0525b60206040600461016037604060446101a03760406103806101e05e60016102205261194e6103c06144f7565b6103c0f35b63b13739298118612c96573461596e576020611970610120612f6d565b610120602081019050f35b63ee8de6758118612c96573461596e57602060185460405261199d606061313d565b6060602081019050f35b6372d4f0e281186119d3573461596e5760206018546040526119c9606061313d565b6060604081019050f35b6309c3da6a8118611a1e573461596e576017546040526119f3606061313d565b6060604081019050516102b68102816102b682041861596e5790506103e88104905060c052602060c0f35b630f529ba28118612c96573461596e5760135460405260206040f35b633620604b8118612c96573461596e576040615a0260403960406040f35b6380823d9e8118611a865760443610341761596e57602060406004606037611a81610160613179565b610160f35b63dd62ed3e8118612c965760443610341761596e576004358060a01c61596e576040526024358060a01c61596e57606052601c6040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b635e24807281186121865760643610341761596e57611afb61588a565b611b06610160613131565b6101605115611b87576020806101e052600f610180527f72616d7020756e646572676f696e6700000000000000000000000000000000006101a052610180816101e001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101c052806004016101dcfd5b4262015180810181811061596e5790506001810381811161596e57905060443511611c24576020806101c052600d610160527f72616d702074696d653c6d696e0000000000000000000000000000000000000061018052610160816101c001602d82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b611c2f6101a0612f6d565b6101a06040816101605e506101605160801b6101a052610180516101a051176101a052614e206004351015611cd6576020806102205260056101c0527f413c6d696e0000000000000000000000000000000000000000000000000000006101e0526101c08161022001602582825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610200528060040161021cfd5b6305f5e1006004351115611d5c576020806102205260056101c0527f413e6d61780000000000000000000000000000000000000000000000000000006101e0526101c08161022001602582825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610200528060040161021cfd5b6402540be4006024351015611de3576020806102205260096101c0527f67616d6d613c6d696e00000000000000000000000000000000000000000000006101e0526101c08161022001602982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610200528060040161021cfd5b6702c2fd72164d80006024351115611e6d576020806102205260096101c0527f67616d6d653e6d617800000000000000000000000000000000000000000000006101e0526101c08161022001602982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610200528060040161021cfd5b600435670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061016051801561596e57808204905090506101c052678ac7230489e800006101c0511115611f2e576020806102405260116101e0527f41206368616e676520746f6f2068696768000000000000000000000000000000610200526101e08161024001603182825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610220528060040161023cfd5b67016345785d8a00006101c0511015611fb9576020806102405260106101e0527f41206368616e676520746f6f206c6f7700000000000000000000000000000000610200526101e08161024001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610220528060040161023cfd5b602435670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061018051801561596e57808204905090506101c052678ac7230489e800006101c051111561207a576020806102405260156101e0527f67616d6d61206368616e676520746f6f20686967680000000000000000000000610200526101e08161024001603582825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610220528060040161023cfd5b67016345785d8a00006101c0511015612105576020806102405260146101e0527f67616d6d61206368616e676520746f6f206c6f77000000000000000000000000610200526101e08161024001603482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610220528060040161023cfd5b6101a0516006554260075560043560801b6101e0526024356101e051176101e0526044356009556101e0516008557fe35f0559b0642164e286b30df2077ec3a05426617a25db7578fd20ba39a6cd0561016051610200526004356102205261018051610240526024356102605242610280526044356102a05260c0610200a1005b63d046b4ca8118612c96573461596e57600e5460405260206040f35b636dbcf35081186125865760c43610341761596e575f5c60011461596e5760015f5d6121cc61588a565b60606004610160376018546040526121e561022061313d565b6102206060816101c05e506402540be40061018051111561220d576101e05161018052612293565b6207a12061018051101561229357602080610280526013610220527f666565206973206f7574206f662072616e676500000000000000000000000000610240526102208161028001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610260528060040161027cfd5b6402540be40161016051106122ab576101c051610160525b6101805161016051111561233157602080610280526013610220527f6d69642d66656520697320746f6f206869676800000000000000000000000000610240526102208161028001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610260528060040161027cfd5b670de0b6b3a763ffff6101a051111561235157610200516101a0526123f6565b6101a0516123f6576020806102a0526024610220527f6665655f67616d6d61206f7574206f662072616e6765205b31202e2e2031302a610240527f2a31385d0000000000000000000000000000000000000000000000000000000061026052610220816102a001604482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610280528060040161029cfd5b606061016060405e612409610220615958565b6102205160185560606064610220376017546040526124296102e061313d565b6102e06060816102805e50670de0b6b3a7640001610220511061244f5761028051610220525b670de0b6b3a7640001610240511061246a576102a051610240525b620d505d610260511115612485576102c0516102605261252e565b605761026051101561252e576020806103605260266102e0527f4d412074696d652073686f756c64206265206c6f6e676572207468616e203630610300527f2f6c6e2832290000000000000000000000000000000000000000000000000000610320526102e08161036001604682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610340528060040161035cfd5b606061022060405e6125416102e0615958565b6102e0516017557fa32137411fc7c20db359079cd84af0e2cad58cd7a182a8a5e23e08e554e88bf060606101606102e05e60606102206103405e60c06102e0a15f5f5d005b6354fd4d508118612c96573461596e5760208060805260066040527f76322e312e300000000000000000000000000000000000000000000000000000606052604081608001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63f5b2f0168118612c965760243610341761596e5761261861588a565b600435612697576020806101c0526019610160527f6475726174696f6e206d75737420626520706f7369746976650000000000000061018052610160816101c001603982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b600435600c557fb2cf7972e8e7c2db8a62b4c568cf133a24bf5910b2603ad8811e6bfc9a865322600435610160526020610160a1005b638325c0028118612c965760643610341761596e576126ea61588a565b600435612769576020806101c0526017610160527f706572696f64206d75737420626520706f73697469766500000000000000000061018052610160816101c001603782825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b6024356127e8576020806101c052601a610160527f7468726573686f6c64206d75737420626520706f73697469766500000000000061018052610160816101c001603a82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b604435612867576020806101c052601b610160527f6d61785f736861726573206d75737420626520706f736974697665000000000061018052610160816101c001603b82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b600435600f55602435601055604435600b557f6db4ade9cd8d6e671d6d713ab38d8889f9e3d4bbb319ca3389a516cf4efcf19d60606004610160376060610160a1005b633217902f8118612c965760243610341761596e576128c761588a565b6402540be400600435111561294e576020806101c052600d610160527f61646d696e5f6665653e4d41580000000000000000000000000000000000000061018052610160816101c001602d82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101a052806004016101bcfd5b6004356019557f2f0d0ace1d699b471d7b39522b5c8aae053bce1b422b7a4fe8f09bd6562a4b74600435610160526020610160a1005b636fe26a348118612c965760443610341761596e576004358060a01c61596e57610160526024358060a01c61596e57610180526129bf61588a565b61016051156129cf5760016129d6565b6101805115155b612a525760208061020052600e6101a0527f656d70747920636f6e74726163740000000000000000000000000000000000006101c0526101a08161020001602e82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101e052806004016101fcfd5b6101605115612a6357610160516001555b6101805115612a7357610180515f555b7f567da2faedc99f951794c7dc379b4906dcdd1d016fedb16916d1e9623901f21660406101606101a05e60406101a0a1005b63ed6c15468118612c96573461596e575f5460405260206040f35b63c45a01558118612ade573461596e576020615a8260403960206040f35b637ba1a74d8118612afa573461596e5760145460405260206040f35b63e36164058118612c96573461596e5760185460405260206040f35b63204fe3d58118612c96573461596e5760065460405260206040f35b63f30cfad58118612b4e573461596e5760085460405260206040f35b6318160ddd8118612c96573461596e57601d5460405260206040f35b63a3bdf1b78118612c96573461596e57600a5460405260206040f35b633d2699f28118612c96573461596e57600b5460405260206040f35b630decf4a28118612c96573461596e57600c5460405260206040f35b631f88619c8118612c96573461596e57600f5460405260206040f35b63fee3f7f98118612c96573461596e5760195460405260206040f35b6395d89b418118612c96573461596e57602080604052806040016040615b0282398051806020830101601f825f03163682375050601f19601f825160200101169050810190506040f35b63313ce5678118612c96573461596e57601260405260206040f35b6370a082318118612c965760243610341761596e576004358060a01c61596e57604052601b6040516020525f5260405f205460605260206060f35b5f5ffd5b6020604051600281101561596e5760051b604001615a02015f395f516370a0823160e0523061010052602060e0602460fc845afa612cda573d5f5f3e3d5ffd5b60203d1061596e5760e090505160c05260a05115612dca5760c051604051600281101561596e576011015480820382811161596e579050905060e05260605160e0511015612d9a57602080610160526019610100527f75736572206469646e2774206769766520757320636f696e7300000000000000610120526101008161016001603982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610140528060040161015cfd5b604051600281101561596e57601101805460e05180820182811061596e579050905081555060e051815250612f6b565b6020604051600281101561596e5760051b604001615a02015f395f516323b872dd60e05260805161010052306101205260605161014052602060e0606460fc5f855af1612e19573d5f5f3e3d5ffd5b3d612e3057803b1561596e57600161016052612e58565b3d602081183d60201002188060e0016101001161596e5760e0518060011c61596e5761016052505b610160905051612eda576020806101e0526013610180527f7472616e7366657246726f6d206661696c6564000000000000000000000000006101a052610180816101e001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06101c052806004016101dcfd5b6020604051600281101561596e5760051b604001615a02015f395f516370a082316101005230610120526020610100602461011c845afa612f1d573d5f5f3e3d5ffd5b60203d1061596e5761010090505160c05180820382811161596e579050905060e052604051600281101561596e57601101805460e05180820182811061596e579050905081555060e0518152505b565b6009546040526008546060526fffffffffffffffffffffffffffffffff6060511660805260605160801c60a0526040514210156130b65760065460c05260075460e05260405160e05180820382811161596e57905090506040524260e05180820382811161596e579050905060e05260405160e05180820382811161596e57905090506101005260c05160801c6101005180820281158383830414171561596e579050905060a05160e05180820281158383830414171561596e579050905080820182811061596e5790509050604051801561596e578082049050905060a0526fffffffffffffffffffffffffffffffff60c051166101005180820281158383830414171561596e579050905060805160e05180820281158383830414171561596e579050905080820182811061596e5790509050604051801561596e57808204905090506080525b60a0518152608051602082015250565b6040516020615a025f395f5180820281158383830414171561596e57905090508152670de0b6b3a76400006060516020615a225f395f5180820281158383830414171561596e579050905060805180820281158383830414171561596e579050905004602082015250565b60055460095411815250565b67ffffffffffffffff60405160801c16815267ffffffffffffffff60405160401c16602082015267ffffffffffffffff60405116604082015250565b60185460405261318a61010061313d565b61010060608160a05e5060605160805180820182811061596e579050905061010052606051673782dace9d900000810281673782dace9d90000082041861596e57905061010051801561596e578082049050905060805180820281158383830414171561596e579050905061010051801561596e57808204905090506101005260e0516101005180820281158383830414171561596e5790509050670de0b6b3a764000060e0516101005180820281158383830414171561596e579050905004670de0b6b3a7640000810181811061596e5790506101005180820382811161596e5790509050801561596e578082049050905061010052670de0b6b3a764000060a0516101005180820281158383830414171561596e579050905060c0516101005180670de0b6b3a764000003670de0b6b3a7640000811161596e57905080820281158383830414171561596e579050905080820182811061596e579050905004815250565b600a54606052606051613306575f815250613424565b42600d5480820382811161596e579050905060805260605160605160805180820281158383830414171561596e5790509050600c54801561596e57808204905090508082811882841002189050905060a05260405161336a5760a051815250613424565b5f60c052600e5460e0524260e05111156133dd5760e0514280820382811161596e5790509050670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050600f54801561596e5780820490509050670de0b6b3a7640000818118670de0b6b3a764000083100218905060c0525b60a05160c05180670de0b6b3a764000003670de0b6b3a7640000811161596e57905080820281158383830414171561596e5790509050670de0b6b3a7640000810490508152505b565b604051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790508060011c9050606051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790508060b5710100000000000000000000000000000000008210613497578160801c91508060401b90505b690100000000000000000082106134b5578160401c91508060201b90505b6501000000000082106134cf578160201c91508060101b90505b630100000082106134e7578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c90508083048082811882841002189050905090509050801561596e5780820490509050815250565b6003546101a0526004546101c0526002546101e05260175460405261358661026061313d565b6102606060816102005e5061359c610280613131565b6102805161026052600554610280525f6102a052426102805110156136ec575f546381d18d876102c05261024051610280514203670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050048060ff1c61596e577f8000000000000000000000000000000000000000000000000000000000000000811461596e575f036102e05260206102c060246102dc845afa61363d573d5f5f3e3d5ffd5b60203d1061596e576102c09050516102a052670de0b6b3a76400006101c0516101e0518060011b818160011c1861596e579050808281188284100218905090506102a05180670de0b6b3a764000003670de0b6b3a7640000811161596e57905080820281158383830414171561596e57905090506101a0516102a05180820281158383830414171561596e579050905080820182811061596e5790509050046101a0526101a051600355426005555b670de0b6b3a76400005f54637e0e395e6102c05260406101406102e05e610180516103205260406101006103405e60206102c060a46102dc845afa613733573d5f5f3e3d5ffd5b60203d1061596e576102c09050516101e05180820281158383830414171561596e579050905004600455601d546102c05260016040526137746103006132f0565b610300516102e0526102c0516102e05180820382811161596e57905090506103005260165461032052610180516040526101e0516060526137b6610360613426565b610360516103405261034051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790506102c051801561596e578082049050905061036052610320516103605110156138835761026051613883576020806103e0526017610380527f7669727475616c207072696365206465637265617365640000000000000000006103a052610380816103e001603782825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06103c052806004016103dcfd5b6014546103605180820182811061596e57905090506103205180820382811161596e5790509050610380526103805160145561038051670de0b6b3a7640000810181811061596e5790508060011c905080670de0b6b3a7640000811882670de0b6b3a764000011021890506103a05261034051670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061030051801561596e57808204905090506103c052610360516103c05110156139af576020806104405260116103e0527f6e6567617469766520646f6e6174696f6e000000000000000000000000000000610400526103e08161044001603182825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610420528060040161043cfd5b6103a0516102005180820182811061596e57905090506103c0511115613d4b576101e051670de0b6b3a76400006101a05102046103e052670de0b6b3a76400016103e0511015613a10576103e051670de0b6b3a7640000036103e052613a23565b670de0b6b3a76400006103e051036103e0525b6102205160056103e051048082811882841102189050905061040052610400516103e0511115613d4b576103e0516101e051610400516103e0510380820281158383830414171561596e5790509050610400516101a05180820281158383830414171561596e579050905080820182811061596e5790509050046104205261014051610440526101e051610160516104205180820281158383830414171561596e579050905004610460525f5463e68647666104a05260406101006104c05e60406104406105005e5f6105405260206104a060a46104bc845afa613b09573d5f5f3e3d5ffd5b60203d1061596e576104a0905051610480526104805160405261042051606052613b346104c0613426565b6104c0516104a0526104a051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790506102c051801561596e57808204905090506104c0525f6104e0526103a051610360518082811882841102189050905061050052610500516104c0511015613cc3576104a051670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061050051801561596e5780820490509050610520526102c0516105205110613c5b576020806105a052601a610540527f747765616b656420737570706c79206d75737420736872696e6b00000000000061056052610540816105a001603a82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610580528060040161059cfd5b610520516102c051036102e051808281188284100218905090506104e0526104a051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790506102c0516104e05180820382811161596e5790509050801561596e57808204905090506104c0525b670de0b6b3a76400016104c0511015613cdc575f613ce7565b6103a0516104c05110155b15613d4b57610480516013556104c051601655610420516002556104e05115613d3f57600a546104e05180820382811161596e5790509050600a55601d546104e05180820382811161596e5790509050601d5542600d555b61042051815250613d61565b61018051601355610360516016556101e0518152505b565b610620516106005118613de8576020806106e0526009610680527f73616d6520636f696e00000000000000000000000000000000000000000000006106a052610680816106e001602982825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06106c052806004016106dcfd5b61064051613e68576020806106e0526007610680527f7a65726f206478000000000000000000000000000000000000000000000000006106a052610680816106e001602782825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06106c052806004016106dcfd5b613e736106c0612f6d565b6106c06040816106805e506011546106c0526012546106e0525f6107005261062051600281101561596e5760051b6106c001516107205261060051600281101561596e5760051b6106c001516106405180820382811161596e5790509050610740526002546107605260406106c060405e61076051608052613ef66107c06130c6565b6107c06040816107805e50613f0c6107c0613131565b6107c051156140175761074051602061060051600281101561596e5760051b615a02015f395f5180820281158383830414171561596e5790509050610740526106005115613f7f57670de0b6b3a7640000610740516107605180820281158383830414171561596e579050905004610740525b61060051600281101561596e5760051b61078001516107e0526107405161060051600281101561596e5760051b61078001525f5463e68647666108005260406106806108205e60406107806108605e5f6108a052602061080060a461081c845afa613fec573d5f5f3e3d5ffd5b60203d1061596e576108009050516013556107e05161060051600281101561596e5760051b61078001525b6013546107c0525f546343d188fb6108205260406106806108405e60406107806108805e6107c0516108c052610620516108e052604061082060c461083c845afa614064573d5f5f3e3d5ffd5b60403d1061596e5761082090506040816107e05e5061062051600281101561596e5760051b61078001516107e05180820382811161596e57905090506107005261062051600281101561596e5760051b6107800180516107005180820382811161596e5790509050815250610700516001810381811161596e5790506107005261062051156141255761070051670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061076051801561596e5780820490509050610700525b61070051602061062051600281101561596e5760051b615a02015f395f51801561596e5780820490509050610700526402540be400604061078060605e61416d610840613179565b610840516107005180820281158383830414171561596e57905090500461082052610700516108205180820382811161596e5790509050610700526106605161070051101561422e576020806108a0526008610840527f736c69707061676500000000000000000000000000000000000000000000000061086052610840816108a001602882825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610880528060040161089cfd5b610720516107005180820382811161596e57905090506107205261072051602061062051600281101561596e5760051b615a02015f395f5180820281158383830414171561596e57905090506107205261062051156142b257670de0b6b3a7640000610720516107605180820281158383830414171561596e579050905004610720525b6107205161062051600281101561596e5760051b61078001525f5463e68647666108405260406106806108605e60406107806108a05e610800516108e052602061084060a461085c845afa614309573d5f5f3e3d5ffd5b60203d1061596e576108409050516107c05260406106806101005e60406107806101405e6107c05161018052614340610840613560565b610840516107605261070051815261082051602082015261076051604082015250565b604051600281101561596e57601101805460605180820382811161596e57905090508155506020604051600281101561596e5760051b604001615a02015f395f5163a9059cbb60a05260805160c05260605160e052602060a0604460bc5f855af16143d0573d5f5f3e3d5ffd5b3d6143e757803b1561596e5760016101005261440e565b3d602081183d60201002188060a00160c01161596e5760a0518060011c61596e5761010052505b6101009050516144905760208061018052600f610120527f7472616e73666572206661696c65640000000000000000000000000000000000610140526101208161018001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b565b61449c60c0613131565b60c0516144ae576013548152506144f5565b5f5463e686476660e052604060406101005e604060806101405e5f61018052602060e060a460fc845afa6144e4573d5f5f3e3d5ffd5b60203d1061596e5760e09050518152505b565b6101e0511561450c57620186a08152506147c4565b60406101606102405e610220511561452657604036610240375b6011546102405180820382811161596e57905090506020615a025f395f5180820281158383830414171561596e5790509050670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790506012546102605180820382811161596e57905090506020615a225f395f5180820281158383830414171561596e5790509050801561596e578082049050905061028052604061016060405e610280516080526145d36102a06130c6565b6102a06040816102e05e5060406102e06101605e60406101a060605e6145fa6102c0613179565b6102c05160011b60021c6102a0525f6102c0525f6002905b8060051b61016001516102e0526102c0516102e05180820182811061596e57905090506102c0526001018181186146125750506102c05160011c6102e0525f610300525f6002905b8060051b6101600151610320526102e05161032051116146985761030051610320516102e0510380820182811061596e5790509050610300526146b8565b610300516102e051610320510380820182811061596e5790509050610300525b60010181811861465a5750505f61032052610200511561477257600e54610340524261034051111561477257610340514280820382811161596e5790509050670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050600f54801561596e5780820490509050670de0b6b3a7640000818118670de0b6b3a764000083100218905061036052610360516102a05180820281158383830414171561596e5790509050670de0b6b3a764000081049050610320525b6102a0516103005180820281158383830414171561596e57905090506102c051801561596e5780820490509050620186a0810181811061596e5790506103205180820182811061596e57905090508152505b565b601d5460605180820182811061596e5790509050601d55601b6040516020525f5260405f20805460605180820182811061596e57905090508155506040515f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a36001815250565b601d5460605180820382811161596e5790509050601d55601b6040516020525f5260405f20805460605180820382811161596e57905090508155505f6040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60605160805260206080a36001815250565b601d54600a541415614a17576020615a825f395f5163cab4d3db610200526020610200600461021c845afa6148e1573d5f5f3e3d5ffd5b3d602081183d602010021880610200016102201161596e57610200518060a01c61596e5761024052506102409050516101e0526101e05161497b576020615a825f395f5163f851a440610200526020610200600461021c845afa614947573d5f5f3e3d5ffd5b3d602081183d602010021880610200016102201161596e57610200518060a01c61596e5761024052506102409050516101e0525b60115461020052601254610220525f6002905b80610240526102405160405261024051600281101561596e5760051b61020001516060526101e0516080526149c1614363565b60010181811861498e5750505f600a555f601d555f6013555f600e556101e0517fdd3c0336a16f1b64f172b7bb0dad5b2b3c7c76f91e8c4aafd6aae60dce80015360406102006102405e5f610280526060610240a25b565b601a546101e0526201517f6101e05142031115614a4457614a3b610200613131565b61020051614a47565b60015b614dd3576014546102005260155461022052601d546102405261022051610200511115614a8257670de0b6b3a763ffff610240511115614a85565b60015b614dd35760135461026052601654610280526002546102a0526020615a825f395f5163cab4d3db6102e05260206102e060046102fc845afa614ac9573d5f5f3e3d5ffd5b3d602081183d6020100218806102e0016103001161596e576102e0518060a01c61596e5761032052506103209050516102c0526011546102e052601254610300526404a817c80061022051610200510360195480820281158383830414171561596e579050905004610320525f610340526102c05115614b4e57610320511515614b50565b5f5b15614c1c5761028051670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050610280516103205180820382811161596e5790509050801561596e5780820490509050670de0b6b3a7640000810381811161596e5790506103605261034051610240516103605180820281158383830414171561596e5790509050670de0b6b3a76400008104905080820182811061596e57905090506103405261020051610320518060011b818160011c1861596e57905080820382811161596e5790509050610200525b610240516103405180820182811061596e579050905061036052610260516040526102a051606052614c4f610380613426565b61038051670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061036051801561596e578082049050905061028052670de0b6b3a763ffff610280511115614dd3576102005160145542601a55610280516016556102605161036051610260516103405180820281158383830414171561596e57905090500480820382811161596e579050905060135561022051610200511115614cf757610200516015555b604036610380376103405115614dd3575f6002905b806103c0526103c051600281101561596e5760051b6102e001516103405180820281158383830414171561596e579050905061036051801561596e57808204905090506103c051600281101561596e5760051b61038001526103c0516040526103c051600281101561596e5760051b61038001516060526102c051608052614d92614363565b600101818118614d0c5750506102c0517f3bbd5f2f4711532d6e9ee88dfdf2f1468e9a4c3ae5e14d2e1a67bf4242d008d060406103806103c05e60406103c0a25b565b601d5461042052610420516103c0511115614e62576020806104a0526011610440527f7769746864726177203e20737570706c7900000000000000000000000000000061046052610440816104a001603182825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610480528060040161049cfd5b6103e051806001036001811161596e5790506104405260115461046052601254610480526002546104a052604061046060405e6104a051608052614ea76105006130c6565b6105006040816104c05e50604061038060405e60406104c060805e614ecd610520614492565b6105205161050052610420516103c0516105005180820281158383830414171561596e5790509050046105205260406104c06105405e6020615a025f395f51670de0b6b3a7640000810281670de0b6b3a764000082041861596e579050610580526104a0516020615a225f395f5180820281158383830414171561596e57905090506105a0526040366105c037670de0b6b3a7640000610400516103e051600281101561596e5760051b610580015180820281158383830414171561596e5790509050046103e051600281101561596e5760051b6105c001526103e051600281101561596e5760051b6105400180516103e051600281101561596e5760051b6105c0015180820382811161596e57905090508152505f546343d188fb6106205260406103806106405e60406105406106805e610500516105205180820382811161596e57905090506106c052610440516106e052604061062060c461063c845afa61503a573d5f5f3e3d5ffd5b60403d1061596e576106209050516106005261044051600281101561596e5760051b6104c001516106005180820382811161596e579050905061044051600281101561596e5760051b6105c001526106005161044051600281101561596e5760051b610540015260403661062037610400516103e051600281101561596e5760051b61062001526103e05161511b576105e051670de0b6b3a7640000810281670de0b6b3a764000082041861596e5790506020615a225f395f51801561596e57808204905090506104a051801561596e57808204905090506106405261513a565b6105c0516020615a025f395f51801561596e5780820490509050610620525b610620516106405180820182811061596e57905090506151cc576020806106c052601f610660527f7769746864726177616c20726573756c747320696e206e6f20746f6b656e730061068052610660816106c001603f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06106a052806004016106bcfd5b60406106206101605e60406105406101a05e6060366101e0376151f06106806144f7565b610680516106605261052051610520516106605180820281158383830414171561596e57905090506402540be400810490506001810181811061596e57905080820382811161596e5790509050610520525f546343d188fb6106805260406103806106a05e60406105406106e05e610500516105205180820382811161596e5790509050610720526104405161074052604061068060c461069c845afa615299573d5f5f3e3d5ffd5b60403d1061596e576106809050516106005261044051600281101561596e5760051b6104c001516106005180820382811161596e5790509050670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905061044051600281101561596e5760051b6105800151801561596e5780820490509050610680526106005161044051600281101561596e5760051b6105400152610680518152610500516105205180820382811161596e57905090506020820152604081016040610540825e5061066051608082015250565b615370614a19565b61537b610840612f6d565b6108406040816108005e5060a0366108403760406108006103805e60606107606103c05e6153aa6108e0614dd5565b6108e060a0816109805e5060406109806108405e60406109c06108805e610a00516108c0526107c051610840511015615455576020806109405260086108e0527f736c697070616765000000000000000000000000000000000000000000000000610900526108e08161094001602882825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610920528060040161093cfd5b336040526107605160605261546b6108e0614838565b6108e05060406108006101005e60406108806101405e6108605161018052615494610900613560565b610900516108e052604061078060405e6107e0516080526154b3614363565b61078051806001036001811161596e579050604052610840516060526107e0516080526154de614363565b604036610900376107a05161078051600281101561596e5760051b61090001526108405161078051806001036001811161596e579050600281101561596e5760051b6109000152337f22f9ea3e7d7b113cb423896d2e121f96a66c17814ac7f63d69096769fa3e2a55610760516109405260406109006109605e6108c0516107605180820281158383830414171561596e57905090506402540be400810490506001810181811061596e5790506109a0526108e0516109c05260a0610940a26155a56148aa565b61084051815250565b608051601c6040516020525f5260405f20806060516020525f5260405f209050556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560805160a052602060a0a3565b60605130811461561557801515615617565b5f5b90506156925760208061012052601060c0527f696e76616c69642072656365697665720000000000000000000000000000000060e05260c08161012001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610100528060040161011cfd5b601b6040516020525f5260405f20805460805180820382811161596e5790509050815550601b6060516020525f5260405f20805460805180820182811061596e57905090508155506060516040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60805160a052602060a0a3565b60035460605260025460805260055460a0524260a05110156158815760045460c05260175460405261574161010061313d565b6101006040810190505160e0525f546381d18d876101205260a0514203670de0b6b3a7640000810281670de0b6b3a764000082041861596e57905060e051801561596e57808204905090508060ff1c61596e577f8000000000000000000000000000000000000000000000000000000000000000811461596e575f03610140526020610120602461013c845afa6157da573d5f5f3e3d5ffd5b60203d1061596e576101209050516101005260c0516080518060011b818160011c1861596e579050808281188284100218905090506101005180670de0b6b3a764000003670de0b6b3a7640000811161596e57905080820281158383830414171561596e57905090506060516101005180820281158383830414171561596e579050905080820182811061596e5790509050670de0b6b3a764000081049050815250615888565b6060518152505b565b6020615a825f395f5163f851a440604052602060406004605c845afa6158b2573d5f5f3e3d5ffd5b3d602081183d60201002188060400160601161596e576040518060a01c61596e576080525060809050513318156159565760208061010052600a60a0527f6f6e6c79206f776e65720000000000000000000000000000000000000000000060c05260a08161010001602a82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060e0528060040160fcfd5b565b60805160605160401b60405160801b1717815250565b5f80fd2c962c5b2b862c962c962b16185d14fb00852c962c96131f0c7215da104c28aa001810a31ade180b0373197b2aa52b6a03bd2c9626cd01942c960f6111940cb713e62bf6159f1a3a29842b3218ee2c4017642c962c96128e11672c962c962c962c962c962c962c962c9603231a58189a21a219532ba213652bbe2c9610f001b32c962bda19a7144b2c962ac025fb2c96855820d9637669f20cbb7208f5516ea462983250e238fe37d67b33f8ae5b54950e55f8195a02811890190140a1657679706572830004030039000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d000000000000000000000000b6bb22f4d1e58e9e43efa2ec7f572d215b3cf08a0000000000000000000000001fd8af16dc4bebd950521308d55d0543b6cdf4a10eae97a937b6d897c05135bb47bbbf3ad858182e4de067cbe6b338f8cc0e5326000000000000000000000000000000010000000000000000000000000000000100000000000000000000000000030d40000000000000000000038d7ea4c68000000000000000000000000000000f424000000000001e84800011c37937e08000000000000000000000000002540be40000000500918bd80000000000000014500000000000000000000000000000000000000000000000000290714c1d95cc80000000000000000000000000000000000000000000000000000000000000001c42504e3a204242524c202f205553444320537461626c6520506f6f6c0000000000000000000000000000000000000000000000000000000000000000000000094242524c2f555344430000000000000000000000000000000000000000000000