60c0604052600060015560006008556103f9600a553480156200002157600080fd5b5060405162004e5f38038062004e5f8339818101604052810190620000479190620003b5565b82826103e8600a546200006f620000636200015660201b60201c565b6200015e60201b60201c565b60008111620000b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ac90620004f5565b60405180910390fd5b60008211620000fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000f2906200058d565b60405180910390fd5b83600290816200010c9190620007fa565b5082600390816200011e9190620007fa565b508160a08181525050806080818152505050505050600160098190555080600b90816200014c9190620007fa565b50505050620008e1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200028b8262000240565b810181811067ffffffffffffffff82111715620002ad57620002ac62000251565b5b80604052505050565b6000620002c262000222565b9050620002d0828262000280565b919050565b600067ffffffffffffffff821115620002f357620002f262000251565b5b620002fe8262000240565b9050602081019050919050565b60005b838110156200032b5780820151818401526020810190506200030e565b60008484015250505050565b60006200034e6200034884620002d5565b620002b6565b9050828152602081018484840111156200036d576200036c6200023b565b5b6200037a8482856200030b565b509392505050565b600082601f8301126200039a576200039962000236565b5b8151620003ac84826020860162000337565b91505092915050565b600080600060608486031215620003d157620003d06200022c565b5b600084015167ffffffffffffffff811115620003f257620003f162000231565b5b620004008682870162000382565b935050602084015167ffffffffffffffff81111562000424576200042362000231565b5b620004328682870162000382565b925050604084015167ffffffffffffffff81111562000456576200045562000231565b5b620004648682870162000382565b9150509250925092565b600082825260208201905092915050565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b6000620004dd602e836200046e565b9150620004ea826200047f565b604082019050919050565b600060208201905081810360008301526200051081620004ce565b9050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b6000620005756027836200046e565b9150620005828262000517565b604082019050919050565b60006020820190508181036000830152620005a88162000566565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200060257607f821691505b602082108103620006185762000617620005ba565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000643565b6200068e868362000643565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006db620006d5620006cf84620006a6565b620006b0565b620006a6565b9050919050565b6000819050919050565b620006f783620006ba565b6200070f6200070682620006e2565b84845462000650565b825550505050565b600090565b6200072662000717565b62000733818484620006ec565b505050565b5b818110156200075b576200074f6000826200071c565b60018101905062000739565b5050565b601f821115620007aa5762000774816200061e565b6200077f8462000633565b810160208510156200078f578190505b620007a76200079e8562000633565b83018262000738565b50505b505050565b600082821c905092915050565b6000620007cf60001984600802620007af565b1980831691505092915050565b6000620007ea8383620007bc565b9150826002028217905092915050565b6200080582620005af565b67ffffffffffffffff81111562000821576200082062000251565b5b6200082d8254620005e9565b6200083a8282856200075f565b600060209050601f8311600181146200087257600084156200085d578287015190505b620008698582620007dc565b865550620008d9565b601f19841662000882866200061e565b60005b82811015620008ac5784890151825560018201915060208501945060208101905062000885565b86831015620008cc5784890151620008c8601f891682620007bc565b8355505b6001600288020188555050505b505050505050565b60805160a05161454d6200091260003960008181611ca601528181611ccf01526122fc01526000505061454d6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80638462151c116100f9578063ca69e32311610097578063dc33e68111610071578063dc33e68114610519578063e855aee514610549578063e985e9c514610565578063f2fde38b14610595576101c4565b8063ca69e323146104bf578063cfc86f7b146104dd578063d7224ba0146104fb576101c4565b806395d89b41116100d357806395d89b4114610439578063a22cb46514610457578063b88d4fde14610473578063c87b56dd1461048f576101c4565b80638462151c146103bb5780638da5cb5b146103eb5780639231ab2a14610409576101c4565b806342842e0e1161016657806355f804b31161014057806355f804b3146103355780636352211e1461035157806370a0823114610381578063715018a6146103b1576101c4565b806342842e0e146102cd5780634e6cca8f146102e95780634f6ccce714610305576101c4565b8063095ea7b3116101a2578063095ea7b31461024757806318160ddd1461026357806323b872dd146102815780632f745c591461029d576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063081812fc14610217575b600080fd5b6101e360048036038101906101de91906129d5565b6105b1565b6040516101f09190612a1d565b60405180910390f35b6102016106fb565b60405161020e9190612ac8565b60405180910390f35b610231600480360381019061022c9190612b20565b61078d565b60405161023e9190612b8e565b60405180910390f35b610261600480360381019061025c9190612bd5565b610812565b005b61026b61092a565b6040516102789190612c24565b60405180910390f35b61029b60048036038101906102969190612c3f565b610934565b005b6102b760048036038101906102b29190612bd5565b610944565b6040516102c49190612c24565b60405180910390f35b6102e760048036038101906102e29190612c3f565b610b40565b005b61030360048036038101906102fe9190612dda565b610b60565b005b61031f600480360381019061031a9190612b20565b610c24565b60405161032c9190612c24565b60405180910390f35b61034f600480360381019061034a9190612e91565b610c77565b005b61036b60048036038101906103669190612b20565b610d09565b6040516103789190612b8e565b60405180910390f35b61039b60048036038101906103969190612ede565b610d1f565b6040516103a89190612c24565b60405180910390f35b6103b9610e07565b005b6103d560048036038101906103d09190612ede565b610e8f565b6040516103e29190612fc9565b60405180910390f35b6103f3610f3d565b6040516104009190612b8e565b60405180910390f35b610423600480360381019061041e9190612b20565b610f66565b604051610430919061304c565b60405180910390f35b610441610f7e565b60405161044e9190612ac8565b60405180910390f35b610471600480360381019061046c9190613093565b611010565b005b61048d60048036038101906104889190613188565b611190565b005b6104a960048036038101906104a49190612b20565b6111ec565b6040516104b69190612ac8565b60405180910390f35b6104c761128a565b6040516104d49190612c24565b60405180910390f35b6104e5611290565b6040516104f29190612ac8565b60405180910390f35b61050361131e565b6040516105109190612c24565b60405180910390f35b610533600480360381019061052e9190612ede565b611324565b6040516105409190612c24565b60405180910390f35b610563600480360381019061055e919061320b565b611336565b005b61057f600480360381019061057a919061324b565b6113c0565b60405161058c9190612a1d565b60405180910390f35b6105af60048036038101906105aa9190612ede565b611454565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061067c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106e457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106f457506106f38261154b565b5b9050919050565b60606002805461070a906132ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610736906132ba565b80156107835780601f1061075857610100808354040283529160200191610783565b820191906000526020600020905b81548152906001019060200180831161076657829003601f168201915b5050505050905090565b6000610798826115b5565b6107d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ce9061335d565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061081d82610d09565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610884906133ef565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108ac6115c3565b73ffffffffffffffffffffffffffffffffffffffff1614806108db57506108da816108d56115c3565b6113c0565b5b61091a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091190613481565b60405180910390fd5b6109258383836115cb565b505050565b6000600154905090565b61093f83838361167d565b505050565b600061094f83610d1f565b8210610990576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098790613513565b60405180910390fd5b600061099a61092a565b905060008060005b83811015610afe576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610a9457806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610aea57868403610adb578195505050505050610b3a565b8380610ae690613562565b9450505b508080610af690613562565b9150506109a2565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b319061361c565b60405180910390fd5b92915050565b610b5b83838360405180602001604052806000815250611190565b505050565b610b686115c3565b73ffffffffffffffffffffffffffffffffffffffff16610b86610f3d565b73ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613688565b60405180910390fd5b60005b8151811015610c1f57610c0c828281518110610bfe57610bfd6136a8565b5b602002602001015184611c34565b8080610c1790613562565b915050610bdf565b505050565b6000610c2e61092a565b8210610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6690613749565b60405180910390fd5b819050919050565b610c7f6115c3565b73ffffffffffffffffffffffffffffffffffffffff16610c9d610f3d565b73ffffffffffffffffffffffffffffffffffffffff1614610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90613688565b60405180910390fd5b8181600b9182610d04929190613920565b505050565b6000610d1482611c52565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690613a62565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b610e0f6115c3565b73ffffffffffffffffffffffffffffffffffffffff16610e2d610f3d565b73ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613688565b60405180910390fd5b610e8d6000611e55565b565b60606000610e9c83610d1f565b905060008167ffffffffffffffff811115610eba57610eb9612c97565b5b604051908082528060200260200182016040528015610ee85781602001602082028036833780820191505090505b50905060005b82811015610f3257610f008582610944565b828281518110610f1357610f126136a8565b5b6020026020010181815250508080610f2a90613562565b915050610eee565b508092505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f6e61292f565b610f7782611c52565b9050919050565b606060038054610f8d906132ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb9906132ba565b80156110065780601f10610fdb57610100808354040283529160200191611006565b820191906000526020600020905b815481529060010190602001808311610fe957829003601f168201915b5050505050905090565b6110186115c3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90613ace565b60405180910390fd5b80600760006110926115c3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661113f6115c3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111849190612a1d565b60405180910390a35050565b61119b84848461167d565b6111a784848484611f19565b6111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd90613b60565b60405180910390fd5b50505050565b60606111f7826115b5565b611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90613bf2565b60405180910390fd5b6000611241836120a0565b905060008151116112615760405180602001604052806000815250611282565b806040516020016112729190613c9a565b6040516020818303038152906040525b915050919050565b600a5481565b600b805461129d906132ba565b80601f01602080910402602001604051908101604052809291908181526020018280546112c9906132ba565b80156113165780601f106112eb57610100808354040283529160200191611316565b820191906000526020600020905b8154815290600101906020018083116112f957829003601f168201915b505050505081565b60085481565b600061132f82612147565b9050919050565b61133e6115c3565b73ffffffffffffffffffffffffffffffffffffffff1661135c610f3d565b73ffffffffffffffffffffffffffffffffffffffff16146113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990613688565b60405180910390fd5b6113bc8183611c34565b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61145c6115c3565b73ffffffffffffffffffffffffffffffffffffffff1661147a610f3d565b73ffffffffffffffffffffffffffffffffffffffff16146114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613688565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690613d2e565b60405180910390fd5b61154881611e55565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061168882611c52565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166116af6115c3565b73ffffffffffffffffffffffffffffffffffffffff16148061170b57506116d46115c3565b73ffffffffffffffffffffffffffffffffffffffff166116f38461078d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611727575061172682600001516117216115c3565b6113c0565b5b905080611769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176090613dc0565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290613e52565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613ee4565b60405180910390fd5b611857858585600161222f565b61186760008484600001516115cb565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166118d59190613f20565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166119799190613f64565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506000600184611a7f9190613fa8565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bc457611af4816115b5565b15611bc3576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c2c8686866001612235565b505050505050565b611c4e82826040518060200160405280600081525061223b565b5050565b611c5a61292f565b611c63826115b5565b611ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c999061404e565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008310611d065760017f000000000000000000000000000000000000000000000000000000000000000084611cf9919061406e565b611d039190613fa8565b90505b60008390505b818110611e14576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611e0057809350505050611e50565b508080611e0c906140a2565b915050611d0c565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e479061413d565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611f3a8473ffffffffffffffffffffffffffffffffffffffff1661271a565b15612093578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f636115c3565b8786866040518563ffffffff1660e01b8152600401611f8594939291906141b2565b6020604051808303816000875af1925050508015611fc157506040513d601f19601f82011682018060405250810190611fbe9190614213565b60015b612043573d8060008114611ff1576040519150601f19603f3d011682016040523d82523d6000602084013e611ff6565b606091505b50600081510361203b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203290613b60565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612098565b600190505b949350505050565b60606120ab826115b5565b6120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190613bf2565b60405180910390fd5b60006120f461273d565b90506000815111612114576040518060200160405280600081525061213f565b8061211e846127cf565b60405160200161212f929190614240565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ae906142d6565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a890614368565b60405180910390fd5b6122ba816115b5565b156122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906143d4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000083111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490614466565b60405180910390fd5b61236a600085838661222f565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516124679190613f64565b6fffffffffffffffffffffffffffffffff16815260200185836020015161248e9190613f64565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b858110156126fd57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461269d6000888488611f19565b6126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d390613b60565b60405180910390fd5b81806126e790613562565b92505080806126f590613562565b91505061262c565b50806001819055506127126000878588612235565b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060600b805461274c906132ba565b80601f0160208091040260200160405190810160405280929190818152602001828054612778906132ba565b80156127c55780601f1061279a576101008083540402835291602001916127c5565b820191906000526020600020905b8154815290600101906020018083116127a857829003601f168201915b5050505050905090565b606060008203612816576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061292a565b600082905060005b6000821461284857808061283190613562565b915050600a8261284191906144b5565b915061281e565b60008167ffffffffffffffff81111561286457612863612c97565b5b6040519080825280601f01601f1916602001820160405280156128965781602001600182028036833780820191505090505b5090505b60008514612923576001826128af919061406e565b9150600a856128be91906144e6565b60306128ca9190613fa8565b60f81b8183815181106128e0576128df6136a8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561291c91906144b5565b945061289a565b8093505050505b919050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129b28161297d565b81146129bd57600080fd5b50565b6000813590506129cf816129a9565b92915050565b6000602082840312156129eb576129ea612973565b5b60006129f9848285016129c0565b91505092915050565b60008115159050919050565b612a1781612a02565b82525050565b6000602082019050612a326000830184612a0e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a72578082015181840152602081019050612a57565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9a82612a38565b612aa48185612a43565b9350612ab4818560208601612a54565b612abd81612a7e565b840191505092915050565b60006020820190508181036000830152612ae28184612a8f565b905092915050565b6000819050919050565b612afd81612aea565b8114612b0857600080fd5b50565b600081359050612b1a81612af4565b92915050565b600060208284031215612b3657612b35612973565b5b6000612b4484828501612b0b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7882612b4d565b9050919050565b612b8881612b6d565b82525050565b6000602082019050612ba36000830184612b7f565b92915050565b612bb281612b6d565b8114612bbd57600080fd5b50565b600081359050612bcf81612ba9565b92915050565b60008060408385031215612bec57612beb612973565b5b6000612bfa85828601612bc0565b9250506020612c0b85828601612b0b565b9150509250929050565b612c1e81612aea565b82525050565b6000602082019050612c396000830184612c15565b92915050565b600080600060608486031215612c5857612c57612973565b5b6000612c6686828701612bc0565b9350506020612c7786828701612bc0565b9250506040612c8886828701612b0b565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ccf82612a7e565b810181811067ffffffffffffffff82111715612cee57612ced612c97565b5b80604052505050565b6000612d01612969565b9050612d0d8282612cc6565b919050565b600067ffffffffffffffff821115612d2d57612d2c612c97565b5b602082029050602081019050919050565b600080fd5b6000612d56612d5184612d12565b612cf7565b90508083825260208201905060208402830185811115612d7957612d78612d3e565b5b835b81811015612da25780612d8e8882612bc0565b845260208401935050602081019050612d7b565b5050509392505050565b600082601f830112612dc157612dc0612c92565b5b8135612dd1848260208601612d43565b91505092915050565b60008060408385031215612df157612df0612973565b5b6000612dff85828601612b0b565b925050602083013567ffffffffffffffff811115612e2057612e1f612978565b5b612e2c85828601612dac565b9150509250929050565b600080fd5b60008083601f840112612e5157612e50612c92565b5b8235905067ffffffffffffffff811115612e6e57612e6d612e36565b5b602083019150836001820283011115612e8a57612e89612d3e565b5b9250929050565b60008060208385031215612ea857612ea7612973565b5b600083013567ffffffffffffffff811115612ec657612ec5612978565b5b612ed285828601612e3b565b92509250509250929050565b600060208284031215612ef457612ef3612973565b5b6000612f0284828501612bc0565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f4081612aea565b82525050565b6000612f528383612f37565b60208301905092915050565b6000602082019050919050565b6000612f7682612f0b565b612f808185612f16565b9350612f8b83612f27565b8060005b83811015612fbc578151612fa38882612f46565b9750612fae83612f5e565b925050600181019050612f8f565b5085935050505092915050565b60006020820190508181036000830152612fe38184612f6b565b905092915050565b612ff481612b6d565b82525050565b600067ffffffffffffffff82169050919050565b61301781612ffa565b82525050565b6040820160008201516130336000850182612feb565b506020820151613046602085018261300e565b50505050565b6000604082019050613061600083018461301d565b92915050565b61307081612a02565b811461307b57600080fd5b50565b60008135905061308d81613067565b92915050565b600080604083850312156130aa576130a9612973565b5b60006130b885828601612bc0565b92505060206130c98582860161307e565b9150509250929050565b600080fd5b600067ffffffffffffffff8211156130f3576130f2612c97565b5b6130fc82612a7e565b9050602081019050919050565b82818337600083830152505050565b600061312b613126846130d8565b612cf7565b905082815260208101848484011115613147576131466130d3565b5b613152848285613109565b509392505050565b600082601f83011261316f5761316e612c92565b5b813561317f848260208601613118565b91505092915050565b600080600080608085870312156131a2576131a1612973565b5b60006131b087828801612bc0565b94505060206131c187828801612bc0565b93505060406131d287828801612b0b565b925050606085013567ffffffffffffffff8111156131f3576131f2612978565b5b6131ff8782880161315a565b91505092959194509250565b6000806040838503121561322257613221612973565b5b600061323085828601612b0b565b925050602061324185828601612bc0565b9150509250929050565b6000806040838503121561326257613261612973565b5b600061327085828601612bc0565b925050602061328185828601612bc0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806132d257607f821691505b6020821081036132e5576132e461328b565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613347602d83612a43565b9150613352826132eb565b604082019050919050565b600060208201905081810360008301526133768161333a565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b60006133d9602283612a43565b91506133e48261337d565b604082019050919050565b60006020820190508181036000830152613408816133cc565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b600061346b603983612a43565b91506134768261340f565b604082019050919050565b6000602082019050818103600083015261349a8161345e565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b60006134fd602283612a43565b9150613508826134a1565b604082019050919050565b6000602082019050818103600083015261352c816134f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061356d82612aea565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361359f5761359e613533565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613606602e83612a43565b9150613611826135aa565b604082019050919050565b60006020820190508181036000830152613635816135f9565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613672602083612a43565b915061367d8261363c565b602082019050919050565b600060208201905081810360008301526136a181613665565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b6000613733602383612a43565b915061373e826136d7565b604082019050919050565b6000602082019050818103600083015261376281613726565b9050919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613799565b6137e08683613799565b95508019841693508086168417925050509392505050565b6000819050919050565b600061381d61381861381384612aea565b6137f8565b612aea565b9050919050565b6000819050919050565b61383783613802565b61384b61384382613824565b8484546137a6565b825550505050565b600090565b613860613853565b61386b81848461382e565b505050565b5b8181101561388f57613884600082613858565b600181019050613871565b5050565b601f8211156138d4576138a581613774565b6138ae84613789565b810160208510156138bd578190505b6138d16138c985613789565b830182613870565b50505b505050565b600082821c905092915050565b60006138f7600019846008026138d9565b1980831691505092915050565b600061391083836138e6565b9150826002028217905092915050565b61392a8383613769565b67ffffffffffffffff81111561394357613942612c97565b5b61394d82546132ba565b613958828285613893565b6000601f8311600181146139875760008415613975578287013590505b61397f8582613904565b8655506139e7565b601f19841661399586613774565b60005b828110156139bd57848901358255600182019150602085019450602081019050613998565b868310156139da57848901356139d6601f8916826138e6565b8355505b6001600288020188555050505b50505050505050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000613a4c602b83612a43565b9150613a57826139f0565b604082019050919050565b60006020820190508181036000830152613a7b81613a3f565b9050919050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b6000613ab8601a83612a43565b9150613ac382613a82565b602082019050919050565b60006020820190508181036000830152613ae781613aab565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b6000613b4a603383612a43565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613bdc602f83612a43565b9150613be782613b80565b604082019050919050565b60006020820190508181036000830152613c0b81613bcf565b9050919050565b600081905092915050565b6000613c2882612a38565b613c328185613c12565b9350613c42818560208601612a54565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000613c84600583613c12565b9150613c8f82613c4e565b600582019050919050565b6000613ca68284613c1d565b9150613cb182613c77565b915081905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d18602683612a43565b9150613d2382613cbc565b604082019050919050565b60006020820190508181036000830152613d4781613d0b565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000613daa603283612a43565b9150613db582613d4e565b604082019050919050565b60006020820190508181036000830152613dd981613d9d565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b6000613e3c602683612a43565b9150613e4782613de0565b604082019050919050565b60006020820190508181036000830152613e6b81613e2f565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613ece602583612a43565b9150613ed982613e72565b604082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6000613f2b82613f04565b9150613f3683613f04565b925082820390506fffffffffffffffffffffffffffffffff811115613f5e57613f5d613533565b5b92915050565b6000613f6f82613f04565b9150613f7a83613f04565b925082820190506fffffffffffffffffffffffffffffffff811115613fa257613fa1613533565b5b92915050565b6000613fb382612aea565b9150613fbe83612aea565b9250828201905080821115613fd657613fd5613533565b5b92915050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b6000614038602a83612a43565b915061404382613fdc565b604082019050919050565b600060208201905081810360008301526140678161402b565b9050919050565b600061407982612aea565b915061408483612aea565b925082820390508181111561409c5761409b613533565b5b92915050565b60006140ad82612aea565b9150600082036140c0576140bf613533565b5b600182039050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b6000614127602f83612a43565b9150614132826140cb565b604082019050919050565b600060208201905081810360008301526141568161411a565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141848261415d565b61418e8185614168565b935061419e818560208601612a54565b6141a781612a7e565b840191505092915050565b60006080820190506141c76000830187612b7f565b6141d46020830186612b7f565b6141e16040830185612c15565b81810360608301526141f38184614179565b905095945050505050565b60008151905061420d816129a9565b92915050565b60006020828403121561422957614228612973565b5b6000614237848285016141fe565b91505092915050565b600061424c8285613c1d565b91506142588284613c1d565b91508190509392505050565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b60006142c0603183612a43565b91506142cb82614264565b604082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614352602183612a43565b915061435d826142f6565b604082019050919050565b6000602082019050818103600083015261438181614345565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b60006143be601d83612a43565b91506143c982614388565b602082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6000614450602283612a43565b915061445b826143f4565b604082019050919050565b6000602082019050818103600083015261447f81614443565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144c082612aea565b91506144cb83612aea565b9250826144db576144da614486565b5b828204905092915050565b60006144f182612aea565b91506144fc83612aea565b92508261450c5761450b614486565b5b82820690509291505056fea26469706673582212200243276b84ce097ab86ecc42cae0cbc385b7aaadc9628e62e8a68b44a05f878664736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000f436f7a7920576f726c64204e4654730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000343574e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d636b7671525a7548454a635a6f594448316a4a4a774b63353265454a6e695759614571396e42756d505452702f00000000000000000000