0x60806040523480156200001157600080fd5b5060405162004e4638038062004e46833981016040819052620000349162000206565b6001600160a01b0384166200005c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316620000845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216620000ac5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116620000d45760405163d92e233d60e01b815260040160405180910390fd5b620000e160003362000135565b600480546001600160a01b039586166001600160a01b031991821617909155600280549486169482169490941790935560018054928516928416929092179091556006805491909316911617905562000263565b62000141828262000145565b5050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620001415760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200020157600080fd5b919050565b600080600080608085870312156200021d57600080fd5b6200022885620001e9565b93506200023860208601620001e9565b92506200024860408601620001e9565b91506200025860608601620001e9565b905092959194509250565b614bd380620002736000396000f3fe6080604052600436106101bb5760003560e01c80639e99ec39116100ec578063d4ee1d901161008a578063e2a4ac2d11610064578063e2a4ac2d146105a9578063e738aa8d146105d6578063f2fde38b146105e9578063f9636f301461060957600080fd5b8063d4ee1d901461053c578063d547741f14610569578063da6689f01461058957600080fd5b8063ac9650d8116100c6578063ac9650d81461048c578063adb88982146104b9578063c75a57e4146104d9578063d00a2d5f1461051c57600080fd5b80639e99ec391461042a578063a217fddf1461044a578063a2625efc1461045f57600080fd5b8063285f94a01161015957806336568abe1161013357806336568abe146103755780634e71e0c8146103955780637fe68917146103aa57806391d14854146103d757600080fd5b8063285f94a0146102d65780632e476337146103285780632f2ff15d1461035557600080fd5b80631696516011610195578063169651601461025357806318137a4114610273578063183d9c9514610293578063248a9ca3146102a657600080fd5b806301ffc9a7146101c757806306135b7c146101fc578063086efdc41461021157600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e236600461393c565b61061e565b60405190151581526020015b60405180910390f35b61020f61020a366004613dc5565b6106b7565b005b34801561021d57600080fd5b506102457fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee097581565b6040519081526020016101f3565b34801561025f57600080fd5b5061020f61026e366004613e94565b610a27565b34801561027f57600080fd5b5061020f61028e366004613ec4565b610b65565b6102456102a1366004613ee1565b610c3d565b3480156102b257600080fd5b506102456102c1366004613fa8565b60009081526003602052604090206001015490565b3480156102e257600080fd5b506005546103039073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b34801561033457600080fd5b506002546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036157600080fd5b5061020f610370366004613e94565b610ce7565b34801561038157600080fd5b5061020f610390366004613e94565b610d11565b3480156103a157600080fd5b5061020f610dc9565b3480156103b657600080fd5b506004546103039073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e357600080fd5b506101e76103f2366004613e94565b600091825260036020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561043657600080fd5b5061020f610445366004613ec4565b610e5a565b34801561045657600080fd5b50610245600081565b34801561046b57600080fd5b506006546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049857600080fd5b506104ac6104a7366004613fc1565b610f2a565b6040516101f391906140f9565b3480156104c557600080fd5b5061020f6104d4366004613ec4565b61101f565b3480156104e557600080fd5b506103036104f4366004613fa8565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b5061020f61053736600461410c565b611166565b34801561054857600080fd5b506007546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057557600080fd5b5061020f610584366004613e94565b6111e8565b34801561059557600080fd5b5061020f6105a4366004614165565b61120d565b3480156105b557600080fd5b506001546103039073ffffffffffffffffffffffffffffffffffffffff1681565b6102456105e4366004614193565b611335565b3480156105f557600080fd5b5061020f610604366004613ec4565b6113df565b34801561061557600080fd5b50610245600181565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106b157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106de826000015183602001518460400151856060015186608001518760a00151306114aa565b5081518051600091906106f390600190614285565b8151811061070357610703614298565b602002602001015190508560ff1660000361085657600061073a73ffffffffffffffffffffffffffffffffffffffff8316306119c0565b6004549091506107649073ffffffffffffffffffffffffffffffffffffffff848116911683611a85565b60045473ffffffffffffffffffffffffffffffffffffffff9081169063f452ed4d90610791908516611aa9565b61079c57600061079e565b825b6040518060c001604052808f81526020018581526020018a81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152508760e001518d8d6040518663ffffffff1660e01b815260040161081d9493929190614310565b6000604051808303818588803b15801561083657600080fd5b505af115801561084a573d6000803e3d6000fd5b50505050505050610a1c565b8560ff166001036109ea57600061088373ffffffffffffffffffffffffffffffffffffffff8316306119c0565b60045460408601519192506108b29173ffffffffffffffffffffffffffffffffffffffff858116921690611a85565b60045473ffffffffffffffffffffffffffffffffffffffff90811690630421caf0906108df908516611aa9565b6108ea5760006108ec565b825b6040518060c001604052808f8152602001886040015181526020018a81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152508760e001518d8d8b6040518763ffffffff1660e01b8152600401610971959493929190614397565b6000604051808303818588803b15801561098a57600080fd5b505af115801561099e573d6000803e3d6000fd5b505050505083604001518111156109e3576109e1838560400151836109c39190614285565b73ffffffffffffffffffffffffffffffffffffffff85169190611afc565b505b5050610a1c565b6040517f26667fc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b7fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee0975610a5181611bae565b82600003610a8b576040517f196de28b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610ad8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251868152918201527f11f5b5361c420666dc3452b8107601e1702f94b951f15bd93c26262c8147874e91015b60405180910390a1505050565b6000610b7081611bae565b73ffffffffffffffffffffffffffffffffffffffff8216610bbd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080519182523360208301527f61b6fe2922f0180b98d305419bf3dcf432f5d8df894388c61c1f599c2194ec1d91015b60405180910390a15050565b6000610c4e89898989898989611335565b6040517f73776170496e53616d65436861696e0000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8416903390600f0160405180910390207fe3716b48e7d01d727d68472c873c69c2c4407365e4f68b2b6c8dd4569cd16dc78c8c868c89604051610cd39594939291906144c0565b60405180910390a498975050505050505050565b600082815260036020526040902060010154610d0281611bae565b610d0c8383611bbb565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610dc58282611caf565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610e1a576040517f48f5c3ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e25600033611d6a565b6040513381527f85a8c8100c1d48466310240af79644f50cdae7d09cb4820d60dfc5b2462f0fd09060200160405180910390a1565b6000610e6581611bae565b73ffffffffffffffffffffffffffffffffffffffff8216610eb2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080519182523360208301527f45085069ced50a4d2e82656a82ba8f5a1a28694489d8ea262252e40899a930a29101610c31565b60608167ffffffffffffffff811115610f4557610f456139dd565b604051908082528060200260200182016040528015610f7857816020015b6060815260200190600190039081610f635790505b50905060005b8281101561101857610fe830858584818110610f9c57610f9c614298565b9050602002810190610fae9190614504565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7492505050565b828281518110610ffa57610ffa614298565b6020026020010181905250808061101090614569565b915050610f7e565b5092915050565b600061102a81611bae565b73ffffffffffffffffffffffffffffffffffffffff8216611077576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527f3ab9add546f7e3b43565da9bc7e65e47b969d3856bb01a7dcac7bc8ff5080cbd602052604090205460ff16156110f6576040517fe4e970d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111207fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee097583611d6a565b60405173ffffffffffffffffffffffffffffffffffffffff831681527fd2b69bde5a989d23ef605a0dd4e0edf7662105058ab69f2559e482857b599ed890602001610c31565b60045473ffffffffffffffffffffffffffffffffffffffff1633148015906111a6575060055473ffffffffffffffffffffffffffffffffffffffff163314155b156111dd576040517f48f5c3ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d0c838383611d99565b60008281526003602052604090206001015461120381611bae565b610d0c8383611caf565b600061121881611bae565b73ffffffffffffffffffffffffffffffffffffffff8316611265576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112b2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116821790556040519081527fcc4166d40cf68104cdf710f65ce022efd296742868a22b42e4695f89b886363690602001610b58565b6000611346888888888888886114aa565b6040517f737761704d756c746957697468526563697069656e7400000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff831690339060160160405180910390207fc40fae9d5f584875c393ac222c6f88b6c9dced1e9cc6251483648ac2e902c8b08b8b868b60006040516113cc9594939291906144c0565b60405180910390a4979650505050505050565b60006113ea81611bae565b73ffffffffffffffffffffffffffffffffffffffff8216611437576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a490602001610c31565b600073ffffffffffffffffffffffffffffffffffffffff82166114f9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451600189516115099190614285565b14611540576040517fcc513c7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826116085761157e8860008151811061155b5761155b614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611aa9565b15801561158a57503415155b156115c1576040517f694b150300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116083330898b6000815181106115da576115da614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661210c909392919063ffffffff16565b61164b308960008151811061161f5761161f614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166119c090919063ffffffff16565b905060008860018a5161165e9190614285565b8151811061166e5761166e614298565b602002602001015190506000600190505b89518110156117a45789818151811061169a5761169a614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a6001836116c69190614285565b815181106116d6576116d6614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603156117925761178f8a611709600184614285565b8151811061171957611719614298565b60200260200101518b838151811061173357611733614298565b60200260200101518560008b60018761174c9190614285565b8151811061175c5761175c614298565b60200260200101518b6001886117729190614285565b8151811061178257611782614298565b60200260200101516122ec565b92505b8061179c81614569565b91505061167f565b506117c48173ffffffffffffffffffffffffffffffffffffffff16611aa9565b156118e1576001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b91906145a1565b6001546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905291935073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156118c857600080fd5b505af11580156118dc573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff831630146119b457600061192073ffffffffffffffffffffffffffffffffffffffff8316856119c0565b905061194373ffffffffffffffffffffffffffffffffffffffff83168585611afc565b50600061196673ffffffffffffffffffffffffffffffffffffffff8416866119c0565b905060006119748383614285565b90508981116119af576040517f1fbaba3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b935050505b50979650505050505050565b60006119cb83611aa9565b156119ee575073ffffffffffffffffffffffffffffffffffffffff8116316106b1565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015611a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7e91906145a1565b90506106b1565b611a8e83611aa9565b610d0c57611a9e83836000612307565b610d0c838383612307565b600073ffffffffffffffffffffffffffffffffffffffff821615806106b1575073ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b600081600003611b0e57506001611ba7565b611b1784611aa9565b15611b985760008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611b76576040519150601f19603f3d011682016040523d82523d6000602084013e611b7b565b606091505b5090915050600181151514611b9257611b926145ba565b50611ba7565b611ba384848461249d565b5060015b9392505050565b611bb8813361262c565b50565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610dc557600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c513390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610dc557600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610dc58282611bbb565b6060611ba78383604051806060016040528060278152602001614b77602791396126e6565b600080600080600080600087806020019051810190611db89190614783565b965096509650965096509650965086600081518110611dd957611dd9614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611e45576040517f198b098900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060003073ffffffffffffffffffffffffffffffffffffffff1663e738aa8d60e01b8a8d8b8a8c60018c604051602401611e86979695949392919061485b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611f0f91906148d2565b6000604051808303816000865af19150503d8060008114611f4c576040519150601f19603f3d011682016040523d82523d6000602084013e611f51565b606091505b509250905080611fa257611fa0858c8b600081518110611f7357611f73614298565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611afc9092919063ffffffff16565b505b83156120fe57600081611fb5578b611fbe565b611fbe836148ee565b9050600082611fcd578d611ff5565b8a60018c51611fdc9190614285565b81518110611fec57611fec614298565b60200260200101515b90508673ffffffffffffffffffffffffffffffffffffffff1663d00a2d5f60e01b82848860405160240161202b93929190614933565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516120b491906148d2565b6000604051808303816000865af19150503d80600081146120f1576040519150601f19603f3d011682016040523d82523d6000602084013e6120f6565b606091505b509450925050505b505050505050505050505050565b80156122e65761211b84611aa9565b156122da5773ffffffffffffffffffffffffffffffffffffffff8316331480156121455750803410155b6121d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f57726f6e67207573616765206f66204554482e756e6976657273616c5472616e60448201527f7366657246726f6d2829000000000000000000000000000000000000000000006064820152608401610db2565b73ffffffffffffffffffffffffffffffffffffffff821630146122665760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612248576040519150601f19603f3d011682016040523d82523d6000602084013e61224d565b606091505b5090915050600181151514612264576122646145ba565b505b803411156122d55760003361227b348461276b565b604051600081818185875af1925050503d80600081146122b7576040519150601f19603f3d011682016040523d82523d6000602084013e6122bc565b606091505b50909150506001811515146122d3576122d36145ba565b505b6122e6565b6122e684848484612777565b50505050565b60006122fc878787878787612916565b979650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052915160009283929087169161239e91906148d2565b6000604051808303816000865af19150503d80600081146123db576040519150601f19603f3d011682016040523d82523d6000602084013e6123e0565b606091505b509150915081801561240a57508051158061240a57508080602001905181019061240a9190614971565b612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c65640000000000000000000000000000000000000000006064820152608401610db2565b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161253491906148d2565b6000604051808303816000865af19150503d8060008114612571576040519150601f19603f3d011682016040523d82523d6000602084013e612576565b606091505b50915091508180156125a05750805115806125a05750808060200190518101906125a09190614971565b612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610db2565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610dc55761266c816129c2565b6126778360206129e1565b60405160200161268892919061498e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610db291600401614a0f565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161271091906148d2565b600060405180830381855af49150503d806000811461274b576040519150601f19603f3d011682016040523d82523d6000602084013e612750565b606091505b509150915061276186838387612c24565b9695505050505050565b6000611ba78284614285565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161281691906148d2565b6000604051808303816000865af19150503d8060008114612853576040519150601f19603f3d011682016040523d82523d6000602084013e612858565b606091505b50915091508180156128825750805115806128825750808060200190518101906128829190614971565b61290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610db2565b505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612952575083612761565b61393261295e84612ccc565b9050600061298273ffffffffffffffffffffffffffffffffffffffff8a16306119c0565b905061299589898387898763ffffffff16565b6129b573ffffffffffffffffffffffffffffffffffffffff8916306119c0565b9998505050505050505050565b60606106b173ffffffffffffffffffffffffffffffffffffffff831660145b606060006129f0836002614a22565b6129fb906002614a39565b67ffffffffffffffff811115612a1357612a136139dd565b6040519080825280601f01601f191660200182016040528015612a3d576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612a7457612a74614298565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612ad757612ad7614298565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612b13846002614a22565b612b1e906001614a39565b90505b6001811115612bbb577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b5f57612b5f614298565b1a60f81b828281518110612b7557612b75614298565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612bb481614a4c565b9050612b21565b508315611ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610db2565b60608315612cba578251600003612cb35773ffffffffffffffffffffffffffffffffffffffff85163b612cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610db2565b5081612cc4565b612cc48383612d0a565b949350505050565b6139326103e982108015612ce1575060018210155b15612cef5750612d4e919050565b816107d203612d015750612d5a919050565b50612fe3919050565b815115612d1a5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db29190614a0f565b61290e8585858461314f565b60008181526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1680612db6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612dd58673ffffffffffffffffffffffffffffffffffffffff16611aa9565b15612e5e57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e4457600080fd5b505af1158015612e58573d6000803e3d6000fd5b50505050505b6000612e7f8773ffffffffffffffffffffffffffffffffffffffff16611aa9565b612e895786612ea3565b60015473ffffffffffffffffffffffffffffffffffffffff165b9050612f358273ffffffffffffffffffffffffffffffffffffffff1663d2c4b5986040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ef3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f179190614a81565b73ffffffffffffffffffffffffffffffffffffffff83169087611a85565b60008273ffffffffffffffffffffffffffffffffffffffff1685604051612f5c91906148d2565b6000604051808303816000865af19150503d8060008114612f99576040519150601f19603f3d011682016040523d82523d6000602084013e612f9e565b606091505b5050905080612fd9576040517f5987947500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050565b60008181526008602052604090205473ffffffffffffffffffffffffffffffffffffffff168061303f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61305e8673ffffffffffffffffffffffffffffffffffffffff16611aa9565b156130e757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130cd57600080fd5b505af11580156130e1573d6000803e3d6000fd5b50505050505b60006131088773ffffffffffffffffffffffffffffffffffffffff16611aa9565b613112578661312c565b60015473ffffffffffffffffffffffffffffffffffffffff165b9050612f3573ffffffffffffffffffffffffffffffffffffffff82168387611a85565b60006131708573ffffffffffffffffffffffffffffffffffffffff16611aa9565b156131f957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131df57600080fd5b505af11580156131f3573d6000803e3d6000fd5b50505050505b60008281526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1680613285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f52413a2045786368616e6765206e6f7420666f756e64000000000000000000006044820152606401610db2565b8060006132a773ffffffffffffffffffffffffffffffffffffffff8916611aa9565b6132b157876132cb565b60015473ffffffffffffffffffffffffffffffffffffffff165b905060006132ee8873ffffffffffffffffffffffffffffffffffffffff16611aa9565b6132f85787613312565b60015473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133535786945050505050612cc4565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301526000919085169063e6a4390590604401602060405180830381865afa1580156133cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ef9190614a81565b905073ffffffffffffffffffffffffffffffffffffffff811661343e576040517f2083cd4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061346373ffffffffffffffffffffffffffffffffffffffff841686868d613702565b9199509250905081156134d5578273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134b857600080fd5b505af11580156134cc573d6000803e3d6000fd5b50505050613561565b8015613561576006546040517fbc25cf7700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529084169063bc25cf7790602401600060405180830381600087803b15801561354857600080fd5b505af115801561355c573d6000803e3d6000fd5b505050505b61358273ffffffffffffffffffffffffffffffffffffffff8616848c611afc565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161015613657576040517f022c0d9f000000000000000000000000000000000000000000000000000000008152600060048201819052602482018a905230604483015260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff84169063022c0d9f9060a401600060405180830381600087803b15801561363a57600080fd5b505af115801561364e573d6000803e3d6000fd5b505050506136f3565b6040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810189905260006024820181905230604483015260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff84169063022c0d9f9060a401600060405180830381600087803b1580156136da57600080fd5b505af11580156136ee573d6000803e3d6000fd5b505050505b50505050505050949350505050565b600080808061372773ffffffffffffffffffffffffffffffffffffffff8816896119c0565b9050600061374b73ffffffffffffffffffffffffffffffffffffffff88168a6119c0565b90506000808a73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561379b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bf9190614abc565b50915091508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1611156137fa57905b816dffffffffffffffffffffffffffff168410806138275750806dffffffffffffffffffffffffffff1683105b95508515801561385f5750816dffffffffffffffffffffffffffff1684118061385f5750806dffffffffffffffffffffffffffff1683115b9450600061386f896103e56138f8565b9050600061389761389086856dffffffffffffffffffffffffffff16613904565b83906138f8565b905060006138cb836138c56103e86138bf8b8a6dffffffffffffffffffffffffffff16613904565b906138f8565b9061391a565b905080156138e2576138dd8282613926565b6138e5565b60005b9950505050505050509450945094915050565b6000611ba78284614a22565b60008183106139135781611ba7565b5090919050565b6000611ba78284614a39565b6000611ba78284614b0c565b61393a614b47565b565b60006020828403121561394e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ba757600080fd5b60008083601f84011261399057600080fd5b50813567ffffffffffffffff8111156139a857600080fd5b6020830191508360208285010111156139c057600080fd5b9250929050565b803560ff811681146139d857600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715613a3057613a306139dd565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a7d57613a7d6139dd565b604052919050565b600067ffffffffffffffff821115613a9f57613a9f6139dd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613adc57600080fd5b8135613aef613aea82613a85565b613a36565b818152846020838601011115613b0457600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff821115613b3b57613b3b6139dd565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114611bb857600080fd5b600082601f830112613b7857600080fd5b81356020613b88613aea83613b21565b82815260059290921b84018101918181019086841115613ba757600080fd5b8286015b84811015613bcb578035613bbe81613b45565b8352918301918301613bab565b509695505050505050565b600082601f830112613be757600080fd5b81356020613bf7613aea83613b21565b82815260059290921b84018101918181019086841115613c1657600080fd5b8286015b84811015613bcb5780358352918301918301613c1a565b600082601f830112613c4257600080fd5b81356020613c52613aea83613b21565b82815260059290921b84018101918181019086841115613c7157600080fd5b8286015b84811015613bcb57803567ffffffffffffffff811115613c955760008081fd5b613ca38986838b0101613acb565b845250918301918301613c75565b8015158114611bb857600080fd5b80356139d881613cb1565b80356139d881613b45565b60006101008284031215613ce857600080fd5b613cf0613a0c565b9050813567ffffffffffffffff80821115613d0a57600080fd5b613d1685838601613b67565b835260208401356020840152604084013560408401526060840135915080821115613d4057600080fd5b613d4c85838601613bd6565b60608401526080840135915080821115613d6557600080fd5b613d7185838601613c31565b6080840152613d8260a08501613cbf565b60a0840152613d9360c08501613cca565b60c084015260e0840135915080821115613dac57600080fd5b50613db984828501613acb565b60e08301525092915050565b60008060008060008060008060006101008a8c031215613de457600080fd5b8935985060208a0135975060408a013567ffffffffffffffff80821115613e0a57600080fd5b613e168d838e0161397e565b9099509750879150613e2a60608d016139c7565b965060808c0135955060a08c0135915080821115613e4757600080fd5b613e538d838e01613acb565b945060c08c0135915080821115613e6957600080fd5b50613e768c828d01613cd5565b925050613e8560e08b01613cca565b90509295985092959850929598565b60008060408385031215613ea757600080fd5b823591506020830135613eb981613b45565b809150509250929050565b600060208284031215613ed657600080fd5b8135611ba781613b45565b600080600080600080600080610100898b031215613efe57600080fd5b883567ffffffffffffffff80821115613f1657600080fd5b613f228c838d01613b67565b995060208b0135985060408b0135975060608b0135915080821115613f4657600080fd5b613f528c838d01613bd6565b965060808b0135915080821115613f6857600080fd5b50613f758b828c01613c31565b945050613f8460a08a01613cbf565b9250613f9260c08a01613cca565b915060e089013590509295985092959890939650565b600060208284031215613fba57600080fd5b5035919050565b60008060208385031215613fd457600080fd5b823567ffffffffffffffff80821115613fec57600080fd5b818501915085601f83011261400057600080fd5b81358181111561400f57600080fd5b8660208260051b850101111561402457600080fd5b60209290920196919550909350505050565b60005b83811015614051578181015183820152602001614039565b50506000910152565b60008151808452614072816020860160208601614036565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156140ec5782840389526140da84835161405a565b988501989350908401906001016140c2565b5091979650505050505050565b602081526000611ba760208301846140a4565b60008060006060848603121561412157600080fd5b833561412c81613b45565b925060208401359150604084013567ffffffffffffffff81111561414f57600080fd5b61415b86828701613acb565b9150509250925092565b6000806040838503121561417857600080fd5b823561418381613b45565b91506020830135613eb981613b45565b600080600080600080600060e0888a0312156141ae57600080fd5b873567ffffffffffffffff808211156141c657600080fd5b6141d28b838c01613b67565b985060208a0135975060408a0135965060608a01359150808211156141f657600080fd5b6142028b838c01613bd6565b955060808a013591508082111561421857600080fd5b506142258a828b01613c31565b93505060a088013561423681613cb1565b915060c088013561424681613b45565b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156106b1576106b1614256565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006101006143708388805182526020810151602083015260408101516040830152606081015173ffffffffffffffffffffffffffffffffffffffff8082166060850152806080840151166080850152505060a081015160a08301525050565b8060c08401526143828184018761405a565b905082810360e08401526122fc8185876142c7565b60006101206143f78389805182526020810151602083015260408101516040830152606081015173ffffffffffffffffffffffffffffffffffffffff8082166060850152806080840151166080850152505060a081015160a08301525050565b8060c08401526144098184018861405a565b905082810360e084015261441e8186886142c7565b9050828103610100840152614433818561405a565b98975050505050505050565b600081518084526020808501945080840160005b8381101561448557815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614453565b509495945050505050565b600081518084526020808501945080840160005b83811015614485578151875295820195908201906001016144a4565b60a0815260006144d360a083018861443f565b86602084015285604084015282810360608401526144f18186614490565b9150508260808301529695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261453957600080fd5b83018035915067ffffffffffffffff82111561455457600080fd5b6020019150368190038213156139c057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361459a5761459a614256565b5060010190565b6000602082840312156145b357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082601f8301126145fa57600080fd5b8151602061460a613aea83613b21565b82815260059290921b8401810191818101908684111561462957600080fd5b8286015b84811015613bcb57805161464081613b45565b835291830191830161462d565b600082601f83011261465e57600080fd5b815161466c613aea82613a85565b81815284602083860101111561468157600080fd5b612cc4826020830160208701614036565b600082601f8301126146a357600080fd5b815160206146b3613aea83613b21565b82815260059290921b840181019181810190868411156146d257600080fd5b8286015b84811015613bcb57805167ffffffffffffffff8111156146f65760008081fd5b6147048986838b010161464d565b8452509183019183016146d6565b600082601f83011261472357600080fd5b81516020614733613aea83613b21565b82815260059290921b8401810191818101908684111561475257600080fd5b8286015b84811015613bcb5780518352918301918301614756565b80516139d881613b45565b80516139d881613cb1565b600080600080600080600060e0888a03121561479e57600080fd5b875167ffffffffffffffff808211156147b657600080fd5b6147c28b838c016145e9565b985060208a0151975060408a01519150808211156147df57600080fd5b6147eb8b838c01614692565b965060608a015191508082111561480157600080fd5b61480d8b838c01614712565b955061481b60808b0161476d565b945061482960a08b01614778565b935060c08a015191508082111561483f57600080fd5b5061484c8a828b0161464d565b91505092959891949750929550565b60e08152600061486e60e083018a61443f565b886020840152876040840152828103606084015261488c8188614490565b905082810360808401526148a081876140a4565b94151560a0840152505073ffffffffffffffffffffffffffffffffffffffff9190911660c09091015295945050505050565b600082516148e4818460208701614036565b9190910192915050565b8051602080830151919081101561492d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614968606083018461405a565b95945050505050565b60006020828403121561498357600080fd5b8151611ba781613cb1565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516149c6816017850160208801614036565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614a03816028840160208801614036565b01602801949350505050565b602081526000611ba7602083018461405a565b80820281158282048414176106b1576106b1614256565b808201808211156106b1576106b1614256565b600081614a5b57614a5b614256565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600060208284031215614a9357600080fd5b8151611ba781613b45565b80516dffffffffffffffffffffffffffff811681146139d857600080fd5b600080600060608486031215614ad157600080fd5b614ada84614a9e565b9250614ae860208501614a9e565b9150604084015163ffffffff81168114614b0157600080fd5b809150509250925092565b600082614b42577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f057570c576617372fc0a0f3470114b114723b85fcdba6d43afc0d25377818ec64736f6c6343000815003300000000000000000000000001b4ce0d48ce91eb6bcaf5db33870c65d641b894000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000005300000000000000000000000000000000000004000000000000000000000000b1b64005b11350a94c4d069eff4215592d98f2e2