0x6080604052600436106100e85760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb14610177578063db2e21bc146103eb578063dd62ed3e14610400578063eae81b3d14610448576100e8565b806370a082311461031157806395a2251f1461035157806395d89b41146100ed578063a68b4a1a14610393576100e8565b806318160ddd116100c657806318160ddd1461022f57806323b872dd14610256578063313ce567146102a65780633c4750df146102d1576100e8565b806306fdde03146100ed578063095ea7b31461017757806317a331c2146101d1575b600080fd5b3480156100f957600080fd5b50610102610477565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018357600080fd5b506101bd6004803603604081101561019a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b0565b604080519115158252519081900360200190f35b3480156101dd57600080fd5b50610211600480360360208110156101f457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610519565b60408051938452602084019290925282820152519081900360600190f35b34801561023b57600080fd5b50610244610688565b60408051918252519081900360200190f35b34801561026257600080fd5b506101bd6004803603606081101561027957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b0565b3480156102b257600080fd5b506102bb61072a565b6040805160ff9092168252519081900360200190f35b3480156102dd57600080fd5b50610244600480360360208110156102f457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661072f565b34801561031d57600080fd5b506102446004803603602081101561033457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610741565b34801561035d57600080fd5b506103916004803603602081101561037457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076b565b005b34801561039f57600080fd5b50610391600480360360a08110156103b657600080fd5b5080359060208101359060408101359073ffffffffffffffffffffffffffffffffffffffff6060820135169060800135610907565b3480156103f757600080fd5b50610391610acd565b34801561040c57600080fd5b506102446004803603604081101561042357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610c7e565b6102116004803603608081101561045e57600080fd5b5080359060208101359060408101359060600135610c9b565b6040518060400160405280600581526020017f784341564f00000000000000000000000000000000000000000000000000000081525081565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4341564f3a20464f5242494444454e00000000000000000000000000000000006044820152905160009181900360640190fd5b600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009283928392839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50519050806105f4575050505073ffffffffffffffffffffffffffffffffffffffff81166000908152601160205260408120548190610681565b60006105fe611086565b9050600d5481111561063557600d54810393508161062a85670de0b6b3a764000063ffffffff6112da16565b8161063157fe5b0494505b6000610642878787611366565b73ffffffffffffffffffffffffffffffffffffffff881660009081526011602052604090205490915061067b908263ffffffff6114d716565b93505050505b9193909250565b600554604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b5051905090565b601281565b60026020526000908152604090205481565b60008061074d83610519565b925050506107628161075d610688565b611549565b9150505b919050565b600260005414156107dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600090815580806107ef33611561565b9250925092506107fe336115e9565b600061080985610741565b90506000811161087a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4341564f3a20494e53554646494349454e545f414d4f554e5400000000000000604482015290519081900360640190fd5b336000908152601160205260408120556005546108ae9073ffffffffffffffffffffffffffffffffffffffff1686836116ce565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff87169133917fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d99181900360200190a350506001600055505050565b6002600054141561097957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005561098733611561565b5050336000908152600260205260409020546109aa91508663ffffffff6118ab16565b336000908152600260205260408082209290925560075460065483517f02751cec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a90526044810189905260648101889052868216608482015260a48101869052845192909116936302751cec9360c48084019492938390030190829087803b158015610a5557600080fd5b505af1158015610a69573d6000803e3d6000fd5b505050506040513d6040811015610a7f57600080fd5b50610a8b9050336115e9565b60408051868152905133917f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd919081900360200190a250506001600055505050565b60026000541415610b3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005560095473ffffffffffffffffffffffffffffffffffffffff163314610bca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4341564f3a20464f5242494444454e0000000000000000000000000000000000604482015290519081900360640190fd5b600554600954604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610c779373ffffffffffffffffffffffffffffffffffffffff90811693169183916370a0823191602480820192602092909190829003018186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d6020811015610c7057600080fd5b50516116ce565b6001600055565b600160209081526000928352604080842090915290825290205481565b60008060008342811015610d1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f45786361766f526f757465723a20455850495245440000000000000000000000604482015290519081900360640190fd5b60026000541415610d8257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055610d9033611561565b5050600654600354610dc0925073ffffffffffffffffffffffffffffffffffffffff91821691168a348b8b61191d565b600854600654600354939750919550600092610df99273ffffffffffffffffffffffffffffffffffffffff928316929081169116611bdc565b600654909150610e219073ffffffffffffffffffffffffffffffffffffffff16338388611cc7565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e8b57600080fd5b505af1158015610e9f573d6000803e3d6000fd5b5050600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b5051610f5057fe5b604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff831691636a6278429160248083019260209291908290030181600087803b158015610fbe57600080fd5b505af1158015610fd2573d6000803e3d6000fd5b505050506040513d6020811015610fe857600080fd5b50519250348410156110005761100033853403611e97565b33600090815260026020526040902054611020908463ffffffff6114d716565b3360008181526002602052604090209190915561103c906115e9565b60408051848152905133917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a2506001600081905550509450945094915050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f157600080fd5b505afa158015611105573d6000803e3d6000fd5b505050506040513d602081101561111b57600080fd5b5051905080156112d657600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561119657600080fd5b505afa1580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b5051600a54604080517f0902f1ac0000000000000000000000000000000000000000000000000000000081529051929350600092839273ffffffffffffffffffffffffffffffffffffffff1691630902f1ac916004808301926060929190829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d606081101561125c57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008461128f858563ffffffff6112da16565b8161129657fe5b0490506000856112ac868563ffffffff6112da16565b816112b357fe5b0490506112ce6112c9838363ffffffff6112da16565b611fd4565b965050505050505b5090565b60008115806112f5575050808202828282816112f257fe5b04145b61136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f6020526040812054600c5483010380156114cf5773ffffffffffffffffffffffffffffffffffffffff8086166000908152601060209081526040808320546004805483517fafff6a2c0000000000000000000000000000000000000000000000000000000081529351959660c896939591169363afff6a2c93818401939091829003018186803b15801561141757600080fd5b505afa15801561142b573d6000803e3d6000fd5b505050506040513d602081101561144157600080fd5b5051038161144b57fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152600e6020908152604080832054600b546002909352908320549490930494508801919091039161149d908363ffffffff6112da16565b905083670de0b6b3a76400006114b9838663ffffffff6112da16565b816114c057fe5b04816114c857fe5b0494505050505b509392505050565b8082018281101561136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000818310611558578161155a565b825b9392505050565b600080600061156f84610519565b91945092509050821561158d57600b805484019055600c8054830190555b73ffffffffffffffffffffffffffffffffffffffff84166000908152601160205260409020548111156106815773ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090208190559193909250565b6115f1611086565b600d5560048054604080517fafff6a2c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263afff6a2c928282019260209290829003018186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d602081101561168657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff909116600090815260106020908152604080832093909355600b54600e825283832055600c54600f90915291902055565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106117a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611767565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611806576040519150601f19603f3d011682016040523d82523d6000602084013e61180b565b606091505b5091509150818015611839575080511580611839575080806020019051602081101561183657600080fd5b50515b6118a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b8082038281111561136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600854604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015291516000938493849391169163e6a4390591604480820192602092909190829003018186803b15801561199e57600080fd5b505afa1580156119b2573d6000803e3d6000fd5b505050506040513d60208110156119c857600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415611a9057600854604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a811660248301529151919092169163c9c653969160448083019260209291908290030181600087803b158015611a6357600080fd5b505af1158015611a77573d6000803e3d6000fd5b505050506040513d6020811015611a8d57600080fd5b50505b6008546000908190611ab99073ffffffffffffffffffffffffffffffffffffffff168b8b612025565b91509150816000148015611acb575080155b15611adb57879350869250611bcf565b6000611ae889848461210d565b9050878111611b555785811015611b4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123f06023913960400191505060405180910390fd5b889450925082611bcd565b6000611b6289848661210d565b905089811115611b6e57fe5b87811015611bc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123aa6023913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000806000611beb85856121ed565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f3b4596e5d4f0ba0faf3c029e2a152a4931e4da86804417810c5960569e839f1e609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b60208310611da557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d68565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611e07576040519150601f19603f3d011682016040523d82523d6000602084013e611e0c565b606091505b5091509150818015611e3a575080511580611e3a5750808060200190516020811015611e3757600080fd5b50515b611e8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806124136024913960400191505060405180910390fd5b505050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611f0e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ed1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b5050905080611fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123cd6023913960400191505060405180910390fd5b505050565b60006003821115612017575080600160028204015b818110156120115780915060028182858161200057fe5b04018161200957fe5b049050611fe9565b50610766565b811561076657506001919050565b600080600061203485856121ed565b509050600080612045888888611bdc565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561208a57600080fd5b505afa15801561209e573d6000803e3d6000fd5b505050506040513d60608110156120b457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146120fb5780826120fe565b81815b90999098509650505050505050565b6000808411612167576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123886022913960400191505060405180910390fd5b6000831180156121775750600082115b6121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806123636025913960400191505060405180910390fd5b826121dd858463ffffffff6112da16565b816121e457fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123416022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106122af5782846122b2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661233957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45786361766f4c6962726172793a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b925092905056fe45786361766f4c6962726172793a204944454e544943414c5f41444452455353455345786361766f4c6962726172793a20494e53554646494349454e545f4c495155494449545945786361766f4c6962726172793a20494e53554646494349454e545f414d4f554e5445786361766f526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454445786361766f526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122080af2de55132bc9e335193437466c23e3bf0617c5d50ae3a1b8d9814d8df997964736f6c63430006060033
0x60806040523480156200001157600080fd5b5060405162002cfa38038062002cfa833981810160405260208110156200003757600080fd5b50516001600055604080516303ad3e3160e21b815290516001600160a01b03831691630eb4f8c4916004808301926020929190829003018186803b1580156200007f57600080fd5b505afa15801562000094573d6000803e3d6000fd5b505050506040513d6020811015620000ab57600080fd5b5051600580546001600160a01b0319166001600160a01b039283161790819055604080516302d05d3f60e01b81529051339392909216916302d05d3f916004808201926020929091908290030181600087803b1580156200010b57600080fd5b505af115801562000120573d6000803e3d6000fd5b505050506040513d60208110156200013757600080fd5b50516001600160a01b03161462000189576040805162461bcd60e51b815260206004820152601160248201527022ac21a0ab279d102327a92124a22222a760791b604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620001de57600080fd5b505afa158015620001f3573d6000803e3d6000fd5b505050506040513d60208110156200020a57600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055604080516315ab88c960e31b815290519183169163ad5c464891600480820192602092909190829003018186803b1580156200026357600080fd5b505afa15801562000278573d6000803e3d6000fd5b505050506040513d60208110156200028f57600080fd5b5051600380546001600160a01b0319166001600160a01b039283161790556005546040805163c836a48960e01b81529051919092169163c836a489916004808301926020929190829003018186803b158015620002eb57600080fd5b505afa15801562000300573d6000803e3d6000fd5b505050506040513d60208110156200031757600080fd5b5051600480546001600160a01b0319166001600160a01b0392831617815560055460408051632d13535760e01b815290519190931692632d1353579281810192602092909190829003018186803b1580156200037257600080fd5b505afa15801562000387573d6000803e3d6000fd5b505050506040513d60208110156200039e57600080fd5b5051600680546001600160a01b03199081166001600160a01b03938416179182905560098054339216919091179055600854600354620003f29391821692821691166200069c602090811b62001bdc17901c565b600a80546001600160a01b0319166001600160a01b039283161790556006546040805163095ea7b360e01b8152848416600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200045e57600080fd5b505af115801562000473573d6000803e3d6000fd5b505050506040513d60208110156200048a57600080fd5b50506008546006546003546040805163e6a4390560e01b81526001600160a01b039384166004820152918316602483015251600093929092169163e6a4390591604480820192602092909190829003018186803b158015620004eb57600080fd5b505afa15801562000500573d6000803e3d6000fd5b505050506040513d60208110156200051757600080fd5b505190506001600160a01b038116620005b857600854600354600654604080516364e329cb60e11b81526001600160a01b039384166004820152918316602483015251919092169163c9c653969160448083019260209291908290030181600087803b1580156200058757600080fd5b505af11580156200059c573d6000803e3d6000fd5b505050506040513d6020811015620005b357600080fd5b505190505b600a546001600160a01b038281169116146200060d576040805162461bcd60e51b815260206004820152600f60248201526e115610d05593ce8812539590531251608a1b604482015290519081900360640190fd5b600a546040805163095ea7b360e01b81526001600160a01b03858116600483015260001960248301529151919092169163095ea7b39160448083019260209291908290030181600087803b1580156200066557600080fd5b505af11580156200067a573d6000803e3d6000fd5b505050506040513d60208110156200069157600080fd5b506200085c92505050565b60008080620006b585856001600160e01b036200077916565b604080516001600160601b0319606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f3b4596e5d4f0ba0faf3c029e2a152a4931e4da86804417810c5960569e839f1e609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415620007cf5760405162461bcd60e51b815260040180806020018281038252602281526020018062002cd86022913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610620007f1578284620007f4565b83835b90925090506001600160a01b03821662000855576040805162461bcd60e51b815260206004820152601b60248201527f45786361766f4c6962726172793a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b9250929050565b61246c806200086c6000396000f3fe6080604052600436106100e85760003560e01c806370a082311161008a578063a9059cbb11610059578063a9059cbb14610177578063db2e21bc146103eb578063dd62ed3e14610400578063eae81b3d14610448576100e8565b806370a082311461031157806395a2251f1461035157806395d89b41146100ed578063a68b4a1a14610393576100e8565b806318160ddd116100c657806318160ddd1461022f57806323b872dd14610256578063313ce567146102a65780633c4750df146102d1576100e8565b806306fdde03146100ed578063095ea7b31461017757806317a331c2146101d1575b600080fd5b3480156100f957600080fd5b50610102610477565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561013c578181015183820152602001610124565b50505050905090810190601f1680156101695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561018357600080fd5b506101bd6004803603604081101561019a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104b0565b604080519115158252519081900360200190f35b3480156101dd57600080fd5b50610211600480360360208110156101f457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610519565b60408051938452602084019290925282820152519081900360600190f35b34801561023b57600080fd5b50610244610688565b60408051918252519081900360200190f35b34801561026257600080fd5b506101bd6004803603606081101561027957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356104b0565b3480156102b257600080fd5b506102bb61072a565b6040805160ff9092168252519081900360200190f35b3480156102dd57600080fd5b50610244600480360360208110156102f457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661072f565b34801561031d57600080fd5b506102446004803603602081101561033457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610741565b34801561035d57600080fd5b506103916004803603602081101561037457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076b565b005b34801561039f57600080fd5b50610391600480360360a08110156103b657600080fd5b5080359060208101359060408101359073ffffffffffffffffffffffffffffffffffffffff6060820135169060800135610907565b3480156103f757600080fd5b50610391610acd565b34801561040c57600080fd5b506102446004803603604081101561042357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610c7e565b6102116004803603608081101561045e57600080fd5b5080359060208101359060408101359060600135610c9b565b6040518060400160405280600581526020017f784341564f00000000000000000000000000000000000000000000000000000081525081565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4341564f3a20464f5242494444454e00000000000000000000000000000000006044820152905160009181900360640190fd5b600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009283928392839273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b50519050806105f4575050505073ffffffffffffffffffffffffffffffffffffffff81166000908152601160205260408120548190610681565b60006105fe611086565b9050600d5481111561063557600d54810393508161062a85670de0b6b3a764000063ffffffff6112da16565b8161063157fe5b0494505b6000610642878787611366565b73ffffffffffffffffffffffffffffffffffffffff881660009081526011602052604090205490915061067b908263ffffffff6114d716565b93505050505b9193909250565b600554604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b5051905090565b601281565b60026020526000908152604090205481565b60008061074d83610519565b925050506107628161075d610688565b611549565b9150505b919050565b600260005414156107dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600090815580806107ef33611561565b9250925092506107fe336115e9565b600061080985610741565b90506000811161087a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4341564f3a20494e53554646494349454e545f414d4f554e5400000000000000604482015290519081900360640190fd5b336000908152601160205260408120556005546108ae9073ffffffffffffffffffffffffffffffffffffffff1686836116ce565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff87169133917fd12200efa34901b99367694174c3b0d32c99585fdf37c7c26892136ddd0836d99181900360200190a350506001600055505050565b6002600054141561097957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005561098733611561565b5050336000908152600260205260409020546109aa91508663ffffffff6118ab16565b336000908152600260205260408082209290925560075460065483517f02751cec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018a90526044810189905260648101889052868216608482015260a48101869052845192909116936302751cec9360c48084019492938390030190829087803b158015610a5557600080fd5b505af1158015610a69573d6000803e3d6000fd5b505050506040513d6040811015610a7f57600080fd5b50610a8b9050336115e9565b60408051868152905133917f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd919081900360200190a250506001600055505050565b60026000541415610b3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005560095473ffffffffffffffffffffffffffffffffffffffff163314610bca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4341564f3a20464f5242494444454e0000000000000000000000000000000000604482015290519081900360640190fd5b600554600954604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051610c779373ffffffffffffffffffffffffffffffffffffffff90811693169183916370a0823191602480820192602092909190829003018186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d6020811015610c7057600080fd5b50516116ce565b6001600055565b600160209081526000928352604080842090915290825290205481565b60008060008342811015610d1057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f45786361766f526f757465723a20455850495245440000000000000000000000604482015290519081900360640190fd5b60026000541415610d8257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600055610d9033611561565b5050600654600354610dc0925073ffffffffffffffffffffffffffffffffffffffff91821691168a348b8b61191d565b600854600654600354939750919550600092610df99273ffffffffffffffffffffffffffffffffffffffff928316929081169116611bdc565b600654909150610e219073ffffffffffffffffffffffffffffffffffffffff16338388611cc7565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015610e8b57600080fd5b505af1158015610e9f573d6000803e3d6000fd5b5050600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015610f1e57600080fd5b505af1158015610f32573d6000803e3d6000fd5b505050506040513d6020811015610f4857600080fd5b5051610f5057fe5b604080517f6a627842000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff831691636a6278429160248083019260209291908290030181600087803b158015610fbe57600080fd5b505af1158015610fd2573d6000803e3d6000fd5b505050506040513d6020811015610fe857600080fd5b50519250348410156110005761100033853403611e97565b33600090815260026020526040902054611020908463ffffffff6114d716565b3360008181526002602052604090209190915561103c906115e9565b60408051848152905133917febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a919081900360200190a2506001600081905550509450945094915050565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f157600080fd5b505afa158015611105573d6000803e3d6000fd5b505050506040513d602081101561111b57600080fd5b5051905080156112d657600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561119657600080fd5b505afa1580156111aa573d6000803e3d6000fd5b505050506040513d60208110156111c057600080fd5b5051600a54604080517f0902f1ac0000000000000000000000000000000000000000000000000000000081529051929350600092839273ffffffffffffffffffffffffffffffffffffffff1691630902f1ac916004808301926060929190829003018186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d606081101561125c57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008461128f858563ffffffff6112da16565b8161129657fe5b0490506000856112ac868563ffffffff6112da16565b816112b357fe5b0490506112ce6112c9838363ffffffff6112da16565b611fd4565b965050505050505b5090565b60008115806112f5575050808202828282816112f257fe5b04145b61136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600f6020526040812054600c5483010380156114cf5773ffffffffffffffffffffffffffffffffffffffff8086166000908152601060209081526040808320546004805483517fafff6a2c0000000000000000000000000000000000000000000000000000000081529351959660c896939591169363afff6a2c93818401939091829003018186803b15801561141757600080fd5b505afa15801561142b573d6000803e3d6000fd5b505050506040513d602081101561144157600080fd5b5051038161144b57fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152600e6020908152604080832054600b546002909352908320549490930494508801919091039161149d908363ffffffff6112da16565b905083670de0b6b3a76400006114b9838663ffffffff6112da16565b816114c057fe5b04816114c857fe5b0494505050505b509392505050565b8082018281101561136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000818310611558578161155a565b825b9392505050565b600080600061156f84610519565b91945092509050821561158d57600b805484019055600c8054830190555b73ffffffffffffffffffffffffffffffffffffffff84166000908152601160205260409020548111156106815773ffffffffffffffffffffffffffffffffffffffff841660009081526011602052604090208190559193909250565b6115f1611086565b600d5560048054604080517fafff6a2c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169263afff6a2c928282019260209290829003018186803b15801561165c57600080fd5b505afa158015611670573d6000803e3d6000fd5b505050506040513d602081101561168657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff909116600090815260106020908152604080832093909355600b54600e825283832055600c54600f90915291902055565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106117a457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611767565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611806576040519150601f19603f3d011682016040523d82523d6000602084013e61180b565b606091505b5091509150818015611839575080511580611839575080806020019051602081101561183657600080fd5b50515b6118a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b8082038281111561136057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b600854604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152888116602483015291516000938493849391169163e6a4390591604480820192602092909190829003018186803b15801561199e57600080fd5b505afa1580156119b2573d6000803e3d6000fd5b505050506040513d60208110156119c857600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161415611a9057600854604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301528a811660248301529151919092169163c9c653969160448083019260209291908290030181600087803b158015611a6357600080fd5b505af1158015611a77573d6000803e3d6000fd5b505050506040513d6020811015611a8d57600080fd5b50505b6008546000908190611ab99073ffffffffffffffffffffffffffffffffffffffff168b8b612025565b91509150816000148015611acb575080155b15611adb57879350869250611bcf565b6000611ae889848461210d565b9050878111611b555785811015611b4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123f06023913960400191505060405180910390fd5b889450925082611bcd565b6000611b6289848661210d565b905089811115611b6e57fe5b87811015611bc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123aa6023913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000806000611beb85856121ed565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f3b4596e5d4f0ba0faf3c029e2a152a4931e4da86804417810c5960569e839f1e609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b60208310611da557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d68565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611e07576040519150601f19603f3d011682016040523d82523d6000602084013e611e0c565b606091505b5091509150818015611e3a575080511580611e3a5750808060200190516020811015611e3757600080fd5b50515b611e8f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806124136024913960400191505060405180910390fd5b505050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310611f0e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ed1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611f70576040519150601f19603f3d011682016040523d82523d6000602084013e611f75565b606091505b5050905080611fcf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806123cd6023913960400191505060405180910390fd5b505050565b60006003821115612017575080600160028204015b818110156120115780915060028182858161200057fe5b04018161200957fe5b049050611fe9565b50610766565b811561076657506001919050565b600080600061203485856121ed565b509050600080612045888888611bdc565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561208a57600080fd5b505afa15801561209e573d6000803e3d6000fd5b505050506040513d60608110156120b457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146120fb5780826120fe565b81815b90999098509650505050505050565b6000808411612167576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123886022913960400191505060405180910390fd5b6000831180156121775750600082115b6121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806123636025913960400191505060405180910390fd5b826121dd858463ffffffff6112da16565b816121e457fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612275576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806123416022913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106122af5782846122b2565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff821661233957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f45786361766f4c6962726172793a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b925092905056fe45786361766f4c6962726172793a204944454e544943414c5f41444452455353455345786361766f4c6962726172793a20494e53554646494349454e545f4c495155494449545945786361766f4c6962726172793a20494e53554646494349454e545f414d4f554e5445786361766f526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454445786361766f526f757465723a20494e53554646494349454e545f425f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122080af2de55132bc9e335193437466c23e3bf0617c5d50ae3a1b8d9814d8df997964736f6c6343000606003345786361766f4c6962726172793a204944454e544943414c5f41444452455353455300000000000000000000000008f32d2328b8b62ff16b27e2e9e22c2a19adb3f1