More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 38 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Urn Allow | 16648719 | 745 days ago | IN | 0 ETH | 0.00056872 | ||||
Move | 15718309 | 875 days ago | IN | 0 ETH | 0.00103107 | ||||
Open | 15392718 | 923 days ago | IN | 0 ETH | 0.00310001 | ||||
Eth Join_join | 15237349 | 948 days ago | IN | 0 ETH | 0.00084639 | ||||
Give | 15237304 | 948 days ago | IN | 0 ETH | 0.00041968 | ||||
Move | 15237297 | 948 days ago | IN | 0 ETH | 0.00052984 | ||||
Execute | 14646021 | 1044 days ago | IN | 0 ETH | 0.00066988 | ||||
Execute | 14645896 | 1044 days ago | IN | 0 ETH | 0.00054425 | ||||
Open | 14598587 | 1051 days ago | IN | 0 ETH | 0.00651131 | ||||
Wipe | 13951068 | 1152 days ago | IN | 0 ETH | 0.01884093 | ||||
Wipe | 13934754 | 1154 days ago | IN | 0 ETH | 0.02022767 | ||||
Wipe | 13624603 | 1203 days ago | IN | 0 ETH | 0.02297314 | ||||
Lock ETH | 13187345 | 1271 days ago | IN | 0.1 ETH | 0.02314731 | ||||
Wipe | 11778782 | 1490 days ago | IN | 0 ETH | 0.02012417 | ||||
Wipe | 11778711 | 1490 days ago | IN | 0 ETH | 0.00493911 | ||||
Wipe | 11778580 | 1490 days ago | IN | 0 ETH | 0.00603065 | ||||
Eth Join_join | 9962204 | 1770 days ago | IN | 0.01 ETH | 0.00039393 | ||||
Urn Allow | 9690882 | 1812 days ago | IN | 0 ETH | 0.00031111 | ||||
Lock Gem | 9690326 | 1812 days ago | IN | 0 ETH | 0.00063332 | ||||
Flux | 8998164 | 1925 days ago | IN | 0 ETH | 0.00026859 | ||||
Move | 8998102 | 1925 days ago | IN | 0 ETH | 0.00044405 | ||||
Give | 8998057 | 1925 days ago | IN | 0 ETH | 0.00026519 | ||||
Give | 8997998 | 1925 days ago | IN | 0 ETH | 0.00033529 | ||||
Open | 8952759 | 1932 days ago | IN | 0 ETH | 0.00089783 | ||||
Open | 8952756 | 1932 days ago | IN | 0 ETH | 0.00089783 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DssProxyActions
Compiler Version
v0.5.12+commit.7709ece9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-11-14 */ // hevm: flattened sources of /nix/store/sxr9nv6bdacjzw8vhns72bxjga458x34-dss-proxy-actions-53f1d75/src/DssProxyActions.sol pragma solidity =0.5.12; ////// /nix/store/sxr9nv6bdacjzw8vhns72bxjga458x34-dss-proxy-actions-53f1d75/src/DssProxyActions.sol /* pragma solidity 0.5.12; */ contract GemLike { function approve(address, uint) public; function transfer(address, uint) public; function transferFrom(address, address, uint) public; function deposit() public payable; function withdraw(uint) public; } contract ManagerLike { function cdpCan(address, uint, address) public view returns (uint); function ilks(uint) public view returns (bytes32); function owns(uint) public view returns (address); function urns(uint) public view returns (address); function vat() public view returns (address); function open(bytes32, address) public returns (uint); function give(uint, address) public; function cdpAllow(uint, address, uint) public; function urnAllow(address, uint) public; function frob(uint, int, int) public; function flux(uint, address, uint) public; function move(uint, address, uint) public; function exit(address, uint, address, uint) public; function quit(uint, address) public; function enter(address, uint) public; function shift(uint, uint) public; } contract VatLike { function can(address, address) public view returns (uint); function ilks(bytes32) public view returns (uint, uint, uint, uint, uint); function dai(address) public view returns (uint); function urns(bytes32, address) public view returns (uint, uint); function frob(bytes32, address, address, address, int, int) public; function hope(address) public; function move(address, address, uint) public; } contract GemJoinLike { function dec() public returns (uint); function gem() public returns (GemLike); function join(address, uint) public payable; function exit(address, uint) public; } contract GNTJoinLike { function bags(address) public view returns (address); function make(address) public returns (address); } contract DaiJoinLike { function vat() public returns (VatLike); function dai() public returns (GemLike); function join(address, uint) public payable; function exit(address, uint) public; } contract HopeLike { function hope(address) public; function nope(address) public; } contract EndLike { function fix(bytes32) public view returns (uint); function cash(bytes32, uint) public; function free(bytes32) public; function pack(uint) public; function skim(bytes32, address) public; } contract JugLike { function drip(bytes32) public returns (uint); } contract PotLike { function pie(address) public view returns (uint); function drip() public returns (uint); function join(uint) public; function exit(uint) public; } contract ProxyRegistryLike { function proxies(address) public view returns (address); function build(address) public returns (address); } contract ProxyLike { function owner() public view returns (address); } // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // WARNING: These functions meant to be used as a a library for a DSProxy. Some are unsafe if you call them directly. // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! contract Common { uint256 constant RAY = 10 ** 27; // Internal functions function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "mul-overflow"); } // Public functions function daiJoin_join(address apt, address urn, uint wad) public { // Gets DAI from the user's wallet DaiJoinLike(apt).dai().transferFrom(msg.sender, address(this), wad); // Approves adapter to take the DAI amount DaiJoinLike(apt).dai().approve(apt, wad); // Joins DAI into the vat DaiJoinLike(apt).join(urn, wad); } } contract DssProxyActions is Common { // Internal functions function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "sub-overflow"); } function toInt(uint x) internal pure returns (int y) { y = int(x); require(y >= 0, "int-overflow"); } function toRad(uint wad) internal pure returns (uint rad) { rad = mul(wad, 10 ** 27); } function convertTo18(address gemJoin, uint256 amt) internal returns (uint256 wad) { // For those collaterals that have less than 18 decimals precision we need to do the conversion before passing to frob function // Adapters will automatically handle the difference of precision wad = mul( amt, 10 ** (18 - GemJoinLike(gemJoin).dec()) ); } function _getDrawDart( address vat, address jug, address urn, bytes32 ilk, uint wad ) internal returns (int dart) { // Updates stability fee rate uint rate = JugLike(jug).drip(ilk); // Gets DAI balance of the urn in the vat uint dai = VatLike(vat).dai(urn); // If there was already enough DAI in the vat balance, just exits it without adding more debt if (dai < mul(wad, RAY)) { // Calculates the needed dart so together with the existing dai in the vat is enough to exit wad amount of DAI tokens dart = toInt(sub(mul(wad, RAY), dai) / rate); // This is neeeded due lack of precision. It might need to sum an extra dart wei (for the given DAI wad amount) dart = mul(uint(dart), rate) < mul(wad, RAY) ? dart + 1 : dart; } } function _getWipeDart( address vat, uint dai, address urn, bytes32 ilk ) internal view returns (int dart) { // Gets actual rate from the vat (, uint rate,,,) = VatLike(vat).ilks(ilk); // Gets actual art value of the urn (, uint art) = VatLike(vat).urns(ilk, urn); // Uses the whole dai balance in the vat to reduce the debt dart = toInt(dai / rate); // Checks the calculated dart is not higher than urn.art (total debt), otherwise uses its value dart = uint(dart) <= art ? - dart : - toInt(art); } function _getWipeAllWad( address vat, address usr, address urn, bytes32 ilk ) internal view returns (uint wad) { // Gets actual rate from the vat (, uint rate,,,) = VatLike(vat).ilks(ilk); // Gets actual art value of the urn (, uint art) = VatLike(vat).urns(ilk, urn); // Gets actual dai amount in the urn uint dai = VatLike(vat).dai(usr); uint rad = sub(mul(art, rate), dai); wad = rad / RAY; // If the rad precision has some dust, it will need to request for 1 extra wad wei wad = mul(wad, RAY) < rad ? wad + 1 : wad; } // Public functions function transfer(address gem, address dst, uint wad) public { GemLike(gem).transfer(dst, wad); } function ethJoin_join(address apt, address urn) public payable { // Wraps ETH in WETH GemJoinLike(apt).gem().deposit.value(msg.value)(); // Approves adapter to take the WETH amount GemJoinLike(apt).gem().approve(address(apt), msg.value); // Joins WETH collateral into the vat GemJoinLike(apt).join(urn, msg.value); } function gemJoin_join(address apt, address urn, uint wad, bool transferFrom) public { // Only executes for tokens that have approval/transferFrom implementation if (transferFrom) { // Gets token from the user's wallet GemJoinLike(apt).gem().transferFrom(msg.sender, address(this), wad); // Approves adapter to take the token amount GemJoinLike(apt).gem().approve(apt, wad); } // Joins token collateral into the vat GemJoinLike(apt).join(urn, wad); } function hope( address obj, address usr ) public { HopeLike(obj).hope(usr); } function nope( address obj, address usr ) public { HopeLike(obj).nope(usr); } function open( address manager, bytes32 ilk, address usr ) public returns (uint cdp) { cdp = ManagerLike(manager).open(ilk, usr); } function give( address manager, uint cdp, address usr ) public { ManagerLike(manager).give(cdp, usr); } function giveToProxy( address proxyRegistry, address manager, uint cdp, address dst ) public { // Gets actual proxy address address proxy = ProxyRegistryLike(proxyRegistry).proxies(dst); // Checks if the proxy address already existed and dst address is still the owner if (proxy == address(0) || ProxyLike(proxy).owner() != dst) { uint csize; assembly { csize := extcodesize(dst) } // We want to avoid creating a proxy for a contract address that might not be able to handle proxies, then losing the CDP require(csize == 0, "Dst-is-a-contract"); // Creates the proxy for the dst address proxy = ProxyRegistryLike(proxyRegistry).build(dst); } // Transfers CDP to the dst proxy give(manager, cdp, proxy); } function cdpAllow( address manager, uint cdp, address usr, uint ok ) public { ManagerLike(manager).cdpAllow(cdp, usr, ok); } function urnAllow( address manager, address usr, uint ok ) public { ManagerLike(manager).urnAllow(usr, ok); } function flux( address manager, uint cdp, address dst, uint wad ) public { ManagerLike(manager).flux(cdp, dst, wad); } function move( address manager, uint cdp, address dst, uint rad ) public { ManagerLike(manager).move(cdp, dst, rad); } function frob( address manager, uint cdp, int dink, int dart ) public { ManagerLike(manager).frob(cdp, dink, dart); } function quit( address manager, uint cdp, address dst ) public { ManagerLike(manager).quit(cdp, dst); } function enter( address manager, address src, uint cdp ) public { ManagerLike(manager).enter(src, cdp); } function shift( address manager, uint cdpSrc, uint cdpOrg ) public { ManagerLike(manager).shift(cdpSrc, cdpOrg); } function makeGemBag( address gemJoin ) public returns (address bag) { bag = GNTJoinLike(gemJoin).make(address(this)); } function lockETH( address manager, address ethJoin, uint cdp ) public payable { // Receives ETH amount, converts it to WETH and joins it into the vat ethJoin_join(ethJoin, address(this)); // Locks WETH amount into the CDP VatLike(ManagerLike(manager).vat()).frob( ManagerLike(manager).ilks(cdp), ManagerLike(manager).urns(cdp), address(this), address(this), toInt(msg.value), 0 ); } function safeLockETH( address manager, address ethJoin, uint cdp, address owner ) public payable { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); lockETH(manager, ethJoin, cdp); } function lockGem( address manager, address gemJoin, uint cdp, uint wad, bool transferFrom ) public { // Takes token amount from user's wallet and joins into the vat gemJoin_join(gemJoin, address(this), wad, transferFrom); // Locks token amount into the CDP VatLike(ManagerLike(manager).vat()).frob( ManagerLike(manager).ilks(cdp), ManagerLike(manager).urns(cdp), address(this), address(this), toInt(convertTo18(gemJoin, wad)), 0 ); } function safeLockGem( address manager, address gemJoin, uint cdp, uint wad, bool transferFrom, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); lockGem(manager, gemJoin, cdp, wad, transferFrom); } function freeETH( address manager, address ethJoin, uint cdp, uint wad ) public { // Unlocks WETH amount from the CDP frob(manager, cdp, -toInt(wad), 0); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function freeGem( address manager, address gemJoin, uint cdp, uint wad ) public { uint wad18 = convertTo18(gemJoin, wad); // Unlocks token amount from the CDP frob(manager, cdp, -toInt(wad18), 0); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad18); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, wad); } function exitETH( address manager, address ethJoin, uint cdp, uint wad ) public { // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function exitGem( address manager, address gemJoin, uint cdp, uint wad ) public { // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), convertTo18(gemJoin, wad)); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, wad); } function draw( address manager, address jug, address daiJoin, uint cdp, uint wad ) public { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Generates debt in the CDP frob(manager, cdp, 0, _getDrawDart(vat, jug, urn, ilk, wad)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wad)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wad); } function wipe( address manager, address daiJoin, uint cdp, uint wad ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); address own = ManagerLike(manager).owns(cdp); if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) { // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wad); // Paybacks debt to the CDP frob(manager, cdp, 0, _getWipeDart(vat, VatLike(vat).dai(urn), urn, ilk)); } else { // Joins DAI amount into the vat daiJoin_join(daiJoin, address(this), wad); // Paybacks debt to the CDP VatLike(vat).frob( ilk, urn, address(this), address(this), 0, _getWipeDart(vat, wad * RAY, urn, ilk) ); } } function safeWipe( address manager, address daiJoin, uint cdp, uint wad, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); wipe(manager, daiJoin, cdp, wad); } function wipeAll( address manager, address daiJoin, uint cdp ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); address own = ManagerLike(manager).owns(cdp); if (own == address(this) || ManagerLike(manager).cdpCan(own, cdp, address(this)) == 1) { // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); // Paybacks debt to the CDP frob(manager, cdp, 0, -int(art)); } else { // Joins DAI amount into the vat daiJoin_join(daiJoin, address(this), _getWipeAllWad(vat, address(this), urn, ilk)); // Paybacks debt to the CDP VatLike(vat).frob( ilk, urn, address(this), address(this), 0, -int(art) ); } } function safeWipeAll( address manager, address daiJoin, uint cdp, address owner ) public { require(ManagerLike(manager).owns(cdp) == owner, "owner-missmatch"); wipeAll(manager, daiJoin, cdp); } function lockETHAndDraw( address manager, address jug, address ethJoin, address daiJoin, uint cdp, uint wadD ) public payable { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Receives ETH amount, converts it to WETH and joins it into the vat ethJoin_join(ethJoin, urn); // Locks WETH amount into the CDP and generates debt frob(manager, cdp, toInt(msg.value), _getDrawDart(vat, jug, urn, ilk, wadD)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wadD)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wadD); } function openLockETHAndDraw( address manager, address jug, address ethJoin, address daiJoin, bytes32 ilk, uint wadD ) public payable returns (uint cdp) { cdp = open(manager, ilk, address(this)); lockETHAndDraw(manager, jug, ethJoin, daiJoin, cdp, wadD); } function lockGemAndDraw( address manager, address jug, address gemJoin, address daiJoin, uint cdp, uint wadC, uint wadD, bool transferFrom ) public { address urn = ManagerLike(manager).urns(cdp); address vat = ManagerLike(manager).vat(); bytes32 ilk = ManagerLike(manager).ilks(cdp); // Takes token amount from user's wallet and joins into the vat gemJoin_join(gemJoin, urn, wadC, transferFrom); // Locks token amount into the CDP and generates debt frob(manager, cdp, toInt(convertTo18(gemJoin, wadC)), _getDrawDart(vat, jug, urn, ilk, wadD)); // Moves the DAI amount (balance in the vat in rad) to proxy's address move(manager, cdp, address(this), toRad(wadD)); // Allows adapter to access to proxy's DAI balance in the vat if (VatLike(vat).can(address(this), address(daiJoin)) == 0) { VatLike(vat).hope(daiJoin); } // Exits DAI to the user's wallet as a token DaiJoinLike(daiJoin).exit(msg.sender, wadD); } function openLockGemAndDraw( address manager, address jug, address gemJoin, address daiJoin, bytes32 ilk, uint wadC, uint wadD, bool transferFrom ) public returns (uint cdp) { cdp = open(manager, ilk, address(this)); lockGemAndDraw(manager, jug, gemJoin, daiJoin, cdp, wadC, wadD, transferFrom); } function openLockGNTAndDraw( address manager, address jug, address gntJoin, address daiJoin, bytes32 ilk, uint wadC, uint wadD ) public returns (address bag, uint cdp) { // Creates bag (if doesn't exist) to hold GNT bag = GNTJoinLike(gntJoin).bags(address(this)); if (bag == address(0)) { bag = makeGemBag(gntJoin); } // Transfer funds to the funds which previously were sent to the proxy GemLike(GemJoinLike(gntJoin).gem()).transfer(bag, wadC); cdp = openLockGemAndDraw(manager, jug, gntJoin, daiJoin, ilk, wadC, wadD, false); } function wipeAndFreeETH( address manager, address ethJoin, address daiJoin, uint cdp, uint wadC, uint wadD ) public { address urn = ManagerLike(manager).urns(cdp); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wadD); // Paybacks debt to the CDP and unlocks WETH amount from it frob( manager, cdp, -toInt(wadC), _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp)) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function wipeAllAndFreeETH( address manager, address ethJoin, address daiJoin, uint cdp, uint wadC ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); // Paybacks debt to the CDP and unlocks WETH amount from it frob( manager, cdp, -toInt(wadC), -int(art) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wadC); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function wipeAndFreeGem( address manager, address gemJoin, address daiJoin, uint cdp, uint wadC, uint wadD ) public { address urn = ManagerLike(manager).urns(cdp); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, wadD); uint wad18 = convertTo18(gemJoin, wadC); // Paybacks debt to the CDP and unlocks token amount from it frob( manager, cdp, -toInt(wad18), _getWipeDart(ManagerLike(manager).vat(), VatLike(ManagerLike(manager).vat()).dai(urn), urn, ManagerLike(manager).ilks(cdp)) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad18); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, wadC); } function wipeAllAndFreeGem( address manager, address gemJoin, address daiJoin, uint cdp, uint wadC ) public { address vat = ManagerLike(manager).vat(); address urn = ManagerLike(manager).urns(cdp); bytes32 ilk = ManagerLike(manager).ilks(cdp); (, uint art) = VatLike(vat).urns(ilk, urn); // Joins DAI amount into the vat daiJoin_join(daiJoin, urn, _getWipeAllWad(vat, urn, urn, ilk)); uint wad18 = convertTo18(gemJoin, wadC); // Paybacks debt to the CDP and unlocks token amount from it frob( manager, cdp, -toInt(wad18), -int(art) ); // Moves the amount from the CDP urn to proxy's address flux(manager, cdp, address(this), wad18); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, wadC); } } contract DssProxyActionsEnd is Common { // Internal functions function _free( address manager, address end, uint cdp ) internal returns (uint ink) { bytes32 ilk = ManagerLike(manager).ilks(cdp); address urn = ManagerLike(manager).urns(cdp); VatLike vat = VatLike(ManagerLike(manager).vat()); uint art; (ink, art) = vat.urns(ilk, urn); // If CDP still has debt, it needs to be paid if (art > 0) { EndLike(end).skim(ilk, urn); (ink,) = vat.urns(ilk, urn); } // Approves the manager to transfer the position to proxy's address in the vat if (vat.can(address(this), address(manager)) == 0) { vat.hope(manager); } // Transfers position from CDP to the proxy address ManagerLike(manager).quit(cdp, address(this)); // Frees the position and recovers the collateral in the vat registry EndLike(end).free(ilk); } // Public functions function freeETH( address manager, address ethJoin, address end, uint cdp ) public { uint wad = _free(manager, end, cdp); // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wad); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wad); // Sends ETH back to the user's wallet msg.sender.transfer(wad); } function freeGem( address manager, address gemJoin, address end, uint cdp ) public { uint wad = _free(manager, end, cdp); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, wad); } function pack( address daiJoin, address end, uint wad ) public { daiJoin_join(daiJoin, address(this), wad); VatLike vat = DaiJoinLike(daiJoin).vat(); // Approves the end to take out DAI from the proxy's balance in the vat if (vat.can(address(this), address(end)) == 0) { vat.hope(end); } EndLike(end).pack(wad); } function cashETH( address ethJoin, address end, bytes32 ilk, uint wad ) public { EndLike(end).cash(ilk, wad); uint wadC = mul(wad, EndLike(end).fix(ilk)) / RAY; // Exits WETH amount to proxy address as a token GemJoinLike(ethJoin).exit(address(this), wadC); // Converts WETH to ETH GemJoinLike(ethJoin).gem().withdraw(wadC); // Sends ETH back to the user's wallet msg.sender.transfer(wadC); } function cashGem( address gemJoin, address end, bytes32 ilk, uint wad ) public { EndLike(end).cash(ilk, wad); // Exits token amount to the user's wallet as a token GemJoinLike(gemJoin).exit(msg.sender, mul(wad, EndLike(end).fix(ilk)) / RAY); } } contract DssProxyActionsDsr is Common { function join( address daiJoin, address pot, uint wad ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to get the chi rate updated to rho == now, otherwise join will fail uint chi = PotLike(pot).drip(); // Joins wad amount to the vat balance daiJoin_join(daiJoin, address(this), wad); // Approves the pot to take out DAI from the proxy's balance in the vat if (vat.can(address(this), address(pot)) == 0) { vat.hope(pot); } // Joins the pie value (equivalent to the DAI wad amount) in the pot PotLike(pot).join(mul(wad, RAY) / chi); } function exit( address daiJoin, address pot, uint wad ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to count the savings accumulated until this moment uint chi = PotLike(pot).drip(); // Calculates the pie value in the pot equivalent to the DAI wad amount uint pie = mul(wad, RAY) / chi; // Exits DAI from the pot PotLike(pot).exit(pie); // Checks the actual balance of DAI in the vat after the pot exit uint bal = DaiJoinLike(daiJoin).vat().dai(address(this)); // Allows adapter to access to proxy's DAI balance in the vat if (vat.can(address(this), address(daiJoin)) == 0) { vat.hope(daiJoin); } // It is necessary to check if due rounding the exact wad amount can be exited by the adapter. // Otherwise it will do the maximum DAI balance in the vat DaiJoinLike(daiJoin).exit( msg.sender, bal >= mul(wad, RAY) ? wad : bal / RAY ); } function exitAll( address daiJoin, address pot ) public { VatLike vat = DaiJoinLike(daiJoin).vat(); // Executes drip to count the savings accumulated until this moment uint chi = PotLike(pot).drip(); // Gets the total pie belonging to the proxy address uint pie = PotLike(pot).pie(address(this)); // Exits DAI from the pot PotLike(pot).exit(pie); // Allows adapter to access to proxy's DAI balance in the vat if (vat.can(address(this), address(daiJoin)) == 0) { vat.hope(daiJoin); } // Exits the DAI amount corresponding to the value of pie DaiJoinLike(daiJoin).exit(msg.sender, mul(chi, pie) / RAY); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"cdpAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"daiJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"draw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"src","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"enter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"}],"name":"ethJoin_join","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exitETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"exitGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"flux","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"freeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"freeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"int256","name":"dink","type":"int256"},{"internalType":"int256","name":"dart","type":"int256"}],"name":"frob","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"apt","type":"address"},{"internalType":"address","name":"urn","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"gemJoin_join","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"usr","type":"address"}],"name":"give","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"proxyRegistry","type":"address"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"giveToProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"hope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"lockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"lockETHAndDraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"lockGemAndDraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gemJoin","type":"address"}],"name":"makeGemBag","outputs":[{"internalType":"address","name":"bag","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rad","type":"uint256"}],"name":"move","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"obj","type":"address"},{"internalType":"address","name":"usr","type":"address"}],"name":"nope","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"address","name":"usr","type":"address"}],"name":"open","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockETHAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gntJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"openLockGNTAndDraw","outputs":[{"internalType":"address","name":"bag","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"jug","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"bytes32","name":"ilk","type":"bytes32"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"}],"name":"openLockGemAndDraw","outputs":[{"internalType":"uint256","name":"cdp","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"dst","type":"address"}],"name":"quit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"bool","name":"transferFrom","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeLockGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"safeWipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"cdpSrc","type":"uint256"},{"internalType":"uint256","name":"cdpOrg","type":"uint256"}],"name":"shift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"gem","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"usr","type":"address"},{"internalType":"uint256","name":"ok","type":"uint256"}],"name":"urnAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"wipe","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"}],"name":"wipeAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"}],"name":"wipeAllAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"}],"name":"wipeAllAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"ethJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"gemJoin","type":"address"},{"internalType":"address","name":"daiJoin","type":"address"},{"internalType":"uint256","name":"cdp","type":"uint256"},{"internalType":"uint256","name":"wadC","type":"uint256"},{"internalType":"uint256","name":"wadD","type":"uint256"}],"name":"wipeAndFreeGem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506149c3806100206000396000f3fe60806040526004361061023b5760003560e01c806396e8d72c1161012e578063c0791710116100ab578063e685cc041161006f578063e685cc0414610c7d578063ead6472914610cc9578063eb0b9a8514610d20578063ee28457614610d63578063fba7591d14610d9f5761023b565b8063c079171014610ab2578063c56167c614610b34578063cbd4be3f14610b77578063db802a3214610bdf578063e205c10814610c475761023b565b8063b50a5869116100f2578063b50a586914610949578063ba727a9514610984578063bcd6deec146109cb578063be5e6c0314610a1a578063beabacc814610a6f5761023b565b806396e8d72c146107f75780639f6f3d5b1461083c5780639f887fde1461088b578063a033df12146108c6578063a6add011146108f45761023b565b80634592aca7116101bc5780636ab6a491116101805780636ab6a4911461068c5780636d68b70b146106d55780637b5a3b43146107245780637bc3bd531461076d5780637df2eb25146107ac5761023b565b80634592aca71461051f578063493c2049146105625780634b666199146105ab5780635f6ef447146105f45780636aa3ee11146106375761023b565b80631d10f231116102035780631d10f231146103aa57806325cf37d0146103ed5780632958f8a5146104345780633e29e5651461048557806342dd11bb146104d65761023b565b8063036a23951461024057806308f00e34146102855780630aee8dec146102ce5780631558b048146103175780631c02d8461461035e575b600080fd5b34801561024c57600080fd5b506102836004803603606081101561026357600080fd5b506001600160a01b03813581169160208101359091169060400135610dee565b005b34801561029157600080fd5b50610283600480360360808110156102a857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356111aa565b3480156102da57600080fd5b50610283600480360360808110156102f157600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611319565b34801561032357600080fd5b506102836004803603608081101561033a57600080fd5b506001600160a01b03813581169160208101359160408201351690606001356113f1565b610283600480360360c081101561037457600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a0013561145e565b3480156103b657600080fd5b50610283600480360360608110156103cd57600080fd5b506001600160a01b0381358116916020810135916040909101351661175d565b3480156103f957600080fd5b506102836004803603608081101561041057600080fd5b506001600160a01b03813581169160208101359160408201351690606001356117da565b34801561044057600080fd5b50610283600480360360a081101561045757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516611833565b34801561049157600080fd5b50610283600480360360a08110156104a857600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611906565b3480156104e257600080fd5b50610283600480360360808110156104f957600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611b06565b34801561052b57600080fd5b506102836004803603606081101561054257600080fd5b506001600160a01b03813581169160208101359160409091013516611b69565b34801561056e57600080fd5b506102836004803603608081101561058557600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611bc9565b3480156105b757600080fd5b50610283600480360360808110156105ce57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611dbc565b34801561060057600080fd5b506102836004803603606081101561061757600080fd5b506001600160a01b03813581169160208101359091169060400135612195565b34801561064357600080fd5b5061067a6004803603606081101561065a57600080fd5b506001600160a01b038135811691602081013591604090910135166121f5565b60408051918252519081900360200190f35b34801561069857600080fd5b50610283600480360360808110156106af57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561227c565b3480156106e157600080fd5b50610283600480360360a08110156106f857600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356122fc565b34801561073057600080fd5b506102836004803603608081101561074757600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612677565b34801561077957600080fd5b506102836004803603606081101561079057600080fd5b506001600160a01b038135169060208101359060400135612685565b3480156107b857600080fd5b50610283600480360360808110156107cf57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013515156126d3565b34801561080357600080fd5b506102836004803603608081101561081a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356128e0565b34801561084857600080fd5b50610283600480360360a081101561085f57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612936565b34801561089757600080fd5b50610283600480360360408110156108ae57600080fd5b506001600160a01b0381358116916020013516612bf7565b610283600480360360408110156108dc57600080fd5b506001600160a01b0381358116916020013516612c6b565b34801561090057600080fd5b50610283600480360360c081101561091757600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612e50565b34801561095557600080fd5b506102836004803603604081101561096c57600080fd5b506001600160a01b038135811691602001351661311f565b34801561099057600080fd5b50610283600480360360808110156109a757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135613177565b3480156109d757600080fd5b50610283600480360360a08110156109ee57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356131d0565b348015610a2657600080fd5b50610283600480360360c0811015610a3d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135613463565b348015610a7b57600080fd5b5061028360048036036060811015610a9257600080fd5b506001600160a01b038135811691602081013590911690604001356137f9565b348015610abe57600080fd5b50610b11600480360360e0811015610ad557600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135613859565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610b4057600080fd5b5061028360048036036060811015610b5757600080fd5b506001600160a01b038135811691602081013590911690604001356139dc565b348015610b8357600080fd5b506102836004803603610100811015610b9b57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613be2565b348015610beb57600080fd5b5061067a6004803603610100811015610c0357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613edf565b61028360048036036060811015610c5d57600080fd5b506001600160a01b03813581169160208101359091169060400135613f0a565b61067a600480360360c0811015610c9357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a001356140e0565b348015610cd557600080fd5b50610283600480360360c0811015610cec57600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516614107565b348015610d2c57600080fd5b5061028360048036036060811015610d4357600080fd5b506001600160a01b038135811691602081013590911690604001356141db565b61028360048036036080811015610d7957600080fd5b506001600160a01b0381358116916020810135821691604082013591606001351661423b565b348015610dab57600080fd5b50610dd260048036036020811015610dc257600080fd5b50356001600160a01b031661430d565b604080516001600160a01b039092168252519081900360200190f35b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2957600080fd5b505afa158015610e3d573d6000803e3d6000fd5b505050506040513d6020811015610e5357600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d6020811015610ecc57600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d6020811015610f4557600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015610f9957600080fd5b505afa158015610fad573d6000803e3d6000fd5b505050506040513d6040811015610fc357600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561101457600080fd5b505afa158015611028573d6000803e3d6000fd5b505050506040513d602081101561103e57600080fd5b505190506001600160a01b0381163014806110db5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d60208110156110d557600080fd5b50516001145b1561110b576110f687856110f18888898961438a565b6139dc565b61110688876000856000036128e0565b6111a0565b61111c87306110f18830898961438a565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b505050505b5050505050505050565b6111b6848330846113f1565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561125757600080fd5b505af115801561126b573d6000803e3d6000fd5b505050506040513d602081101561128157600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611312573d6000803e3d6000fd5b5050505050565b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d602081101561139157600080fd5b50516001600160a01b0316146113e0576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6113eb848484610dee565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b15801561144a57600080fd5b505af11580156111a0573d6000803e3d6000fd5b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d60208110156114ce57600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d602081101561154057600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561158f57600080fd5b505afa1580156115a3573d6000803e3d6000fd5b505050506040513d60208110156115b957600080fd5b505190506115c78784612c6b565b6115e789866115d534614558565b6115e2868d89888c6145a3565b6128e0565b6115fb8986306115f688614720565b6117da565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d602081101561167557600080fd5b50516116ec57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b50505050505050565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b15801561144a57600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561188157600080fd5b505afa158015611895573d6000803e3d6000fd5b505050506040513d60208110156118ab57600080fd5b50516001600160a01b0316146118fa576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61131285858585611dbc565b611912843084846126d3565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561194b57600080fd5b505afa15801561195f573d6000803e3d6000fd5b505050506040513d602081101561197557600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b1580156119ca57600080fd5b505afa1580156119de573d6000803e3d6000fd5b505050506040513d60208110156119f457600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d6020811015611a6757600080fd5b50513080611a7d611a788b8a61473d565b614558565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b158015611ae757600080fd5b505af1158015611afb573d6000803e3d6000fd5b505050505050505050565b611b1b848330611b16878661473d565b6113f1565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561144a57600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b1580156117bd57600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d6020811015611c4b57600080fd5b505190506001600160a01b0381161580611cdb5750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca357600080fd5b505afa158015611cb7573d6000803e3d6000fd5b505050506040513d6020811015611ccd57600080fd5b50516001600160a01b031614155b15611db157813b8015611d29576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611d8157600080fd5b505af1158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b50519150505b61131284848361175d565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611df757600080fd5b505afa158015611e0b573d6000803e3d6000fd5b505050506040513d6020811015611e2157600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611e7057600080fd5b505afa158015611e84573d6000803e3d6000fd5b505050506040513d6020811015611e9a57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d6020811015611f1357600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611f6257600080fd5b505afa158015611f76573d6000803e3d6000fd5b505050506040513d6020811015611f8c57600080fd5b505190506001600160a01b0381163014806120295750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611ff957600080fd5b505afa15801561200d573d6000803e3d6000fd5b505050506040513d602081101561202357600080fd5b50516001145b156120cd576120398784876139dc565b611106888760006115e288896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561209a57600080fd5b505afa1580156120ae573d6000803e3d6000fd5b505050506040513d60208110156120c457600080fd5b505189896147bc565b6120d88730876139dc565b836001600160a01b031663760887038385303060006121068b676765c793fa10079d601b1b8e028c8c6147bc565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561118757600080fd5b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b15801561224857600080fd5b505af115801561225c573d6000803e3d6000fd5b505050506040513d602081101561227257600080fd5b5051949350505050565b6000612288848361473d565b90506122a2858461229884614558565b60000360006128e0565b6122ae858430846113f1565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b158015611ae757600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561233757600080fd5b505afa15801561234b573d6000803e3d6000fd5b505050506040513d602081101561236157600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156123b057600080fd5b505afa1580156123c4573d6000803e3d6000fd5b505050506040513d60208110156123da57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561242957600080fd5b505afa15801561243d573d6000803e3d6000fd5b505050506040513d602081101561245357600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156124a757600080fd5b505afa1580156124bb573d6000803e3d6000fd5b505050506040513d60408110156124d157600080fd5b506020015190506124e987846110f18782808861438a565b61250389876124f788614558565b600003846000036128e0565b61250f898730886113f1565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156125b057600080fd5b505af11580156125c4573d6000803e3d6000fd5b505050506040513d60208110156125da57600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561262657600080fd5b505af115801561263a573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f1935050505015801561266b573d6000803e3d6000fd5b50505050505050505050565b6111aa848361229884614558565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b801561288057836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561271457600080fd5b505af1158015612728573d6000803e3d6000fd5b505050506040513d602081101561273e57600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b15801561279657600080fd5b505af11580156127aa573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156127e957600080fd5b505af11580156127fd573d6000803e3d6000fd5b505050506040513d602081101561281357600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561144a57600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561144a57600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561297c57600080fd5b505afa158015612990573d6000803e3d6000fd5b505050506040513d60208110156129a657600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015612a6757600080fd5b505afa158015612a7b573d6000803e3d6000fd5b505050506040513d6020811015612a9157600080fd5b50519050612aa9888660006115e2868c89888c6145a3565b612ab88886306115f688614720565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b158015612b0857600080fd5b505afa158015612b1c573d6000803e3d6000fd5b505050506040513d6020811015612b3257600080fd5b5051612ba957816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612b9057600080fd5b505af1158015612ba4573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561118757600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612c4f57600080fd5b505af1158015612c63573d6000803e3d6000fd5b505050505050565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ca657600080fd5b505af1158015612cba573d6000803e3d6000fd5b505050506040513d6020811015612cd057600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d6a57600080fd5b505af1158015612d7e573d6000803e3d6000fd5b505050506040513d6020811015612d9457600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612de757600080fd5b505af1158015612dfb573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b158015612c4f57600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d6020811015612ec057600080fd5b50519050612ecf8582846139dc565b6000612edb878561473d565b90506130c58886612eeb84614558565b6000036115e28c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d6020811015612f5457600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9e57600080fd5b505afa158015612fb2573d6000803e3d6000fd5b505050506040513d6020811015612fc857600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561301457600080fd5b505afa158015613028573d6000803e3d6000fd5b505050506040513d602081101561303e57600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561309457600080fd5b505afa1580156130a8573d6000803e3d6000fd5b505050506040513d60208110156130be57600080fd5b50516147bc565b6130d1888630846113f1565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b15801561118757600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612c4f57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b15801561144a57600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561320b57600080fd5b505afa15801561321f573d6000803e3d6000fd5b505050506040513d602081101561323557600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b15801561328457600080fd5b505afa158015613298573d6000803e3d6000fd5b505050506040513d60208110156132ae57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b1580156132fd57600080fd5b505afa158015613311573d6000803e3d6000fd5b505050506040513d602081101561332757600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561337b57600080fd5b505afa15801561338f573d6000803e3d6000fd5b505050506040513d60408110156133a557600080fd5b506020015190506133bd87846110f18782808861438a565b60006133c9898761473d565b90506133e58a886133d984614558565b600003856000036128e0565b6133f18a8830846113f1565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b15801561343f57600080fd5b505af1158015613453573d6000803e3d6000fd5b5050505050505050505050505050565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134a957600080fd5b505afa1580156134bd573d6000803e3d6000fd5b505050506040513d60208110156134d357600080fd5b505190506134e28582846139dc565b61369187856134f086614558565b6000036115e28b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561352f57600080fd5b505afa158015613543573d6000803e3d6000fd5b505050506040513d602081101561355957600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b15801561359b57600080fd5b505afa1580156135af573d6000803e3d6000fd5b505050506040513d60208110156135c557600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561361157600080fd5b505afa158015613625573d6000803e3d6000fd5b505050506040513d602081101561363b57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561309457600080fd5b61369d878530866113f1565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b1580156136eb57600080fd5b505af11580156136ff573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561373e57600080fd5b505af1158015613752573d6000803e3d6000fd5b505050506040513d602081101561376857600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156137b457600080fd5b505af11580156137c8573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f193505050501580156111a0573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b505191506001600160a01b0382166138ec576138e98761430d565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561392757600080fd5b505af115801561393b573d6000803e3d6000fd5b505050506040513d602081101561395157600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156139a557600080fd5b505af11580156139b9573d6000803e3d6000fd5b505050506139ce898989898989896000613edf565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613a1757600080fd5b505af1158015613a2b573d6000803e3d6000fd5b505050506040513d6020811015613a4157600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015613a9957600080fd5b505af1158015613aad573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613aec57600080fd5b505af1158015613b00573d6000803e3d6000fd5b505050506040513d6020811015613b1657600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b158015613b6a57600080fd5b505af1158015613b7e573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613c2857600080fd5b505afa158015613c3c573d6000803e3d6000fd5b505050506040513d6020811015613c5257600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b158015613c9a57600080fd5b505afa158015613cae573d6000803e3d6000fd5b505050506040513d6020811015613cc457600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b158015613d1357600080fd5b505afa158015613d27573d6000803e3d6000fd5b505050506040513d6020811015613d3d57600080fd5b50519050613d4d898488876126d3565b613d6c8b88613d5f611a788d8b61473d565b6115e2868f89888d6145a3565b613d7b8b88306115f689614720565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b158015613dcb57600080fd5b505afa158015613ddf573d6000803e3d6000fd5b505050506040513d6020811015613df557600080fd5b5051613e6c57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015613e5357600080fd5b505af1158015613e67573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b158015613eba57600080fd5b505af1158015613ece573d6000803e3d6000fd5b505050505050505050505050505050565b6000613eec8986306121f5565b9050613efe8989898985898989613be2565b98975050505050505050565b613f148230612c6b565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613f4d57600080fd5b505afa158015613f61573d6000803e3d6000fd5b505050506040513d6020811015613f7757600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613fcc57600080fd5b505afa158015613fe0573d6000803e3d6000fd5b505050506040513d6020811015613ff657600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b15801561403f57600080fd5b505afa158015614053573d6000803e3d6000fd5b505050506040513d602081101561406957600080fd5b5051308061407634614558565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b1580156117bd57600080fd5b60006140ed8784306121f5565b90506140fd87878787858761145e565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d602081101561417f57600080fd5b50516001600160a01b0316146141ce576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b612c638686868686611906565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561428957600080fd5b505afa15801561429d573d6000803e3d6000fd5b505050506040513d60208110156142b357600080fd5b50516001600160a01b031614614302576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6113eb848484613f0a565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b15801561435857600080fd5b505af115801561436c573d6000803e3d6000fd5b505050506040513d602081101561438257600080fd5b505192915050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b1580156143d157600080fd5b505afa1580156143e5573d6000803e3d6000fd5b505050506040513d60a08110156143fb57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561445257600080fd5b505afa158015614466573d6000803e3d6000fd5b505050506040513d604081101561447c57600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b1580156144d057600080fd5b505afa1580156144e4573d6000803e3d6000fd5b505050506040513d60208110156144fa57600080fd5b50519050600061451361450d84866148ec565b83614947565b9050676765c793fa10079d601b1b810494508061453b86676765c793fa10079d601b1b6148ec565b10614546578461454b565b846001015b9998505050505050505050565b80600081121561459e576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156145ec57600080fd5b505af1158015614600573d6000803e3d6000fd5b505050506040513d602081101561461657600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b15801561466857600080fd5b505afa15801561467c573d6000803e3d6000fd5b505050506040513d602081101561469257600080fd5b505190506146ab84676765c793fa10079d601b1b6148ec565b811015614715576146e1826146d46146ce87676765c793fa10079d601b1b6148ec565b84614947565b816146db57fe5b04614558565b92506146f884676765c793fa10079d601b1b6148ec565b61470284846148ec565b1061470d5782614712565b826001015b92505b505095945050505050565b600061473782676765c793fa10079d601b1b6148ec565b92915050565b60006147b582846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561477e57600080fd5b505af1158015614792573d6000803e3d6000fd5b505050506040513d60208110156147a857600080fd5b5051601203600a0a6148ec565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561480357600080fd5b505afa158015614817573d6000803e3d6000fd5b505050506040513d60a081101561482d57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561488457600080fd5b505afa158015614898573d6000803e3d6000fd5b505050506040513d60408110156148ae57600080fd5b506020015190506148c18287816146db57fe5b9250808311156148dc576148d481614558565b6000036148e1565b826000035b979650505050505050565b60008115806149075750508082028282828161490457fe5b04145b614737576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614737576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a7231582012dcfe4bf58005e81f7eafd7f0b120bebf5a4e6adcf218708bad72768b5c6e4e64736f6c634300050c0032
Deployed Bytecode
0x60806040526004361061023b5760003560e01c806396e8d72c1161012e578063c0791710116100ab578063e685cc041161006f578063e685cc0414610c7d578063ead6472914610cc9578063eb0b9a8514610d20578063ee28457614610d63578063fba7591d14610d9f5761023b565b8063c079171014610ab2578063c56167c614610b34578063cbd4be3f14610b77578063db802a3214610bdf578063e205c10814610c475761023b565b8063b50a5869116100f2578063b50a586914610949578063ba727a9514610984578063bcd6deec146109cb578063be5e6c0314610a1a578063beabacc814610a6f5761023b565b806396e8d72c146107f75780639f6f3d5b1461083c5780639f887fde1461088b578063a033df12146108c6578063a6add011146108f45761023b565b80634592aca7116101bc5780636ab6a491116101805780636ab6a4911461068c5780636d68b70b146106d55780637b5a3b43146107245780637bc3bd531461076d5780637df2eb25146107ac5761023b565b80634592aca71461051f578063493c2049146105625780634b666199146105ab5780635f6ef447146105f45780636aa3ee11146106375761023b565b80631d10f231116102035780631d10f231146103aa57806325cf37d0146103ed5780632958f8a5146104345780633e29e5651461048557806342dd11bb146104d65761023b565b8063036a23951461024057806308f00e34146102855780630aee8dec146102ce5780631558b048146103175780631c02d8461461035e575b600080fd5b34801561024c57600080fd5b506102836004803603606081101561026357600080fd5b506001600160a01b03813581169160208101359091169060400135610dee565b005b34801561029157600080fd5b50610283600480360360808110156102a857600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356111aa565b3480156102da57600080fd5b50610283600480360360808110156102f157600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611319565b34801561032357600080fd5b506102836004803603608081101561033a57600080fd5b506001600160a01b03813581169160208101359160408201351690606001356113f1565b610283600480360360c081101561037457600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a0013561145e565b3480156103b657600080fd5b50610283600480360360608110156103cd57600080fd5b506001600160a01b0381358116916020810135916040909101351661175d565b3480156103f957600080fd5b506102836004803603608081101561041057600080fd5b506001600160a01b03813581169160208101359160408201351690606001356117da565b34801561044057600080fd5b50610283600480360360a081101561045757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160809091013516611833565b34801561049157600080fd5b50610283600480360360a08110156104a857600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001351515611906565b3480156104e257600080fd5b50610283600480360360808110156104f957600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611b06565b34801561052b57600080fd5b506102836004803603606081101561054257600080fd5b506001600160a01b03813581169160208101359160409091013516611b69565b34801561056e57600080fd5b506102836004803603608081101561058557600080fd5b506001600160a01b03813581169160208101358216916040820135916060013516611bc9565b3480156105b757600080fd5b50610283600480360360808110156105ce57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611dbc565b34801561060057600080fd5b506102836004803603606081101561061757600080fd5b506001600160a01b03813581169160208101359091169060400135612195565b34801561064357600080fd5b5061067a6004803603606081101561065a57600080fd5b506001600160a01b038135811691602081013591604090910135166121f5565b60408051918252519081900360200190f35b34801561069857600080fd5b50610283600480360360808110156106af57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561227c565b3480156106e157600080fd5b50610283600480360360a08110156106f857600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356122fc565b34801561073057600080fd5b506102836004803603608081101561074757600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612677565b34801561077957600080fd5b506102836004803603606081101561079057600080fd5b506001600160a01b038135169060208101359060400135612685565b3480156107b857600080fd5b50610283600480360360808110156107cf57600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013515156126d3565b34801561080357600080fd5b506102836004803603608081101561081a57600080fd5b506001600160a01b0381351690602081013590604081013590606001356128e0565b34801561084857600080fd5b50610283600480360360a081101561085f57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135612936565b34801561089757600080fd5b50610283600480360360408110156108ae57600080fd5b506001600160a01b0381358116916020013516612bf7565b610283600480360360408110156108dc57600080fd5b506001600160a01b0381358116916020013516612c6b565b34801561090057600080fd5b50610283600480360360c081101561091757600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135612e50565b34801561095557600080fd5b506102836004803603604081101561096c57600080fd5b506001600160a01b038135811691602001351661311f565b34801561099057600080fd5b50610283600480360360808110156109a757600080fd5b506001600160a01b0381358116916020810135916040820135169060600135613177565b3480156109d757600080fd5b50610283600480360360a08110156109ee57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001356131d0565b348015610a2657600080fd5b50610283600480360360c0811015610a3d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060a00135613463565b348015610a7b57600080fd5b5061028360048036036060811015610a9257600080fd5b506001600160a01b038135811691602081013590911690604001356137f9565b348015610abe57600080fd5b50610b11600480360360e0811015610ad557600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c00135613859565b604080516001600160a01b03909316835260208301919091528051918290030190f35b348015610b4057600080fd5b5061028360048036036060811015610b5757600080fd5b506001600160a01b038135811691602081013590911690604001356139dc565b348015610b8357600080fd5b506102836004803603610100811015610b9b57600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613be2565b348015610beb57600080fd5b5061067a6004803603610100811015610c0357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a08101359060c08101359060e001351515613edf565b61028360048036036060811015610c5d57600080fd5b506001600160a01b03813581169160208101359091169060400135613f0a565b61067a600480360360c0811015610c9357600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101359091169060808101359060a001356140e0565b348015610cd557600080fd5b50610283600480360360c0811015610cec57600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013515159160a0013516614107565b348015610d2c57600080fd5b5061028360048036036060811015610d4357600080fd5b506001600160a01b038135811691602081013590911690604001356141db565b61028360048036036080811015610d7957600080fd5b506001600160a01b0381358116916020810135821691604082013591606001351661423b565b348015610dab57600080fd5b50610dd260048036036020811015610dc257600080fd5b50356001600160a01b031661430d565b604080516001600160a01b039092168252519081900360200190f35b6000836001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e2957600080fd5b505afa158015610e3d573d6000803e3d6000fd5b505050506040513d6020811015610e5357600080fd5b505160408051632726b07360e01b81526004810185905290519192506000916001600160a01b03871691632726b073916024808301926020929190829003018186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d6020811015610ecc57600080fd5b505160408051632c2cb9fd60e01b81526004810186905290519192506000916001600160a01b03881691632c2cb9fd916024808301926020929190829003018186803b158015610f1b57600080fd5b505afa158015610f2f573d6000803e3d6000fd5b505050506040513d6020811015610f4557600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b158015610f9957600080fd5b505afa158015610fad573d6000803e3d6000fd5b505050506040513d6040811015610fc357600080fd5b506020908101516040805163040b0d8960e51b81526004810189905290519193506000926001600160a01b038b1692638161b120926024808201939291829003018186803b15801561101457600080fd5b505afa158015611028573d6000803e3d6000fd5b505050506040513d602081101561103e57600080fd5b505190506001600160a01b0381163014806110db5750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d60208110156110d557600080fd5b50516001145b1561110b576110f687856110f18888898961438a565b6139dc565b61110688876000856000036128e0565b6111a0565b61111c87306110f18830898961438a565b60408051637608870360e01b8152600481018590526001600160a01b0386811660248301523060448301819052606483015260006084830181905285810360a484015292519088169263760887039260c4808201939182900301818387803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b505050505b5050505050505050565b6111b6848330846113f1565b6040805163ef693bed60e01b81523060048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50505050826001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561125757600080fd5b505af115801561126b573d6000803e3d6000fd5b505050506040513d602081101561128157600080fd5b505160408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015611312573d6000803e3d6000fd5b5050505050565b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561136757600080fd5b505afa15801561137b573d6000803e3d6000fd5b505050506040513d602081101561139157600080fd5b50516001600160a01b0316146113e0576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6113eb848484610dee565b50505050565b604080516313771f0760e31b8152600481018590526001600160a01b03848116602483015260448201849052915191861691639bb8f8389160648082019260009290919082900301818387803b15801561144a57600080fd5b505af11580156111a0573d6000803e3d6000fd5b6000866001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d60208110156114ce57600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038a16916336569e77916004808301926020929190829003018186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d602081101561154057600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038b1691632c2cb9fd916024808301926020929190829003018186803b15801561158f57600080fd5b505afa1580156115a3573d6000803e3d6000fd5b505050506040513d60208110156115b957600080fd5b505190506115c78784612c6b565b6115e789866115d534614558565b6115e2868d89888c6145a3565b6128e0565b6115fb8986306115f688614720565b6117da565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d602081101561167557600080fd5b50516116ec57816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156116d357600080fd5b505af11580156116e7573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b50505050505050505050505050565b826001600160a01b031663fcafcc6883836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b1580156117bd57600080fd5b505af11580156117d1573d6000803e3d6000fd5b50505050505050565b60408051637cf986db60e11b8152600481018590526001600160a01b0384811660248301526044820184905291519186169163f9f30db69160648082019260009290919082900301818387803b15801561144a57600080fd5b806001600160a01b0316856001600160a01b0316638161b120856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561188157600080fd5b505afa158015611895573d6000803e3d6000fd5b505050506040513d60208110156118ab57600080fd5b50516001600160a01b0316146118fa576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b61131285858585611dbc565b611912843084846126d3565b846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561194b57600080fd5b505afa15801561195f573d6000803e3d6000fd5b505050506040513d602081101561197557600080fd5b505160408051632c2cb9fd60e01b81526004810186905290516001600160a01b039283169263760887039290891691632c2cb9fd91602480820192602092909190829003018186803b1580156119ca57600080fd5b505afa1580156119de573d6000803e3d6000fd5b505050506040513d60208110156119f457600080fd5b505160408051632726b07360e01b81526004810188905290516001600160a01b038a1691632726b073916024808301926020929190829003018186803b158015611a3d57600080fd5b505afa158015611a51573d6000803e3d6000fd5b505050506040513d6020811015611a6757600080fd5b50513080611a7d611a788b8a61473d565b614558565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b158015611ae757600080fd5b505af1158015611afb573d6000803e3d6000fd5b505050505050505050565b611b1b848330611b16878661473d565b6113f1565b6040805163ef693bed60e01b81523360048201526024810183905290516001600160a01b0385169163ef693bed91604480830192600092919082900301818387803b15801561144a57600080fd5b826001600160a01b0316631b0dbf7283836040518363ffffffff1660e01b815260040180838152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b1580156117bd57600080fd5b6000846001600160a01b031663c4552791836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611c2157600080fd5b505afa158015611c35573d6000803e3d6000fd5b505050506040513d6020811015611c4b57600080fd5b505190506001600160a01b0381161580611cdb5750816001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ca357600080fd5b505afa158015611cb7573d6000803e3d6000fd5b505050506040513d6020811015611ccd57600080fd5b50516001600160a01b031614155b15611db157813b8015611d29576040805162461bcd60e51b8152602060048201526011602482015270111cdd0b5a5ccb584b58dbdb9d1c9858dd607a1b604482015290519081900360640190fd5b856001600160a01b031663f3701da2846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611d8157600080fd5b505af1158015611d95573d6000803e3d6000fd5b505050506040513d6020811015611dab57600080fd5b50519150505b61131284848361175d565b6000846001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015611df757600080fd5b505afa158015611e0b573d6000803e3d6000fd5b505050506040513d6020811015611e2157600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03881691632726b073916024808301926020929190829003018186803b158015611e7057600080fd5b505afa158015611e84573d6000803e3d6000fd5b505050506040513d6020811015611e9a57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b03891691632c2cb9fd916024808301926020929190829003018186803b158015611ee957600080fd5b505afa158015611efd573d6000803e3d6000fd5b505050506040513d6020811015611f1357600080fd5b50516040805163040b0d8960e51b81526004810188905290519192506000916001600160a01b038a1691638161b120916024808301926020929190829003018186803b158015611f6257600080fd5b505afa158015611f76573d6000803e3d6000fd5b505050506040513d6020811015611f8c57600080fd5b505190506001600160a01b0381163014806120295750604080516302d75da360e51b81526001600160a01b038381166004830152602482018990523060448301529151918a1691635aebb46091606480820192602092909190829003018186803b158015611ff957600080fd5b505afa15801561200d573d6000803e3d6000fd5b505050506040513d602081101561202357600080fd5b50516001145b156120cd576120398784876139dc565b611106888760006115e288896001600160a01b0316636c25b3468a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561209a57600080fd5b505afa1580156120ae573d6000803e3d6000fd5b505050506040513d60208110156120c457600080fd5b505189896147bc565b6120d88730876139dc565b836001600160a01b031663760887038385303060006121068b676765c793fa10079d601b1b8e028c8c6147bc565b6040518763ffffffff1660e01b815260040180878152602001866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018281526020019650505050505050600060405180830381600087803b15801561118757600080fd5b826001600160a01b031663b68f400483836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b60408051636090dec560e01b8152600481018490526001600160a01b0383811660248301529151600092861691636090dec591604480830192602092919082900301818787803b15801561224857600080fd5b505af115801561225c573d6000803e3d6000fd5b505050506040513d602081101561227257600080fd5b5051949350505050565b6000612288848361473d565b90506122a2858461229884614558565b60000360006128e0565b6122ae858430846113f1565b6040805163ef693bed60e01b81523360048201526024810184905290516001600160a01b0386169163ef693bed91604480830192600092919082900301818387803b158015611ae757600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561233757600080fd5b505afa15801561234b573d6000803e3d6000fd5b505050506040513d602081101561236157600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b1580156123b057600080fd5b505afa1580156123c4573d6000803e3d6000fd5b505050506040513d60208110156123da57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b15801561242957600080fd5b505afa15801561243d573d6000803e3d6000fd5b505050506040513d602081101561245357600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b1580156124a757600080fd5b505afa1580156124bb573d6000803e3d6000fd5b505050506040513d60408110156124d157600080fd5b506020015190506124e987846110f18782808861438a565b61250389876124f788614558565b600003846000036128e0565b61250f898730886113f1565b6040805163ef693bed60e01b81523060048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b50505050876001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156125b057600080fd5b505af11580156125c4573d6000803e3d6000fd5b505050506040513d60208110156125da57600080fd5b505160408051632e1a7d4d60e01b81526004810188905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561262657600080fd5b505af115801561263a573d6000803e3d6000fd5b505060405133925087156108fc02915087906000818181858888f1935050505015801561266b573d6000803e3d6000fd5b50505050505050505050565b6111aa848361229884614558565b826001600160a01b031663e50322a283836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b801561288057836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561271457600080fd5b505af1158015612728573d6000803e3d6000fd5b505050506040513d602081101561273e57600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b15801561279657600080fd5b505af11580156127aa573d6000803e3d6000fd5b50505050836001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156127e957600080fd5b505af11580156127fd573d6000803e3d6000fd5b505050506040513d602081101561281357600080fd5b50516040805163095ea7b360e01b81526001600160a01b038781166004830152602482018690529151919092169163095ea7b391604480830192600092919082900301818387803b15801561286757600080fd5b505af115801561287b573d6000803e3d6000fd5b505050505b836001600160a01b0316633b4da69f84846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561144a57600080fd5b836001600160a01b03166345e6bdcd8484846040518463ffffffff1660e01b8152600401808481526020018381526020018281526020019350505050600060405180830381600087803b15801561144a57600080fd5b6000856001600160a01b0316632726b073846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561297c57600080fd5b505afa158015612990573d6000803e3d6000fd5b505050506040513d60208110156129a657600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038916916336569e77916004808301926020929190829003018186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d6020811015612a1857600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b158015612a6757600080fd5b505afa158015612a7b573d6000803e3d6000fd5b505050506040513d6020811015612a9157600080fd5b50519050612aa9888660006115e2868c89888c6145a3565b612ab88886306115f688614720565b60408051634538c4eb60e01b81523060048201526001600160a01b038881166024830152915191841691634538c4eb91604480820192602092909190829003018186803b158015612b0857600080fd5b505afa158015612b1c573d6000803e3d6000fd5b505050506040513d6020811015612b3257600080fd5b5051612ba957816001600160a01b031663a3b22fc4876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612b9057600080fd5b505af1158015612ba4573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b15801561118757600080fd5b816001600160a01b031663dc4d20fa826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612c4f57600080fd5b505af1158015612c63573d6000803e3d6000fd5b505050505050565b816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612ca657600080fd5b505af1158015612cba573d6000803e3d6000fd5b505050506040513d6020811015612cd057600080fd5b505160408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0913491600480830192600092919082900301818588803b158015612d1657600080fd5b505af1158015612d2a573d6000803e3d6000fd5b5050505050816001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612d6a57600080fd5b505af1158015612d7e573d6000803e3d6000fd5b505050506040513d6020811015612d9457600080fd5b50516040805163095ea7b360e01b81526001600160a01b0385811660048301523460248301529151919092169163095ea7b391604480830192600092919082900301818387803b158015612de757600080fd5b505af1158015612dfb573d6000803e3d6000fd5b505060408051633b4da69f60e01b81526001600160a01b03858116600483015234602483015291519186169350633b4da69f925060448082019260009290919082900301818387803b158015612c4f57600080fd5b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d6020811015612ec057600080fd5b50519050612ecf8582846139dc565b6000612edb878561473d565b90506130c58886612eeb84614558565b6000036115e28c6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d6020811015612f5457600080fd5b81019080805190602001909291905050508d6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9e57600080fd5b505afa158015612fb2573d6000803e3d6000fd5b505050506040513d6020811015612fc857600080fd5b505160408051633612d9a360e11b81526001600160a01b038b8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561301457600080fd5b505afa158015613028573d6000803e3d6000fd5b505050506040513d602081101561303e57600080fd5b8101908080519060200190929190505050888f6001600160a01b0316632c2cb9fd8e6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561309457600080fd5b505afa1580156130a8573d6000803e3d6000fd5b505050506040513d60208110156130be57600080fd5b50516147bc565b6130d1888630846113f1565b6040805163ef693bed60e01b81523360048201526024810186905290516001600160a01b0389169163ef693bed91604480830192600092919082900301818387803b15801561118757600080fd5b816001600160a01b031663a3b22fc4826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015612c4f57600080fd5b604080516305b1fdb160e11b8152600481018590526001600160a01b03848116602483015260448201849052915191861691630b63fb629160648082019260009290919082900301818387803b15801561144a57600080fd5b6000856001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561320b57600080fd5b505afa15801561321f573d6000803e3d6000fd5b505050506040513d602081101561323557600080fd5b505160408051632726b07360e01b81526004810186905290519192506000916001600160a01b03891691632726b073916024808301926020929190829003018186803b15801561328457600080fd5b505afa158015613298573d6000803e3d6000fd5b505050506040513d60208110156132ae57600080fd5b505160408051632c2cb9fd60e01b81526004810187905290519192506000916001600160a01b038a1691632c2cb9fd916024808301926020929190829003018186803b1580156132fd57600080fd5b505afa158015613311573d6000803e3d6000fd5b505050506040513d602081101561332757600080fd5b5051604080516309092f9760e21b8152600481018390526001600160a01b038581166024830152825193945060009390871692632424be5c9260448082019391829003018186803b15801561337b57600080fd5b505afa15801561338f573d6000803e3d6000fd5b505050506040513d60408110156133a557600080fd5b506020015190506133bd87846110f18782808861438a565b60006133c9898761473d565b90506133e58a886133d984614558565b600003856000036128e0565b6133f18a8830846113f1565b6040805163ef693bed60e01b81523360048201526024810188905290516001600160a01b038b169163ef693bed91604480830192600092919082900301818387803b15801561343f57600080fd5b505af1158015613453573d6000803e3d6000fd5b5050505050505050505050505050565b6000866001600160a01b0316632726b073856040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156134a957600080fd5b505afa1580156134bd573d6000803e3d6000fd5b505050506040513d60208110156134d357600080fd5b505190506134e28582846139dc565b61369187856134f086614558565b6000036115e28b6001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b15801561352f57600080fd5b505afa158015613543573d6000803e3d6000fd5b505050506040513d602081101561355957600080fd5b5051604080516336569e7760e01b815290516001600160a01b038f16916336569e77916004808301926020929190829003018186803b15801561359b57600080fd5b505afa1580156135af573d6000803e3d6000fd5b505050506040513d60208110156135c557600080fd5b505160408051633612d9a360e11b81526001600160a01b038a8116600483015291519190921691636c25b346916024808301926020929190829003018186803b15801561361157600080fd5b505afa158015613625573d6000803e3d6000fd5b505050506040513d602081101561363b57600080fd5b8101908080519060200190929190505050878e6001600160a01b0316632c2cb9fd8d6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561309457600080fd5b61369d878530866113f1565b6040805163ef693bed60e01b81523060048201526024810185905290516001600160a01b0388169163ef693bed91604480830192600092919082900301818387803b1580156136eb57600080fd5b505af11580156136ff573d6000803e3d6000fd5b50505050856001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561373e57600080fd5b505af1158015613752573d6000803e3d6000fd5b505050506040513d602081101561376857600080fd5b505160408051632e1a7d4d60e01b81526004810186905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b1580156137b457600080fd5b505af11580156137c8573d6000803e3d6000fd5b505060405133925085156108fc02915085906000818181858888f193505050501580156111a0573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b60408051638c4c280160e01b8152306004820152905160009182916001600160a01b03891691638c4c2801916024808301926020929190829003018186803b1580156138a457600080fd5b505afa1580156138b8573d6000803e3d6000fd5b505050506040513d60208110156138ce57600080fd5b505191506001600160a01b0382166138ec576138e98761430d565b91505b866001600160a01b0316637bd2bea76040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561392757600080fd5b505af115801561393b573d6000803e3d6000fd5b505050506040513d602081101561395157600080fd5b50516040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018890529151919092169163a9059cbb91604480830192600092919082900301818387803b1580156139a557600080fd5b505af11580156139b9573d6000803e3d6000fd5b505050506139ce898989898989896000613edf565b905097509795505050505050565b826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613a1757600080fd5b505af1158015613a2b573d6000803e3d6000fd5b505050506040513d6020811015613a4157600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd9160648082019260009290919082900301818387803b158015613a9957600080fd5b505af1158015613aad573d6000803e3d6000fd5b50505050826001600160a01b031663f4b9fa756040518163ffffffff1660e01b8152600401602060405180830381600087803b158015613aec57600080fd5b505af1158015613b00573d6000803e3d6000fd5b505050506040513d6020811015613b1657600080fd5b50516040805163095ea7b360e01b81526001600160a01b038681166004830152602482018590529151919092169163095ea7b391604480830192600092919082900301818387803b158015613b6a57600080fd5b505af1158015613b7e573d6000803e3d6000fd5b50505050826001600160a01b0316633b4da69f83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b6000886001600160a01b0316632726b073866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613c2857600080fd5b505afa158015613c3c573d6000803e3d6000fd5b505050506040513d6020811015613c5257600080fd5b5051604080516336569e7760e01b815290519192506000916001600160a01b038c16916336569e77916004808301926020929190829003018186803b158015613c9a57600080fd5b505afa158015613cae573d6000803e3d6000fd5b505050506040513d6020811015613cc457600080fd5b505160408051632c2cb9fd60e01b81526004810189905290519192506000916001600160a01b038d1691632c2cb9fd916024808301926020929190829003018186803b158015613d1357600080fd5b505afa158015613d27573d6000803e3d6000fd5b505050506040513d6020811015613d3d57600080fd5b50519050613d4d898488876126d3565b613d6c8b88613d5f611a788d8b61473d565b6115e2868f89888d6145a3565b613d7b8b88306115f689614720565b60408051634538c4eb60e01b81523060048201526001600160a01b038a81166024830152915191841691634538c4eb91604480820192602092909190829003018186803b158015613dcb57600080fd5b505afa158015613ddf573d6000803e3d6000fd5b505050506040513d6020811015613df557600080fd5b5051613e6c57816001600160a01b031663a3b22fc4896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015613e5357600080fd5b505af1158015613e67573d6000803e3d6000fd5b505050505b6040805163ef693bed60e01b81523360048201526024810187905290516001600160a01b038a169163ef693bed91604480830192600092919082900301818387803b158015613eba57600080fd5b505af1158015613ece573d6000803e3d6000fd5b505050505050505050505050505050565b6000613eec8986306121f5565b9050613efe8989898985898989613be2565b98975050505050505050565b613f148230612c6b565b826001600160a01b03166336569e776040518163ffffffff1660e01b815260040160206040518083038186803b158015613f4d57600080fd5b505afa158015613f61573d6000803e3d6000fd5b505050506040513d6020811015613f7757600080fd5b505160408051632c2cb9fd60e01b81526004810184905290516001600160a01b039283169263760887039290871691632c2cb9fd91602480820192602092909190829003018186803b158015613fcc57600080fd5b505afa158015613fe0573d6000803e3d6000fd5b505050506040513d6020811015613ff657600080fd5b505160408051632726b07360e01b81526004810186905290516001600160a01b03881691632726b073916024808301926020929190829003018186803b15801561403f57600080fd5b505afa158015614053573d6000803e3d6000fd5b505050506040513d602081101561406957600080fd5b5051308061407634614558565b604080516001600160e01b031960e089901b16815260048101969096526001600160a01b0394851660248701529284166044860152921660648401526084830191909152600060a48301819052905160c48084019382900301818387803b1580156117bd57600080fd5b60006140ed8784306121f5565b90506140fd87878787858761145e565b9695505050505050565b806001600160a01b0316866001600160a01b0316638161b120866040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561415557600080fd5b505afa158015614169573d6000803e3d6000fd5b505050506040513d602081101561417f57600080fd5b50516001600160a01b0316146141ce576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b612c638686868686611906565b826001600160a01b0316637e348b7d83836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156117bd57600080fd5b806001600160a01b0316846001600160a01b0316638161b120846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561428957600080fd5b505afa15801561429d573d6000803e3d6000fd5b505050506040513d60208110156142b357600080fd5b50516001600160a01b031614614302576040805162461bcd60e51b815260206004820152600f60248201526e0deeedccae45adad2e6e6dac2e8c6d608b1b604482015290519081900360640190fd5b6113eb848484613f0a565b60408051631060930d60e01b815230600482015290516000916001600160a01b03841691631060930d9160248082019260209290919082900301818787803b15801561435857600080fd5b505af115801561436c573d6000803e3d6000fd5b505050506040513d602081101561438257600080fd5b505192915050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b1580156143d157600080fd5b505afa1580156143e5573d6000803e3d6000fd5b505050506040513d60a08110156143fb57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561445257600080fd5b505afa158015614466573d6000803e3d6000fd5b505050506040513d604081101561447c57600080fd5b5060209081015160408051633612d9a360e11b81526001600160a01b038a811660048301529151929450600093918b1692636c25b34692602480840193919291829003018186803b1580156144d057600080fd5b505afa1580156144e4573d6000803e3d6000fd5b505050506040513d60208110156144fa57600080fd5b50519050600061451361450d84866148ec565b83614947565b9050676765c793fa10079d601b1b810494508061453b86676765c793fa10079d601b1b6148ec565b10614546578461454b565b846001015b9998505050505050505050565b80600081121561459e576040805162461bcd60e51b815260206004820152600c60248201526b696e742d6f766572666c6f7760a01b604482015290519081900360640190fd5b919050565b600080856001600160a01b03166344e2a5a8856040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b1580156145ec57600080fd5b505af1158015614600573d6000803e3d6000fd5b505050506040513d602081101561461657600080fd5b505160408051633612d9a360e11b81526001600160a01b0388811660048301529151929350600092918a1691636c25b34691602480820192602092909190829003018186803b15801561466857600080fd5b505afa15801561467c573d6000803e3d6000fd5b505050506040513d602081101561469257600080fd5b505190506146ab84676765c793fa10079d601b1b6148ec565b811015614715576146e1826146d46146ce87676765c793fa10079d601b1b6148ec565b84614947565b816146db57fe5b04614558565b92506146f884676765c793fa10079d601b1b6148ec565b61470284846148ec565b1061470d5782614712565b826001015b92505b505095945050505050565b600061473782676765c793fa10079d601b1b6148ec565b92915050565b60006147b582846001600160a01b031663b3bcfa826040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561477e57600080fd5b505af1158015614792573d6000803e3d6000fd5b505050506040513d60208110156147a857600080fd5b5051601203600a0a6148ec565b9392505050565b600080856001600160a01b031663d9638d36846040518263ffffffff1660e01b81526004018082815260200191505060a06040518083038186803b15801561480357600080fd5b505afa158015614817573d6000803e3d6000fd5b505050506040513d60a081101561482d57600080fd5b5060200151604080516309092f9760e21b8152600481018690526001600160a01b0387811660248301528251939450600093908a1692632424be5c9260448082019391829003018186803b15801561488457600080fd5b505afa158015614898573d6000803e3d6000fd5b505050506040513d60408110156148ae57600080fd5b506020015190506148c18287816146db57fe5b9250808311156148dc576148d481614558565b6000036148e1565b826000035b979650505050505050565b60008115806149075750508082028282828161490457fe5b04145b614737576040805162461bcd60e51b815260206004820152600c60248201526b6d756c2d6f766572666c6f7760a01b604482015290519081900360640190fd5b80820382811115614737576040805162461bcd60e51b815260206004820152600c60248201526b7375622d6f766572666c6f7760a01b604482015290519081900360640190fdfea265627a7a7231582012dcfe4bf58005e81f7eafd7f0b120bebf5a4e6adcf218708bad72768b5c6e4e64736f6c634300050c0032
Deployed Bytecode Sourcemap
4236:22264:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17474:1106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17474:1106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17474:1106:0;;;;;;;;;;;;;;;;;:::i;:::-;;14327:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14327:526:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14327:526:0;;;;;;;;;;;;;;;;;;;;;;:::i;18588:257::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18588:257:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18588:257:0;;;;;;;;;;;;;;;;;;;;;;:::i;10240:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10240:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10240:173:0;;;;;;;;;;;;;;;;;;;;:::i;18853:1058::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;18853:1058:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8804:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8804:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8804:149:0;;;;;;;;;;;;;;;;;:::i;10421:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10421:173:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10421:173:0;;;;;;;;;;;;;;;;;;;;:::i;17191:275::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17191:275:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;17191:275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12244:611::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12244:611:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12244:611:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14861:383::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14861:383:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;14861:383:0;;;;;;;;;;;;;;;;;;;;;;:::i;10782:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10782:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10782:149:0;;;;;;;;;;;;;;;;;:::i;8961:921::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8961:921:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8961:921:0;;;;;;;;;;;;;;;;;;;;;;:::i;16115:1068::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16115:1068:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;16115:1068:0;;;;;;;;;;;;;;;;;;;;;;:::i;10077:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10077:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10077:155:0;;;;;;;;;;;;;;;;;:::i;8619:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8619:177:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8619:177:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13816:503;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13816:503:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13816:503:0;;;;;;;;;;;;;;;;;;;;;;:::i;23523:1082::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23523:1082:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;23523:1082:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13194:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13194:614:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;13194:614:0;;;;;;;;;;;;;;;;;;;;;;:::i;11098:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11098:160:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11098:160:0;;;;;;;;;;;;;:::i;7816:551::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7816:551:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7816:551:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;10602:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10602:172:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;10602:172:0;;;;;;;;;;;;;;;;;;:::i;15252:855::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15252:855:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;15252:855:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8497:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8497:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8497:114:0;;;;;;;;;;:::i;7433:375::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7433:375:0;;;;;;;;;;:::i;24613:908::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24613:908:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;24613:908:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8375:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8375:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8375:114:0;;;;;;;;;;:::i;9890:179::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9890:179:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;9890:179:0;;;;;;;;;;;;;;;;;;;;:::i;25529:968::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25529:968:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;25529:968:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22493:1022::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22493:1022:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;22493:1022:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7314:111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7314:111:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7314:111:0;;;;;;;;;;;;;;;;;:::i;21807:678::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21807:678:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21807:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;21807:678:0;;;;;;;;;;;;;;;;;;;;;3854:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3854:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3854:375:0;;;;;;;;;;;;;;;;;:::i;20264:1130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20264:1130:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;20264:1130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21402:397::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21402:397:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;21402:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11421:542::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11421:542:0;;;;;;;;;;;;;;;;;:::i;19919:337::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;19919:337:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12863:323::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12863:323:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;12863:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10939:151::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10939:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10939:151:0;;;;;;;;;;;;;;;;;:::i;11971:265::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;11971:265:0;;;;;;;;;;;;;;;;;;;;;;:::i;11266:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11266:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11266:147:0;-1:-1:-1;;;;;11266:147:0;;:::i;:::-;;;;-1:-1:-1;;;;;11266:147:0;;;;;;;;;;;;;;17474:1106;17587:11;17613:7;-1:-1:-1;;;;;17601:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17601:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17601:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17601:26:0;17652:30;;;-1:-1:-1;;;17652:30:0;;;;;;;;;;17601:26;;-1:-1:-1;17638:11:0;;-1:-1:-1;;;;;17652:25:0;;;;;:30;;;;;17601:26;;17652:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17652:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17652:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17652:30:0;17707;;;-1:-1:-1;;;17707:30:0;;;;;;;;;;17652;;-1:-1:-1;17693:11:0;;-1:-1:-1;;;;;17707:25:0;;;;;:30;;;;;17652;;17707;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17707:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17707:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17707:30:0;17763:27;;;-1:-1:-1;;;17763:27:0;;;;;;;;-1:-1:-1;;;;;17763:27:0;;;;;;;;;17707:30;;-1:-1:-1;17751:8:0;;17763:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;17763:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17763:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17763:27:0;;;;;;17817:30;;-1:-1:-1;;;17817:30:0;;;;;;;;;;17763:27;;-1:-1:-1;17803:11:0;;-1:-1:-1;;;;;17817:25:0;;;;;:30;;;;;17763:27;17817:30;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;17817:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17817:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17817:30:0;;-1:-1:-1;;;;;;17862:20:0;;17877:4;17862:20;;:81;;-1:-1:-1;17886:52:0;;;-1:-1:-1;;;17886:52:0;;-1:-1:-1;;;;;17886:52:0;;;;;;;;;;;;;17932:4;17886:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;17886:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17886:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17886:52:0;17942:1;17886:57;17862:81;17858:715;;;18006:62;18019:7;18028:3;18033:34;18048:3;18053;18058;18063;18033:14;:34::i;:::-;18006:12;:62::i;:::-;18124:32;18129:7;18138:3;18143:1;18151:3;18146:9;;18124:4;:32::i;:::-;17858:715;;;18235:82;18248:7;18265:4;18272:44;18287:3;18300:4;18307:3;18312;18272:14;:44::i;18235:82::-;18373:188;;;-1:-1:-1;;;18373:188:0;;;;;;;;-1:-1:-1;;;;;18373:188:0;;;;;;;18461:4;18373:188;;;;;;;;;;18517:1;18373:188;;;;;;18537:9;;;18373:188;;;;;;:17;;;;;;:188;;;;;;;;;;;18517:1;18373:17;:188;;;5:2:-1;;;;30:1;27;20:12;5:2;18373:188:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18373:188:0;;;;17858:715;17474:1106;;;;;;;;:::o;14327:526::-;14524:38;14529:7;14538:3;14551:4;14558:3;14524:4;:38::i;:::-;14633:45;;;-1:-1:-1;;;14633:45:0;;14667:4;14633:45;;;;;;;;;;;;-1:-1:-1;;;;;14633:25:0;;;;;:45;;;;;-1:-1:-1;;14633:45:0;;;;;;;-1:-1:-1;14633:25:0;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;14633:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14633:45:0;;;;14734:7;-1:-1:-1;;;;;14722:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14722:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14722:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14722:26:0;:40;;;-1:-1:-1;;;14722:40:0;;;;;;;;;;-1:-1:-1;;;;;14722:35:0;;;;;;:40;;;;;-1:-1:-1;;14722:40:0;;;;;;;;-1:-1:-1;14722:35:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;14722:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14821:24:0;;:10;;-1:-1:-1;14821:24:0;;;;;-1:-1:-1;14841:3:0;;14821:24;;;;14841:3;14821:10;:24;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14821:24:0;14327:526;;;;:::o;18588:257::-;18771:5;-1:-1:-1;;;;;18737:39:0;18749:7;-1:-1:-1;;;;;18737:25:0;;18763:3;18737:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18737:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18737:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18737:30:0;-1:-1:-1;;;;;18737:39:0;;18729:67;;;;;-1:-1:-1;;;18729:67:0;;;;;;;;;;;;-1:-1:-1;;;18729:67:0;;;;;;;;;;;;;;;18807:30;18815:7;18824;18833:3;18807:7;:30::i;:::-;18588:257;;;;:::o;10240:173::-;10365:40;;;-1:-1:-1;;;10365:40:0;;;;;;;;-1:-1:-1;;;;;10365:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;10365:40:0;;;;;;;;-1:-1:-1;10365:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;10365:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;18853:1058:0;19049:11;19075:7;-1:-1:-1;;;;;19063:25:0;;19089:3;19063:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19063:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19063:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19063:30:0;19118:26;;;-1:-1:-1;;;19118:26:0;;;;19063:30;;-1:-1:-1;19104:11:0;;-1:-1:-1;;;;;19118:24:0;;;;;:26;;;;;19063:30;;19118:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;19118:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19118:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19118:26:0;19169:30;;;-1:-1:-1;;;19169:30:0;;;;;;;;;;19118:26;;-1:-1:-1;19155:11:0;;-1:-1:-1;;;;;19169:25:0;;;;;:30;;;;;19118:26;;19169:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;19169:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19169:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19169:30:0;;-1:-1:-1;19289:26:0;19302:7;19311:3;19289:12;:26::i;:::-;19388:76;19393:7;19402:3;19407:16;19413:9;19407:5;:16::i;:::-;19425:38;19438:3;19443;19448;19453;19458:4;19425:12;:38::i;:::-;19388:4;:76::i;:::-;19555:46;19560:7;19569:3;19582:4;19589:11;19595:4;19589:5;:11::i;:::-;19555:4;:46::i;:::-;19687:49;;;-1:-1:-1;;;19687:49:0;;19712:4;19687:49;;;;-1:-1:-1;;;;;19687:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;19687:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19687:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19687:49:0;19683:113;;19766:3;-1:-1:-1;;;;;19758:17:0;;19776:7;19758:26;;;;;;;;;;;;;-1:-1:-1;;;;;19758:26:0;-1:-1:-1;;;;;19758:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19758:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19758:26:0;;;;19683:113;19860:43;;;-1:-1:-1;;;19860:43:0;;19886:10;19860:43;;;;;;;;;;;;-1:-1:-1;;;;;19860:25:0;;;;;:43;;;;;-1:-1:-1;;19860:43:0;;;;;;;-1:-1:-1;19860:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;19860:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19860:43:0;;;;18853:1058;;;;;;;;;:::o;8804:149::-;8922:7;-1:-1:-1;;;;;8910:25:0;;8936:3;8941;8910:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8910:35:0;-1:-1:-1;;;;;8910:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8910:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8910:35:0;;;;8804:149;;;:::o;10421:173::-;10546:40;;;-1:-1:-1;;;10546:40:0;;;;;;;;-1:-1:-1;;;;;10546:40:0;;;;;;;;;;;;;;;:25;;;;;;:40;;;;;-1:-1:-1;;10546:40:0;;;;;;;;-1:-1:-1;10546:25:0;:40;;;5:2:-1;;;;30:1;27;20:12;17191:275:0;17390:5;-1:-1:-1;;;;;17356:39:0;17368:7;-1:-1:-1;;;;;17356:25:0;;17382:3;17356:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17356:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17356:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17356:30:0;-1:-1:-1;;;;;17356:39:0;;17348:67;;;;;-1:-1:-1;;;17348:67:0;;;;;;;;;;;;-1:-1:-1;;;17348:67:0;;;;;;;;;;;;;;;17426:32;17431:7;17440;17449:3;17454;17426:4;:32::i;12244:611::-;12477:55;12490:7;12507:4;12514:3;12519:12;12477;:55::i;:::-;12607:7;-1:-1:-1;;;;;12595:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12595:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12595:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12595:26:0;12642:30;;;-1:-1:-1;;;12642:30:0;;;;;;;;;;-1:-1:-1;;;;;12587:40:0;;;;;;12642:25;;;;;;:30;;;;;12595:26;;12642:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12642:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12642:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12642:30:0;12687;;;-1:-1:-1;;;12687:30:0;;;;;;;;;;-1:-1:-1;;;;;12687:25:0;;;;;:30;;;;;12642;;12687;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;12687:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12687:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12687:30:0;12740:4;;12788:32;12794:25;12806:7;12815:3;12794:11;:25::i;:::-;12788:5;:32::i;:::-;12587:260;;;-1:-1:-1;;;;;;12587:260:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12587:260:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12835:1;12587:260;;;;;;;;;;;;;;;;;;12835:1;12587:260;;;;5:2:-1;;;;30:1;27;20:12;5:2;12587:260:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12587:260:0;;;;12244:611;;;;;:::o;14861:383::-;15058:60;15063:7;15072:3;15085:4;15092:25;15104:7;15113:3;15092:11;:25::i;:::-;15058:4;:60::i;:::-;15194:42;;;-1:-1:-1;;;15194:42:0;;15220:10;15194:42;;;;;;;;;;;;-1:-1:-1;;;;;15194:25:0;;;;;:42;;;;;-1:-1:-1;;15194:42:0;;;;;;;-1:-1:-1;15194:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;10782:149:0;10900:7;-1:-1:-1;;;;;10888:25:0;;10914:3;10919;10888:35;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10888:35:0;-1:-1:-1;;;;;10888:35:0;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;8961:921:0;9144:13;9178;-1:-1:-1;;;;;9160:40:0;;9201:3;9160:45;;;;;;;;;;;;;-1:-1:-1;;;;;9160:45:0;-1:-1:-1;;;;;9160:45:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9160:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9160:45:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9160:45:0;;-1:-1:-1;;;;;;9311:19:0;;;;:54;;;9362:3;-1:-1:-1;;;;;9334:31:0;9344:5;-1:-1:-1;;;;;9334:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9334:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9334:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9334:24:0;-1:-1:-1;;;;;9334:31:0;;;9311:54;9307:489;;;9444:16;;9632:10;;9624:40;;;;;-1:-1:-1;;;9624:40:0;;;;;;;;;;;;-1:-1:-1;;;9624:40:0;;;;;;;;;;;;;;;9759:13;-1:-1:-1;;;;;9741:38:0;;9780:3;9741:43;;;;;;;;;;;;;-1:-1:-1;;;;;9741:43:0;-1:-1:-1;;;;;9741:43:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9741:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9741:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9741:43:0;;-1:-1:-1;;9307:489:0;9849:25;9854:7;9863:3;9868:5;9849:4;:25::i;16115:1068::-;16244:11;16270:7;-1:-1:-1;;;;;16258:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16258:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16258:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16258:26:0;16309:30;;;-1:-1:-1;;;16309:30:0;;;;;;;;;;16258:26;;-1:-1:-1;16295:11:0;;-1:-1:-1;;;;;16309:25:0;;;;;:30;;;;;16258:26;;16309:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16309:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16309:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16309:30:0;16364;;;-1:-1:-1;;;16364:30:0;;;;;;;;;;16309;;-1:-1:-1;16350:11:0;;-1:-1:-1;;;;;16364:25:0;;;;;:30;;;;;16309;;16364;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16364:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16364:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16364:30:0;16421;;;-1:-1:-1;;;16421:30:0;;;;;;;;;;16364;;-1:-1:-1;16407:11:0;;-1:-1:-1;;;;;16421:25:0;;;;;:30;;;;;16364;;16421;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;16421:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16421:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16421:30:0;;-1:-1:-1;;;;;;16466:20:0;;16481:4;16466:20;;:81;;-1:-1:-1;16490:52:0;;;-1:-1:-1;;;16490:52:0;;-1:-1:-1;;;;;16490:52:0;;;;;;;;;;;;;16536:4;16490:52;;;;;;:27;;;;;;:52;;;;;;;;;;;;;;;:27;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;16490:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16490:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16490:52:0;16546:1;16490:57;16466:81;16462:714;;;16610:31;16623:7;16632:3;16637;16610:12;:31::i;:::-;16697:73;16702:7;16711:3;16716:1;16719:50;16732:3;16745;-1:-1:-1;;;;;16737:16:0;;16754:3;16737:21;;;;;;;;;;;;;-1:-1:-1;;;;;16737:21:0;-1:-1:-1;;;;;16737:21:0;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16737:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16737:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16737:21:0;16760:3;16765;16719:12;:50::i;16462:714::-;16850:41;16863:7;16880:4;16887:3;16850:12;:41::i;:::-;16955:3;-1:-1:-1;;;;;16947:17:0;;16983:3;17005;17035:4;17067;17091:1;17111:38;17124:3;-1:-1:-1;;;17129:3:0;:9;17140:3;17145;17111:12;:38::i;:::-;16947:217;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16947:217:0;-1:-1:-1;;;;;16947:217:0;;;;;;-1:-1:-1;;;;;16947:217:0;-1:-1:-1;;;;;16947:217:0;;;;;;-1:-1:-1;;;;;16947:217:0;-1:-1:-1;;;;;16947:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;10077:155:0;10198:7;-1:-1:-1;;;;;10186:29:0;;10216:3;10221:2;10186:38;;;;;;;;;;;;;-1:-1:-1;;;;;10186:38:0;-1:-1:-1;;;;;10186:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;8619:177:0;8753:35;;;-1:-1:-1;;;8753:35:0;;;;;;;;-1:-1:-1;;;;;8753:35:0;;;;;;;;;8726:8;;8753:25;;;;;:35;;;;;;;;;;;;;;8726:8;8753:25;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;8753:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8753:35:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8753:35:0;;8619:177;-1:-1:-1;;;;8619:177:0:o;13816:503::-;13948:10;13961:25;13973:7;13982:3;13961:11;:25::i;:::-;13948:38;;14043:36;14048:7;14057:3;14063:12;14069:5;14063;:12::i;:::-;14062:13;;14077:1;14043:4;:36::i;:::-;14155:40;14160:7;14169:3;14182:4;14189:5;14155:4;:40::i;:::-;14269:42;;;-1:-1:-1;;;14269:42:0;;14295:10;14269:42;;;;;;;;;;;;-1:-1:-1;;;;;14269:25:0;;;;;:42;;;;;-1:-1:-1;;14269:42:0;;;;;;;-1:-1:-1;14269:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;23523:1082:0;23692:11;23718:7;-1:-1:-1;;;;;23706:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23706:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23706:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23706:26:0;23757:30;;;-1:-1:-1;;;23757:30:0;;;;;;;;;;23706:26;;-1:-1:-1;23743:11:0;;-1:-1:-1;;;;;23757:25:0;;;;;:30;;;;;23706:26;;23757:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;23757:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23757:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23757:30:0;23812;;;-1:-1:-1;;;23812:30:0;;;;;;;;;;23757;;-1:-1:-1;23798:11:0;;-1:-1:-1;;;;;23812:25:0;;;;;:30;;;;;23757;;23812;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;23812:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23812:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23812:30:0;23868:27;;;-1:-1:-1;;;23868:27:0;;;;;;;;-1:-1:-1;;;;;23868:27:0;;;;;;;;;23812:30;;-1:-1:-1;23856:8:0;;23868:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;23868:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23868:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23868:27:0;;;;-1:-1:-1;23950:62:0;23963:7;23972:3;23977:34;23992:3;23972;;24007;23977:14;:34::i;23950:62::-;24092:106;24111:7;24133:3;24152:11;24158:4;24152:5;:11::i;:::-;24151:12;;24183:3;24178:9;;24092:4;:106::i;:::-;24274:39;24279:7;24288:3;24301:4;24308;24274;:39::i;:::-;24382:46;;;-1:-1:-1;;;24382:46:0;;24416:4;24382:46;;;;;;;;;;;;-1:-1:-1;;;;;24382:25:0;;;;;:46;;;;;-1:-1:-1;;24382:46:0;;;;;;;-1:-1:-1;24382:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;24382:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24382:46:0;;;;24484:7;-1:-1:-1;;;;;24472:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24472:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24472:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24472:26:0;:41;;;-1:-1:-1;;;24472:41:0;;;;;;;;;;-1:-1:-1;;;;;24472:35:0;;;;;;:41;;;;;-1:-1:-1;;24472:41:0;;;;;;;;-1:-1:-1;24472:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;24472:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24572:25:0;;:10;;-1:-1:-1;24572:25:0;;;;;-1:-1:-1;24592:4:0;;24572:25;;;;24592:4;24572:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24572:25:0;23523:1082;;;;;;;;;:::o;13194:614::-;13371:34;13376:7;13385:3;13391:10;13397:3;13391:5;:10::i;11098:160::-;11220:7;-1:-1:-1;;;;;11208:26:0;;11235:6;11243;11208:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;7816:551:0;7999:12;7995:275;;;8090:3;-1:-1:-1;;;;;8078:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8078:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8078:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8078:22:0;:67;;;-1:-1:-1;;;8078:67:0;;8114:10;8078:67;;;;8134:4;8078:67;;;;;;;;;;;;-1:-1:-1;;;;;8078:35:0;;;;;;:67;;;;;-1:-1:-1;;8078:67:0;;;;;;;;-1:-1:-1;8078:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;8078:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8078:67:0;;;;8230:3;-1:-1:-1;;;;;8218:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8218:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8218:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8218:22:0;:40;;;-1:-1:-1;;;8218:40:0;;-1:-1:-1;;;;;8218:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;8218:40:0;;;;;;;-1:-1:-1;8218:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;8218:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8218:40:0;;;;7995:275;8340:3;-1:-1:-1;;;;;8328:21:0;;8350:3;8355;8328:31;;;;;;;;;;;;;-1:-1:-1;;;;;8328:31:0;-1:-1:-1;;;;;8328:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;10602:172:0;10736:7;-1:-1:-1;;;;;10724:25:0;;10750:3;10755:4;10761;10724:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;15252:855:0;15403:11;15429:7;-1:-1:-1;;;;;15417:25:0;;15443:3;15417:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15417:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15417:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15417:30:0;15472:26;;;-1:-1:-1;;;15472:26:0;;;;15417:30;;-1:-1:-1;15458:11:0;;-1:-1:-1;;;;;15472:24:0;;;;;:26;;;;;15417:30;;15472:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;15472:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15472:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15472:26:0;15523:30;;;-1:-1:-1;;;15523:30:0;;;;;;;;;;15472:26;;-1:-1:-1;15509:11:0;;-1:-1:-1;;;;;15523:25:0;;;;;:30;;;;;15472:26;;15523:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;15523:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15523:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15523:30:0;;-1:-1:-1;15602:60:0;15607:7;15616:3;15621:1;15624:37;15637:3;15642;15647;15523:30;15657:3;15624:12;:37::i;15602:60::-;15753:45;15758:7;15767:3;15780:4;15787:10;15793:3;15787:5;:10::i;15753:45::-;15884:49;;;-1:-1:-1;;;15884:49:0;;15909:4;15884:49;;;;-1:-1:-1;;;;;15884:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;15884:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15884:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15884:49:0;15880:113;;15963:3;-1:-1:-1;;;;;15955:17:0;;15973:7;15955:26;;;;;;;;;;;;;-1:-1:-1;;;;;15955:26:0;-1:-1:-1;;;;;15955:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15955:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15955:26:0;;;;15880:113;16057:42;;;-1:-1:-1;;;16057:42:0;;16083:10;16057:42;;;;;;;;;;;;-1:-1:-1;;;;;16057:25:0;;;;;:42;;;;;-1:-1:-1;;16057:42:0;;;;;;;-1:-1:-1;16057:25:0;:42;;;5:2:-1;;;;30:1;27;20:12;8497:114:0;8589:3;-1:-1:-1;;;;;8580:18:0;;8599:3;8580:23;;;;;;;;;;;;;-1:-1:-1;;;;;8580:23:0;-1:-1:-1;;;;;8580:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8580:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8580:23:0;;;;8497:114;;:::o;7433:375::-;7549:3;-1:-1:-1;;;;;7537:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7537:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7537:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7537:22:0;:49;;;-1:-1:-1;;;7537:49:0;;;;-1:-1:-1;;;;;7537:30:0;;;;;;7574:9;;7537:49;;;;;;;;;;;;;;7574:9;7537:30;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;7537:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7537:49:0;;;;;7662:3;-1:-1:-1;;;;;7650:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7650:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7650:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7650:22:0;:55;;;-1:-1:-1;;;7650:55:0;;-1:-1:-1;;;;;7650:55:0;;;;;;;7695:9;7650:55;;;;;;:30;;;;;;;:55;;;;;-1:-1:-1;;7650:55:0;;;;;;;-1:-1:-1;7650:30:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;7650:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7763:37:0;;;-1:-1:-1;;;7763:37:0;;-1:-1:-1;;;;;7763:37:0;;;;;;;7790:9;7763:37;;;;;;:21;;;;-1:-1:-1;7763:21:0;;-1:-1:-1;7763:37:0;;;;;-1:-1:-1;;7763:37:0;;;;;;;;-1:-1:-1;7763:21:0;:37;;;5:2:-1;;;;30:1;27;20:12;24613:908:0;24799:11;24825:7;-1:-1:-1;;;;;24813:25:0;;24839:3;24813:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24813:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24813:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24813:30:0;;-1:-1:-1;24896:32:0;24909:7;24813:30;24923:4;24896:12;:32::i;:::-;24939:10;24952:26;24964:7;24973:4;24952:11;:26::i;:::-;24939:39;;25059:221;25078:7;25100:3;25119:12;25125:5;25119;:12::i;:::-;25118:13;;25146:123;25171:7;-1:-1:-1;;;;;25159:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25159:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25159:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25159:26:0;;;;;;;;;;;;;;;;25207:7;-1:-1:-1;;;;;25195:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25195:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25195:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25195:26:0;25187:44;;;-1:-1:-1;;;25187:44:0;;-1:-1:-1;;;;;25187:44:0;;;;;;;;;:39;;;;;;;:44;;;;;25195:26;;25187:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;25187:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25187:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25187:44:0;;;;;;;;;;;;;;;;25233:3;25250:7;-1:-1:-1;;;;;25238:25:0;;25264:3;25238:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25238:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25238:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25238:30:0;25146:12;:123::i;25059:221::-;25356:40;25361:7;25370:3;25383:4;25390:5;25356:4;:40::i;:::-;25470:43;;;-1:-1:-1;;;25470:43:0;;25496:10;25470:43;;;;;;;;;;;;-1:-1:-1;;;;;25470:25:0;;;;;:43;;;;;-1:-1:-1;;25470:43:0;;;;;;;-1:-1:-1;25470:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;8375:114:0;8467:3;-1:-1:-1;;;;;8458:18:0;;8477:3;8458:23;;;;;;;;;;;;;-1:-1:-1;;;;;8458:23:0;-1:-1:-1;;;;;8458:23:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;9890:179:0;10018:43;;;-1:-1:-1;;;10018:43:0;;;;;;;;-1:-1:-1;;;;;10018:43:0;;;;;;;;;;;;;;;:29;;;;;;:43;;;;;-1:-1:-1;;10018:43:0;;;;;;;;-1:-1:-1;10018:29:0;:43;;;5:2:-1;;;;30:1;27;20:12;25529:968:0;25698:11;25724:7;-1:-1:-1;;;;;25712:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25712:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25712:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25712:26:0;25763:30;;;-1:-1:-1;;;25763:30:0;;;;;;;;;;25712:26;;-1:-1:-1;25749:11:0;;-1:-1:-1;;;;;25763:25:0;;;;;:30;;;;;25712:26;;25763:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;25763:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25763:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25763:30:0;25818;;;-1:-1:-1;;;25818:30:0;;;;;;;;;;25763;;-1:-1:-1;25804:11:0;;-1:-1:-1;;;;;25818:25:0;;;;;:30;;;;;25763;;25818;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;25818:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25818:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25818:30:0;25874:27;;;-1:-1:-1;;;25874:27:0;;;;;;;;-1:-1:-1;;;;;25874:27:0;;;;;;;;;25818:30;;-1:-1:-1;25862:8:0;;25874:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;25874:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25874:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25874:27:0;;;;-1:-1:-1;25956:62:0;25969:7;25978:3;25983:34;25998:3;25978;;26013;25983:14;:34::i;25956:62::-;26029:10;26042:26;26054:7;26063:4;26042:11;:26::i;:::-;26029:39;;26149:107;26168:7;26190:3;26209:12;26215:5;26209;:12::i;:::-;26208:13;;26241:3;26236:9;;26149:4;:107::i;:::-;26332:40;26337:7;26346:3;26359:4;26366:5;26332:4;:40::i;:::-;26446:43;;;-1:-1:-1;;;26446:43:0;;26472:10;26446:43;;;;;;;;;;;;-1:-1:-1;;;;;26446:25:0;;;;;:43;;;;;-1:-1:-1;;26446:43:0;;;;;;;-1:-1:-1;26446:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;26446:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26446:43:0;;;;25529:968;;;;;;;;;;:::o;22493:1022::-;22679:11;22705:7;-1:-1:-1;;;;;22693:25:0;;22719:3;22693:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22693:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22693:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22693:30:0;;-1:-1:-1;22776:32:0;22789:7;22693:30;22803:4;22776:12;:32::i;:::-;22888:220;22907:7;22929:3;22948:11;22954:4;22948:5;:11::i;:::-;22947:12;;22974:123;22999:7;-1:-1:-1;;;;;22987:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22987:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22987:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22987:26:0;23023;;;-1:-1:-1;;;23023:26:0;;;;-1:-1:-1;;;;;23023:24:0;;;;;:26;;;;;22987;;23023;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;23023:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23023:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23023:26:0;23015:44;;;-1:-1:-1;;;23015:44:0;;-1:-1:-1;;;;;23015:44:0;;;;;;;;;:39;;;;;;;:44;;;;;23023:26;;23015:44;;;;;;;:39;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;23015:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23015:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23015:44:0;;;;;;;;;;;;;;;;23061:3;23078:7;-1:-1:-1;;;;;23066:25:0;;23092:3;23066:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;22888:220:0;23184:39;23189:7;23198:3;23211:4;23218;23184;:39::i;:::-;23292:46;;;-1:-1:-1;;;23292:46:0;;23326:4;23292:46;;;;;;;;;;;;-1:-1:-1;;;;;23292:25:0;;;;;:46;;;;;-1:-1:-1;;23292:46:0;;;;;;;-1:-1:-1;23292:25:0;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;23292:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23292:46:0;;;;23394:7;-1:-1:-1;;;;;23382:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23382:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23382:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23382:26:0;:41;;;-1:-1:-1;;;23382:41:0;;;;;;;;;;-1:-1:-1;;;;;23382:35:0;;;;;;:41;;;;;-1:-1:-1;;23382:41:0;;;;;;;;-1:-1:-1;23382:35:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;23382:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;23482:25:0;;:10;;-1:-1:-1;23482:25:0;;;;;-1:-1:-1;23502:4:0;;23482:25;;;;23502:4;23482:10;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;7314:111:0;7394:3;-1:-1:-1;;;;;7386:21:0;;7408:3;7413;7386:31;;;;;;;;;;;;;-1:-1:-1;;;;;7386:31:0;-1:-1:-1;;;;;7386:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;21807:678:0;22115:40;;;-1:-1:-1;;;22115:40:0;;22149:4;22115:40;;;;;;22020:11;;;;-1:-1:-1;;;;;22115:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;22115:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22115:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22115:40:0;;-1:-1:-1;;;;;;22170:17:0;;22166:75;;22210:19;22221:7;22210:10;:19::i;:::-;22204:25;;22166:75;22351:7;-1:-1:-1;;;;;22339:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22339:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22339:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22339:26:0;22331:55;;;-1:-1:-1;;;22331:55:0;;-1:-1:-1;;;;;22331:55:0;;;;;;;;;;;;;;;:44;;;;;;;:55;;;;;-1:-1:-1;;22331:55:0;;;;;;;-1:-1:-1;22331:44:0;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;22331:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22331:55:0;;;;22403:74;22422:7;22431:3;22436:7;22445;22454:3;22459:4;22465;22471:5;22403:18;:74::i;:::-;22397:80;;21807:678;;;;;;;;;;:::o;3854:375::-;3986:3;-1:-1:-1;;;;;3974:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3974:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3974:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3974:22:0;:67;;;-1:-1:-1;;;3974:67:0;;4010:10;3974:67;;;;4030:4;3974:67;;;;;;;;;;;;-1:-1:-1;;;;;3974:35:0;;;;;;:67;;;;;-1:-1:-1;;3974:67:0;;;;;;;;-1:-1:-1;3974:35:0;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;3974:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3974:67:0;;;;4116:3;-1:-1:-1;;;;;4104:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4104:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4104:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4104:22:0;:40;;;-1:-1:-1;;;4104:40:0;;-1:-1:-1;;;;;4104:40:0;;;;;;;;;;;;;;;:30;;;;;;;:40;;;;;-1:-1:-1;;4104:40:0;;;;;;;-1:-1:-1;4104:30:0;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;4104:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4104:40:0;;;;4202:3;-1:-1:-1;;;;;4190:21:0;;4212:3;4217;4190:31;;;;;;;;;;;;;-1:-1:-1;;;;;4190:31:0;-1:-1:-1;;;;;4190:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;20264:1130:0;20500:11;20526:7;-1:-1:-1;;;;;20514:25:0;;20540:3;20514:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20514:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20514:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20514:30:0;20569:26;;;-1:-1:-1;;;20569:26:0;;;;20514:30;;-1:-1:-1;20555:11:0;;-1:-1:-1;;;;;20569:24:0;;;;;:26;;;;;20514:30;;20569:26;;;;;;;:24;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;20569:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20569:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20569:26:0;20620:30;;;-1:-1:-1;;;20620:30:0;;;;;;;;;;20569:26;;-1:-1:-1;20606:11:0;;-1:-1:-1;;;;;20620:25:0;;;;;:30;;;;;20569:26;;20620:30;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;20620:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20620:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20620:30:0;;-1:-1:-1;20734:46:0;20747:7;20756:3;20761:4;20767:12;20734;:46::i;:::-;20854:93;20859:7;20868:3;20873:33;20879:26;20891:7;20900:4;20879:11;:26::i;20873:33::-;20908:38;20921:3;20926;20931;20936;20941:4;20908:12;:38::i;20854:93::-;21038:46;21043:7;21052:3;21065:4;21072:11;21078:4;21072:5;:11::i;21038:46::-;21170:49;;;-1:-1:-1;;;21170:49:0;;21195:4;21170:49;;;;-1:-1:-1;;;;;21170:49:0;;;;;;;;;:16;;;;;;:49;;;;;;;;;;;;;;;:16;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;21170:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21170:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21170:49:0;21166:113;;21249:3;-1:-1:-1;;;;;21241:17:0;;21259:7;21241:26;;;;;;;;;;;;;-1:-1:-1;;;;;21241:26:0;-1:-1:-1;;;;;21241:26:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21241:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21241:26:0;;;;21166:113;21343:43;;;-1:-1:-1;;;21343:43:0;;21369:10;21343:43;;;;;;;;;;;;-1:-1:-1;;;;;21343:25:0;;;;;:43;;;;;-1:-1:-1;;21343:43:0;;;;;;;-1:-1:-1;21343:25:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;21343:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21343:43:0;;;;20264:1130;;;;;;;;;;;:::o;21402:397::-;21643:8;21670:33;21675:7;21684:3;21697:4;21670;:33::i;:::-;21664:39;;21714:77;21729:7;21738:3;21743:7;21752;21761:3;21766:4;21772;21778:12;21714:14;:77::i;:::-;21402:397;;;;;;;;;;:::o;11421:542::-;11621:36;11634:7;11651:4;11621:12;:36::i;:::-;11731:7;-1:-1:-1;;;;;11719:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11719:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11719:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11719:26:0;11766:30;;;-1:-1:-1;;;11766:30:0;;;;;;;;;;-1:-1:-1;;;;;11711:40:0;;;;;;11766:25;;;;;;:30;;;;;11719:26;;11766:30;;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11766:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11766:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11766:30:0;11811;;;-1:-1:-1;;;11811:30:0;;;;;;;;;;-1:-1:-1;;;;;11811:25:0;;;;;:30;;;;;11766;;11811;;;;;;;:25;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;11811:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11811:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11811:30:0;11864:4;;11912:16;11918:9;11912:5;:16::i;:::-;11711:244;;;-1:-1:-1;;;;;;11711:244:0;;;;;;;;;;;;;;-1:-1:-1;;;;;11711:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11943:1;11711:244;;;;;;;;;;;;;;;;;;11943:1;11711:244;;;;5:2:-1;;;;30:1;27;20:12;19919:337:0;20120:8;20147:33;20152:7;20161:3;20174:4;20147;:33::i;:::-;20141:39;;20191:57;20206:7;20215:3;20220:7;20229;20238:3;20243:4;20191:14;:57::i;:::-;19919:337;;;;;;;;:::o;12863:323::-;13093:5;-1:-1:-1;;;;;13059:39:0;13071:7;-1:-1:-1;;;;;13059:25:0;;13085:3;13059:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13059:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13059:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13059:30:0;-1:-1:-1;;;;;13059:39:0;;13051:67;;;;;-1:-1:-1;;;13051:67:0;;;;;;;;;;;;-1:-1:-1;;;13051:67:0;;;;;;;;;;;;;;;13129:49;13137:7;13146;13155:3;13160;13165:12;13129:7;:49::i;10939:151::-;11058:7;-1:-1:-1;;;;;11046:26:0;;11073:3;11078;11046:36;;;;;;;;;;;;;-1:-1:-1;;;;;11046:36:0;-1:-1:-1;;;;;11046:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;11971:265:0;12162:5;-1:-1:-1;;;;;12128:39:0;12140:7;-1:-1:-1;;;;;12128:25:0;;12154:3;12128:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12128:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12128:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12128:30:0;-1:-1:-1;;;;;12128:39:0;;12120:67;;;;;-1:-1:-1;;;12120:67:0;;;;;;;;;;;;-1:-1:-1;;;12120:67:0;;;;;;;;;;;;;;;12198:30;12206:7;12215;12224:3;12198:7;:30::i;11266:147::-;11365:40;;;-1:-1:-1;;;11365:40:0;;11399:4;11365:40;;;;;;11335:11;;-1:-1:-1;;;;;11365:25:0;;;;;:40;;;;;;;;;;;;;;;11335:11;11365:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;11365:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11365:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11365:40:0;;11266:147;-1:-1:-1;;11266:147:0:o;6618:661::-;6760:8;6826:9;6850:3;-1:-1:-1;;;;;6842:17:0;;6860:3;6842:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6842:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6842:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6842:22:0;;;;6935:27;;-1:-1:-1;;;6935:27:0;;;;;;;;-1:-1:-1;;;;;6935:27:0;;;;;;;;;6842:22;;-1:-1:-1;6923:8:0;;6935:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;6935:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6935:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6935:27:0;;;;;;7030:21;;-1:-1:-1;;;7030:21:0;;-1:-1:-1;;;;;7030:21:0;;;;;;;;;6935:27;;-1:-1:-1;7019:8:0;;7030:16;;;;;;:21;;;;;6935:27;;7030:21;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;7030:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7030:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7030:21:0;;-1:-1:-1;7064:8:0;7075:24;7079:14;7083:3;7088:4;7079:3;:14::i;:::-;7095:3;7075;:24::i;:::-;7064:35;-1:-1:-1;;;;7064:35:0;7116:9;7110:15;;7252:3;7236:13;7240:3;-1:-1:-1;;;7236:3:0;:13::i;:::-;:19;:35;;7268:3;7236:35;;;7258:3;7264:1;7258:7;7236:35;7230:41;6618:661;-1:-1:-1;;;;;;;;;6618:661:0:o;4435:124::-;4507:1;4481:5;4528:6;;;4520:31;;;;;-1:-1:-1;;;4520:31:0;;;;;;;;;;;;-1:-1:-1;;;4520:31:0;;;;;;;;;;;;;;;4435:124;;;:::o;5089:896::-;5243:8;5303:9;5323:3;-1:-1:-1;;;;;5315:17:0;;5333:3;5315:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5315:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5315:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5315:22:0;5412:21;;;-1:-1:-1;;;5412:21:0;;-1:-1:-1;;;;;5412:21:0;;;;;;;;;5315:22;;-1:-1:-1;5401:8:0;;5412:16;;;;;;:21;;;;;5315:22;;5412:21;;;;;;;;:16;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;5412:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5412:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5412:21:0;;-1:-1:-1;5559:13:0;5563:3;-1:-1:-1;;;5559:3:0;:13::i;:::-;5553:3;:19;5549:429;;;5727:37;5759:4;5733:23;5737:13;5741:3;-1:-1:-1;;;5737:3:0;:13::i;:::-;5752:3;5733;:23::i;:::-;:30;;;;;;5727:5;:37::i;:::-;5720:44;;5935:13;5939:3;-1:-1:-1;;;5935:3:0;:13::i;:::-;5911:21;5920:4;5927;5911:3;:21::i;:::-;:37;:55;;5962:4;5911:55;;;5951:4;5958:1;5951:8;5911:55;5904:62;;5549:429;5089:896;;;;;;;;;:::o;4567:101::-;4615:8;4642:18;4646:3;-1:-1:-1;;;4642:3:0;:18::i;:::-;4636:24;4567:101;-1:-1:-1;;4567:101:0:o;4676:405::-;4745:11;4987:86;5005:3;5047:7;-1:-1:-1;;;;;5035:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5035:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5035:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5035:26:0;5030:2;:31;5023:2;:39;4987:3;:86::i;:::-;4981:92;4676:405;-1:-1:-1;;;4676:405:0:o;5993:617::-;6130:8;6196:9;6220:3;-1:-1:-1;;;;;6212:17:0;;6230:3;6212:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6212:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6212:22:0;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;6212:22:0;;;;6305:27;;-1:-1:-1;;;6305:27:0;;;;;;;;-1:-1:-1;;;;;6305:27:0;;;;;;;;;6212:22;;-1:-1:-1;6293:8:0;;6305:17;;;;;;:27;;;;;;;;;;;:17;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;6305:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6305:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6305:27:0;;;;-1:-1:-1;6421:17:0;6433:4;6427:3;6433:4;6427:10;;;6421:17;6414:24;;6575:3;6566:4;6561:17;;:41;;6592:10;6598:3;6592:5;:10::i;:::-;6590:12;;6561:41;;;6583:4;6581:6;;6561:41;6554:48;5993:617;-1:-1:-1;;;;;;;5993:617:0:o;3685:134::-;3737:6;3764;;;:30;;-1:-1:-1;;3779:5:0;;;3793:1;3788;3779:5;3788:1;3774:15;;;;;:20;3764:30;3756:55;;;;;-1:-1:-1;;;3756:55:0;;;;;;;;;;;;-1:-1:-1;;;3756:55:0;;;;;;;;;;;;;;4307:120;4391:5;;;4386:16;;;;4378:41;;;;;-1:-1:-1;;;4378:41:0;;;;;;;;;;;;-1:-1:-1;;;4378:41:0;;;;;;;;;;;;;
Swarm Source
bzzr://12dcfe4bf58005e81f7eafd7f0b120bebf5a4e6adcf218708bad72768b5c6e4e
Loading...
Loading
Loading...
Loading
OVERVIEW
Sky (formerly Maker) enables users to get rewarded for non-custodial savings.Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.