{
    "_format": "hh-sol-artifact-1",
    "contractName": "LockedNORIHelper",
    "sourceName": "contracts/test/LockedNORIHelper.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "indexed": false,
                    "internalType": "struct LockedNORI.TokenGrantDetail",
                    "name": "grant",
                    "type": "tuple"
                }
            ],
            "name": "logNamedTokenGrant",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "lnori",
                    "type": "address"
                },
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORI.TokenGrantDetail",
                    "name": "expectedGrantDetails",
                    "type": "tuple"
                }
            ],
            "name": "assertSimplePastGrant",
            "outputs": [],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "lnori",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "deadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "v",
                    "type": "uint8"
                },
                {
                    "internalType": "bytes32",
                    "name": "r",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "s",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "fromTime",
                    "type": "uint256"
                }
            ],
            "name": "createSimpleGrant",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "lnori",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "deadline",
                    "type": "uint256"
                },
                {
                    "internalType": "uint8",
                    "name": "v",
                    "type": "uint8"
                },
                {
                    "internalType": "bytes32",
                    "name": "r",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "s",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "createSimpleGrantFromNow",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestEndTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockEndTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "cliff1Time",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "cliff2Time",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestCliff1Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestCliff2Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockCliff1Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockCliff2Amount",
                    "type": "uint256"
                }
            ],
            "name": "encodeGrantCreationParams",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "lnori",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "get",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORI.TokenGrantDetail",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "fromTime",
                    "type": "uint256"
                }
            ],
            "name": "getSimpleGrantCreationParamsEncoded",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b5061185e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806303f79b4f146100675780631150ef60146100835780631ad249a61461009f57806327a132b4146100cf5780633ff77556146100eb578063d81e84231461011b575b600080fd5b610081600480360381019061007c919061082b565b61014b565b005b61009d60048036038101906100989190610906565b61035e565b005b6100b960048036038101906100b49190610947565b61040e565b6040516100c69190610ab6565b60405180910390f35b6100e960048036038101906100e49190610ad8565b610452565b005b61010560048036038101906101009190610b7a565b610478565b6040516101129190610ab6565b60405180910390f35b61013560048036038101906101309190610bba565b6104b4565b6040516101429190610d7d565b60405180910390f35b6000600167ffffffffffffffff81111561016857610167610d99565b5b6040519080825280602002602001820160405280156101965781602001602082028036833780820191505090505b50905087816000815181106101ae576101ad610dc8565b5b6020026020010181815250506000600167ffffffffffffffff8111156101d7576101d6610d99565b5b60405190808252806020026020018201604052801561020a57816020015b60608152602001906001900390816101f55790505b5090503073ffffffffffffffffffffffffffffffffffffffff16631ad249a685856301e133808761023b9190610e26565b6301e133808861024b9190610e26565b88896000806000806040518b63ffffffff1660e01b81526004016102789a99989796959493929190610ebd565b600060405180830381865afa158015610295573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102be9190611050565b816000815181106102d2576102d1610dc8565b5b60200260200101819052508973ffffffffffffffffffffffffffffffffffffffff1663c884aa5883838b8b8b8b6040518763ffffffff1660e01b815260040161032096959493929190611272565b600060405180830381600087803b15801561033a57600080fd5b505af115801561034e573d6000803e3d6000fd5b5050505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf31dbf483602001602081019061038f91906112e1565b6040518263ffffffff1660e01b81526004016103ab919061130e565b61020060405180830381865afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114fe565b9050610409818380360381019061040491906116bb565b61053f565b505050565b60608a8a8a8a8a8a8a8a8a8a6040516020016104339a999897969594939291906116e9565b60405160208183030381529060405290509a9950505050505050505050565b61046f87878787878787610e104261046a9190610e26565b61014b565b50505050505050565b60606104ac83836301e133808561048f9190610e26565b6301e133808661049f9190610e26565b868760008060008061040e565b905092915050565b6104bc61067f565b8273ffffffffffffffffffffffffffffffffffffffff1663bf31dbf4836040518263ffffffff1660e01b81526004016104f5919061130e565b61020060405180830381865afa158015610513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053791906114fe565b905092915050565b8060000151826000015114158061058a5750806020015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614155b8061059d57508060400151826040015114155b806105b057508060600151826060015114155b806105c357508060800151826080015114155b806105d657508060a001518260a0015114155b806105e957508060c001518260c0015114155b806105fc57508060e001518260e0015114155b80610611575080610100015182610100015114155b80610626575080610120015182610120015114155b8061063b575080610140015182610140015114155b1561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067290611808565b60405180910390fd5b5050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061075382610728565b9050919050565b61076381610748565b811461076e57600080fd5b50565b6000813590506107808161075a565b92915050565b6000819050919050565b61079981610786565b81146107a457600080fd5b50565b6000813590506107b681610790565b92915050565b600060ff82169050919050565b6107d2816107bc565b81146107dd57600080fd5b50565b6000813590506107ef816107c9565b92915050565b6000819050919050565b610808816107f5565b811461081357600080fd5b50565b600081359050610825816107ff565b92915050565b600080600080600080600080610100898b03121561084c5761084b61071e565b5b600061085a8b828c01610771565b985050602061086b8b828c016107a7565b975050604061087c8b828c016107a7565b965050606061088d8b828c016107e0565b955050608061089e8b828c01610816565b94505060a06108af8b828c01610816565b93505060c06108c08b828c01610771565b92505060e06108d18b828c016107a7565b9150509295985092959890939650565b600080fd5b600061020082840312156108fd576108fc6108e1565b5b81905092915050565b600080610220838503121561091e5761091d61071e565b5b600061092c85828601610771565b925050602061093d858286016108e6565b9150509250929050565b6000806000806000806000806000806101408b8d03121561096b5761096a61071e565b5b60006109798d828e01610771565b9a5050602061098a8d828e016107a7565b995050604061099b8d828e016107a7565b98505060606109ac8d828e016107a7565b97505060806109bd8d828e016107a7565b96505060a06109ce8d828e016107a7565b95505060c06109df8d828e016107a7565b94505060e06109f08d828e016107a7565b935050610100610a028d828e016107a7565b925050610120610a148d828e016107a7565b9150509295989b9194979a5092959850565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a60578082015181840152602081019050610a45565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a8882610a26565b610a928185610a31565b9350610aa2818560208601610a42565b610aab81610a6c565b840191505092915050565b60006020820190508181036000830152610ad08184610a7d565b905092915050565b600080600080600080600060e0888a031215610af757610af661071e565b5b6000610b058a828b01610771565b9750506020610b168a828b016107a7565b9650506040610b278a828b016107a7565b9550506060610b388a828b016107e0565b9450506080610b498a828b01610816565b93505060a0610b5a8a828b01610816565b92505060c0610b6b8a828b01610771565b91505092959891949750929550565b60008060408385031215610b9157610b9061071e565b5b6000610b9f85828601610771565b9250506020610bb0858286016107a7565b9150509250929050565b60008060408385031215610bd157610bd061071e565b5b6000610bdf85828601610771565b9250506020610bf085828601610771565b9150509250929050565b610c0381610786565b82525050565b610c1281610748565b82525050565b60008115159050919050565b610c2d81610c18565b82525050565b61020082016000820151610c4a6000850182610bfa565b506020820151610c5d6020850182610c09565b506040820151610c706040850182610bfa565b506060820151610c836060850182610bfa565b506080820151610c966080850182610bfa565b5060a0820151610ca960a0850182610bfa565b5060c0820151610cbc60c0850182610bfa565b5060e0820151610ccf60e0850182610bfa565b50610100820151610ce4610100850182610bfa565b50610120820151610cf9610120850182610bfa565b50610140820151610d0e610140850182610bfa565b50610160820151610d23610160850182610bfa565b50610180820151610d38610180850182610bfa565b506101a0820151610d4d6101a0850182610bfa565b506101c0820151610d626101c0850182610bfa565b506101e0820151610d776101e0850182610c24565b50505050565b600061020082019050610d936000830184610c33565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e3182610786565b9150610e3c83610786565b9250828201905080821115610e5457610e53610df7565b5b92915050565b610e6381610748565b82525050565b610e7281610786565b82525050565b6000819050919050565b6000819050919050565b6000610ea7610ea2610e9d84610e78565b610e82565b610786565b9050919050565b610eb781610e8c565b82525050565b600061014082019050610ed3600083018d610e5a565b610ee0602083018c610e69565b610eed604083018b610e69565b610efa606083018a610e69565b610f076080830189610e69565b610f1460a0830188610e69565b610f2160c0830187610eae565b610f2e60e0830186610eae565b610f3c610100830185610eae565b610f4a610120830184610eae565b9b9a5050505050505050505050565b600080fd5b600080fd5b610f6c82610a6c565b810181811067ffffffffffffffff82111715610f8b57610f8a610d99565b5b80604052505050565b6000610f9e610714565b9050610faa8282610f63565b919050565b600067ffffffffffffffff821115610fca57610fc9610d99565b5b610fd382610a6c565b9050602081019050919050565b6000610ff3610fee84610faf565b610f94565b90508281526020810184848401111561100f5761100e610f5e565b5b61101a848285610a42565b509392505050565b600082601f83011261103757611036610f59565b5b8151611047848260208601610fe0565b91505092915050565b6000602082840312156110665761106561071e565b5b600082015167ffffffffffffffff81111561108457611083610723565b5b61109084828501611022565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006110d18383610bfa565b60208301905092915050565b6000602082019050919050565b60006110f582611099565b6110ff81856110a4565b935061110a836110b5565b8060005b8381101561113b57815161112288826110c5565b975061112d836110dd565b92505060018101905061110e565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061119082610a26565b61119a8185611174565b93506111aa818560208601610a42565b6111b381610a6c565b840191505092915050565b60006111ca8383611185565b905092915050565b6000602082019050919050565b60006111ea82611148565b6111f48185611153565b93508360208202850161120685611164565b8060005b85811015611242578484038952815161122385826111be565b945061122e836111d2565b925060208a0199505060018101905061120a565b50829750879550505050505092915050565b61125d816107bc565b82525050565b61126c816107f5565b82525050565b600060c082019050818103600083015261128c81896110ea565b905081810360208301526112a081886111df565b90506112af6040830187610e69565b6112bc6060830186611254565b6112c96080830185611263565b6112d660a0830184611263565b979650505050505050565b6000602082840312156112f7576112f661071e565b5b600061130584828501610771565b91505092915050565b60006020820190506113236000830184610e5a565b92915050565b600080fd5b60008151905061133d81610790565b92915050565b6000815190506113528161075a565b92915050565b61136181610c18565b811461136c57600080fd5b50565b60008151905061137e81611358565b92915050565b6000610200828403121561139b5761139a611329565b5b6113a6610200610f94565b905060006113b68482850161132e565b60008301525060206113ca84828501611343565b60208301525060406113de8482850161132e565b60408301525060606113f28482850161132e565b60608301525060806114068482850161132e565b60808301525060a061141a8482850161132e565b60a08301525060c061142e8482850161132e565b60c08301525060e06114428482850161132e565b60e0830152506101006114578482850161132e565b6101008301525061012061146d8482850161132e565b610120830152506101406114838482850161132e565b610140830152506101606114998482850161132e565b610160830152506101806114af8482850161132e565b610180830152506101a06114c58482850161132e565b6101a0830152506101c06114db8482850161132e565b6101c0830152506101e06114f18482850161136f565b6101e08301525092915050565b600061020082840312156115155761151461071e565b5b600061152384828501611384565b91505092915050565b60008135905061153b81611358565b92915050565b6000610200828403121561155857611557611329565b5b611563610200610f94565b90506000611573848285016107a7565b600083015250602061158784828501610771565b602083015250604061159b848285016107a7565b60408301525060606115af848285016107a7565b60608301525060806115c3848285016107a7565b60808301525060a06115d7848285016107a7565b60a08301525060c06115eb848285016107a7565b60c08301525060e06115ff848285016107a7565b60e083015250610100611614848285016107a7565b6101008301525061012061162a848285016107a7565b61012083015250610140611640848285016107a7565b61014083015250610160611656848285016107a7565b6101608301525061018061166c848285016107a7565b610180830152506101a0611682848285016107a7565b6101a0830152506101c0611698848285016107a7565b6101c0830152506101e06116ae8482850161152c565b6101e08301525092915050565b600061020082840312156116d2576116d161071e565b5b60006116e084828501611541565b91505092915050565b6000610140820190506116ff600083018d610e5a565b61170c602083018c610e69565b611719604083018b610e69565b611726606083018a610e69565b6117336080830189610e69565b61174060a0830188610e69565b61174d60c0830187610e69565b61175a60e0830186610e69565b611768610100830185610e69565b611776610120830184610e69565b9b9a5050505050505050505050565b600082825260208201905092915050565b7f4572726f723a2061203d3d2062206e6f7420736174697366696564205b546f6b60008201527f656e4772616e7444657461696c5d000000000000000000000000000000000000602082015250565b60006117f2602e83611785565b91506117fd82611796565b604082019050919050565b60006020820190508181036000830152611821816117e5565b905091905056fea26469706673582212200b4711fbd765cb5f30088ac5fde4167407fa8b5d738a5e510c0a4a391d3c78b964736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806303f79b4f146100675780631150ef60146100835780631ad249a61461009f57806327a132b4146100cf5780633ff77556146100eb578063d81e84231461011b575b600080fd5b610081600480360381019061007c919061082b565b61014b565b005b61009d60048036038101906100989190610906565b61035e565b005b6100b960048036038101906100b49190610947565b61040e565b6040516100c69190610ab6565b60405180910390f35b6100e960048036038101906100e49190610ad8565b610452565b005b61010560048036038101906101009190610b7a565b610478565b6040516101129190610ab6565b60405180910390f35b61013560048036038101906101309190610bba565b6104b4565b6040516101429190610d7d565b60405180910390f35b6000600167ffffffffffffffff81111561016857610167610d99565b5b6040519080825280602002602001820160405280156101965781602001602082028036833780820191505090505b50905087816000815181106101ae576101ad610dc8565b5b6020026020010181815250506000600167ffffffffffffffff8111156101d7576101d6610d99565b5b60405190808252806020026020018201604052801561020a57816020015b60608152602001906001900390816101f55790505b5090503073ffffffffffffffffffffffffffffffffffffffff16631ad249a685856301e133808761023b9190610e26565b6301e133808861024b9190610e26565b88896000806000806040518b63ffffffff1660e01b81526004016102789a99989796959493929190610ebd565b600060405180830381865afa158015610295573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102be9190611050565b816000815181106102d2576102d1610dc8565b5b60200260200101819052508973ffffffffffffffffffffffffffffffffffffffff1663c884aa5883838b8b8b8b6040518763ffffffff1660e01b815260040161032096959493929190611272565b600060405180830381600087803b15801561033a57600080fd5b505af115801561034e573d6000803e3d6000fd5b5050505050505050505050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1663bf31dbf483602001602081019061038f91906112e1565b6040518263ffffffff1660e01b81526004016103ab919061130e565b61020060405180830381865afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114fe565b9050610409818380360381019061040491906116bb565b61053f565b505050565b60608a8a8a8a8a8a8a8a8a8a6040516020016104339a999897969594939291906116e9565b60405160208183030381529060405290509a9950505050505050505050565b61046f87878787878787610e104261046a9190610e26565b61014b565b50505050505050565b60606104ac83836301e133808561048f9190610e26565b6301e133808661049f9190610e26565b868760008060008061040e565b905092915050565b6104bc61067f565b8273ffffffffffffffffffffffffffffffffffffffff1663bf31dbf4836040518263ffffffff1660e01b81526004016104f5919061130e565b61020060405180830381865afa158015610513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053791906114fe565b905092915050565b8060000151826000015114158061058a5750806020015173ffffffffffffffffffffffffffffffffffffffff16826020015173ffffffffffffffffffffffffffffffffffffffff1614155b8061059d57508060400151826040015114155b806105b057508060600151826060015114155b806105c357508060800151826080015114155b806105d657508060a001518260a0015114155b806105e957508060c001518260c0015114155b806105fc57508060e001518260e0015114155b80610611575080610100015182610100015114155b80610626575080610120015182610120015114155b8061063b575080610140015182610140015114155b1561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067290611808565b60405180910390fd5b5050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061075382610728565b9050919050565b61076381610748565b811461076e57600080fd5b50565b6000813590506107808161075a565b92915050565b6000819050919050565b61079981610786565b81146107a457600080fd5b50565b6000813590506107b681610790565b92915050565b600060ff82169050919050565b6107d2816107bc565b81146107dd57600080fd5b50565b6000813590506107ef816107c9565b92915050565b6000819050919050565b610808816107f5565b811461081357600080fd5b50565b600081359050610825816107ff565b92915050565b600080600080600080600080610100898b03121561084c5761084b61071e565b5b600061085a8b828c01610771565b985050602061086b8b828c016107a7565b975050604061087c8b828c016107a7565b965050606061088d8b828c016107e0565b955050608061089e8b828c01610816565b94505060a06108af8b828c01610816565b93505060c06108c08b828c01610771565b92505060e06108d18b828c016107a7565b9150509295985092959890939650565b600080fd5b600061020082840312156108fd576108fc6108e1565b5b81905092915050565b600080610220838503121561091e5761091d61071e565b5b600061092c85828601610771565b925050602061093d858286016108e6565b9150509250929050565b6000806000806000806000806000806101408b8d03121561096b5761096a61071e565b5b60006109798d828e01610771565b9a5050602061098a8d828e016107a7565b995050604061099b8d828e016107a7565b98505060606109ac8d828e016107a7565b97505060806109bd8d828e016107a7565b96505060a06109ce8d828e016107a7565b95505060c06109df8d828e016107a7565b94505060e06109f08d828e016107a7565b935050610100610a028d828e016107a7565b925050610120610a148d828e016107a7565b9150509295989b9194979a5092959850565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a60578082015181840152602081019050610a45565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a8882610a26565b610a928185610a31565b9350610aa2818560208601610a42565b610aab81610a6c565b840191505092915050565b60006020820190508181036000830152610ad08184610a7d565b905092915050565b600080600080600080600060e0888a031215610af757610af661071e565b5b6000610b058a828b01610771565b9750506020610b168a828b016107a7565b9650506040610b278a828b016107a7565b9550506060610b388a828b016107e0565b9450506080610b498a828b01610816565b93505060a0610b5a8a828b01610816565b92505060c0610b6b8a828b01610771565b91505092959891949750929550565b60008060408385031215610b9157610b9061071e565b5b6000610b9f85828601610771565b9250506020610bb0858286016107a7565b9150509250929050565b60008060408385031215610bd157610bd061071e565b5b6000610bdf85828601610771565b9250506020610bf085828601610771565b9150509250929050565b610c0381610786565b82525050565b610c1281610748565b82525050565b60008115159050919050565b610c2d81610c18565b82525050565b61020082016000820151610c4a6000850182610bfa565b506020820151610c5d6020850182610c09565b506040820151610c706040850182610bfa565b506060820151610c836060850182610bfa565b506080820151610c966080850182610bfa565b5060a0820151610ca960a0850182610bfa565b5060c0820151610cbc60c0850182610bfa565b5060e0820151610ccf60e0850182610bfa565b50610100820151610ce4610100850182610bfa565b50610120820151610cf9610120850182610bfa565b50610140820151610d0e610140850182610bfa565b50610160820151610d23610160850182610bfa565b50610180820151610d38610180850182610bfa565b506101a0820151610d4d6101a0850182610bfa565b506101c0820151610d626101c0850182610bfa565b506101e0820151610d776101e0850182610c24565b50505050565b600061020082019050610d936000830184610c33565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610e3182610786565b9150610e3c83610786565b9250828201905080821115610e5457610e53610df7565b5b92915050565b610e6381610748565b82525050565b610e7281610786565b82525050565b6000819050919050565b6000819050919050565b6000610ea7610ea2610e9d84610e78565b610e82565b610786565b9050919050565b610eb781610e8c565b82525050565b600061014082019050610ed3600083018d610e5a565b610ee0602083018c610e69565b610eed604083018b610e69565b610efa606083018a610e69565b610f076080830189610e69565b610f1460a0830188610e69565b610f2160c0830187610eae565b610f2e60e0830186610eae565b610f3c610100830185610eae565b610f4a610120830184610eae565b9b9a5050505050505050505050565b600080fd5b600080fd5b610f6c82610a6c565b810181811067ffffffffffffffff82111715610f8b57610f8a610d99565b5b80604052505050565b6000610f9e610714565b9050610faa8282610f63565b919050565b600067ffffffffffffffff821115610fca57610fc9610d99565b5b610fd382610a6c565b9050602081019050919050565b6000610ff3610fee84610faf565b610f94565b90508281526020810184848401111561100f5761100e610f5e565b5b61101a848285610a42565b509392505050565b600082601f83011261103757611036610f59565b5b8151611047848260208601610fe0565b91505092915050565b6000602082840312156110665761106561071e565b5b600082015167ffffffffffffffff81111561108457611083610723565b5b61109084828501611022565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006110d18383610bfa565b60208301905092915050565b6000602082019050919050565b60006110f582611099565b6110ff81856110a4565b935061110a836110b5565b8060005b8381101561113b57815161112288826110c5565b975061112d836110dd565b92505060018101905061110e565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061119082610a26565b61119a8185611174565b93506111aa818560208601610a42565b6111b381610a6c565b840191505092915050565b60006111ca8383611185565b905092915050565b6000602082019050919050565b60006111ea82611148565b6111f48185611153565b93508360208202850161120685611164565b8060005b85811015611242578484038952815161122385826111be565b945061122e836111d2565b925060208a0199505060018101905061120a565b50829750879550505050505092915050565b61125d816107bc565b82525050565b61126c816107f5565b82525050565b600060c082019050818103600083015261128c81896110ea565b905081810360208301526112a081886111df565b90506112af6040830187610e69565b6112bc6060830186611254565b6112c96080830185611263565b6112d660a0830184611263565b979650505050505050565b6000602082840312156112f7576112f661071e565b5b600061130584828501610771565b91505092915050565b60006020820190506113236000830184610e5a565b92915050565b600080fd5b60008151905061133d81610790565b92915050565b6000815190506113528161075a565b92915050565b61136181610c18565b811461136c57600080fd5b50565b60008151905061137e81611358565b92915050565b6000610200828403121561139b5761139a611329565b5b6113a6610200610f94565b905060006113b68482850161132e565b60008301525060206113ca84828501611343565b60208301525060406113de8482850161132e565b60408301525060606113f28482850161132e565b60608301525060806114068482850161132e565b60808301525060a061141a8482850161132e565b60a08301525060c061142e8482850161132e565b60c08301525060e06114428482850161132e565b60e0830152506101006114578482850161132e565b6101008301525061012061146d8482850161132e565b610120830152506101406114838482850161132e565b610140830152506101606114998482850161132e565b610160830152506101806114af8482850161132e565b610180830152506101a06114c58482850161132e565b6101a0830152506101c06114db8482850161132e565b6101c0830152506101e06114f18482850161136f565b6101e08301525092915050565b600061020082840312156115155761151461071e565b5b600061152384828501611384565b91505092915050565b60008135905061153b81611358565b92915050565b6000610200828403121561155857611557611329565b5b611563610200610f94565b90506000611573848285016107a7565b600083015250602061158784828501610771565b602083015250604061159b848285016107a7565b60408301525060606115af848285016107a7565b60608301525060806115c3848285016107a7565b60808301525060a06115d7848285016107a7565b60a08301525060c06115eb848285016107a7565b60c08301525060e06115ff848285016107a7565b60e083015250610100611614848285016107a7565b6101008301525061012061162a848285016107a7565b61012083015250610140611640848285016107a7565b61014083015250610160611656848285016107a7565b6101608301525061018061166c848285016107a7565b610180830152506101a0611682848285016107a7565b6101a0830152506101c0611698848285016107a7565b6101c0830152506101e06116ae8482850161152c565b6101e08301525092915050565b600061020082840312156116d2576116d161071e565b5b60006116e084828501611541565b91505092915050565b6000610140820190506116ff600083018d610e5a565b61170c602083018c610e69565b611719604083018b610e69565b611726606083018a610e69565b6117336080830189610e69565b61174060a0830188610e69565b61174d60c0830187610e69565b61175a60e0830186610e69565b611768610100830185610e69565b611776610120830184610e69565b9b9a5050505050505050505050565b600082825260208201905092915050565b7f4572726f723a2061203d3d2062206e6f7420736174697366696564205b546f6b60008201527f656e4772616e7444657461696c5d000000000000000000000000000000000000602082015250565b60006117f2602e83611785565b91506117fd82611796565b604082019050919050565b60006020820190508181036000830152611821816117e5565b905091905056fea26469706673582212200b4711fbd765cb5f30088ac5fde4167407fa8b5d738a5e510c0a4a391d3c78b964736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
