Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
a24e2e58
Unverified
Commit
a24e2e58
authored
Aug 08, 2023
by
inphi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(ctb): make MIPS oracle addrs immutable
parent
d6dcb1f4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
25 additions
and
13 deletions
+25
-13
evm.go
cannon/mipsevm/evm.go
+10
-2
mips.go
op-bindings/bindings/mips.go
+5
-5
mips_more.go
op-bindings/bindings/mips_more.go
+3
-3
MIPS.sol
packages/contracts-bedrock/src/cannon/MIPS.sol
+7
-3
No files found.
cannon/mipsevm/evm.go
View file @
a24e2e58
...
...
@@ -112,9 +112,17 @@ func NewEVMEnv(contracts *Contracts, addrs *Addresses) (*vm.EVM, *state.StateDB)
env
:=
vm
.
NewEVM
(
blockContext
,
vm
.
TxContext
{},
state
,
chainCfg
,
vmCfg
)
// pre-deploy the contracts
env
.
StateDB
.
SetCode
(
addrs
.
MIPS
,
contracts
.
MIPS
.
DeployedBytecode
.
Object
)
env
.
StateDB
.
SetCode
(
addrs
.
Oracle
,
contracts
.
Oracle
.
DeployedBytecode
.
Object
)
env
.
StateDB
.
SetState
(
addrs
.
MIPS
,
common
.
Hash
{},
addrs
.
Oracle
.
Hash
())
var
mipsCtorArgs
[
32
]
byte
copy
(
mipsCtorArgs
[
12
:
],
addrs
.
Oracle
[
:
])
mipsDeploy
:=
append
(
hexutil
.
MustDecode
(
bindings
.
MIPSMetaData
.
Bin
),
mipsCtorArgs
[
:
]
...
)
startingGas
:=
uint64
(
30
_000_000
)
_
,
deployedMipsAddr
,
leftOverGas
,
err
:=
env
.
Create
(
vm
.
AccountRef
(
addrs
.
Sender
),
mipsDeploy
,
startingGas
,
big
.
NewInt
(
0
))
if
err
!=
nil
{
panic
(
fmt
.
Errorf
(
"failed to deploy MIPS contract: %w. took %d gas"
,
err
,
startingGas
-
leftOverGas
))
}
addrs
.
MIPS
=
deployedMipsAddr
rules
:=
env
.
ChainConfig
()
.
Rules
(
header
.
Number
,
true
,
header
.
Time
)
env
.
StateDB
.
Prepare
(
rules
,
addrs
.
Sender
,
addrs
.
FeeRecipient
,
&
addrs
.
MIPS
,
vm
.
ActivePrecompiles
(
rules
),
nil
)
...
...
op-bindings/bindings/mips.go
View file @
a24e2e58
...
...
@@ -30,8 +30,8 @@ var (
// MIPSMetaData contains all meta data concerning the MIPS contract.
var
MIPSMetaData
=
&
bind
.
MetaData
{
ABI
:
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
contractIPreimageOracle
\"
,
\"
name
\"
:
\"
_oracle
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
BRK_START
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint32
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
oracle
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIPreimageOracle
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
stateData
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
proof
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
step
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
}]"
,
Bin
:
"0x60
8060405234801561001057600080fd5b50604051611d38380380611d3883398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b611ca5806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100b0575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60005461008b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100c36100be366004611baa565b6100d1565b604051908152602001610062565b60006100db611ad7565b608081146100e857600080fd5b604051610600146100f857600080fd5b6064861461010557600080fd5b610184841461011357600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101be57823560e01c825260049092019160209091019060010161019a565b505050806101200151156101dc576101d4610612565b91505061060a565b6101408101805160010167ffffffffffffffff169052606081015160009061020490826106ba565b9050603f601a82901c16600281148061022357508063ffffffff166003145b15610270576102668163ffffffff1660021461024057601f610243565b60005b60ff166002610259856303ffffff16601a610776565b63ffffffff16901b6107e9565b935050505061060a565b6101608301516000908190601f601086901c81169190601587901c166020811061029c5761029c611c16565b602002015192508063ffffffff851615806102bd57508463ffffffff16601c145b156102f4578661016001518263ffffffff16602081106102df576102df611c16565b6020020151925050601f600b86901c166103b0565b60208563ffffffff161015610356578463ffffffff16600c148061031e57508463ffffffff16600d145b8061032f57508463ffffffff16600e145b15610340578561ffff1692506103b0565b61034f8661ffff166010610776565b92506103b0565b60288563ffffffff1610158061037257508463ffffffff166022145b8061038357508463ffffffff166026145b156103b0578661016001518263ffffffff16602081106103a5576103a5611c16565b602002015192508190505b60048563ffffffff16101580156103cd575060088563ffffffff16105b806103de57508463ffffffff166001145b156103fd576103ef858784876108e3565b97505050505050505061060a565b63ffffffff60006020878316106104625761041d8861ffff166010610776565b9095019463fffffffc86166104338160016106ba565b915060288863ffffffff161015801561045357508763ffffffff16603014155b1561046057809250600093505b505b600061047089888885610af3565b63ffffffff9081169150603f8a16908916158015610495575060088163ffffffff1610155b80156104a75750601c8163ffffffff16105b15610583578063ffffffff16600814806104c757508063ffffffff166009145b156104fe576104ec8163ffffffff166008146104e357856104e6565b60005b896107e9565b9b50505050505050505050505061060a565b8063ffffffff16600a0361051e576104ec858963ffffffff8a1615611196565b8063ffffffff16600b0361053f576104ec858963ffffffff8a161515611196565b8063ffffffff16600c03610555576104ec61127c565b60108163ffffffff16101580156105725750601c8163ffffffff16105b15610583576104ec81898988611790565b8863ffffffff16603814801561059e575063ffffffff861615155b156105d35760018b61016001518763ffffffff16602081106105c2576105c2611c16565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f0576105f08460018461198a565b6105fc85836001611196565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106a557601c8401518252602090930192600490910190600101610681565b506000815281810382a0819003902092915050565b6000806106c683611a2e565b905060038416156106d657600080fd5b6020810190358460051c8160005b601b81101561073c5760208501943583821c600116801561070c576001811461072157610732565b60008481526020839052604090209350610732565b600082815260208590526040902093505b50506001016106e4565b50608051915081811461075757630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826107d35760006107d5565b815b90861663ffffffff16179250505092915050565b60006107f3611ad7565b60809050806060015160040163ffffffff16816080015163ffffffff161461087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108d257806008018261016001518663ffffffff16602081106108c1576108c1611c16565b63ffffffff90921660209290920201525b6108da610612565b95945050505050565b60006108ed611ad7565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610873565b8663ffffffff166004148061098e57508663ffffffff166005145b15610a0a5760008261016001518663ffffffff16602081106109b2576109b2611c16565b602002015190508063ffffffff168563ffffffff161480156109da57508763ffffffff166004145b80610a0257508063ffffffff168563ffffffff1614158015610a0257508763ffffffff166005145b915050610a87565b8663ffffffff16600603610a275760008460030b13159050610a87565b8663ffffffff16600703610a435760008460030b139050610a87565b8663ffffffff16600103610a8757601f601087901c166000819003610a6c5760008560030b1291505b8063ffffffff16600103610a855760008560030b121591505b505b606082018051608084015163ffffffff169091528115610acd576002610ab28861ffff166010610776565b63ffffffff90811690911b8201600401166080840152610adf565b60808301805160040163ffffffff1690525b610ae7610612565b98975050505050505050565b6000603f601a86901c81169086166020821015610eb75760088263ffffffff1610158015610b275750600f8263ffffffff16105b15610bc7578163ffffffff16600803610b4257506020610bc2565b8163ffffffff16600903610b5857506021610bc2565b8163ffffffff16600a03610b6e5750602a610bc2565b8163ffffffff16600b03610b845750602b610bc2565b8163ffffffff16600c03610b9a57506024610bc2565b8163ffffffff16600d03610bb057506025610bc2565b8163ffffffff16600e03610bc2575060265b600091505b8163ffffffff16600003610e0b57601f600688901c16602063ffffffff83161015610ce55760088263ffffffff1610610c055786935050505061060a565b8163ffffffff16600003610c285763ffffffff86811691161b925061060a915050565b8163ffffffff16600203610c4b5763ffffffff86811691161c925061060a915050565b8163ffffffff16600303610c75576102668163ffffffff168763ffffffff16901c82602003610776565b8163ffffffff16600403610c98575050505063ffffffff8216601f84161b61060a565b8163ffffffff16600603610cbb575050505063ffffffff8216601f84161c61060a565b8163ffffffff16600703610ce5576102668763ffffffff168763ffffffff16901c88602003610776565b8163ffffffff1660201480610d0057508163ffffffff166021145b15610d1257858701935050505061060a565b8163ffffffff1660221480610d2d57508163ffffffff166023145b15610d3f57858703935050505061060a565b8163ffffffff16602403610d5a57858716935050505061060a565b8163ffffffff16602503610d7557858717935050505061060a565b8163ffffffff16602603610d9057858718935050505061060a565b8163ffffffff16602703610dab57505050508282171961060a565b8163ffffffff16602a03610ddd578560030b8760030b12610dcd576000610dd0565b60015b60ff16935050505061060a565b8163ffffffff16602b03610e05578563ffffffff168763ffffffff1610610dcd576000610dd0565b50611134565b8163ffffffff16600f03610e2d5760108563ffffffff16901b9250505061060a565b8163ffffffff16601c03610eb2578063ffffffff16600203610e545750505082820261060a565b8063ffffffff1660201480610e6f57508063ffffffff166021145b15610eb2578063ffffffff16602003610e86579419945b60005b6380000000871615610ea8576401fffffffe600197881b169601610e89565b925061060a915050565b611134565b60288263ffffffff16101561101a578163ffffffff16602003610f0357610efa8660031660080260180363ffffffff168563ffffffff16901c60ff166008610776565b9250505061060a565b8163ffffffff16602103610f3857610efa8660021660080260100363ffffffff168563ffffffff16901c61ffff166010610776565b8163ffffffff16602203610f685750505063ffffffff60086003851602811681811b198416918316901b1761060a565b8163ffffffff16602303610f8057839250505061060a565b8163ffffffff16602403610fb3578560031660080260180363ffffffff168463ffffffff16901c60ff169250505061060a565b8163ffffffff16602503610fe7578560021660080260100363ffffffff168463ffffffff16901c61ffff169250505061060a565b8163ffffffff16602603610eb25750505063ffffffff60086003851602601803811681811c198416918316901c1761060a565b8163ffffffff166028036110515750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b1761060a565b8163ffffffff166029036110895750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b1761060a565b8163ffffffff16602a036110b95750505063ffffffff60086003851602811681811c198316918416901c1761060a565b8163ffffffff16602b036110d157849250505061060a565b8163ffffffff16602e036111045750505063ffffffff60086003851602601803811681811b198316918416901b1761060a565b8163ffffffff1660300361111c57839250505061060a565b8163ffffffff1660380361113457849250505061060a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610873565b60006111a0611ad7565b506080602063ffffffff861610611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610873565b63ffffffff8516158015906112255750825b1561125957838161016001518663ffffffff166020811061124857611248611c16565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108da610612565b6000611286611ad7565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036113005781610fff8116156112cf57610fff811661100003015b8363ffffffff166000036112f65760e08801805163ffffffff8382011690915295506112fa565b8395505b5061174f565b8563ffffffff16610fcd0361131b576340000000945061174f565b8563ffffffff1661101803611333576001945061174f565b8563ffffffff166110960361136857600161012088015260ff831661010088015261135c610612565b97505050505050505090565b8563ffffffff16610fa3036115b25763ffffffff83161561174f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161156c5760006113c38363fffffffc1660016106ba565b60208901519091508060001a6001036114305761142d81600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6000805460408b81015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810185905263ffffffff9091166024820152829173ffffffffffffffffffffffffffffffffffffffff169063e03110e1906044016040805180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611c45565b915091506003861680600403828110156114ed578092505b50818610156114fa578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115518663fffffffc1660018661198a565b60408b018051820163ffffffff16905297506115ad92505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016115a15780945061174f565b63ffffffff9450600993505b61174f565b8563ffffffff16610fa4036116a35763ffffffff8316600114806115dc575063ffffffff83166002145b806115ed575063ffffffff83166004145b156115fa5780945061174f565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016115a157600061163a8363fffffffc1660016106ba565b60208901519091506003841660040383811015611655578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b1760208801526000604088015293508361174f565b8563ffffffff16610fd70361174f578163ffffffff166003036117435763ffffffff831615806116d9575063ffffffff83166005145b806116ea575063ffffffff83166003145b156116f8576000945061174f565b63ffffffff831660011480611713575063ffffffff83166002145b80611724575063ffffffff83166006145b80611735575063ffffffff83166004145b156115a1576001945061174f565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b0152600401909116905261135c610612565b600061179a611ad7565b506080600063ffffffff87166010036117b8575060c0810151611921565b8663ffffffff166011036117d75763ffffffff861660c0830152611921565b8663ffffffff166012036117f0575060a0810151611921565b8663ffffffff1660130361180f5763ffffffff861660a0830152611921565b8663ffffffff166018036118435763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611921565b8663ffffffff166019036118745763ffffffff86811681871602602081901c821660c08501521660a0830152611921565b8663ffffffff16601a036118ca578460030b8660030b8161189757611897611c69565b0763ffffffff1660c0830152600385810b9087900b816118b9576118b9611c69565b0563ffffffff1660a0830152611921565b8663ffffffff16601b03611921578463ffffffff168663ffffffff16816118f3576118f3611c69565b0663ffffffff90811660c08401528581169087168161191457611914611c69565b0463ffffffff1660a08301525b63ffffffff84161561195c57808261016001518563ffffffff166020811061194b5761194b611c16565b63ffffffff90921660209290920201525b60808201805163ffffffff8082166060860152600490910116905261197f610612565b979650505050505050565b600061199583611a2e565b905060038416156119a557600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a235760208401933582821c60011680156119f35760018114611a0857611a19565b60008581526020839052604090209450611a19565b600082815260208690526040902094505b50506001016119cb565b505060805250505050565b60ff811661038002610184810190369061050401811015611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610873565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b3d611b42565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611b7357600080fd5b50813567ffffffffffffffff811115611b8b57600080fd5b602083019150836020828501011115611ba357600080fd5b9250929050565b60008060008060408587031215611bc057600080fd5b843567ffffffffffffffff80821115611bd857600080fd5b611be488838901611b61565b90965094506020870135915080821115611bfd57600080fd5b50611c0a87828801611b61565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611c58
57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
,
ABI
:
"[{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
contractIPreimageOracle
\"
,
\"
name
\"
:
\"
_oracle
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
BRK_START
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint32
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
oracle
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIPreimageOracle
\"
,
\"
name
\"
:
\"
oracle_
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
stateData
\"
,
\"
type
\"
:
\"
bytes
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
proof
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
step
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
bytes32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
}]"
,
Bin
:
"0x60
a060405234801561001057600080fd5b50604051611d55380380611d5583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611cc4610091600039600081816085015261148a0152611cc46000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611bc9565b6100d0565b604051908152602001610062565b60006100da611af6565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610611565b915050610609565b6101408101805160010167ffffffffffffffff169052606081015160009061020390826106b9565b9050603f601a82901c16600281148061022257508063ffffffff166003145b1561026f576102658163ffffffff1660021461023f57601f610242565b60005b60ff166002610258856303ffffff16601a610775565b63ffffffff16901b6107e8565b9350505050610609565b6101608301516000908190601f601086901c81169190601587901c166020811061029b5761029b611c35565b602002015192508063ffffffff851615806102bc57508463ffffffff16601c145b156102f3578661016001518263ffffffff16602081106102de576102de611c35565b6020020151925050601f600b86901c166103af565b60208563ffffffff161015610355578463ffffffff16600c148061031d57508463ffffffff16600d145b8061032e57508463ffffffff16600e145b1561033f578561ffff1692506103af565b61034e8661ffff166010610775565b92506103af565b60288563ffffffff1610158061037157508463ffffffff166022145b8061038257508463ffffffff166026145b156103af578661016001518263ffffffff16602081106103a4576103a4611c35565b602002015192508190505b60048563ffffffff16101580156103cc575060088563ffffffff16105b806103dd57508463ffffffff166001145b156103fc576103ee858784876108e2565b975050505050505050610609565b63ffffffff60006020878316106104615761041c8861ffff166010610775565b9095019463fffffffc86166104328160016106b9565b915060288863ffffffff161015801561045257508763ffffffff16603014155b1561045f57809250600093505b505b600061046f89888885610af2565b63ffffffff9081169150603f8a16908916158015610494575060088163ffffffff1610155b80156104a65750601c8163ffffffff16105b15610582578063ffffffff16600814806104c657508063ffffffff166009145b156104fd576104eb8163ffffffff166008146104e257856104e5565b60005b896107e8565b9b505050505050505050505050610609565b8063ffffffff16600a0361051d576104eb858963ffffffff8a1615611195565b8063ffffffff16600b0361053e576104eb858963ffffffff8a161515611195565b8063ffffffff16600c03610554576104eb61127b565b60108163ffffffff16101580156105715750601c8163ffffffff16105b15610582576104eb818989886117af565b8863ffffffff16603814801561059d575063ffffffff861615155b156105d25760018b61016001518763ffffffff16602081106105c1576105c1611c35565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105ef576105ef846001846119a9565b6105fb85836001611195565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106a457601c8401518252602090930192600490910190600101610680565b506000815281810382a0819003902092915050565b6000806106c583611a4d565b905060038416156106d557600080fd5b6020810190358460051c8160005b601b81101561073b5760208501943583821c600116801561070b576001811461072057610731565b60008481526020839052604090209350610731565b600082815260208590526040902093505b50506001016106e3565b50608051915081811461075657630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826107d25760006107d4565b815b90861663ffffffff16179250505092915050565b60006107f2611af6565b60809050806060015160040163ffffffff16816080015163ffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108d157806008018261016001518663ffffffff16602081106108c0576108c0611c35565b63ffffffff90921660209290920201525b6108d9610611565b95945050505050565b60006108ec611af6565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610872565b8663ffffffff166004148061098d57508663ffffffff166005145b15610a095760008261016001518663ffffffff16602081106109b1576109b1611c35565b602002015190508063ffffffff168563ffffffff161480156109d957508763ffffffff166004145b80610a0157508063ffffffff168563ffffffff1614158015610a0157508763ffffffff166005145b915050610a86565b8663ffffffff16600603610a265760008460030b13159050610a86565b8663ffffffff16600703610a425760008460030b139050610a86565b8663ffffffff16600103610a8657601f601087901c166000819003610a6b5760008560030b1291505b8063ffffffff16600103610a845760008560030b121591505b505b606082018051608084015163ffffffff169091528115610acc576002610ab18861ffff166010610775565b63ffffffff90811690911b8201600401166080840152610ade565b60808301805160040163ffffffff1690525b610ae6610611565b98975050505050505050565b6000603f601a86901c81169086166020821015610eb65760088263ffffffff1610158015610b265750600f8263ffffffff16105b15610bc6578163ffffffff16600803610b4157506020610bc1565b8163ffffffff16600903610b5757506021610bc1565b8163ffffffff16600a03610b6d5750602a610bc1565b8163ffffffff16600b03610b835750602b610bc1565b8163ffffffff16600c03610b9957506024610bc1565b8163ffffffff16600d03610baf57506025610bc1565b8163ffffffff16600e03610bc1575060265b600091505b8163ffffffff16600003610e0a57601f600688901c16602063ffffffff83161015610ce45760088263ffffffff1610610c0457869350505050610609565b8163ffffffff16600003610c275763ffffffff86811691161b9250610609915050565b8163ffffffff16600203610c4a5763ffffffff86811691161c9250610609915050565b8163ffffffff16600303610c74576102658163ffffffff168763ffffffff16901c82602003610775565b8163ffffffff16600403610c97575050505063ffffffff8216601f84161b610609565b8163ffffffff16600603610cba575050505063ffffffff8216601f84161c610609565b8163ffffffff16600703610ce4576102658763ffffffff168763ffffffff16901c88602003610775565b8163ffffffff1660201480610cff57508163ffffffff166021145b15610d11578587019350505050610609565b8163ffffffff1660221480610d2c57508163ffffffff166023145b15610d3e578587039350505050610609565b8163ffffffff16602403610d59578587169350505050610609565b8163ffffffff16602503610d74578587179350505050610609565b8163ffffffff16602603610d8f578587189350505050610609565b8163ffffffff16602703610daa575050505082821719610609565b8163ffffffff16602a03610ddc578560030b8760030b12610dcc576000610dcf565b60015b60ff169350505050610609565b8163ffffffff16602b03610e04578563ffffffff168763ffffffff1610610dcc576000610dcf565b50611133565b8163ffffffff16600f03610e2c5760108563ffffffff16901b92505050610609565b8163ffffffff16601c03610eb1578063ffffffff16600203610e5357505050828202610609565b8063ffffffff1660201480610e6e57508063ffffffff166021145b15610eb1578063ffffffff16602003610e85579419945b60005b6380000000871615610ea7576401fffffffe600197881b169601610e88565b9250610609915050565b611133565b60288263ffffffff161015611019578163ffffffff16602003610f0257610ef98660031660080260180363ffffffff168563ffffffff16901c60ff166008610775565b92505050610609565b8163ffffffff16602103610f3757610ef98660021660080260100363ffffffff168563ffffffff16901c61ffff166010610775565b8163ffffffff16602203610f675750505063ffffffff60086003851602811681811b198416918316901b17610609565b8163ffffffff16602303610f7f578392505050610609565b8163ffffffff16602403610fb2578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610609565b8163ffffffff16602503610fe6578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610609565b8163ffffffff16602603610eb15750505063ffffffff60086003851602601803811681811c198416918316901c17610609565b8163ffffffff166028036110505750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610609565b8163ffffffff166029036110885750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610609565b8163ffffffff16602a036110b85750505063ffffffff60086003851602811681811c198316918416901c17610609565b8163ffffffff16602b036110d0578492505050610609565b8163ffffffff16602e036111035750505063ffffffff60086003851602601803811681811b198316918416901b17610609565b8163ffffffff1660300361111b578392505050610609565b8163ffffffff16603803611133578492505050610609565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610872565b600061119f611af6565b506080602063ffffffff861610611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610872565b63ffffffff8516158015906112245750825b1561125857838161016001518663ffffffff166020811061124757611247611c35565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108d9610611565b6000611285611af6565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036112ff5781610fff8116156112ce57610fff811661100003015b8363ffffffff166000036112f55760e08801805163ffffffff8382011690915295506112f9565b8395505b5061176e565b8563ffffffff16610fcd0361131a576340000000945061176e565b8563ffffffff1661101803611332576001945061176e565b8563ffffffff166110960361136757600161012088015260ff831661010088015261135b610611565b97505050505050505090565b8563ffffffff16610fa3036115d15763ffffffff83161561176e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161158b5760006113c28363fffffffc1660016106b9565b60208901519091508060001a60010361142f5761142c81600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190611c64565b9150915060038616806004038281101561150c578092505b5081861015611519578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115708663fffffffc166001866119a9565b60408b018051820163ffffffff16905297506115cc92505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016115c05780945061176e565b63ffffffff9450600993505b61176e565b8563ffffffff16610fa4036116c25763ffffffff8316600114806115fb575063ffffffff83166002145b8061160c575063ffffffff83166004145b156116195780945061176e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016115c05760006116598363fffffffc1660016106b9565b60208901519091506003841660040383811015611674578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b1760208801526000604088015293508361176e565b8563ffffffff16610fd70361176e578163ffffffff166003036117625763ffffffff831615806116f8575063ffffffff83166005145b80611709575063ffffffff83166003145b15611717576000945061176e565b63ffffffff831660011480611732575063ffffffff83166002145b80611743575063ffffffff83166006145b80611754575063ffffffff83166004145b156115c0576001945061176e565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b0152600401909116905261135b610611565b60006117b9611af6565b506080600063ffffffff87166010036117d7575060c0810151611940565b8663ffffffff166011036117f65763ffffffff861660c0830152611940565b8663ffffffff1660120361180f575060a0810151611940565b8663ffffffff1660130361182e5763ffffffff861660a0830152611940565b8663ffffffff166018036118625763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611940565b8663ffffffff166019036118935763ffffffff86811681871602602081901c821660c08501521660a0830152611940565b8663ffffffff16601a036118e9578460030b8660030b816118b6576118b6611c88565b0763ffffffff1660c0830152600385810b9087900b816118d8576118d8611c88565b0563ffffffff1660a0830152611940565b8663ffffffff16601b03611940578463ffffffff168663ffffffff168161191257611912611c88565b0663ffffffff90811660c08401528581169087168161193357611933611c88565b0463ffffffff1660a08301525b63ffffffff84161561197b57808261016001518563ffffffff166020811061196a5761196a611c35565b63ffffffff90921660209290920201525b60808201805163ffffffff8082166060860152600490910116905261199e610611565b979650505050505050565b60006119b483611a4d565b905060038416156119c457600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a425760208401933582821c6001168015611a125760018114611a2757611a38565b60008581526020839052604090209450611a38565b600082815260208690526040902094505b50506001016119ea565b505060805250505050565b60ff811661038002610184810190369061050401811015611af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610872565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b5c611b61565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611b9257600080fd5b50813567ffffffffffffffff811115611baa57600080fd5b602083019150836020828501011115611bc257600080fd5b9250929050565b60008060008060408587031215611bdf57600080fd5b843567ffffffffffffffff80821115611bf757600080fd5b611c0388838901611b80565b90965094506020870135915080821115611c1c57600080fd5b50611c2987828801611b80565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611c77
57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
,
}
// MIPSABI is the input ABI used to generate the binding from.
...
...
@@ -234,7 +234,7 @@ func (_MIPS *MIPSCallerSession) BRKSTART() (uint32, error) {
// Oracle is a free data retrieval call binding the contract method 0x7dc0d1d0.
//
// Solidity: function oracle() view returns(address)
// Solidity: function oracle() view returns(address
oracle_
)
func
(
_MIPS
*
MIPSCaller
)
Oracle
(
opts
*
bind
.
CallOpts
)
(
common
.
Address
,
error
)
{
var
out
[]
interface
{}
err
:=
_MIPS
.
contract
.
Call
(
opts
,
&
out
,
"oracle"
)
...
...
@@ -251,14 +251,14 @@ func (_MIPS *MIPSCaller) Oracle(opts *bind.CallOpts) (common.Address, error) {
// Oracle is a free data retrieval call binding the contract method 0x7dc0d1d0.
//
// Solidity: function oracle() view returns(address)
// Solidity: function oracle() view returns(address
oracle_
)
func
(
_MIPS
*
MIPSSession
)
Oracle
()
(
common
.
Address
,
error
)
{
return
_MIPS
.
Contract
.
Oracle
(
&
_MIPS
.
CallOpts
)
}
// Oracle is a free data retrieval call binding the contract method 0x7dc0d1d0.
//
// Solidity: function oracle() view returns(address)
// Solidity: function oracle() view returns(address
oracle_
)
func
(
_MIPS
*
MIPSCallerSession
)
Oracle
()
(
common
.
Address
,
error
)
{
return
_MIPS
.
Contract
.
Oracle
(
&
_MIPS
.
CallOpts
)
}
...
...
op-bindings/bindings/mips_more.go
View file @
a24e2e58
...
...
@@ -9,13 +9,13 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/solc"
)
const
MIPSStorageLayoutJSON
=
"{
\"
storage
\"
:
[{
\"
astId
\"
:1000,
\"
contract
\"
:
\"
src/cannon/MIPS.sol:MIPS
\"
,
\"
label
\"
:
\"
oracle
\"
,
\"
offset
\"
:0,
\"
slot
\"
:
\"
0
\"
,
\"
type
\"
:
\"
t_contract(IPreimageOracle)1001
\"
}],
\"
types
\"
:{
\"
t_contract(IPreimageOracle)1001
\"
:{
\"
encoding
\"
:
\"
inplace
\"
,
\"
label
\"
:
\"
contract IPreimageOracle
\"
,
\"
numberOfBytes
\"
:
\"
20
\"
}
}}"
const
MIPSStorageLayoutJSON
=
"{
\"
storage
\"
:
null,
\"
types
\"
:{
}}"
var
MIPSStorageLayout
=
new
(
solc
.
StorageLayout
)
var
MIPSDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100
b0575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60005461008b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610062565b6100c36100be366004611baa565b6100d1565b604051908152602001610062565b60006100db611ad7565b608081146100e857600080fd5b604051610600146100f857600080fd5b6064861461010557600080fd5b610184841461011357600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101be57823560e01c825260049092019160209091019060010161019a565b505050806101200151156101dc576101d4610612565b91505061060a565b6101408101805160010167ffffffffffffffff169052606081015160009061020490826106ba565b9050603f601a82901c16600281148061022357508063ffffffff166003145b15610270576102668163ffffffff1660021461024057601f610243565b60005b60ff166002610259856303ffffff16601a610776565b63ffffffff16901b6107e9565b935050505061060a565b6101608301516000908190601f601086901c81169190601587901c166020811061029c5761029c611c16565b602002015192508063ffffffff851615806102bd57508463ffffffff16601c145b156102f4578661016001518263ffffffff16602081106102df576102df611c16565b6020020151925050601f600b86901c166103b0565b60208563ffffffff161015610356578463ffffffff16600c148061031e57508463ffffffff16600d145b8061032f57508463ffffffff16600e145b15610340578561ffff1692506103b0565b61034f8661ffff166010610776565b92506103b0565b60288563ffffffff1610158061037257508463ffffffff166022145b8061038357508463ffffffff166026145b156103b0578661016001518263ffffffff16602081106103a5576103a5611c16565b602002015192508190505b60048563ffffffff16101580156103cd575060088563ffffffff16105b806103de57508463ffffffff166001145b156103fd576103ef858784876108e3565b97505050505050505061060a565b63ffffffff60006020878316106104625761041d8861ffff166010610776565b9095019463fffffffc86166104338160016106ba565b915060288863ffffffff161015801561045357508763ffffffff16603014155b1561046057809250600093505b505b600061047089888885610af3565b63ffffffff9081169150603f8a16908916158015610495575060088163ffffffff1610155b80156104a75750601c8163ffffffff16105b15610583578063ffffffff16600814806104c757508063ffffffff166009145b156104fe576104ec8163ffffffff166008146104e357856104e6565b60005b896107e9565b9b50505050505050505050505061060a565b8063ffffffff16600a0361051e576104ec858963ffffffff8a1615611196565b8063ffffffff16600b0361053f576104ec858963ffffffff8a161515611196565b8063ffffffff16600c03610555576104ec61127c565b60108163ffffffff16101580156105725750601c8163ffffffff16105b15610583576104ec81898988611790565b8863ffffffff16603814801561059e575063ffffffff861615155b156105d35760018b61016001518763ffffffff16602081106105c2576105c2611c16565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f0576105f08460018461198a565b6105fc85836001611196565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106a557601c8401518252602090930192600490910190600101610681565b506000815281810382a0819003902092915050565b6000806106c683611a2e565b905060038416156106d657600080fd5b6020810190358460051c8160005b601b81101561073c5760208501943583821c600116801561070c576001811461072157610732565b60008481526020839052604090209350610732565b600082815260208590526040902093505b50506001016106e4565b50608051915081811461075757630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826107d35760006107d5565b815b90861663ffffffff16179250505092915050565b60006107f3611ad7565b60809050806060015160040163ffffffff16816080015163ffffffff161461087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108d257806008018261016001518663ffffffff16602081106108c1576108c1611c16565b63ffffffff90921660209290920201525b6108da610612565b95945050505050565b60006108ed611ad7565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610873565b8663ffffffff166004148061098e57508663ffffffff166005145b15610a0a5760008261016001518663ffffffff16602081106109b2576109b2611c16565b602002015190508063ffffffff168563ffffffff161480156109da57508763ffffffff166004145b80610a0257508063ffffffff168563ffffffff1614158015610a0257508763ffffffff166005145b915050610a87565b8663ffffffff16600603610a275760008460030b13159050610a87565b8663ffffffff16600703610a435760008460030b139050610a87565b8663ffffffff16600103610a8757601f601087901c166000819003610a6c5760008560030b1291505b8063ffffffff16600103610a855760008560030b121591505b505b606082018051608084015163ffffffff169091528115610acd576002610ab28861ffff166010610776565b63ffffffff90811690911b8201600401166080840152610adf565b60808301805160040163ffffffff1690525b610ae7610612565b98975050505050505050565b6000603f601a86901c81169086166020821015610eb75760088263ffffffff1610158015610b275750600f8263ffffffff16105b15610bc7578163ffffffff16600803610b4257506020610bc2565b8163ffffffff16600903610b5857506021610bc2565b8163ffffffff16600a03610b6e5750602a610bc2565b8163ffffffff16600b03610b845750602b610bc2565b8163ffffffff16600c03610b9a57506024610bc2565b8163ffffffff16600d03610bb057506025610bc2565b8163ffffffff16600e03610bc2575060265b600091505b8163ffffffff16600003610e0b57601f600688901c16602063ffffffff83161015610ce55760088263ffffffff1610610c055786935050505061060a565b8163ffffffff16600003610c285763ffffffff86811691161b925061060a915050565b8163ffffffff16600203610c4b5763ffffffff86811691161c925061060a915050565b8163ffffffff16600303610c75576102668163ffffffff168763ffffffff16901c82602003610776565b8163ffffffff16600403610c98575050505063ffffffff8216601f84161b61060a565b8163ffffffff16600603610cbb575050505063ffffffff8216601f84161c61060a565b8163ffffffff16600703610ce5576102668763ffffffff168763ffffffff16901c88602003610776565b8163ffffffff1660201480610d0057508163ffffffff166021145b15610d1257858701935050505061060a565b8163ffffffff1660221480610d2d57508163ffffffff166023145b15610d3f57858703935050505061060a565b8163ffffffff16602403610d5a57858716935050505061060a565b8163ffffffff16602503610d7557858717935050505061060a565b8163ffffffff16602603610d9057858718935050505061060a565b8163ffffffff16602703610dab57505050508282171961060a565b8163ffffffff16602a03610ddd578560030b8760030b12610dcd576000610dd0565b60015b60ff16935050505061060a565b8163ffffffff16602b03610e05578563ffffffff168763ffffffff1610610dcd576000610dd0565b50611134565b8163ffffffff16600f03610e2d5760108563ffffffff16901b9250505061060a565b8163ffffffff16601c03610eb2578063ffffffff16600203610e545750505082820261060a565b8063ffffffff1660201480610e6f57508063ffffffff166021145b15610eb2578063ffffffff16602003610e86579419945b60005b6380000000871615610ea8576401fffffffe600197881b169601610e89565b925061060a915050565b611134565b60288263ffffffff16101561101a578163ffffffff16602003610f0357610efa8660031660080260180363ffffffff168563ffffffff16901c60ff166008610776565b9250505061060a565b8163ffffffff16602103610f3857610efa8660021660080260100363ffffffff168563ffffffff16901c61ffff166010610776565b8163ffffffff16602203610f685750505063ffffffff60086003851602811681811b198416918316901b1761060a565b8163ffffffff16602303610f8057839250505061060a565b8163ffffffff16602403610fb3578560031660080260180363ffffffff168463ffffffff16901c60ff169250505061060a565b8163ffffffff16602503610fe7578560021660080260100363ffffffff168463ffffffff16901c61ffff169250505061060a565b8163ffffffff16602603610eb25750505063ffffffff60086003851602601803811681811c198416918316901c1761060a565b8163ffffffff166028036110515750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b1761060a565b8163ffffffff166029036110895750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b1761060a565b8163ffffffff16602a036110b95750505063ffffffff60086003851602811681811c198316918416901c1761060a565b8163ffffffff16602b036110d157849250505061060a565b8163ffffffff16602e036111045750505063ffffffff60086003851602601803811681811b198316918416901b1761060a565b8163ffffffff1660300361111c57839250505061060a565b8163ffffffff1660380361113457849250505061060a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610873565b60006111a0611ad7565b506080602063ffffffff861610611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610873565b63ffffffff8516158015906112255750825b1561125957838161016001518663ffffffff166020811061124857611248611c16565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108da610612565b6000611286611ad7565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036113005781610fff8116156112cf57610fff811661100003015b8363ffffffff166000036112f65760e08801805163ffffffff8382011690915295506112fa565b8395505b5061174f565b8563ffffffff16610fcd0361131b576340000000945061174f565b8563ffffffff1661101803611333576001945061174f565b8563ffffffff166110960361136857600161012088015260ff831661010088015261135c610612565b97505050505050505090565b8563ffffffff16610fa3036115b25763ffffffff83161561174f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161156c5760006113c38363fffffffc1660016106ba565b60208901519091508060001a6001036114305761142d81600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6000805460408b81015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810185905263ffffffff9091166024820152829173ffffffffffffffffffffffffffffffffffffffff169063e03110e1906044016040805180830381865afa1580156114b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d59190611c45565b915091506003861680600403828110156114ed578092505b50818610156114fa578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115518663fffffffc1660018661198a565b60408b018051820163ffffffff16905297506115ad92505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016115a15780945061174f565b63ffffffff9450600993505b61174f565b8563ffffffff16610fa4036116a35763ffffffff8316600114806115dc575063ffffffff83166002145b806115ed575063ffffffff83166004145b156115fa5780945061174f565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016115a157600061163a8363fffffffc1660016106ba565b60208901519091506003841660040383811015611655578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b1760208801526000604088015293508361174f565b8563ffffffff16610fd70361174f578163ffffffff166003036117435763ffffffff831615806116d9575063ffffffff83166005145b806116ea575063ffffffff83166003145b156116f8576000945061174f565b63ffffffff831660011480611713575063ffffffff83166002145b80611724575063ffffffff83166006145b80611735575063ffffffff83166004145b156115a1576001945061174f565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b0152600401909116905261135c610612565b600061179a611ad7565b506080600063ffffffff87166010036117b8575060c0810151611921565b8663ffffffff166011036117d75763ffffffff861660c0830152611921565b8663ffffffff166012036117f0575060a0810151611921565b8663ffffffff1660130361180f5763ffffffff861660a0830152611921565b8663ffffffff166018036118435763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611921565b8663ffffffff166019036118745763ffffffff86811681871602602081901c821660c08501521660a0830152611921565b8663ffffffff16601a036118ca578460030b8660030b8161189757611897611c69565b0763ffffffff1660c0830152600385810b9087900b816118b9576118b9611c69565b0563ffffffff1660a0830152611921565b8663ffffffff16601b03611921578463ffffffff168663ffffffff16816118f3576118f3611c69565b0663ffffffff90811660c08401528581169087168161191457611914611c69565b0463ffffffff1660a08301525b63ffffffff84161561195c57808261016001518563ffffffff166020811061194b5761194b611c16565b63ffffffff90921660209290920201525b60808201805163ffffffff8082166060860152600490910116905261197f610612565b979650505050505050565b600061199583611a2e565b905060038416156119a557600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a235760208401933582821c60011680156119f35760018114611a0857611a19565b60008581526020839052604090209450611a19565b600082815260208690526040902094505b50506001016119cb565b505060805250505050565b60ff811661038002610184810190369061050401811015611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610873565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b3d611b42565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611b7357600080fd5b50813567ffffffffffffffff811115611b8b57600080fd5b602083019150836020828501011115611ba357600080fd5b9250929050565b60008060008060408587031215611bc057600080fd5b843567ffffffffffffffff80821115611bd857600080fd5b611be488838901611b61565b90965094506020870135915080821115611bfd57600080fd5b50611c0a87828801611b61565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611c58
57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var
MIPSDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100
af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611bc9565b6100d0565b604051908152602001610062565b60006100da611af6565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610611565b915050610609565b6101408101805160010167ffffffffffffffff169052606081015160009061020390826106b9565b9050603f601a82901c16600281148061022257508063ffffffff166003145b1561026f576102658163ffffffff1660021461023f57601f610242565b60005b60ff166002610258856303ffffff16601a610775565b63ffffffff16901b6107e8565b9350505050610609565b6101608301516000908190601f601086901c81169190601587901c166020811061029b5761029b611c35565b602002015192508063ffffffff851615806102bc57508463ffffffff16601c145b156102f3578661016001518263ffffffff16602081106102de576102de611c35565b6020020151925050601f600b86901c166103af565b60208563ffffffff161015610355578463ffffffff16600c148061031d57508463ffffffff16600d145b8061032e57508463ffffffff16600e145b1561033f578561ffff1692506103af565b61034e8661ffff166010610775565b92506103af565b60288563ffffffff1610158061037157508463ffffffff166022145b8061038257508463ffffffff166026145b156103af578661016001518263ffffffff16602081106103a4576103a4611c35565b602002015192508190505b60048563ffffffff16101580156103cc575060088563ffffffff16105b806103dd57508463ffffffff166001145b156103fc576103ee858784876108e2565b975050505050505050610609565b63ffffffff60006020878316106104615761041c8861ffff166010610775565b9095019463fffffffc86166104328160016106b9565b915060288863ffffffff161015801561045257508763ffffffff16603014155b1561045f57809250600093505b505b600061046f89888885610af2565b63ffffffff9081169150603f8a16908916158015610494575060088163ffffffff1610155b80156104a65750601c8163ffffffff16105b15610582578063ffffffff16600814806104c657508063ffffffff166009145b156104fd576104eb8163ffffffff166008146104e257856104e5565b60005b896107e8565b9b505050505050505050505050610609565b8063ffffffff16600a0361051d576104eb858963ffffffff8a1615611195565b8063ffffffff16600b0361053e576104eb858963ffffffff8a161515611195565b8063ffffffff16600c03610554576104eb61127b565b60108163ffffffff16101580156105715750601c8163ffffffff16105b15610582576104eb818989886117af565b8863ffffffff16603814801561059d575063ffffffff861615155b156105d25760018b61016001518763ffffffff16602081106105c1576105c1611c35565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105ef576105ef846001846119a9565b6105fb85836001611195565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106a457601c8401518252602090930192600490910190600101610680565b506000815281810382a0819003902092915050565b6000806106c583611a4d565b905060038416156106d557600080fd5b6020810190358460051c8160005b601b81101561073b5760208501943583821c600116801561070b576001811461072057610731565b60008481526020839052604090209350610731565b600082815260208590526040902093505b50506001016106e3565b50608051915081811461075657630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826107d25760006107d4565b815b90861663ffffffff16179250505092915050565b60006107f2611af6565b60809050806060015160040163ffffffff16816080015163ffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108d157806008018261016001518663ffffffff16602081106108c0576108c0611c35565b63ffffffff90921660209290920201525b6108d9610611565b95945050505050565b60006108ec611af6565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610872565b8663ffffffff166004148061098d57508663ffffffff166005145b15610a095760008261016001518663ffffffff16602081106109b1576109b1611c35565b602002015190508063ffffffff168563ffffffff161480156109d957508763ffffffff166004145b80610a0157508063ffffffff168563ffffffff1614158015610a0157508763ffffffff166005145b915050610a86565b8663ffffffff16600603610a265760008460030b13159050610a86565b8663ffffffff16600703610a425760008460030b139050610a86565b8663ffffffff16600103610a8657601f601087901c166000819003610a6b5760008560030b1291505b8063ffffffff16600103610a845760008560030b121591505b505b606082018051608084015163ffffffff169091528115610acc576002610ab18861ffff166010610775565b63ffffffff90811690911b8201600401166080840152610ade565b60808301805160040163ffffffff1690525b610ae6610611565b98975050505050505050565b6000603f601a86901c81169086166020821015610eb65760088263ffffffff1610158015610b265750600f8263ffffffff16105b15610bc6578163ffffffff16600803610b4157506020610bc1565b8163ffffffff16600903610b5757506021610bc1565b8163ffffffff16600a03610b6d5750602a610bc1565b8163ffffffff16600b03610b835750602b610bc1565b8163ffffffff16600c03610b9957506024610bc1565b8163ffffffff16600d03610baf57506025610bc1565b8163ffffffff16600e03610bc1575060265b600091505b8163ffffffff16600003610e0a57601f600688901c16602063ffffffff83161015610ce45760088263ffffffff1610610c0457869350505050610609565b8163ffffffff16600003610c275763ffffffff86811691161b9250610609915050565b8163ffffffff16600203610c4a5763ffffffff86811691161c9250610609915050565b8163ffffffff16600303610c74576102658163ffffffff168763ffffffff16901c82602003610775565b8163ffffffff16600403610c97575050505063ffffffff8216601f84161b610609565b8163ffffffff16600603610cba575050505063ffffffff8216601f84161c610609565b8163ffffffff16600703610ce4576102658763ffffffff168763ffffffff16901c88602003610775565b8163ffffffff1660201480610cff57508163ffffffff166021145b15610d11578587019350505050610609565b8163ffffffff1660221480610d2c57508163ffffffff166023145b15610d3e578587039350505050610609565b8163ffffffff16602403610d59578587169350505050610609565b8163ffffffff16602503610d74578587179350505050610609565b8163ffffffff16602603610d8f578587189350505050610609565b8163ffffffff16602703610daa575050505082821719610609565b8163ffffffff16602a03610ddc578560030b8760030b12610dcc576000610dcf565b60015b60ff169350505050610609565b8163ffffffff16602b03610e04578563ffffffff168763ffffffff1610610dcc576000610dcf565b50611133565b8163ffffffff16600f03610e2c5760108563ffffffff16901b92505050610609565b8163ffffffff16601c03610eb1578063ffffffff16600203610e5357505050828202610609565b8063ffffffff1660201480610e6e57508063ffffffff166021145b15610eb1578063ffffffff16602003610e85579419945b60005b6380000000871615610ea7576401fffffffe600197881b169601610e88565b9250610609915050565b611133565b60288263ffffffff161015611019578163ffffffff16602003610f0257610ef98660031660080260180363ffffffff168563ffffffff16901c60ff166008610775565b92505050610609565b8163ffffffff16602103610f3757610ef98660021660080260100363ffffffff168563ffffffff16901c61ffff166010610775565b8163ffffffff16602203610f675750505063ffffffff60086003851602811681811b198416918316901b17610609565b8163ffffffff16602303610f7f578392505050610609565b8163ffffffff16602403610fb2578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610609565b8163ffffffff16602503610fe6578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610609565b8163ffffffff16602603610eb15750505063ffffffff60086003851602601803811681811c198416918316901c17610609565b8163ffffffff166028036110505750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610609565b8163ffffffff166029036110885750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610609565b8163ffffffff16602a036110b85750505063ffffffff60086003851602811681811c198316918416901c17610609565b8163ffffffff16602b036110d0578492505050610609565b8163ffffffff16602e036111035750505063ffffffff60086003851602601803811681811b198316918416901b17610609565b8163ffffffff1660300361111b578392505050610609565b8163ffffffff16603803611133578492505050610609565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610872565b600061119f611af6565b506080602063ffffffff861610611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610872565b63ffffffff8516158015906112245750825b1561125857838161016001518663ffffffff166020811061124757611247611c35565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108d9610611565b6000611285611af6565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036112ff5781610fff8116156112ce57610fff811661100003015b8363ffffffff166000036112f55760e08801805163ffffffff8382011690915295506112f9565b8395505b5061176e565b8563ffffffff16610fcd0361131a576340000000945061176e565b8563ffffffff1661101803611332576001945061176e565b8563ffffffff166110960361136757600161012088015260ff831661010088015261135b610611565b97505050505050505090565b8563ffffffff16610fa3036115d15763ffffffff83161561176e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161158b5760006113c28363fffffffc1660016106b9565b60208901519091508060001a60010361142f5761142c81600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190611c64565b9150915060038616806004038281101561150c578092505b5081861015611519578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115708663fffffffc166001866119a9565b60408b018051820163ffffffff16905297506115cc92505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016115c05780945061176e565b63ffffffff9450600993505b61176e565b8563ffffffff16610fa4036116c25763ffffffff8316600114806115fb575063ffffffff83166002145b8061160c575063ffffffff83166004145b156116195780945061176e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016115c05760006116598363fffffffc1660016106b9565b60208901519091506003841660040383811015611674578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b1760208801526000604088015293508361176e565b8563ffffffff16610fd70361176e578163ffffffff166003036117625763ffffffff831615806116f8575063ffffffff83166005145b80611709575063ffffffff83166003145b15611717576000945061176e565b63ffffffff831660011480611732575063ffffffff83166002145b80611743575063ffffffff83166006145b80611754575063ffffffff83166004145b156115c0576001945061176e565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b0152600401909116905261135b610611565b60006117b9611af6565b506080600063ffffffff87166010036117d7575060c0810151611940565b8663ffffffff166011036117f65763ffffffff861660c0830152611940565b8663ffffffff1660120361180f575060a0810151611940565b8663ffffffff1660130361182e5763ffffffff861660a0830152611940565b8663ffffffff166018036118625763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611940565b8663ffffffff166019036118935763ffffffff86811681871602602081901c821660c08501521660a0830152611940565b8663ffffffff16601a036118e9578460030b8660030b816118b6576118b6611c88565b0763ffffffff1660c0830152600385810b9087900b816118d8576118d8611c88565b0563ffffffff1660a0830152611940565b8663ffffffff16601b03611940578463ffffffff168663ffffffff168161191257611912611c88565b0663ffffffff90811660c08401528581169087168161193357611933611c88565b0463ffffffff1660a08301525b63ffffffff84161561197b57808261016001518563ffffffff166020811061196a5761196a611c35565b63ffffffff90921660209290920201525b60808201805163ffffffff8082166060860152600490910116905261199e610611565b979650505050505050565b60006119b483611a4d565b905060038416156119c457600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a425760208401933582821c6001168015611a125760018114611a2757611a38565b60008581526020839052604090209450611a38565b600082815260208690526040902094505b50506001016119ea565b505060805250505050565b60ff811661038002610184810190369061050401811015611af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610872565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b5c611b61565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611b9257600080fd5b50813567ffffffffffffffff811115611baa57600080fd5b602083019150836020828501011115611bc257600080fd5b9250929050565b60008060008060408587031215611bdf57600080fd5b843567ffffffffffffffff80821115611bf757600080fd5b611c0388838901611b80565b90965094506020870135915080821115611c1c57600080fd5b50611c2987828801611b80565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611c77
57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var
MIPSDeployedSourceMap
=
"1131:37
218:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;1745:10;1710:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1710:45:106;;;;;;;;2144:29;;;;;;;;;;;;412:42:257;400:55;;;382:74;;370:2;355:18;2144:29:106;211:251:257;24696:6377:106;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;24696:6377:106;1541:177:257;24696:6377:106;24774:7;24817:18;;:::i;:::-;24964:4;24957:5;24954:15;24944:134;;25058:1;25055;25048:12;24944:134;25114:4;25108:11;25121;25105:28;25095:137;;25212:1;25209;25202:12;25095:137;25280:3;25262:16;25259:25;25249:150;;25379:1;25376;25369:12;25249:150;25443:3;25429:12;25426:21;25416:145;;25541:1;25538;25531:12;25416:145;25821:24;;26165:4;25867:20;26223:2;25925:21;;25821:24;25983:18;25867:20;25925:21;;;25821:24;25798:21;25794:52;;;25983:18;25867:20;;;25925:21;;;25821:24;25794:52;;25867:20;;25925:21;;;25821:24;25794:52;;25983:18;25867:20;25925:21;;;25821:24;25794:52;;25983:18;25867:20;25925:21;;;25821:24;25794:52;;25983:18;25867:20;25925:21;;;25821:24;25794:52;;;25983:18;25867:20;25925:21;;;25821:24;25798:21;25794:52;;;25983:18;25867:20;25925:21;;;25821:24;25794:52;;25983:18;25867:20;25925:21;;;25821:24;25794:52;;25983:18;25867:20;26841:10;25983:18;26831:21;;;25925;;;;26939:1;26924:77;26949:2;26946:1;26943:9;26924:77;;;25821:24;;25798:21;25794:52;25867:20;;26997:1;25925:21;;;;25809:2;25983:18;;;;26967:1;26960:9;26924:77;;;26928:14;;;27079:5;:12;;;27075:71;;;27118:13;:11;:13::i;:::-;27111:20;;;;;27075:71;27160:10;;;:15;;27174:1;27160:15;;;;;27245:8;;;;-1:-1:-1;;27237:20:106;;-1:-1:-1;27237:7:106;:20::i;:::-;27223:34;-1:-1:-1;27287:10:106;27295:2;27287:10;;;;27364:1;27354:11;;;:26;;;27369:6;:11;;27379:1;27369:11;27354:26;27350:348;;;27619:64;27630:6;:11;;27640:1;27630:11;:20;;27648:2;27630:20;;;27644:1;27630:20;27619:64;;27681:1;27652:25;27655:4;27662:10;27655:17;27674:2;27652;:25::i;:::-;:30;;;;27619:10;:64::i;:::-;27612:71;;;;;;;27350:348;27947:15;;;;27742:9;;;;27879:4;27873:2;27865:10;;;27864:19;;;27947:15;27972:2;27964:10;;;27963:19;27947:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28012:5:106;28036:11;;;;;:29;;;28051:6;:14;;28061:4;28051:14;28036:29;28032:832;;;28128:5;:15;;;28144:5;28128:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;28191:4:106;28185:2;28177:10;;;28176:19;28032:832;;;28229:4;28220:6;:13;;;28216:648;;;28350:6;:13;;28360:3;28350:13;:30;;;;28367:6;:13;;28377:3;28367:13;28350:30;:47;;;;28384:6;:13;;28394:3;28384:13;28350:47;28346:253;;;28460:4;28467:6;28460:13;28455:18;;28216:648;;28346:253;28559:21;28562:4;28569:6;28562:13;28577:2;28559;:21::i;:::-;28554:26;;28216:648;;;28633:4;28623:6;:14;;;;:32;;;;28641:6;:14;;28651:4;28641:14;28623:32;:50;;;;28659:6;:14;;28669:4;28659:14;28623:50;28619:245;;;28743:5;:15;;;28759:5;28743:22;;;;;;;;;:::i;:::-;;;;;28738:27;;28844:5;28836:13;;28619:245;28893:1;28883:6;:11;;;;:25;;;;;28907:1;28898:6;:10;;;28883:25;28882:42;;;;28913:6;:11;;28923:1;28913:11;28882:42;28878:125;;;28951:37;28964:6;28972:4;28978:5;28985:2;28951:12;:37::i;:::-;28944:44;;;;;;;;;;;28878:125;29036:13;29017:16;29188:4;29178:14;;;;29174:446;;29257:21;29260:4;29267:6;29260:13;29275:2;29257;:21::i;:::-;29251:27;;;;29315:10;29310:15;;29349:16;29310:15;29363:1;29349:7;:16::i;:::-;29343:22;;29397:4;29387:6;:14;;;;:32;;;;;29405:6;:14;;29415:4;29405:14;;29387:32;29383:223;;;29484:4;29472:16;;29586:1;29578:9;;29383:223;29194:426;29174:446;29653:10;29666:26;29674:4;29680:2;29684;29688:3;29666:7;:26::i;:::-;29695:10;29666:39;;;;-1:-1:-1;29791:4:106;29784:11;;;29823;;;:24;;;;;29846:1;29838:4;:9;;;;29823:24;:39;;;;;29858:4;29851;:11;;;29823:39;29819:847;;;29886:4;:9;;29894:1;29886:9;:22;;;;29899:4;:9;;29907:1;29899:9;29886:22;29882:144;;;29970:37;29981:4;:9;;29989:1;29981:9;:21;;29997:5;29981:21;;;29993:1;29981:21;30004:2;29970:10;:37::i;:::-;29963:44;;;;;;;;;;;;;;;29882:144;30048:4;:11;;30056:3;30048:11;30044:121;;30118:28;30127:5;30134:2;30138:7;;;;30118:8;:28::i;30044:121::-;30186:4;:11;;30194:3;30186:11;30182:121;;30256:28;30265:5;30272:2;30276:7;;;;;30256:8;:28::i;30182:121::-;30373:4;:11;;30381:3;30373:11;30369:80;;30415:15;:13;:15::i;30369:80::-;30552:4;30544;:12;;;;:27;;;;;30567:4;30560;:11;;;30544:27;30540:112;;;30602:31;30613:4;30619:2;30623;30627:5;30602:10;:31::i;30540:112::-;30726:6;:14;;30736:4;30726:14;:28;;;;-1:-1:-1;30744:10:106;;;;;30726:28;30722:93;;;30799:1;30774:5;:15;;;30790:5;30774:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;30722:93;30861:9;:26;;30874:13;30861:26;30857:92;;30907:27;30916:9;30927:1;30930:3;30907:8;:27::i;:::-;31030:26;31039:5;31046:3;31051:4;31030:8;:26::i;:::-;31023:33;;;;;;;;;;;;;24696:6377;;;;;;;:::o;2858:1709::-;3405:4;3399:11;;3321:4;3124:31;3113:43;;3184:13;3124:31;3523:2;3223:13;;3113:43;3130:24;3124:31;3223:13;;;3113:43;;;;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;3130:24;3124:31;3223:13;;;3113:43;2899:12;;4108:13;;3223;;;2899:12;4188:84;4213:2;4210:1;4207:9;4188:84;;;3140:13;3130:24;;3124:31;3113:43;;3144:2;3184:13;;;;4268:1;3223:13;;;;4231:1;4224:9;4188:84;;;4192:14;4335:1;4331:2;4324:13;4430:5;4426:2;4422:14;4415:5;4410:27;4536:14;;;4519:32;;;2858:1709;-1:-1:-1;;2858:1709:106:o;20751:1831::-;20824:11;20935:14;20952:24;20964:11;20952;:24::i;:::-;20935:41;;21084:1;21077:5;21073:13;21070:33;;;21099:1;21096;21089:12;21070:33;21232:2;21220:15;;;21173:20;21662:5;21659:1;21655:13;21697:4;21733:1;21718:343;21743:2;21740:1;21737:9;21718:343;;;21866:2;21854:15;;;21803:20;21901:12;;;21915:1;21897:20;21938:42;;;;22006:1;22001:42;;;;21890:153;;21938:42;21396:1;21389:12;;;21429:2;21422:13;;;21474:2;21461:16;;21947:31;;21938:42;;22001;21396:1;21389:12;;;21429:2;21422:13;;;21474:2;21461:16;;22010:31;;21890:153;-1:-1:-1;;21761:1:106;21754:9;21718:343;;;21722:14;22171:4;22165:11;22150:26;;22257:7;22251:4;22248:17;22238:124;;22299:10;22296:1;22289:21;22341:2;22338:1;22331:13;22238:124;-1:-1:-1;;22489:2:106;22478:14;;;;22466:10;22462:31;22459:1;22455:39;22523:16;;;;22541:10;22519:33;;20751:1831;-1:-1:-1;;;20751:1831:106:o;2416:334::-;2477:6;2536:18;;;;2545:8;;;;2536:18;;;;;;2535:25;;;;;2552:1;2599:2;:9;;;2593:16;;;;;2592:22;;2591:32;;;;;;;2653:9;;2652:15;2535:25;2710:21;;2730:1;2710:21;;;2721:6;2710:21;2695:11;;;;;:37;;-1:-1:-1;;;2416:334:106;;;;:::o;17861:823::-;17930:12;18017:18;;:::i;:::-;18085:4;18076:13;;18137:5;:8;;;18148:1;18137:12;18121:28;;:5;:12;;;:28;;;18117:95;;18169:28;;;;;2114:2:257;18169:28:106;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;18169:28:106;;;;;;;;18117:95;18301:8;;;;;18334:12;;;;;18323:23;;;;;;;18360:20;;;;;18301:8;18492:13;;;18488:90;;18553:6;18562:1;18553:10;18525:5;:15;;;18541:8;18525:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;18488:90;18654:13;:11;:13::i;:::-;18647:20;17861:823;-1:-1:-1;;;;;17861:823:106:o;12722:2026::-;12819:12;12905:18;;:::i;:::-;12973:4;12964:13;;13005:17;13065:5;:8;;;13076:1;13065:12;13049:28;;:5;:12;;;:28;;;13045:97;;13097:30;;;;;2461:2:257;13097:30:106;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;13097:30:106;2259:344:257;13045:97:106;13212:7;:12;;13223:1;13212:12;:28;;;;13228:7;:12;;13239:1;13228:12;13212:28;13208:947;;;13260:9;13272:5;:15;;;13288:6;13272:23;;;;;;;;;:::i;:::-;;;;;13260:35;;13336:2;13329:9;;:3;:9;;;:25;;;;;13342:7;:12;;13353:1;13342:12;13329:25;13328:58;;;;13367:2;13360:9;;:3;:9;;;;:25;;;;;13373:7;:12;;13384:1;13373:12;13360:25;13313:73;;13242:159;13208:947;;;13498:7;:12;;13509:1;13498:12;13494:661;;13559:1;13551:3;13545:15;;;;13530:30;;13494:661;;;13663:7;:12;;13674:1;13663:12;13659:496;;13723:1;13716:3;13710:14;;;13695:29;;13659:496;;;13844:7;:12;;13855:1;13844:12;13840:315;;13932:4;13926:2;13917:11;;;13916:20;13902:10;13959:8;;;13955:84;;14019:1;14012:3;14006:14;;;13991:29;;13955:84;14060:3;:8;;14067:1;14060:8;14056:85;;14121:1;14113:3;14107:15;;;;14092:30;;14056:85;13858:297;13840:315;14231:8;;;;;14309:12;;;;14298:23;;;;;14465:178;;;;14556:1;14530:22;14533:5;14541:6;14533:14;14549:2;14530;:22::i;:::-;:27;;;;;;;14516:42;;14525:1;14516:42;14501:57;:12;;;:57;14465:178;;;14612:12;;;;;14627:1;14612:16;14597:31;;;;14465:178;14718:13;:11;:13::i;:::-;14711:20;12722:2026;-1:-1:-1;;;;;;;;12722:2026:106:o;31119:7228::-;31206:6;31264:10;31272:2;31264:10;;;;;;31312:11;;31424:4;31415:13;;31411:6876;;;31555:1;31545:6;:11;;;;:27;;;;;31569:3;31560:6;:12;;;31545:27;31541:537;;;31600:6;:11;;31610:1;31600:11;31596:423;;-1:-1:-1;31620:4:106;31596:423;;;31664:6;:11;;31674:1;31664:11;31660:359;;-1:-1:-1;31684:4:106;31660:359;;;31729:6;:13;;31739:3;31729:13;31725:294;;-1:-1:-1;31751:4:106;31725:294;;;31795:6;:13;;31805:3;31795:13;31791:228;;-1:-1:-1;31817:4:106;31791:228;;;31862:6;:13;;31872:3;31862:13;31858:161;;-1:-1:-1;31884:4:106;31858:161;;;31928:6;:13;;31938:3;31928:13;31924:95;;-1:-1:-1;31950:4:106;31924:95;;;31993:6;:13;;32003:3;31993:13;31989:30;;-1:-1:-1;32015:4:106;31989:30;32058:1;32049:10;;31541:537;32139:6;:11;;32149:1;32139:11;32135:3554;;32203:4;32198:1;32190:9;;;32189:18;32240:4;32190:9;32233:11;;;32229:1319;;;32332:4;32324;:12;;;32320:1206;;32375:2;32368:9;;;;;;;32320:1206;32489:4;:12;;32497:4;32489:12;32485:1041;;32540:11;;;;;;;;-1:-1:-1;32533:18:106;;-1:-1:-1;;32533:18:106;32485:1041;32664:4;:12;;32672:4;32664:12;32660:866;;32715:11;;;;;;;;-1:-1:-1;32708:18:106;;-1:-1:-1;;32708:18:106;32660:866;32842:4;:12;;32850:4;32842:12;32838:688;;32893:27;32902:5;32896:11;;:2;:11;;;;32914:5;32909:2;:10;32893:2;:27::i;32838:688::-;33042:4;:12;;33050:4;33042:12;33038:488;;-1:-1:-1;;;;33093:17:106;;;33105:4;33100:9;;33093:17;33086:24;;33038:488;33233:4;:12;;33241:4;33233:12;33229:297;;-1:-1:-1;;;;33284:17:106;;;33296:4;33291:9;;33284:17;33277:24;;33229:297;33427:4;:12;;33435:4;33427:12;33423:103;;33478:21;33487:2;33481:8;;:2;:8;;;;33496:2;33491;:7;33478:2;:21::i;33423:103::-;33708:4;:12;;33716:4;33708:12;:28;;;;33724:4;:12;;33732:4;33724:12;33708:28;33704:1151;;;33776:2;33771;:7;33764:14;;;;;;;33704:1151;33866:4;:12;;33874:4;33866:12;:28;;;;33882:4;:12;;33890:4;33882:12;33866:28;33862:993;;;33934:2;33929;:7;33922:14;;;;;;;33862:993;34016:4;:12;;34024:4;34016:12;34012:843;;34068:2;34063;:7;34056:14;;;;;;;34012:843;34149:4;:12;;34157:4;34149:12;34145:710;;34202:2;34197;:7;34189:16;;;;;;;34145:710;34285:4;:12;;34293:4;34285:12;34281:574;;34338:2;34333;:7;34325:16;;;;;;;34281:574;34421:4;:12;;34429:4;34421:12;34417:438;;-1:-1:-1;;;;34470:7:106;;;34468:10;34461:17;;34417:438;34581:4;:12;;34589:4;34581:12;34577:278;;34646:2;34628:21;;34634:2;34628:21;;;:29;;34656:1;34628:29;;;34652:1;34628:29;34621:36;;;;;;;;;34577:278;34770:4;:12;;34778:4;34770:12;34766:89;;34822:2;34817:7;;:2;:7;;;:15;;34831:1;34817:15;;34766:89;32152:2721;31411:6876;;32135:3554;34944:6;:13;;34954:3;34944:13;34940:749;;34994:2;34988;:8;;;;34981:15;;;;;;34940:749;35069:6;:14;;35079:4;35069:14;35065:624;;35138:4;:9;;35146:1;35138:9;35134:100;;-1:-1:-1;;;35189:21:106;;;35175:36;;35134:100;35286:4;:12;;35294:4;35286:12;:28;;;;35302:4;:12;;35310:4;35302:12;35286:28;35282:389;;;35346:4;:12;;35354:4;35346:12;35342:83;;35395:3;;;35342:83;35450:8;35488:127;35500:10;35495:15;;:20;35488:127;;35580:8;35547:3;35580:8;;;;;35547:3;35488:127;;;35647:1;-1:-1:-1;35640:8:106;;-1:-1:-1;;35640:8:106;35282:389;31411:6876;;;35722:4;35713:6;:13;;;35709:2578;;;35772:6;:14;;35782:4;35772:14;35768:1208;;35817:42;35835:2;35840:1;35835:6;35845:1;35834:12;35829:2;:17;35821:26;;:3;:26;;;;35851:4;35820:35;35857:1;35817:2;:42::i;:::-;35810:49;;;;;;35768:1208;35926:6;:14;;35936:4;35926:14;35922:1054;;35971:45;35989:2;35994:1;35989:6;35999:1;35988:12;35983:2;:17;35975:26;;:3;:26;;;;36005:6;35974:37;36013:2;35971;:45::i;35922:1054::-;36084:6;:14;;36094:4;36084:14;36080:896;;-1:-1:-1;;;36135:21:106;36154:1;36149;36144:6;;36143:12;36135:21;;36192:36;;;36263:5;36258:10;;36135:21;;;;;36257:18;36250:25;;36080:896;36342:6;:14;;36352:4;36342:14;36338:638;;36387:3;36380:10;;;;;;36338:638;36458:6;:14;;36468:4;36458:14;36454:522;;36518:2;36523:1;36518:6;36528:1;36517:12;36512:2;:17;36504:26;;:3;:26;;;;36534:4;36503:35;36496:42;;;;;;36454:522;36606:6;:14;;36616:4;36606:14;36602:374;;36666:2;36671:1;36666:6;36676:1;36665:12;36660:2;:17;36652:26;;:3;:26;;;;36682:6;36651:37;36644:44;;;;;;36602:374;36756:6;:14;;36766:4;36756:14;36752:224;;-1:-1:-1;;;36807:26:106;36831:1;36826;36821:6;;36820:12;36815:2;:17;36807:26;;36869:41;;;36945:5;36940:10;;36807:26;;;;;36939:18;36932:25;;35709:2578;37030:6;:14;;37040:4;37030:14;37026:1261;;-1:-1:-1;;;37083:4:106;37077:34;37109:1;37104;37099:6;;37098:12;37093:2;:17;37077:34;;37163:27;;;37143:48;;;37217:10;;37078:9;;;37077:34;;37216:18;37209:25;;37026:1261;37289:6;:14;;37299:4;37289:14;37285:1002;;-1:-1:-1;;;37342:6:106;37336:36;37370:1;37365;37360:6;;37359:12;37354:2;:17;37336:36;;37424:29;;;37404:50;;;37480:10;;37337:11;;;37336:36;;37479:18;37472:25;;37285:1002;37553:6;:14;;37563:4;37553:14;37549:738;;-1:-1:-1;;;37600:20:106;37618:1;37613;37608:6;;37607:12;37600:20;;37652:36;;;37720:5;37714:11;;37600:20;;;;;37713:19;37706:26;;37549:738;37787:6;:14;;37797:4;37787:14;37783:504;;37828:2;37821:9;;;;;;37783:504;37886:6;:14;;37896:4;37886:14;37882:405;;-1:-1:-1;;;37933:25:106;37956:1;37951;37946:6;;37945:12;37940:2;:17;37933:25;;37990:41;;;38063:5;38057:11;;37933:25;;;;;38056:19;38049:26;;37882:405;38130:6;:14;;38140:4;38130:14;38126:161;;38171:3;38164:10;;;;;;38126:161;38229:6;:14;;38239:4;38229:14;38225:62;;38270:2;38263:9;;;;;;38225:62;38301:29;;;;;2810:2:257;38301:29:106;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;38301:29:106;2608:343:257;18965:782:106;19051:12;19138:18;;:::i;:::-;-1:-1:-1;19206:4:106;19313:2;19301:14;;;;19293:41;;;;;;;3158:2:257;19293:41:106;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;19293:41:106;2956:338:257;19293:41:106;19430:14;;;;;;;:30;;;19448:12;19430:30;19426:102;;;19509:4;19480:5;:15;;;19496:9;19480:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;19426:102;19583:12;;;;;19572:23;;;;:8;;;:23;19639:1;19624:16;;;19609:31;;;19717:13;:11;:13::i;4608:7728::-;4651:12;4737:18;;:::i;:::-;-1:-1:-1;4915:15:106;;:18;;;;4805:4;5075:18;;;;5119;;;;5163;;;;;4805:4;;4895:17;;;;5075:18;5119;5253;;;5267:4;5253:18;5249:6777;;5303:2;5332:4;5327:9;;:14;5323:144;;5443:4;5438:9;;5430:4;:18;5424:24;5323:144;5488:2;:7;;5494:1;5488:7;5484:161;;5524:10;;;;;5556:16;;;;;;;;5524:10;-1:-1:-1;5484:161:106;;;5624:2;5619:7;;5484:161;5273:386;5249:6777;;;5761:10;:18;;5775:4;5761:18;5757:6269;;1745:10;5799:14;;5757:6269;;;5897:10;:18;;5911:4;5897:18;5893:6133;;5940:1;5935:6;;5893:6133;;;6065:10;:18;;6079:4;6065:18;6061:5965;;6118:4;6103:12;;;:19;6140:26;;;:14;;;:26;6191:13;:11;:13::i;:::-;6184:20;;;;;;;;;4608:7728;:::o;6061:5965::-;6330:10;:18;;6344:4;6330:18;6326:5700;;6481:14;;;6477:2708;6326:5700;6477:2708;6651:22;;;;;6647:2538;;6776:10;6789:27;6797:2;6802:10;6797:15;6814:1;6789:7;:27::i;:::-;6900:17;;;;6776:40;;-1:-1:-1;6900:17:106;6878:19;7050:14;7069:1;7044:26;7040:131;;7112:36;7136:11;1277:21:107;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;7112:36:106;7098:50;;7040:131;7193:11;7224:6;;7257:20;;;;;7224:54;;;;;;;;3472:25:257;;;3545:10;3533:23;;;3513:18;;;3506:51;7193:11:106;;7224:6;;;:19;;3445:18:257;;7224:54:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7192:86;;;;7505:1;7501:2;7497:10;7602:9;7599:1;7595:17;7684:6;7677:5;7674:17;7671:40;;;7704:5;7694:15;;7671:40;;7787:6;7783:2;7780:14;7777:34;;;7807:2;7797:12;;7777:34;7913:3;7908:1;7900:6;7896:14;7891:3;7887:24;7883:34;7876:41;;8013:3;8009:1;7997:9;7988:6;7985:1;7981:14;7977:30;7973:38;7969:48;7962:55;;8168:1;8164;8160;8148:9;8145:1;8141:17;8137:25;8133:33;8129:41;8295:1;8291;8287;8278:6;8266:9;8263:1;8259:17;8255:30;8251:38;8247:46;8243:54;8225:72;;8426:10;8422:15;8416:4;8412:26;8404:34;;8542:3;8534:4;8530:9;8525:3;8521:19;8518:28;8511:35;;;;8688:33;8697:2;8702:10;8697:15;8714:1;8717:3;8688:8;:33::i;:::-;8743:20;;;:38;;;;;;;;;-1:-1:-1;6647:2538:106;;-1:-1:-1;;;6647:2538:106;;8900:18;;;;;8896:289;;9070:2;9065:7;;6326:5700;;8896:289;9124:10;9119:15;;2053:3;9156:10;;8896:289;6326:5700;;;9314:10;:18;;9328:4;9314:18;9310:2716;;9468:15;;;1824:1;9468:15;;:34;;-1:-1:-1;9487:15:106;;;1859:1;9487:15;9468:34;:57;;;-1:-1:-1;9506:19:106;;;1936:1;9506:19;9468:57;9464:1593;;;9554:2;9549:7;;9310:2716;;9464:1593;9680:23;;;;;9676:1381;;9727:10;9740:27;9748:2;9753:10;9748:15;9765:1;9740:7;:27::i;:::-;9843:17;;;;9727:40;;-1:-1:-1;10086:1:106;10078:10;;10180:1;10176:17;10255:13;;;10252:32;;;10277:5;10271:11;;10252:32;10563:14;;;10369:1;10559:22;;;10555:32;;;;10452:26;10476:1;10361:10;;;10456:18;;;10452:26;10551:43;10357:20;;10659:12;10787:17;;;:23;10855:1;10832:20;;;:24;10365:2;-1:-1:-1;10365:2:106;6326:5700;;9310:2716;11259:10;:18;;11273:4;11259:18;11255:771;;11369:2;:7;;11375:1;11369:7;11365:647;;11462:14;;;;;:40;;-1:-1:-1;11480:22:106;;;1978:1;11480:22;11462:40;:62;;;-1:-1:-1;11506:18:106;;;1897:1;11506:18;11462:62;11458:404;;;11557:1;11552:6;;11365:647;;11458:404;11603:15;;;1824:1;11603:15;;:34;;-1:-1:-1;11622:15:106;;;1859:1;11622:15;11603:34;:61;;;-1:-1:-1;11641:23:106;;;2021:1;11641:23;11603:61;:84;;;-1:-1:-1;11668:19:106;;;1936:1;11668:19;11603:84;11599:263;;;11720:1;11715:6;;6326:5700;;11365:647;11913:10;11908:15;;2087:4;11945:11;;11365:647;12101:15;;;;;:23;;;;:18;;;;:23;;;;12138:15;;:23;;;:18;;;;:23;-1:-1:-1;12227:12:106;;;;12216:23;;;:8;;;:23;12283:1;12268:16;12253:31;;;;;12306:13;:11;:13::i;15089:2480::-;15183:12;15269:18;;:::i;:::-;-1:-1:-1;15337:4:106;15369:10;15477:13;;;15486:4;15477:13;15473:1705;;-1:-1:-1;15516:8:106;;;;15473:1705;;;15635:5;:13;;15644:4;15635:13;15631:1547;;15668:14;;;:8;;;:14;15631:1547;;;15798:5;:13;;15807:4;15798:13;15794:1384;;-1:-1:-1;15837:8:106;;;;15794:1384;;;15956:5;:13;;15965:4;15956:13;15952:1226;;15989:14;;;:8;;;:14;15952:1226;;;16130:5;:13;;16139:4;16130:13;16126:1052;;16257:9;16203:17;16183;;;16203;;;;16183:37;16264:2;16257:9;;;;;16239:8;;;:28;16285:22;:8;;;:22;16126:1052;;;16444:5;:13;;16453:4;16444:13;16440:738;;16511:11;16497;;;16511;;;16497:25;16566:2;16559:9;;;;;16541:8;;;:28;16587:22;:8;;;:22;16440:738;;;16768:5;:13;;16777:4;16768:13;16764:414;;16838:3;16819:23;;16825:3;16819:23;;;;;;;:::i;:::-;;16801:42;;:8;;;:42;16879:23;;;;;;;;;;;;;:::i;:::-;;16861:42;;:8;;;:42;16764:414;;;17072:5;:13;;17081:4;17072:13;17068:110;;17122:3;17116:9;;:3;:9;;;;;;;:::i;:::-;;17105:20;;;;:8;;;:20;17154:9;;;;;;;;;;;:::i;:::-;;17143:20;;:8;;;:20;17068:110;17271:14;;;;17267:85;;17334:3;17305:5;:15;;;17321:9;17305:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;17267:85;17406:12;;;;;17395:23;;;;:8;;;:23;17462:1;17447:16;;;17432:31;;;17539:13;:11;:13::i;:::-;17532:20;15089:2480;-1:-1:-1;;;;;;;15089:2480:106:o;22918:1654::-;23094:14;23111:24;23123:11;23111;:24::i;:::-;23094:41;;23243:1;23236:5;23232:13;23229:33;;;23258:1;23255;23248:12;23229:33;23397:2;23591:15;;;23416:2;23405:14;;23393:10;23389:31;23386:1;23382:39;23547:16;;;23332:20;;23532:10;23521:22;;;23517:27;23507:38;23504:60;24033:5;24030:1;24026:13;24104:1;24089:343;24114:2;24111:1;24108:9;24089:343;;;24237:2;24225:15;;;24174:20;24272:12;;;24286:1;24268:20;24309:42;;;;24377:1;24372:42;;;;24261:153;;24309:42;21396:1;21389:12;;;21429:2;21422:13;;;21474:2;21461:16;;24318:31;;24309:42;;24372;21396:1;21389:12;;;21429:2;21422:13;;;21474:2;21461:16;;24381:31;;24261:153;-1:-1:-1;;24132:1:106;24125:9;24089:343;;;-1:-1:-1;;24531:4:106;24524:18;-1:-1:-1;;;;22918:1654:106:o;19951:586::-;20273:20;;;20297:7;20273:32;20266:3;:40;;;20379:14;;20434:17;;20428:24;;;20420:72;;;;;;;4209:2:257;20420:72:106;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;20420:72:106;4007:399:257;20420:72:106;20506:14;19951:586
;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
var
MIPSDeployedSourceMap
=
"1131:37
443:106:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1711:45;;1746:10;1711:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1711:45:106;;;;;;;;2337:99;;;412:42:257;2423:6:106;400:55:257;382:74;;370:2;355:18;2337:99:106;211:251:257;24961:6295:106;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;24961:6295:106;1541:177:257;24961:6295:106;25039:7;25082:18;;:::i;:::-;25229:4;25222:5;25219:15;25209:113;;25302:1;25300;25293:11;25209:113;25358:4;25352:11;25365;25349:28;25339:116;;25435:1;25433;25426:11;25339:116;25503:3;25485:16;25482:25;25472:129;;25581:1;25579;25572:11;25472:129;25645:3;25631:12;25628:21;25618:124;;25722:1;25720;25713:11;25618:124;26002:24;;26347:4;26048:20;26418:2;26106:21;;26002:24;26164:18;26048:20;26106:21;;;26002:24;25979:21;25975:52;;;26164:18;26048:20;;;26106:21;;;26002:24;25975:52;;26048:20;;26106:21;;;26002:24;25975:52;;26164:18;26048:20;26106:21;;;26002:24;25975:52;;26164:18;26048:20;26106:21;;;26002:24;25975:52;;26164:18;26048:20;26106:21;;;26002:24;25975:52;;;26164:18;26048:20;26106:21;;;26002:24;25979:21;25975:52;;;26164:18;26048:20;26106:21;;;26002:24;25975:52;;26164:18;26048:20;26106:21;;;26002:24;25975:52;;26164:18;26048:20;27045:10;26164:18;27035:21;;;26106;;;;27148:1;27133:113;27158:2;27155:1;27152:9;27133:113;;;26002:24;;25979:21;25975:52;26048:20;;27226:1;26106:21;;;;25990:2;26164:18;;;;27176:1;27169:9;27133:113;;;27137:14;;;27324:5;:12;;;27320:71;;;27363:13;:11;:13::i;:::-;27356:20;;;;;27320:71;27405:10;;;:15;;27419:1;27405:15;;;;;27490:8;;;;-1:-1:-1;;27482:20:106;;-1:-1:-1;27482:7:106;:20::i;:::-;27468:34;-1:-1:-1;27532:10:106;27540:2;27532:10;;;;27609:1;27599:11;;;:26;;;27614:6;:11;;27624:1;27614:11;27599:26;27595:348;;;27864:64;27875:6;:11;;27885:1;27875:11;:20;;27893:2;27875:20;;;27889:1;27875:20;27864:64;;27926:1;27897:25;27900:4;27907:10;27900:17;27919:2;27897;:25::i;:::-;:30;;;;27864:10;:64::i;:::-;27857:71;;;;;;;27595:348;28192:15;;;;27987:9;;;;28124:4;28118:2;28110:10;;;28109:19;;;28192:15;28217:2;28209:10;;;28208:19;28192:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28257:5:106;28281:11;;;;;:29;;;28296:6;:14;;28306:4;28296:14;28281:29;28277:832;;;28373:5;:15;;;28389:5;28373:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;28436:4:106;28430:2;28422:10;;;28421:19;28277:832;;;28474:4;28465:6;:13;;;28461:648;;;28595:6;:13;;28605:3;28595:13;:30;;;;28612:6;:13;;28622:3;28612:13;28595:30;:47;;;;28629:6;:13;;28639:3;28629:13;28595:47;28591:253;;;28705:4;28712:6;28705:13;28700:18;;28461:648;;28591:253;28804:21;28807:4;28814:6;28807:13;28822:2;28804;:21::i;:::-;28799:26;;28461:648;;;28878:4;28868:6;:14;;;;:32;;;;28886:6;:14;;28896:4;28886:14;28868:32;:50;;;;28904:6;:14;;28914:4;28904:14;28868:50;28864:245;;;28988:5;:15;;;29004:5;28988:22;;;;;;;;;:::i;:::-;;;;;28983:27;;29089:5;29081:13;;28864:245;29138:1;29128:6;:11;;;;:25;;;;;29152:1;29143:6;:10;;;29128:25;29127:42;;;;29158:6;:11;;29168:1;29158:11;29127:42;29123:125;;;29196:37;29209:6;29217:4;29223:5;29230:2;29196:12;:37::i;:::-;29189:44;;;;;;;;;;;29123:125;29281:13;29262:16;29433:4;29423:14;;;;29419:444;;29502:19;29505:4;29510:6;29505:11;29518:2;29502;:19::i;:::-;29496:25;;;;29558:10;29553:15;;29592:16;29553:15;29606:1;29592:7;:16::i;:::-;29586:22;;29640:4;29630:6;:14;;;;:32;;;;;29648:6;:14;;29658:4;29648:14;;29630:32;29626:223;;;29727:4;29715:16;;29829:1;29821:9;;29626:223;29439:424;29419:444;29896:10;29909:26;29917:4;29923:2;29927;29931:3;29909:7;:26::i;:::-;29938:10;29909:39;;;;-1:-1:-1;30034:4:106;30027:11;;;30066;;;:24;;;;;30089:1;30081:4;:9;;;;30066:24;:39;;;;;30101:4;30094;:11;;;30066:39;30062:787;;;30129:4;:9;;30137:1;30129:9;:22;;;;30142:4;:9;;30150:1;30142:9;30129:22;30125:124;;;30193:37;30204:4;:9;;30212:1;30204:9;:21;;30220:5;30204:21;;;30216:1;30204:21;30227:2;30193:10;:37::i;:::-;30186:44;;;;;;;;;;;;;;;30125:124;30271:4;:11;;30279:3;30271:11;30267:101;;30321:28;30330:5;30337:2;30341:7;;;;30321:8;:28::i;30267:101::-;30389:4;:11;;30397:3;30389:11;30385:101;;30439:28;30448:5;30455:2;30459:7;;;;;30439:8;:28::i;30385:101::-;30556:4;:11;;30564:3;30556:11;30552:80;;30598:15;:13;:15::i;30552:80::-;30735:4;30727;:12;;;;:27;;;;;30750:4;30743;:11;;;30727:27;30723:112;;;30785:31;30796:4;30802:2;30806;30810:5;30785:10;:31::i;30723:112::-;30909:6;:14;;30919:4;30909:14;:28;;;;-1:-1:-1;30927:10:106;;;;;30909:28;30905:93;;;30982:1;30957:5;:15;;;30973:5;30957:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;30905:93;31044:9;:26;;31057:13;31044:26;31040:92;;31090:27;31099:9;31110:1;31113:3;31090:8;:27::i;:::-;31213:26;31222:5;31229:3;31234:4;31213:8;:26::i;:::-;31206:33;;;;;;;;;;;;;24961:6295;;;;;;;:::o;2976:1770::-;3523:4;3517:11;;3439:4;3242:31;3231:43;;3302:13;3242:31;3641:2;3341:13;;3231:43;3248:24;3242:31;3341:13;;;3231:43;;;;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3248:24;3242:31;3341:13;;;3231:43;3017:12;;4246:13;;3341;;;3017:12;4339:112;4364:2;4361:1;4358:9;4339:112;;;3258:13;3248:24;;3242:31;3231:43;;3262:2;3302:13;;;;4435:1;3341:13;;;;4382:1;4375:9;4339:112;;;4343:14;4514:1;4510:2;4503:13;4609:5;4605:2;4601:14;4594:5;4589:27;4715:14;;;4698:32;;;2976:1770;-1:-1:-1;;2976:1770:106:o;20808:1935::-;20881:11;20992:14;21009:24;21021:11;21009;:24::i;:::-;20992:41;;21141:1;21134:5;21130:13;21127:69;;;21176:1;21173;21166:12;21127:69;21325:2;21313:15;;;21266:20;21755:5;21752:1;21748:13;21790:4;21826:1;21811:411;21836:2;21833:1;21830:9;21811:411;;;21959:2;21947:15;;;21896:20;21994:12;;;22008:1;21990:20;22031:86;;;;22123:1;22118:86;;;;21983:221;;22031:86;21489:1;21482:12;;;21522:2;21515:13;;;21567:2;21554:16;;22064:31;;22031:86;;22118;21489:1;21482:12;;;21522:2;21515:13;;;21567:2;21554:16;;22151:31;;21983:221;-1:-1:-1;;21854:1:106;21847:9;21811:411;;;21815:14;22332:4;22326:11;22311:26;;22418:7;22412:4;22409:17;22399:124;;22460:10;22457:1;22450:21;22502:2;22499:1;22492:13;22399:124;-1:-1:-1;;22650:2:106;22639:14;;;;22627:10;22623:31;22620:1;22616:39;22684:16;;;;22702:10;22680:33;;20808:1935;-1:-1:-1;;;20808:1935:106:o;2534:334::-;2595:6;2654:18;;;;2663:8;;;;2654:18;;;;;;2653:25;;;;;2670:1;2717:2;:9;;;2711:16;;;;;2710:22;;2709:32;;;;;;;2771:9;;2770:15;2653:25;2828:21;;2848:1;2828:21;;;2839:6;2828:21;2813:11;;;;;:37;;-1:-1:-1;;;2534:334:106;;;;:::o;17948:821::-;18017:12;18104:18;;:::i;:::-;18172:4;18163:13;;18224:5;:8;;;18233:1;18224:10;18208:26;;:5;:12;;;:26;;;18204:93;;18254:28;;;;;2114:2:257;18254:28:106;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;18254:28:106;;;;;;;;18204:93;18386:8;;;;;18419:12;;;;;18408:23;;;;;;;18445:20;;;;;18386:8;18577:13;;;18573:90;;18638:6;18647:1;18638:10;18610:5;:15;;;18626:8;18610:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;18573:90;18739:13;:11;:13::i;:::-;18732:20;17948:821;-1:-1:-1;;;;;17948:821:106:o;12811:2024::-;12908:12;12994:18;;:::i;:::-;13062:4;13053:13;;13094:17;13154:5;:8;;;13163:1;13154:10;13138:26;;:5;:12;;;:26;;;13134:95;;13184:30;;;;;2461:2:257;13184:30:106;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;13184:30:106;2259:344:257;13134:95:106;13299:7;:12;;13310:1;13299:12;:28;;;;13315:7;:12;;13326:1;13315:12;13299:28;13295:947;;;13347:9;13359:5;:15;;;13375:6;13359:23;;;;;;;;;:::i;:::-;;;;;13347:35;;13423:2;13416:9;;:3;:9;;;:25;;;;;13429:7;:12;;13440:1;13429:12;13416:25;13415:58;;;;13454:2;13447:9;;:3;:9;;;;:25;;;;;13460:7;:12;;13471:1;13460:12;13447:25;13400:73;;13329:159;13295:947;;;13585:7;:12;;13596:1;13585:12;13581:661;;13646:1;13638:3;13632:15;;;;13617:30;;13581:661;;;13750:7;:12;;13761:1;13750:12;13746:496;;13810:1;13803:3;13797:14;;;13782:29;;13746:496;;;13931:7;:12;;13942:1;13931:12;13927:315;;14019:4;14013:2;14004:11;;;14003:20;13989:10;14046:8;;;14042:84;;14106:1;14099:3;14093:14;;;14078:29;;14042:84;14147:3;:8;;14154:1;14147:8;14143:85;;14208:1;14200:3;14194:15;;;;14179:30;;14143:85;13945:297;13927:315;14318:8;;;;;14396:12;;;;14385:23;;;;;14552:178;;;;14643:1;14617:22;14620:5;14628:6;14620:14;14636:2;14617;:22::i;:::-;:27;;;;;;;14603:42;;14612:1;14603:42;14588:57;:12;;;:57;14552:178;;;14699:12;;;;;14714:1;14699:16;14684:31;;;;14552:178;14805:13;:11;:13::i;:::-;14798:20;12811:2024;-1:-1:-1;;;;;;;;12811:2024:106:o;31302:7270::-;31389:6;31447:10;31455:2;31447:10;;;;;;31498:11;;31610:4;31601:13;;31597:6915;;;31741:1;31731:6;:11;;;;:27;;;;;31755:3;31746:6;:12;;;31731:27;31727:568;;;31786:6;:11;;31796:1;31786:11;31782:455;;-1:-1:-1;31808:4:106;31782:455;;;31860:6;:11;;31870:1;31860:11;31856:381;;-1:-1:-1;31882:4:106;31856:381;;;31930:6;:13;;31940:3;31930:13;31926:311;;-1:-1:-1;31954:4:106;31926:311;;;31999:6;:13;;32009:3;31999:13;31995:242;;-1:-1:-1;32023:4:106;31995:242;;;32069:6;:13;;32079:3;32069:13;32065:172;;-1:-1:-1;32093:4:106;32065:172;;;32138:6;:13;;32148:3;32138:13;32134:103;;-1:-1:-1;32162:4:106;32134:103;;;32206:6;:13;;32216:3;32206:13;32202:35;;-1:-1:-1;32230:4:106;32202:35;32275:1;32266:10;;31727:568;32356:6;:11;;32366:1;32356:11;32352:3550;;32420:4;32415:1;32407:9;;;32406:18;32457:4;32407:9;32450:11;;;32446:1319;;;32549:4;32541;:12;;;32537:1206;;32592:2;32585:9;;;;;;;32537:1206;32706:4;:12;;32714:4;32706:12;32702:1041;;32757:11;;;;;;;;-1:-1:-1;32750:18:106;;-1:-1:-1;;32750:18:106;32702:1041;32881:4;:12;;32889:4;32881:12;32877:866;;32932:11;;;;;;;;-1:-1:-1;32925:18:106;;-1:-1:-1;;32925:18:106;32877:866;33059:4;:12;;33067:4;33059:12;33055:688;;33110:27;33119:5;33113:11;;:2;:11;;;;33131:5;33126:2;:10;33110:2;:27::i;33055:688::-;33259:4;:12;;33267:4;33259:12;33255:488;;-1:-1:-1;;;;33310:17:106;;;33322:4;33317:9;;33310:17;33303:24;;33255:488;33450:4;:12;;33458:4;33450:12;33446:297;;-1:-1:-1;;;;33501:17:106;;;33513:4;33508:9;;33501:17;33494:24;;33446:297;33644:4;:12;;33652:4;33644:12;33640:103;;33695:21;33704:2;33698:8;;:2;:8;;;;33713:2;33708;:7;33695:2;:21::i;33640:103::-;33925:4;:12;;33933:4;33925:12;:28;;;;33941:4;:12;;33949:4;33941:12;33925:28;33921:1149;;;33993:2;33988;:7;33981:14;;;;;;;33921:1149;34083:4;:12;;34091:4;34083:12;:28;;;;34099:4;:12;;34107:4;34099:12;34083:28;34079:991;;;34151:2;34146;:7;34139:14;;;;;;;34079:991;34233:4;:12;;34241:4;34233:12;34229:841;;34285:2;34280;:7;34273:14;;;;;;;34229:841;34366:4;:12;;34374:4;34366:12;34362:708;;34419:2;34414;:7;34406:16;;;;;;;34362:708;34502:4;:12;;34510:4;34502:12;34498:572;;34555:2;34550;:7;34542:16;;;;;;;34498:572;34638:4;:12;;34646:4;34638:12;34634:436;;-1:-1:-1;;;;34687:7:106;;;34685:10;34678:17;;34634:436;34798:4;:12;;34806:4;34798:12;34794:276;;34863:2;34845:21;;34851:2;34845:21;;;:29;;34873:1;34845:29;;;34869:1;34845:29;34838:36;;;;;;;;;34794:276;34987:4;:12;;34995:4;34987:12;34983:87;;35037:2;35034:5;;:2;:5;;;:13;;35046:1;35034:13;;34983:87;32369:2719;31597:6915;;32352:3550;35159:6;:13;;35169:3;35159:13;35155:747;;35209:2;35203;:8;;;;35196:15;;;;;;35155:747;35284:6;:14;;35294:4;35284:14;35280:622;;35353:4;:9;;35361:1;35353:9;35349:100;;-1:-1:-1;;;35404:21:106;;;35390:36;;35349:100;35501:4;:12;;35509:4;35501:12;:28;;;;35517:4;:12;;35525:4;35517:12;35501:28;35497:387;;;35561:4;:12;;35569:4;35561:12;35557:83;;35610:3;;;35557:83;35665:8;35703:125;35713:10;35710:13;;:18;35703:125;;35793:8;35760:3;35793:8;;;;;35760:3;35703:125;;;35860:1;-1:-1:-1;35853:8:106;;-1:-1:-1;;35853:8:106;35497:387;31597:6915;;;35947:4;35938:6;:13;;;35934:2578;;;35997:6;:14;;36007:4;35997:14;35993:1208;;36042:42;36060:2;36065:1;36060:6;36070:1;36059:12;36054:2;:17;36046:26;;:3;:26;;;;36076:4;36045:35;36082:1;36042:2;:42::i;:::-;36035:49;;;;;;35993:1208;36151:6;:14;;36161:4;36151:14;36147:1054;;36196:45;36214:2;36219:1;36214:6;36224:1;36213:12;36208:2;:17;36200:26;;:3;:26;;;;36230:6;36199:37;36238:2;36196;:45::i;36147:1054::-;36309:6;:14;;36319:4;36309:14;36305:896;;-1:-1:-1;;;36360:21:106;36379:1;36374;36369:6;;36368:12;36360:21;;36417:36;;;36488:5;36483:10;;36360:21;;;;;36482:18;36475:25;;36305:896;36567:6;:14;;36577:4;36567:14;36563:638;;36612:3;36605:10;;;;;;36563:638;36683:6;:14;;36693:4;36683:14;36679:522;;36743:2;36748:1;36743:6;36753:1;36742:12;36737:2;:17;36729:26;;:3;:26;;;;36759:4;36728:35;36721:42;;;;;;36679:522;36831:6;:14;;36841:4;36831:14;36827:374;;36891:2;36896:1;36891:6;36901:1;36890:12;36885:2;:17;36877:26;;:3;:26;;;;36907:6;36876:37;36869:44;;;;;;36827:374;36981:6;:14;;36991:4;36981:14;36977:224;;-1:-1:-1;;;37032:26:106;37056:1;37051;37046:6;;37045:12;37040:2;:17;37032:26;;37094:41;;;37170:5;37165:10;;37032:26;;;;;37164:18;37157:25;;35934:2578;37255:6;:14;;37265:4;37255:14;37251:1261;;-1:-1:-1;;;37308:4:106;37302:34;37334:1;37329;37324:6;;37323:12;37318:2;:17;37302:34;;37388:27;;;37368:48;;;37442:10;;37303:9;;;37302:34;;37441:18;37434:25;;37251:1261;37514:6;:14;;37524:4;37514:14;37510:1002;;-1:-1:-1;;;37567:6:106;37561:36;37595:1;37590;37585:6;;37584:12;37579:2;:17;37561:36;;37649:29;;;37629:50;;;37705:10;;37562:11;;;37561:36;;37704:18;37697:25;;37510:1002;37778:6;:14;;37788:4;37778:14;37774:738;;-1:-1:-1;;;37825:20:106;37843:1;37838;37833:6;;37832:12;37825:20;;37877:36;;;37945:5;37939:11;;37825:20;;;;;37938:19;37931:26;;37774:738;38012:6;:14;;38022:4;38012:14;38008:504;;38053:2;38046:9;;;;;;38008:504;38111:6;:14;;38121:4;38111:14;38107:405;;-1:-1:-1;;;38158:25:106;38181:1;38176;38171:6;;38170:12;38165:2;:17;38158:25;;38215:41;;;38288:5;38282:11;;38158:25;;;;;38281:19;38274:26;;38107:405;38355:6;:14;;38365:4;38355:14;38351:161;;38396:3;38389:10;;;;;;38351:161;38454:6;:14;;38464:4;38454:14;38450:62;;38495:2;38488:9;;;;;;38450:62;38526:29;;;;;2810:2:257;38526:29:106;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;38526:29:106;2608:343:257;19050:782:106;19136:12;19223:18;;:::i;:::-;-1:-1:-1;19291:4:106;19398:2;19386:14;;;;19378:41;;;;;;;3158:2:257;19378:41:106;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;19378:41:106;2956:338:257;19378:41:106;19515:14;;;;;;;:30;;;19533:12;19515:30;19511:102;;;19594:4;19565:5;:15;;;19581:9;19565:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;19511:102;19668:12;;;;;19657:23;;;;:8;;;:23;19724:1;19709:16;;;19694:31;;;19802:13;:11;:13::i;4787:7638::-;4830:12;4916:18;;:::i;:::-;-1:-1:-1;5094:15:106;;:18;;;;4984:4;5254:18;;;;5298;;;;5342;;;;;4984:4;;5074:17;;;;5254:18;5298;5432;;;5446:4;5432:18;5428:6687;;5482:2;5509:4;5506:7;;:12;5502:120;;5598:4;5595:7;;5587:4;:16;5581:22;5502:120;5643:2;:7;;5649:1;5643:7;5639:161;;5679:10;;;;;5711:16;;;;;;;;5679:10;-1:-1:-1;5639:161:106;;;5779:2;5774:7;;5639:161;5452:362;5428:6687;;;5916:10;:18;;5930:4;5916:18;5912:6203;;1746:10;5954:14;;5912:6203;;;6052:10;:18;;6066:4;6052:18;6048:6067;;6095:1;6090:6;;6048:6067;;;6220:10;:18;;6234:4;6220:18;6216:5899;;6273:4;6258:12;;;:19;6295:26;;;:14;;;:26;6346:13;:11;:13::i;:::-;6339:20;;;;;;;;;4787:7638;:::o;6216:5899::-;6485:10;:18;;6499:4;6485:18;6481:5634;;6636:14;;;6632:2662;6481:5634;6632:2662;6806:22;;;;;6802:2492;;6931:10;6944:27;6952:2;6957:10;6952:15;6969:1;6944:7;:27::i;:::-;7055:17;;;;6931:40;;-1:-1:-1;7055:17:106;7033:19;7205:14;7224:1;7199:26;7195:131;;7267:36;7291:11;1277:21:107;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;7267:36:106;7253:50;;7195:131;7412:20;;;;;7379:54;;;;;;;;3472:25:257;;;7379:54:106;3533:23:257;;;3513:18;;;3506:51;7348:11:106;;;;7379:19;:6;:19;;;;3445:18:257;;7379:54:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7347:86;;;;7660:1;7656:2;7652:10;7757:9;7754:1;7750:17;7839:6;7832:5;7829:17;7826:40;;;7859:5;7849:15;;7826:40;;7942:6;7938:2;7935:14;7932:34;;;7962:2;7952:12;;7932:34;8068:3;8063:1;8055:6;8051:14;8046:3;8042:24;8038:34;8031:41;;8168:3;8164:1;8152:9;8143:6;8140:1;8136:14;8132:30;8128:38;8124:48;8117:55;;8292:1;8288;8284;8272:9;8269:1;8265:17;8261:25;8257:33;8253:41;8419:1;8415;8411;8402:6;8390:9;8387:1;8383:17;8379:30;8375:38;8371:46;8367:54;8349:72;;8519:10;8515:15;8509:4;8505:26;8497:34;;8635:3;8627:4;8623:9;8618:3;8614:19;8611:28;8604:35;;;;8781:33;8790:2;8795:10;8790:15;8807:1;8810:3;8781:8;:33::i;:::-;8836:20;;;:38;;;;;;;;;-1:-1:-1;6802:2492:106;;-1:-1:-1;;;6802:2492:106;;8993:18;;;;;8989:305;;9163:2;9158:7;;6481:5634;;8989:305;9233:10;9228:15;;2054:3;9265:10;;8989:305;6481:5634;;;9423:10;:18;;9437:4;9423:18;9419:2696;;9577:15;;;1825:1;9577:15;;:34;;-1:-1:-1;9596:15:106;;;1860:1;9596:15;9577:34;:57;;;-1:-1:-1;9615:19:106;;;1937:1;9615:19;9577:57;9573:1609;;;9663:2;9658:7;;9419:2696;;9573:1609;9789:23;;;;;9785:1397;;9836:10;9849:27;9857:2;9862:10;9857:15;9874:1;9849:7;:27::i;:::-;9952:17;;;;9836:40;;-1:-1:-1;10195:1:106;10187:10;;10289:1;10285:17;10364:13;;;10361:32;;;10386:5;10380:11;;10361:32;10672:14;;;10478:1;10668:22;;;10664:32;;;;10561:26;10585:1;10470:10;;;10565:18;;;10561:26;10660:43;10466:20;;10768:12;10896:17;;;:23;10964:1;10941:20;;;:24;10474:2;-1:-1:-1;10474:2:106;6481:5634;;9419:2696;11384:10;:18;;11398:4;11384:18;11380:735;;11478:2;:7;;11484:1;11478:7;11474:627;;11551:14;;;;;:40;;-1:-1:-1;11569:22:106;;;1979:1;11569:22;11551:40;:62;;;-1:-1:-1;11595:18:106;;;1898:1;11595:18;11551:62;11547:404;;;11646:1;11641:6;;11474:627;;11547:404;11692:15;;;1825:1;11692:15;;:34;;-1:-1:-1;11711:15:106;;;1860:1;11711:15;11692:34;:61;;;-1:-1:-1;11730:23:106;;;2022:1;11730:23;11692:61;:84;;;-1:-1:-1;11757:19:106;;;1937:1;11757:19;11692:84;11688:263;;;11809:1;11804:6;;6481:5634;;11474:627;12002:10;11997:15;;2088:4;12034:11;;11474:627;12190:15;;;;;:23;;;;:18;;;;:23;;;;12227:15;;:23;;;:18;;;;:23;-1:-1:-1;12316:12:106;;;;12305:23;;;:8;;;:23;12372:1;12357:16;12342:31;;;;;12395:13;:11;:13::i;15176:2480::-;15270:12;15356:18;;:::i;:::-;-1:-1:-1;15424:4:106;15456:10;15564:13;;;15573:4;15564:13;15560:1705;;-1:-1:-1;15603:8:106;;;;15560:1705;;;15722:5;:13;;15731:4;15722:13;15718:1547;;15755:14;;;:8;;;:14;15718:1547;;;15885:5;:13;;15894:4;15885:13;15881:1384;;-1:-1:-1;15924:8:106;;;;15881:1384;;;16043:5;:13;;16052:4;16043:13;16039:1226;;16076:14;;;:8;;;:14;16039:1226;;;16217:5;:13;;16226:4;16217:13;16213:1052;;16344:9;16290:17;16270;;;16290;;;;16270:37;16351:2;16344:9;;;;;16326:8;;;:28;16372:22;:8;;;:22;16213:1052;;;16531:5;:13;;16540:4;16531:13;16527:738;;16598:11;16584;;;16598;;;16584:25;16653:2;16646:9;;;;;16628:8;;;:28;16674:22;:8;;;:22;16527:738;;;16855:5;:13;;16864:4;16855:13;16851:414;;16925:3;16906:23;;16912:3;16906:23;;;;;;;:::i;:::-;;16888:42;;:8;;;:42;16966:23;;;;;;;;;;;;;:::i;:::-;;16948:42;;:8;;;:42;16851:414;;;17159:5;:13;;17168:4;17159:13;17155:110;;17209:3;17203:9;;:3;:9;;;;;;;:::i;:::-;;17192:20;;;;:8;;;:20;17241:9;;;;;;;;;;;:::i;:::-;;17230:20;;:8;;;:20;17155:110;17358:14;;;;17354:85;;17421:3;17392:5;:15;;;17408:9;17392:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;17354:85;17493:12;;;;;17482:23;;;;:8;;;:23;17549:1;17534:16;;;17519:31;;;17626:13;:11;:13::i;:::-;17619:20;15176:2480;-1:-1:-1;;;;;;;15176:2480:106:o;23079:1758::-;23255:14;23272:24;23284:11;23272;:24::i;:::-;23255:41;;23404:1;23397:5;23393:13;23390:69;;;23439:1;23436;23429:12;23390:69;23594:2;23788:15;;;23613:2;23602:14;;23590:10;23586:31;23583:1;23579:39;23744:16;;;23529:20;;23729:10;23718:22;;;23714:27;23704:38;23701:60;24230:5;24227:1;24223:13;24301:1;24286:411;24311:2;24308:1;24305:9;24286:411;;;24434:2;24422:15;;;24371:20;24469:12;;;24483:1;24465:20;24506:86;;;;24598:1;24593:86;;;;24458:221;;24506:86;21489:1;21482:12;;;21522:2;21515:13;;;21567:2;21554:16;;24539:31;;24506:86;;24593;21489:1;21482:12;;;21522:2;21515:13;;;21567:2;21554:16;;24626:31;;24458:221;-1:-1:-1;;24329:1:106;24322:9;24286:411;;;-1:-1:-1;;24796:4:106;24789:18;-1:-1:-1;;;;23079:1758:106:o;20036:558::-;20358:20;;;20382:7;20358:32;20351:3;:40;;;20448:14;;20491:17;;20485:24;;;20477:72;;;;;;;4209:2:257;20477:72:106;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;20477:72:106;4007:399:257;20477:72:106;20563:14;20036:558
;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
func
init
()
{
if
err
:=
json
.
Unmarshal
([]
byte
(
MIPSStorageLayoutJSON
),
MIPSStorageLayout
);
err
!=
nil
{
...
...
packages/contracts-bedrock/src/cannon/MIPS.sol
View file @
a24e2e58
...
...
@@ -53,11 +53,15 @@ contract MIPS {
uint32 constant EINVAL = 0x16;
/// @notice The preimage oracle contract.
IPreimageOracle
public oracle
;
IPreimageOracle
internal immutable ORACLE
;
/// @param _oracle The address of the preimage oracle contract.
constructor(IPreimageOracle _oracle) {
oracle = _oracle;
ORACLE = _oracle;
}
function oracle() external view returns (IPreimageOracle oracle_) {
oracle_ = ORACLE;
}
/// @notice Extends the value leftwards with its most significant bit (sign extension).
...
...
@@ -179,7 +183,7 @@ contract MIPS {
if (uint8(preimageKey[0]) == 1) {
preimageKey = PreimageKeyLib.localize(preimageKey);
}
(bytes32 dat, uint256 datLen) =
oracle
.readPreimage(preimageKey, state.preimageOffset);
(bytes32 dat, uint256 datLen) =
ORACLE
.readPreimage(preimageKey, state.preimageOffset);
// Transform data for writing to memory
// We use assembly for more precise ops, and no var count limit
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment