0x60806040523480156200001157600080fd5b506040518060200160405280600081525062000033816200005a60201b60201c565b5062000054620000486200006f60201b60201c565b6200007760201b60201c565b6200049e565b80600290816200006b9190620003b7565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001bf57607f821691505b602082108103620001d557620001d462000177565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200023f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000200565b6200024b868362000200565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000298620002926200028c8462000263565b6200026d565b62000263565b9050919050565b6000819050919050565b620002b48362000277565b620002cc620002c3826200029f565b8484546200020d565b825550505050565b600090565b620002e3620002d4565b620002f0818484620002a9565b505050565b5b8181101562000318576200030c600082620002d9565b600181019050620002f6565b5050565b601f82111562000367576200033181620001db565b6200033c84620001f0565b810160208510156200034c578190505b620003646200035b85620001f0565b830182620002f5565b50505b505050565b600082821c905092915050565b60006200038c600019846008026200036c565b1980831691505092915050565b6000620003a7838362000379565b9150826002028217905092915050565b620003c2826200013d565b67ffffffffffffffff811115620003de57620003dd62000148565b5b620003ea8254620001a6565b620003f78282856200031c565b600060209050601f8311600181146200042f57600084156200041a578287015190505b62000426858262000399565b86555062000496565b601f1984166200043f86620001db565b60005b82811015620004695784890151825560018201915060208501945060208101905062000442565b8683101562000489578489015162000485601f89168262000379565b8355505b6001600288020188555050505b505050505050565b613e6880620004ae6000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c8063715018a6116100a2578063bd85b03911610071578063bd85b039146102da578063e985e9c51461030a578063f242432a1461033a578063f2fde38b14610356578063f5298aca1461037257610115565b8063715018a61461027a578063731133e9146102845780638da5cb5b146102a0578063a22cb465146102be57610115565b80631f7fdffa116100e95780631f7fdffa146101c65780632eb2c2d6146101e25780634e1273f4146101fe5780634f558e791461022e5780636b20c4541461025e57610115565b8062fdd58e1461011a57806301ffc9a71461014a57806302fe53051461017a5780630e89341c14610196575b600080fd5b610134600480360381019061012f919061240f565b61038e565b604051610141919061245e565b60405180910390f35b610164600480360381019061015f91906124d1565b610456565b6040516101719190612519565b60405180910390f35b610194600480360381019061018f919061267a565b610538565b005b6101b060048036038101906101ab91906126c3565b61054c565b6040516101bd919061276f565b60405180910390f35b6101e060048036038101906101db91906128fa565b6105e0565b005b6101fc60048036038101906101f791906129b5565b6105fa565b005b61021860048036038101906102139190612b47565b61069b565b6040516102259190612c7d565b60405180910390f35b610248600480360381019061024391906126c3565b6107b4565b6040516102559190612519565b60405180910390f35b61027860048036038101906102739190612c9f565b6107c8565b005b610282610865565b005b61029e60048036038101906102999190612d2a565b610879565b005b6102a8610893565b6040516102b59190612dbc565b60405180910390f35b6102d860048036038101906102d39190612e03565b6108bd565b005b6102f460048036038101906102ef91906126c3565b6108d3565b604051610301919061245e565b60405180910390f35b610324600480360381019061031f9190612e43565b6108f0565b6040516103319190612519565b60405180910390f35b610354600480360381019061034f9190612e83565b610984565b005b610370600480360381019061036b9190612f1a565b610a25565b005b61038c60048036038101906103879190612f47565b610aa8565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f59061300c565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061052157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610531575061053082610b45565b5b9050919050565b610540610baf565b61054981610c2d565b50565b60606002805461055b9061305b565b80601f01602080910402602001604051908101604052809291908181526020018280546105879061305b565b80156105d45780601f106105a9576101008083540402835291602001916105d4565b820191906000526020600020905b8154815290600101906020018083116105b757829003601f168201915b50505050509050919050565b6105e8610baf565b6105f484848484610c40565b50505050565b610602610e6c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610648575061064785610642610e6c565b6108f0565b5b610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e906130fe565b60405180910390fd5b6106948585858585610e74565b5050505050565b606081518351146106e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d890613190565b60405180910390fd5b6000835167ffffffffffffffff8111156106fe576106fd61254f565b5b60405190808252806020026020018201604052801561072c5781602001602082028036833780820191505090505b50905060005b84518110156107a957610779858281518110610751576107506131b0565b5b602002602001015185838151811061076c5761076b6131b0565b5b602002602001015161038e565b82828151811061078c5761078b6131b0565b5b602002602001018181525050806107a29061320e565b9050610732565b508091505092915050565b6000806107c0836108d3565b119050919050565b6107d0610e6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610816575061081583610810610e6c565b6108f0565b5b610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c906130fe565b60405180910390fd5b610860838383611195565b505050565b61086d610baf565b6108776000611463565b565b610881610baf565b61088d84848484611529565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108cf6108c8610e6c565b83836116d9565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61098c610e6c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109d257506109d1856109cc610e6c565b6108f0565b5b610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a08906130fe565b60405180910390fd5b610a1e8585858585611845565b5050505050565b610a2d610baf565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a93906132c8565b60405180910390fd5b610aa581611463565b50565b610ab0610e6c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610af65750610af583610af0610e6c565b6108f0565b5b610b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2c906130fe565b60405180910390fd5b610b40838383611ae0565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610bb7610e6c565b73ffffffffffffffffffffffffffffffffffffffff16610bd5610893565b73ffffffffffffffffffffffffffffffffffffffff1614610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290613334565b60405180910390fd5b565b8060029081610c3c9190613500565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690613644565b60405180910390fd5b8151835114610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea906136d6565b60405180910390fd5b6000610cfd610e6c565b9050610d0e81600087878787611d26565b60005b8451811015610dc757838181518110610d2d57610d2c6131b0565b5b6020026020010151600080878481518110610d4b57610d4a6131b0565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dad91906136f6565b925050819055508080610dbf9061320e565b915050610d11565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e3f92919061372a565b60405180910390a4610e5681600087878787611d3c565b610e6581600087878787611d44565b5050505050565b600033905090565b8151835114610eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaf906136d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1e906137d3565b60405180910390fd5b6000610f31610e6c565b9050610f41818787878787611d26565b60005b84518110156110f2576000858281518110610f6257610f616131b0565b5b602002602001015190506000858381518110610f8157610f806131b0565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990613865565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110d791906136f6565b92505081905550505050806110eb9061320e565b9050610f44565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161116992919061372a565b60405180910390a461117f818787878787611d3c565b61118d818787878787611d44565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fb906138f7565b60405180910390fd5b8051825114611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123f906136d6565b60405180910390fd5b6000611252610e6c565b905061127281856000868660405180602001604052806000815250611d26565b60005b83518110156113bf576000848281518110611293576112926131b0565b5b6020026020010151905060008483815181106112b2576112b16131b0565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90613989565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505080806113b79061320e565b915050611275565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161143792919061372a565b60405180910390a461145d81856000868660405180602001604052806000815250611d3c565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f90613644565b60405180910390fd5b60006115a2610e6c565b905060006115af85611f1b565b905060006115bc85611f1b565b90506115cd83600089858589611d26565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461162c91906136f6565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6289896040516116aa9291906139a9565b60405180910390a46116c183600089858589611d3c565b6116d083600089898989611f95565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613a44565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118389190612519565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ab906137d3565b60405180910390fd5b60006118be610e6c565b905060006118cb85611f1b565b905060006118d885611f1b565b90506118e8838989858589611d26565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508581101561197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690613865565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a3491906136f6565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611ab19291906139a9565b60405180910390a4611ac7848a8a86868a611d3c565b611ad5848a8a8a8a8a611f95565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b46906138f7565b60405180910390fd5b6000611b59610e6c565b90506000611b6684611f1b565b90506000611b7384611f1b565b9050611b9383876000858560405180602001604052806000815250611d26565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2190613989565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611cf79291906139a9565b60405180910390a4611d1d84886000868660405180602001604052806000815250611d3c565b50505050505050565b611d3486868686868661216c565b505050505050565b505050505050565b611d638473ffffffffffffffffffffffffffffffffffffffff1661233c565b15611f13578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611da9959493929190613ab9565b6020604051808303816000875af1925050508015611de557506040513d601f19601f82011682018060405250810190611de29190613b36565b60015b611e8a57611df1613b70565b806308c379a003611e4d5750611e05613b92565b80611e105750611e4f565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e44919061276f565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8190613c94565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613d26565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff811115611f3a57611f3961254f565b5b604051908082528060200260200182016040528015611f685781602001602082028036833780820191505090505b5090508281600081518110611f8057611f7f6131b0565b5b60200260200101818152505080915050919050565b611fb48473ffffffffffffffffffffffffffffffffffffffff1661233c565b15612164578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611ffa959493929190613d46565b6020604051808303816000875af192505050801561203657506040513d601f19601f820116820180604052508101906120339190613b36565b60015b6120db57612042613b70565b806308c379a00361209e5750612056613b92565b8061206157506120a0565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612095919061276f565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d290613c94565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215990613d26565b60405180910390fd5b505b505050505050565b61217a86868686868661235f565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361222b5760005b8351811015612229578281815181106121cd576121cc6131b0565b5b6020026020010151600460008684815181106121ec576121eb6131b0565b5b60200260200101518152602001908152602001600020600082825461221191906136f6565b92505081905550806122229061320e565b90506121b1565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036123345760005b83518110156123325760008482815181106122805761227f6131b0565b5b60200260200101519050600084838151811061229f5761229e6131b0565b5b6020026020010151905060006004600084815260200190815260200160002054905081811015612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb90613e12565b60405180910390fd5b81810360046000858152602001908152602001600020819055505050508061232b9061320e565b9050612262565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123a68261237b565b9050919050565b6123b68161239b565b81146123c157600080fd5b50565b6000813590506123d3816123ad565b92915050565b6000819050919050565b6123ec816123d9565b81146123f757600080fd5b50565b600081359050612409816123e3565b92915050565b6000806040838503121561242657612425612371565b5b6000612434858286016123c4565b9250506020612445858286016123fa565b9150509250929050565b612458816123d9565b82525050565b6000602082019050612473600083018461244f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124ae81612479565b81146124b957600080fd5b50565b6000813590506124cb816124a5565b92915050565b6000602082840312156124e7576124e6612371565b5b60006124f5848285016124bc565b91505092915050565b60008115159050919050565b612513816124fe565b82525050565b600060208201905061252e600083018461250a565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125878261253e565b810181811067ffffffffffffffff821117156125a6576125a561254f565b5b80604052505050565b60006125b9612367565b90506125c5828261257e565b919050565b600067ffffffffffffffff8211156125e5576125e461254f565b5b6125ee8261253e565b9050602081019050919050565b82818337600083830152505050565b600061261d612618846125ca565b6125af565b90508281526020810184848401111561263957612638612539565b5b6126448482856125fb565b509392505050565b600082601f83011261266157612660612534565b5b813561267184826020860161260a565b91505092915050565b6000602082840312156126905761268f612371565b5b600082013567ffffffffffffffff8111156126ae576126ad612376565b5b6126ba8482850161264c565b91505092915050565b6000602082840312156126d9576126d8612371565b5b60006126e7848285016123fa565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561272a57808201518184015260208101905061270f565b60008484015250505050565b6000612741826126f0565b61274b81856126fb565b935061275b81856020860161270c565b6127648161253e565b840191505092915050565b600060208201905081810360008301526127898184612736565b905092915050565b600067ffffffffffffffff8211156127ac576127ab61254f565b5b602082029050602081019050919050565b600080fd5b60006127d56127d084612791565b6125af565b905080838252602082019050602084028301858111156127f8576127f76127bd565b5b835b81811015612821578061280d88826123fa565b8452602084019350506020810190506127fa565b5050509392505050565b600082601f8301126128405761283f612534565b5b81356128508482602086016127c2565b91505092915050565b600067ffffffffffffffff8211156128745761287361254f565b5b61287d8261253e565b9050602081019050919050565b600061289d61289884612859565b6125af565b9050828152602081018484840111156128b9576128b8612539565b5b6128c48482856125fb565b509392505050565b600082601f8301126128e1576128e0612534565b5b81356128f184826020860161288a565b91505092915050565b6000806000806080858703121561291457612913612371565b5b6000612922878288016123c4565b945050602085013567ffffffffffffffff81111561294357612942612376565b5b61294f8782880161282b565b935050604085013567ffffffffffffffff8111156129705761296f612376565b5b61297c8782880161282b565b925050606085013567ffffffffffffffff81111561299d5761299c612376565b5b6129a9878288016128cc565b91505092959194509250565b600080600080600060a086880312156129d1576129d0612371565b5b60006129df888289016123c4565b95505060206129f0888289016123c4565b945050604086013567ffffffffffffffff811115612a1157612a10612376565b5b612a1d8882890161282b565b935050606086013567ffffffffffffffff811115612a3e57612a3d612376565b5b612a4a8882890161282b565b925050608086013567ffffffffffffffff811115612a6b57612a6a612376565b5b612a77888289016128cc565b9150509295509295909350565b600067ffffffffffffffff821115612a9f57612a9e61254f565b5b602082029050602081019050919050565b6000612ac3612abe84612a84565b6125af565b90508083825260208201905060208402830185811115612ae657612ae56127bd565b5b835b81811015612b0f5780612afb88826123c4565b845260208401935050602081019050612ae8565b5050509392505050565b600082601f830112612b2e57612b2d612534565b5b8135612b3e848260208601612ab0565b91505092915050565b60008060408385031215612b5e57612b5d612371565b5b600083013567ffffffffffffffff811115612b7c57612b7b612376565b5b612b8885828601612b19565b925050602083013567ffffffffffffffff811115612ba957612ba8612376565b5b612bb58582860161282b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612bf4816123d9565b82525050565b6000612c068383612beb565b60208301905092915050565b6000602082019050919050565b6000612c2a82612bbf565b612c348185612bca565b9350612c3f83612bdb565b8060005b83811015612c70578151612c578882612bfa565b9750612c6283612c12565b925050600181019050612c43565b5085935050505092915050565b60006020820190508181036000830152612c978184612c1f565b905092915050565b600080600060608486031215612cb857612cb7612371565b5b6000612cc6868287016123c4565b935050602084013567ffffffffffffffff811115612ce757612ce6612376565b5b612cf38682870161282b565b925050604084013567ffffffffffffffff811115612d1457612d13612376565b5b612d208682870161282b565b9150509250925092565b60008060008060808587031215612d4457612d43612371565b5b6000612d52878288016123c4565b9450506020612d63878288016123fa565b9350506040612d74878288016123fa565b925050606085013567ffffffffffffffff811115612d9557612d94612376565b5b612da1878288016128cc565b91505092959194509250565b612db68161239b565b82525050565b6000602082019050612dd16000830184612dad565b92915050565b612de0816124fe565b8114612deb57600080fd5b50565b600081359050612dfd81612dd7565b92915050565b60008060408385031215612e1a57612e19612371565b5b6000612e28858286016123c4565b9250506020612e3985828601612dee565b9150509250929050565b60008060408385031215612e5a57612e59612371565b5b6000612e68858286016123c4565b9250506020612e79858286016123c4565b9150509250929050565b600080600080600060a08688031215612e9f57612e9e612371565b5b6000612ead888289016123c4565b9550506020612ebe888289016123c4565b9450506040612ecf888289016123fa565b9350506060612ee0888289016123fa565b925050608086013567ffffffffffffffff811115612f0157612f00612376565b5b612f0d888289016128cc565b9150509295509295909350565b600060208284031215612f3057612f2f612371565b5b6000612f3e848285016123c4565b91505092915050565b600080600060608486031215612f6057612f5f612371565b5b6000612f6e868287016123c4565b9350506020612f7f868287016123fa565b9250506040612f90868287016123fa565b9150509250925092565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b6000612ff6602a836126fb565b915061300182612f9a565b604082019050919050565b6000602082019050818103600083015261302581612fe9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061307357607f821691505b6020821081036130865761308561302c565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b60006130e8602e836126fb565b91506130f38261308c565b604082019050919050565b60006020820190508181036000830152613117816130db565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b600061317a6029836126fb565b91506131858261311e565b604082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613219826123d9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361324b5761324a6131df565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132b26026836126fb565b91506132bd82613256565b604082019050919050565b600060208201905081810360008301526132e1816132a5565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061331e6020836126fb565b9150613329826132e8565b602082019050919050565b6000602082019050818103600083015261334d81613311565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613379565b6133c08683613379565b95508019841693508086168417925050509392505050565b6000819050919050565b60006133fd6133f86133f3846123d9565b6133d8565b6123d9565b9050919050565b6000819050919050565b613417836133e2565b61342b61342382613404565b848454613386565b825550505050565b600090565b613440613433565b61344b81848461340e565b505050565b5b8181101561346f57613464600082613438565b600181019050613451565b5050565b601f8211156134b45761348581613354565b61348e84613369565b8101602085101561349d578190505b6134b16134a985613369565b830182613450565b50505b505050565b600082821c905092915050565b60006134d7600019846008026134b9565b1980831691505092915050565b60006134f083836134c6565b9150826002028217905092915050565b613509826126f0565b67ffffffffffffffff8111156135225761352161254f565b5b61352c825461305b565b613537828285613473565b600060209050601f83116001811461356a5760008415613558578287015190505b61356285826134e4565b8655506135ca565b601f19841661357886613354565b60005b828110156135a05784890151825560018201915060208501945060208101905061357b565b868310156135bd57848901516135b9601f8916826134c6565b8355505b6001600288020188555050505b505050505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061362e6021836126fb565b9150613639826135d2565b604082019050919050565b6000602082019050818103600083015261365d81613621565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b60006136c06028836126fb565b91506136cb82613664565b604082019050919050565b600060208201905081810360008301526136ef816136b3565b9050919050565b6000613701826123d9565b915061370c836123d9565b9250828201905080821115613724576137236131df565b5b92915050565b600060408201905081810360008301526137448185612c1f565b905081810360208301526137588184612c1f565b90509392505050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137bd6025836126fb565b91506137c882613761565b604082019050919050565b600060208201905081810360008301526137ec816137b0565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b600061384f602a836126fb565b915061385a826137f3565b604082019050919050565b6000602082019050818103600083015261387e81613842565b9050919050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138e16023836126fb565b91506138ec82613885565b604082019050919050565b60006020820190508181036000830152613910816138d4565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006139736024836126fb565b915061397e82613917565b604082019050919050565b600060208201905081810360008301526139a281613966565b9050919050565b60006040820190506139be600083018561244f565b6139cb602083018461244f565b9392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613a2e6029836126fb565b9150613a39826139d2565b604082019050919050565b60006020820190508181036000830152613a5d81613a21565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613a8b82613a64565b613a958185613a6f565b9350613aa581856020860161270c565b613aae8161253e565b840191505092915050565b600060a082019050613ace6000830188612dad565b613adb6020830187612dad565b8181036040830152613aed8186612c1f565b90508181036060830152613b018185612c1f565b90508181036080830152613b158184613a80565b90509695505050505050565b600081519050613b30816124a5565b92915050565b600060208284031215613b4c57613b4b612371565b5b6000613b5a84828501613b21565b91505092915050565b60008160e01c9050919050565b600060033d1115613b8f5760046000803e613b8c600051613b63565b90505b90565b600060443d10613c1f57613ba4612367565b60043d036004823e80513d602482011167ffffffffffffffff82111715613bcc575050613c1f565b808201805167ffffffffffffffff811115613bea5750505050613c1f565b80602083010160043d038501811115613c07575050505050613c1f565b613c168260200185018661257e565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613c7e6034836126fb565b9150613c8982613c22565b604082019050919050565b60006020820190508181036000830152613cad81613c71565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613d106028836126fb565b9150613d1b82613cb4565b604082019050919050565b60006020820190508181036000830152613d3f81613d03565b9050919050565b600060a082019050613d5b6000830188612dad565b613d686020830187612dad565b613d75604083018661244f565b613d82606083018561244f565b8181036080830152613d948184613a80565b90509695505050505050565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b6000613dfc6028836126fb565b9150613e0782613da0565b604082019050919050565b60006020820190508181036000830152613e2b81613def565b905091905056fea2646970667358221220c396f0330c86b7857a0964a0be06290b0dc512749e42ac689ffba2c194c4868f64736f6c63430008120033