Mercurial > repos > fubar > jbrowse2
comparison x/static/js/6514.d36ecbb8.chunk.js.map @ 125:49f3d3878413 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author | fubar |
---|---|
date | Sat, 05 Oct 2024 23:58:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
124:137e08517410 | 125:49f3d3878413 |
---|---|
1 {"version":3,"file":"static/js/6514.d36ecbb8.chunk.js","mappings":"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DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,iBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,0DAA2D,kBAC3D,oEAAqE,mBACrE,wFAAyF,kBACzF,sFAAuF,mBAC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iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,kBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,mBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iFAAkF,oBAClF,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,oBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,kBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,mBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,iBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,iBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,kBAClI,iIAAkI,mBA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","sources":["../../../node_modules/hic-straw/dist/hic-straw.esm.js"],"sourcesContent":["// from https://github.com/imaya/zlib.js\n\nvar Zlib = {\n Huffman: {},\n Util: {},\n CRC32: {}\n};\n\n\n/**\n * Compression Method\n * @enum {number}\n */\nZlib.CompressionMethod = {\n DEFLATE: 8,\n RESERVED: 15\n};\n\n\n\n\n/**\n * @param {Object=} opt_params options.\n * @constructor\n */\nZlib.Zip = function(opt_params) {\n opt_params = opt_params || {};\n /** @type {Array.<{\n * buffer: !(Array.<number>|Uint8Array),\n * option: Object,\n * compressed: boolean,\n * encrypted: boolean,\n * size: number,\n * crc32: number\n * }>} */\n this.files = [];\n /** @type {(Array.<number>|Uint8Array)} */\n this.comment = opt_params['comment'];\n /** @type {(Array.<number>|Uint8Array)} */\n this.password;\n};\n\n\n/**\n * @enum {number}\n */\nZlib.Zip.CompressionMethod = {\n STORE: 0,\n DEFLATE: 8\n};\n\n/**\n * @enum {number}\n */\nZlib.Zip.OperatingSystem = {\n MSDOS: 0,\n UNIX: 3,\n MACINTOSH: 7\n};\n\n/**\n * @enum {number}\n */\nZlib.Zip.Flags = {\n ENCRYPT: 0x0001,\n DESCRIPTOR: 0x0008,\n UTF8: 0x0800\n};\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.FileHeaderSignature = [0x50, 0x4b, 0x01, 0x02];\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.LocalFileHeaderSignature = [0x50, 0x4b, 0x03, 0x04];\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Zip.CentralDirectorySignature = [0x50, 0x4b, 0x05, 0x06];\n\n/**\n * @param {Array.<number>|Uint8Array} input\n * @param {Object=} opt_params options.\n */\nZlib.Zip.prototype.addFile = function(input, opt_params) {\n opt_params = opt_params || {};\n /** @type {string} */\n opt_params['filename'];\n /** @type {boolean} */\n var compressed;\n /** @type {number} */\n var size = input.length;\n /** @type {number} */\n var crc32 = 0;\n\n if (input instanceof Array) {\n input = new Uint8Array(input);\n }\n\n // default\n if (typeof opt_params['compressionMethod'] !== 'number') {\n opt_params['compressionMethod'] = Zlib.Zip.CompressionMethod.DEFLATE;\n }\n\n // その場で圧縮する場合\n if (opt_params['compress']) {\n switch (opt_params['compressionMethod']) {\n case Zlib.Zip.CompressionMethod.STORE:\n break;\n case Zlib.Zip.CompressionMethod.DEFLATE:\n crc32 = Zlib.CRC32.calc(input);\n input = this.deflateWithOption(input, opt_params);\n compressed = true;\n break;\n default:\n throw new Error('unknown compression method:' + opt_params['compressionMethod']);\n }\n }\n\n this.files.push({\n buffer: input,\n option: opt_params,\n compressed: compressed,\n encrypted: false,\n size: size,\n crc32: crc32\n });\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n */\nZlib.Zip.prototype.setPassword = function(password) {\n this.password = password;\n};\n\nZlib.Zip.prototype.compress = function() {\n /** @type {Array.<{\n * buffer: !(Array.<number>|Uint8Array),\n * option: Object,\n * compressed: boolean,\n * encrypted: boolean,\n * size: number,\n * crc32: number\n * }>} */\n var files = this.files;\n /** @type {{\n * buffer: !(Array.<number>|Uint8Array),\n * option: Object,\n * compressed: boolean,\n * encrypted: boolean,\n * size: number,\n * crc32: number\n * }} */\n var file;\n /** @type {!(Array.<number>|Uint8Array)} */\n var output;\n /** @type {number} */\n var op1;\n /** @type {number} */\n var op2;\n /** @type {number} */\n var op3;\n /** @type {number} */\n var localFileSize = 0;\n /** @type {number} */\n var centralDirectorySize = 0;\n /** @type {number} */\n var endOfCentralDirectorySize;\n /** @type {number} */\n var offset;\n /** @type {number} */\n var needVersion;\n /** @type {number} */\n var flags;\n /** @type {Zlib.Zip.CompressionMethod} */\n var compressionMethod;\n /** @type {Date} */\n var date;\n /** @type {number} */\n var crc32;\n /** @type {number} */\n var size;\n /** @type {number} */\n var plainSize;\n /** @type {number} */\n var filenameLength;\n /** @type {number} */\n var extraFieldLength;\n /** @type {number} */\n var commentLength;\n /** @type {(Array.<number>|Uint8Array)} */\n var filename;\n /** @type {(Array.<number>|Uint8Array)} */\n var extraField;\n /** @type {(Array.<number>|Uint8Array)} */\n var comment;\n /** @type {(Array.<number>|Uint8Array)} */\n var buffer;\n /** @type {*} */\n var tmp;\n /** @type {Array.<number>|Uint32Array|Object} */\n var key;\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n /** @type {number} */\n var j;\n /** @type {number} */\n var jl;\n\n // ファイルの圧縮\n for (i = 0, il = files.length; i < il; ++i) {\n file = files[i];\n filenameLength =\n (file.option['filename']) ? file.option['filename'].length : 0;\n extraFieldLength =\n (file.option['extraField']) ? file.option['extraField'].length : 0;\n commentLength =\n (file.option['comment']) ? file.option['comment'].length : 0;\n\n // 圧縮されていなかったら圧縮\n if (!file.compressed) {\n // 圧縮前に CRC32 の計算をしておく\n file.crc32 = Zlib.CRC32.calc(file.buffer);\n\n switch (file.option['compressionMethod']) {\n case Zlib.Zip.CompressionMethod.STORE:\n break;\n case Zlib.Zip.CompressionMethod.DEFLATE:\n file.buffer = this.deflateWithOption(file.buffer, file.option);\n file.compressed = true;\n break;\n default:\n throw new Error('unknown compression method:' + file.option['compressionMethod']);\n }\n }\n\n // encryption\n if (file.option['password'] !== void 0|| this.password !== void 0) {\n // init encryption\n key = this.createEncryptionKey(file.option['password'] || this.password);\n\n // add header\n buffer = file.buffer;\n {\n tmp = new Uint8Array(buffer.length + 12);\n tmp.set(buffer, 12);\n buffer = tmp;\n }\n\n for (j = 0; j < 12; ++j) {\n buffer[j] = this.encode(\n key,\n i === 11 ? (file.crc32 & 0xff) : (Math.random() * 256 | 0)\n );\n }\n\n // data encryption\n for (jl = buffer.length; j < jl; ++j) {\n buffer[j] = this.encode(key, buffer[j]);\n }\n file.buffer = buffer;\n }\n\n // 必要バッファサイズの計算\n localFileSize +=\n // local file header\n 30 + filenameLength +\n // file data\n file.buffer.length;\n\n centralDirectorySize +=\n // file header\n 46 + filenameLength + commentLength;\n }\n\n // end of central directory\n endOfCentralDirectorySize = 22 + (this.comment ? this.comment.length : 0);\n output = new (Uint8Array )(\n localFileSize + centralDirectorySize + endOfCentralDirectorySize\n );\n op1 = 0;\n op2 = localFileSize;\n op3 = op2 + centralDirectorySize;\n\n // ファイルの圧縮\n for (i = 0, il = files.length; i < il; ++i) {\n file = files[i];\n filenameLength =\n file.option['filename'] ? file.option['filename'].length : 0;\n extraFieldLength = 0; // TODO\n commentLength =\n file.option['comment'] ? file.option['comment'].length : 0;\n\n //-------------------------------------------------------------------------\n // local file header & file header\n //-------------------------------------------------------------------------\n\n offset = op1;\n\n // signature\n // local file header\n output[op1++] = Zlib.Zip.LocalFileHeaderSignature[0];\n output[op1++] = Zlib.Zip.LocalFileHeaderSignature[1];\n output[op1++] = Zlib.Zip.LocalFileHeaderSignature[2];\n output[op1++] = Zlib.Zip.LocalFileHeaderSignature[3];\n // file header\n output[op2++] = Zlib.Zip.FileHeaderSignature[0];\n output[op2++] = Zlib.Zip.FileHeaderSignature[1];\n output[op2++] = Zlib.Zip.FileHeaderSignature[2];\n output[op2++] = Zlib.Zip.FileHeaderSignature[3];\n\n // compressor info\n needVersion = 20;\n output[op2++] = needVersion & 0xff;\n output[op2++] =\n /** @type {Zlib.Zip.OperatingSystem} */\n (file.option['os']) ||\n Zlib.Zip.OperatingSystem.MSDOS;\n\n // need version\n output[op1++] = output[op2++] = needVersion & 0xff;\n output[op1++] = output[op2++] = (needVersion >> 8) & 0xff;\n\n // general purpose bit flag\n flags = 0;\n if (file.option['password'] || this.password) {\n flags |= Zlib.Zip.Flags.ENCRYPT;\n }\n output[op1++] = output[op2++] = flags & 0xff;\n output[op1++] = output[op2++] = (flags >> 8) & 0xff;\n\n // compression method\n compressionMethod =\n /** @type {Zlib.Zip.CompressionMethod} */\n (file.option['compressionMethod']);\n output[op1++] = output[op2++] = compressionMethod & 0xff;\n output[op1++] = output[op2++] = (compressionMethod >> 8) & 0xff;\n\n // date\n date = /** @type {(Date|undefined)} */(file.option['date']) || new Date();\n output[op1++] = output[op2++] =\n ((date.getMinutes() & 0x7) << 5) |\n (date.getSeconds() / 2 | 0);\n output[op1++] = output[op2++] =\n (date.getHours() << 3) |\n (date.getMinutes() >> 3);\n //\n output[op1++] = output[op2++] =\n ((date.getMonth() + 1 & 0x7) << 5) |\n (date.getDate());\n output[op1++] = output[op2++] =\n ((date.getFullYear() - 1980 & 0x7f) << 1) |\n (date.getMonth() + 1 >> 3);\n\n // CRC-32\n crc32 = file.crc32;\n output[op1++] = output[op2++] = crc32 & 0xff;\n output[op1++] = output[op2++] = (crc32 >> 8) & 0xff;\n output[op1++] = output[op2++] = (crc32 >> 16) & 0xff;\n output[op1++] = output[op2++] = (crc32 >> 24) & 0xff;\n\n // compressed size\n size = file.buffer.length;\n output[op1++] = output[op2++] = size & 0xff;\n output[op1++] = output[op2++] = (size >> 8) & 0xff;\n output[op1++] = output[op2++] = (size >> 16) & 0xff;\n output[op1++] = output[op2++] = (size >> 24) & 0xff;\n\n // uncompressed size\n plainSize = file.size;\n output[op1++] = output[op2++] = plainSize & 0xff;\n output[op1++] = output[op2++] = (plainSize >> 8) & 0xff;\n output[op1++] = output[op2++] = (plainSize >> 16) & 0xff;\n output[op1++] = output[op2++] = (plainSize >> 24) & 0xff;\n\n // filename length\n output[op1++] = output[op2++] = filenameLength & 0xff;\n output[op1++] = output[op2++] = (filenameLength >> 8) & 0xff;\n\n // extra field length\n output[op1++] = output[op2++] = extraFieldLength & 0xff;\n output[op1++] = output[op2++] = (extraFieldLength >> 8) & 0xff;\n\n // file comment length\n output[op2++] = commentLength & 0xff;\n output[op2++] = (commentLength >> 8) & 0xff;\n\n // disk number start\n output[op2++] = 0;\n output[op2++] = 0;\n\n // internal file attributes\n output[op2++] = 0;\n output[op2++] = 0;\n\n // external file attributes\n output[op2++] = 0;\n output[op2++] = 0;\n output[op2++] = 0;\n output[op2++] = 0;\n\n // relative offset of local header\n output[op2++] = offset & 0xff;\n output[op2++] = (offset >> 8) & 0xff;\n output[op2++] = (offset >> 16) & 0xff;\n output[op2++] = (offset >> 24) & 0xff;\n\n // filename\n filename = file.option['filename'];\n if (filename) {\n {\n output.set(filename, op1);\n output.set(filename, op2);\n op1 += filenameLength;\n op2 += filenameLength;\n }\n }\n\n // extra field\n extraField = file.option['extraField'];\n if (extraField) {\n {\n output.set(extraField, op1);\n output.set(extraField, op2);\n op1 += extraFieldLength;\n op2 += extraFieldLength;\n }\n }\n\n // comment\n comment = file.option['comment'];\n if (comment) {\n {\n output.set(comment, op2);\n op2 += commentLength;\n }\n }\n\n //-------------------------------------------------------------------------\n // file data\n //-------------------------------------------------------------------------\n\n {\n output.set(file.buffer, op1);\n op1 += file.buffer.length;\n }\n }\n\n //-------------------------------------------------------------------------\n // end of central directory\n //-------------------------------------------------------------------------\n\n // signature\n output[op3++] = Zlib.Zip.CentralDirectorySignature[0];\n output[op3++] = Zlib.Zip.CentralDirectorySignature[1];\n output[op3++] = Zlib.Zip.CentralDirectorySignature[2];\n output[op3++] = Zlib.Zip.CentralDirectorySignature[3];\n\n // number of this disk\n output[op3++] = 0;\n output[op3++] = 0;\n\n // number of the disk with the start of the central directory\n output[op3++] = 0;\n output[op3++] = 0;\n\n // total number of entries in the central directory on this disk\n output[op3++] = il & 0xff;\n output[op3++] = (il >> 8) & 0xff;\n\n // total number of entries in the central directory\n output[op3++] = il & 0xff;\n output[op3++] = (il >> 8) & 0xff;\n\n // size of the central directory\n output[op3++] = centralDirectorySize & 0xff;\n output[op3++] = (centralDirectorySize >> 8) & 0xff;\n output[op3++] = (centralDirectorySize >> 16) & 0xff;\n output[op3++] = (centralDirectorySize >> 24) & 0xff;\n\n // offset of start of central directory with respect to the starting disk number\n output[op3++] = localFileSize & 0xff;\n output[op3++] = (localFileSize >> 8) & 0xff;\n output[op3++] = (localFileSize >> 16) & 0xff;\n output[op3++] = (localFileSize >> 24) & 0xff;\n\n // .ZIP file comment length\n commentLength = this.comment ? this.comment.length : 0;\n output[op3++] = commentLength & 0xff;\n output[op3++] = (commentLength >> 8) & 0xff;\n\n // .ZIP file comment\n if (this.comment) {\n {\n output.set(this.comment, op3);\n op3 += commentLength;\n }\n }\n\n return output;\n};\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input\n * @param {Object=} opt_params options.\n * @return {!(Array.<number>|Uint8Array)}\n */\nZlib.Zip.prototype.deflateWithOption = function(input, opt_params) {\n /** @type {Zlib.RawDeflate} */\n var deflator = new Zlib.RawDeflate(input, opt_params['deflateOption']);\n\n return deflator.compress();\n};\n\n/**\n * @param {(Array.<number>|Uint32Array)} key\n * @return {number}\n */\nZlib.Zip.prototype.getByte = function(key) {\n /** @type {number} */\n var tmp = ((key[2] & 0xffff) | 2);\n\n return ((tmp * (tmp ^ 1)) >> 8) & 0xff;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array|Object)} key\n * @param {number} n\n * @return {number}\n */\nZlib.Zip.prototype.encode = function(key, n) {\n /** @type {number} */\n var tmp = this.getByte(/** @type {(Array.<number>|Uint32Array)} */(key));\n\n this.updateKeys(/** @type {(Array.<number>|Uint32Array)} */(key), n);\n\n return tmp ^ n;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array)} key\n * @param {number} n\n */\nZlib.Zip.prototype.updateKeys = function(key, n) {\n key[0] = Zlib.CRC32.single(key[0], n);\n key[1] =\n (((((key[1] + (key[0] & 0xff)) * 20173 >>> 0) * 6681) >>> 0) + 1) >>> 0;\n key[2] = Zlib.CRC32.single(key[2], key[1] >>> 24);\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n * @return {!(Array.<number>|Uint32Array|Object)}\n */\nZlib.Zip.prototype.createEncryptionKey = function(password) {\n /** @type {!(Array.<number>|Uint32Array)} */\n var key = [305419896, 591751049, 878082192];\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n {\n key = new Uint32Array(key);\n }\n\n for (i = 0, il = password.length; i < il; ++i) {\n this.updateKeys(key, password[i] & 0xff);\n }\n\n return key;\n};\n\n\n\n/**\n * build huffman table from length list.\n * @param {!(Array.<number>|Uint8Array)} lengths length list.\n * @return {!Array} huffman table.\n */\nZlib.Huffman.buildHuffmanTable = function(lengths) {\n /** @type {number} length list size. */\n var listSize = lengths.length;\n /** @type {number} max code length for table size. */\n var maxCodeLength = 0;\n /** @type {number} min code length for table size. */\n var minCodeLength = Number.POSITIVE_INFINITY;\n /** @type {number} table size. */\n var size;\n /** @type {!(Array|Uint8Array)} huffman code table. */\n var table;\n /** @type {number} bit length. */\n var bitLength;\n /** @type {number} huffman code. */\n var code;\n /**\n * サイズが 2^maxlength 個のテーブルを埋めるためのスキップ長.\n * @type {number} skip length for table filling.\n */\n var skip;\n /** @type {number} reversed code. */\n var reversed;\n /** @type {number} reverse temp. */\n var rtemp;\n /** @type {number} loop counter. */\n var i;\n /** @type {number} loop limit. */\n var il;\n /** @type {number} loop counter. */\n var j;\n /** @type {number} table value. */\n var value;\n\n // Math.max は遅いので最長の値は for-loop で取得する\n for (i = 0, il = listSize; i < il; ++i) {\n if (lengths[i] > maxCodeLength) {\n maxCodeLength = lengths[i];\n }\n if (lengths[i] < minCodeLength) {\n minCodeLength = lengths[i];\n }\n }\n\n size = 1 << maxCodeLength;\n table = new (Uint32Array )(size);\n\n // ビット長の短い順からハフマン符号を割り当てる\n for (bitLength = 1, code = 0, skip = 2; bitLength <= maxCodeLength;) {\n for (i = 0; i < listSize; ++i) {\n if (lengths[i] === bitLength) {\n // ビットオーダーが逆になるためビット長分並びを反転する\n for (reversed = 0, rtemp = code, j = 0; j < bitLength; ++j) {\n reversed = (reversed << 1) | (rtemp & 1);\n rtemp >>= 1;\n }\n\n // 最大ビット長をもとにテーブルを作るため、\n // 最大ビット長以外では 0 / 1 どちらでも良い箇所ができる\n // そのどちらでも良い場所は同じ値で埋めることで\n // 本来のビット長以上のビット数取得しても問題が起こらないようにする\n value = (bitLength << 16) | i;\n for (j = reversed; j < size; j += skip) {\n table[j] = value;\n }\n\n ++code;\n }\n }\n\n // 次のビット長へ\n ++bitLength;\n code <<= 1;\n skip <<= 1;\n }\n\n return [table, maxCodeLength, minCodeLength];\n};\n\n\n\n\n//-----------------------------------------------------------------------------\n\n/** @define {number} buffer block size. */\nvar ZLIB_RAW_INFLATE_BUFFER_SIZE = 0x8000; // [ 0x8000 >= ZLIB_BUFFER_BLOCK_SIZE ]\n\n//-----------------------------------------------------------------------------\n\n\nvar buildHuffmanTable = Zlib.Huffman.buildHuffmanTable;\n\n/**\n * @constructor\n * @param {!(Uint8Array|Array.<number>)} input input buffer.\n * @param {Object} opt_params option parameter.\n *\n * opt_params は以下のプロパティを指定する事ができます。\n * - index: input buffer の deflate コンテナの開始位置.\n * - blockSize: バッファのブロックサイズ.\n * - bufferType: Zlib.RawInflate.BufferType の値によってバッファの管理方法を指定する.\n * - resize: 確保したバッファが実際の大きさより大きかった場合に切り詰める.\n */\nZlib.RawInflate = function(input, opt_params) {\n /** @type {!(Array.<number>|Uint8Array)} inflated buffer */\n this.buffer;\n /** @type {!Array.<(Array.<number>|Uint8Array)>} */\n this.blocks = [];\n /** @type {number} block size. */\n this.bufferSize = ZLIB_RAW_INFLATE_BUFFER_SIZE;\n /** @type {!number} total output buffer pointer. */\n this.totalpos = 0;\n /** @type {!number} input buffer pointer. */\n this.ip = 0;\n /** @type {!number} bit stream reader buffer. */\n this.bitsbuf = 0;\n /** @type {!number} bit stream reader buffer size. */\n this.bitsbuflen = 0;\n /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n this.input = new Uint8Array(input) ;\n /** @type {!(Uint8Array|Array.<number>)} output buffer. */\n this.output;\n /** @type {!number} output buffer pointer. */\n this.op;\n /** @type {boolean} is final block flag. */\n this.bfinal = false;\n /** @type {Zlib.RawInflate.BufferType} buffer management. */\n this.bufferType = Zlib.RawInflate.BufferType.ADAPTIVE;\n /** @type {boolean} resize flag for memory size optimization. */\n this.resize = false;\n\n // option parameters\n if (opt_params || !(opt_params = {})) {\n if (opt_params['index']) {\n this.ip = opt_params['index'];\n }\n if (opt_params['bufferSize']) {\n this.bufferSize = opt_params['bufferSize'];\n }\n if (opt_params['bufferType']) {\n this.bufferType = opt_params['bufferType'];\n }\n if (opt_params['resize']) {\n this.resize = opt_params['resize'];\n }\n }\n\n // initialize\n switch (this.bufferType) {\n case Zlib.RawInflate.BufferType.BLOCK:\n this.op = Zlib.RawInflate.MaxBackwardLength;\n this.output =\n new (Uint8Array )(\n Zlib.RawInflate.MaxBackwardLength +\n this.bufferSize +\n Zlib.RawInflate.MaxCopyLength\n );\n break;\n case Zlib.RawInflate.BufferType.ADAPTIVE:\n this.op = 0;\n this.output = new (Uint8Array )(this.bufferSize);\n break;\n default:\n throw new Error('invalid inflate mode');\n }\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflate.BufferType = {\n BLOCK: 0,\n ADAPTIVE: 1\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array.<number>)} inflated buffer.\n */\nZlib.RawInflate.prototype.decompress = function() {\n while (!this.bfinal) {\n this.parseBlock();\n }\n\n switch (this.bufferType) {\n case Zlib.RawInflate.BufferType.BLOCK:\n return this.concatBufferBlock();\n case Zlib.RawInflate.BufferType.ADAPTIVE:\n return this.concatBufferDynamic();\n default:\n throw new Error('invalid inflate mode');\n }\n};\n\n/**\n * @const\n * @type {number} max backward length for LZ77.\n */\nZlib.RawInflate.MaxBackwardLength = 32768;\n\n/**\n * @const\n * @type {number} max copy length for LZ77.\n */\nZlib.RawInflate.MaxCopyLength = 258;\n\n/**\n * huffman order\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.Order = (function(table) {\n return new Uint16Array(table) ;\n})([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n\n/**\n * huffman length code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflate.LengthCodeTable = (function(table) {\n return new Uint16Array(table) ;\n})([\n 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b,\n 0x000d, 0x000f, 0x0011, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x002b,\n 0x0033, 0x003b, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083, 0x00a3, 0x00c3,\n 0x00e3, 0x0102, 0x0102, 0x0102\n]);\n\n/**\n * huffman length extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.LengthExtraTable = (function(table) {\n return new Uint8Array(table) ;\n})([\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,\n 5, 5, 0, 0, 0\n]);\n\n/**\n * huffman dist code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflate.DistCodeTable = (function(table) {\n return new Uint16Array(table) ;\n})([\n 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011,\n 0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181,\n 0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, 0x1001, 0x1801, 0x2001,\n 0x3001, 0x4001, 0x6001\n]);\n\n/**\n * huffman dist extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflate.DistExtraTable = (function(table) {\n return new Uint8Array(table) ;\n})([\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,\n 11, 12, 12, 13, 13\n]);\n\n/**\n * fixed huffman length code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflate.FixedLiteralLengthTable = (function(table) {\n return table;\n})((function() {\n var lengths = new (Uint8Array )(288);\n var i, il;\n\n for (i = 0, il = lengths.length; i < il; ++i) {\n lengths[i] =\n (i <= 143) ? 8 :\n (i <= 255) ? 9 :\n (i <= 279) ? 7 :\n 8;\n }\n\n return buildHuffmanTable(lengths);\n})());\n\n/**\n * fixed huffman distance code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflate.FixedDistanceTable = (function(table) {\n return table;\n})((function() {\n var lengths = new (Uint8Array )(30);\n var i, il;\n\n for (i = 0, il = lengths.length; i < il; ++i) {\n lengths[i] = 5;\n }\n\n return buildHuffmanTable(lengths);\n})());\n\n/**\n * parse deflated block.\n */\nZlib.RawInflate.prototype.parseBlock = function() {\n /** @type {number} header */\n var hdr = this.readBits(3);\n\n // BFINAL\n if (hdr & 0x1) {\n this.bfinal = true;\n }\n\n // BTYPE\n hdr >>>= 1;\n switch (hdr) {\n // uncompressed\n case 0:\n this.parseUncompressedBlock();\n break;\n // fixed huffman\n case 1:\n this.parseFixedHuffmanBlock();\n break;\n // dynamic huffman\n case 2:\n this.parseDynamicHuffmanBlock();\n break;\n // reserved or other\n default:\n throw new Error('unknown BTYPE: ' + hdr);\n }\n};\n\n/**\n * read inflate bits\n * @param {number} length bits length.\n * @return {number} read bits.\n */\nZlib.RawInflate.prototype.readBits = function(length) {\n var bitsbuf = this.bitsbuf;\n var bitsbuflen = this.bitsbuflen;\n var input = this.input;\n var ip = this.ip;\n\n /** @type {number} */\n var inputLength = input.length;\n /** @type {number} input and output byte. */\n var octet;\n\n // input byte\n if (ip + ((length - bitsbuflen + 7) >> 3) >= inputLength) {\n throw new Error('input buffer is broken');\n }\n\n // not enough buffer\n while (bitsbuflen < length) {\n bitsbuf |= input[ip++] << bitsbuflen;\n bitsbuflen += 8;\n }\n\n // output byte\n octet = bitsbuf & /* MASK */ ((1 << length) - 1);\n bitsbuf >>>= length;\n bitsbuflen -= length;\n\n this.bitsbuf = bitsbuf;\n this.bitsbuflen = bitsbuflen;\n this.ip = ip;\n\n return octet;\n};\n\n/**\n * read huffman code using table\n * @param {!(Array.<number>|Uint8Array|Uint16Array)} table huffman code table.\n * @return {number} huffman code.\n */\nZlib.RawInflate.prototype.readCodeByTable = function(table) {\n var bitsbuf = this.bitsbuf;\n var bitsbuflen = this.bitsbuflen;\n var input = this.input;\n var ip = this.ip;\n\n /** @type {number} */\n var inputLength = input.length;\n /** @type {!(Array.<number>|Uint8Array)} huffman code table */\n var codeTable = table[0];\n /** @type {number} */\n var maxCodeLength = table[1];\n /** @type {number} code length & code (16bit, 16bit) */\n var codeWithLength;\n /** @type {number} code bits length */\n var codeLength;\n\n // not enough buffer\n while (bitsbuflen < maxCodeLength) {\n if (ip >= inputLength) {\n break;\n }\n bitsbuf |= input[ip++] << bitsbuflen;\n bitsbuflen += 8;\n }\n\n // read max length\n codeWithLength = codeTable[bitsbuf & ((1 << maxCodeLength) - 1)];\n codeLength = codeWithLength >>> 16;\n\n if (codeLength > bitsbuflen) {\n throw new Error('invalid code length: ' + codeLength);\n }\n\n this.bitsbuf = bitsbuf >> codeLength;\n this.bitsbuflen = bitsbuflen - codeLength;\n this.ip = ip;\n\n return codeWithLength & 0xffff;\n};\n\n/**\n * parse uncompressed block.\n */\nZlib.RawInflate.prototype.parseUncompressedBlock = function() {\n var input = this.input;\n var ip = this.ip;\n var output = this.output;\n var op = this.op;\n\n /** @type {number} */\n var inputLength = input.length;\n /** @type {number} block length */\n var len;\n /** @type {number} number for check block length */\n var nlen;\n /** @type {number} output buffer length */\n var olength = output.length;\n /** @type {number} copy counter */\n var preCopy;\n\n // skip buffered header bits\n this.bitsbuf = 0;\n this.bitsbuflen = 0;\n\n // len\n if (ip + 1 >= inputLength) {\n throw new Error('invalid uncompressed block header: LEN');\n }\n len = input[ip++] | (input[ip++] << 8);\n\n // nlen\n if (ip + 1 >= inputLength) {\n throw new Error('invalid uncompressed block header: NLEN');\n }\n nlen = input[ip++] | (input[ip++] << 8);\n\n // check len & nlen\n if (len === ~nlen) {\n throw new Error('invalid uncompressed block header: length verify');\n }\n\n // check size\n if (ip + len > input.length) { throw new Error('input buffer is broken'); }\n\n // expand buffer\n switch (this.bufferType) {\n case Zlib.RawInflate.BufferType.BLOCK:\n // pre copy\n while (op + len > output.length) {\n preCopy = olength - op;\n len -= preCopy;\n {\n output.set(input.subarray(ip, ip + preCopy), op);\n op += preCopy;\n ip += preCopy;\n }\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n break;\n case Zlib.RawInflate.BufferType.ADAPTIVE:\n while (op + len > output.length) {\n output = this.expandBufferAdaptive({fixRatio: 2});\n }\n break;\n default:\n throw new Error('invalid inflate mode');\n }\n\n // copy\n {\n output.set(input.subarray(ip, ip + len), op);\n op += len;\n ip += len;\n }\n\n this.ip = ip;\n this.op = op;\n this.output = output;\n};\n\n/**\n * parse fixed huffman block.\n */\nZlib.RawInflate.prototype.parseFixedHuffmanBlock = function() {\n switch (this.bufferType) {\n case Zlib.RawInflate.BufferType.ADAPTIVE:\n this.decodeHuffmanAdaptive(\n Zlib.RawInflate.FixedLiteralLengthTable,\n Zlib.RawInflate.FixedDistanceTable\n );\n break;\n case Zlib.RawInflate.BufferType.BLOCK:\n this.decodeHuffmanBlock(\n Zlib.RawInflate.FixedLiteralLengthTable,\n Zlib.RawInflate.FixedDistanceTable\n );\n break;\n default:\n throw new Error('invalid inflate mode');\n }\n};\n\n/**\n * parse dynamic huffman block.\n */\nZlib.RawInflate.prototype.parseDynamicHuffmanBlock = function() {\n /** @type {number} number of literal and length codes. */\n var hlit = this.readBits(5) + 257;\n /** @type {number} number of distance codes. */\n var hdist = this.readBits(5) + 1;\n /** @type {number} number of code lengths. */\n var hclen = this.readBits(4) + 4;\n /** @type {!(Uint8Array|Array.<number>)} code lengths. */\n var codeLengths =\n new (Uint8Array )(Zlib.RawInflate.Order.length);\n /** @type {!Array} code lengths table. */\n var codeLengthsTable;\n /** @type {!(Uint8Array|Array.<number>)} literal and length code table. */\n var litlenTable;\n /** @type {!(Uint8Array|Array.<number>)} distance code table. */\n var distTable;\n /** @type {!(Uint8Array|Array.<number>)} code length table. */\n var lengthTable;\n /** @type {number} */\n var code;\n /** @type {number} */\n var prev;\n /** @type {number} */\n var repeat;\n /** @type {number} loop counter. */\n var i;\n /** @type {number} loop limit. */\n var il;\n\n // decode code lengths\n for (i = 0; i < hclen; ++i) {\n codeLengths[Zlib.RawInflate.Order[i]] = this.readBits(3);\n }\n\n // decode length table\n codeLengthsTable = buildHuffmanTable(codeLengths);\n lengthTable = new (Uint8Array )(hlit + hdist);\n for (i = 0, il = hlit + hdist; i < il;) {\n code = this.readCodeByTable(codeLengthsTable);\n switch (code) {\n case 16:\n repeat = 3 + this.readBits(2);\n while (repeat--) { lengthTable[i++] = prev; }\n break;\n case 17:\n repeat = 3 + this.readBits(3);\n while (repeat--) { lengthTable[i++] = 0; }\n prev = 0;\n break;\n case 18:\n repeat = 11 + this.readBits(7);\n while (repeat--) { lengthTable[i++] = 0; }\n prev = 0;\n break;\n default:\n lengthTable[i++] = code;\n prev = code;\n break;\n }\n }\n\n litlenTable = buildHuffmanTable(lengthTable.subarray(0, hlit))\n ;\n distTable = buildHuffmanTable(lengthTable.subarray(hlit))\n ;\n\n switch (this.bufferType) {\n case Zlib.RawInflate.BufferType.ADAPTIVE:\n this.decodeHuffmanAdaptive(litlenTable, distTable);\n break;\n case Zlib.RawInflate.BufferType.BLOCK:\n this.decodeHuffmanBlock(litlenTable, distTable);\n break;\n default:\n throw new Error('invalid inflate mode');\n }\n};\n\n/**\n * decode huffman code\n * @param {!(Array.<number>|Uint16Array)} litlen literal and length code table.\n * @param {!(Array.<number>|Uint8Array)} dist distination code table.\n */\nZlib.RawInflate.prototype.decodeHuffmanBlock = function(litlen, dist) {\n var output = this.output;\n var op = this.op;\n\n this.currentLitlenTable = litlen;\n\n /** @type {number} output position limit. */\n var olength = output.length - Zlib.RawInflate.MaxCopyLength;\n /** @type {number} huffman code. */\n var code;\n /** @type {number} table index. */\n var ti;\n /** @type {number} huffman code distination. */\n var codeDist;\n /** @type {number} huffman code length. */\n var codeLength;\n\n var lengthCodeTable = Zlib.RawInflate.LengthCodeTable;\n var lengthExtraTable = Zlib.RawInflate.LengthExtraTable;\n var distCodeTable = Zlib.RawInflate.DistCodeTable;\n var distExtraTable = Zlib.RawInflate.DistExtraTable;\n\n while ((code = this.readCodeByTable(litlen)) !== 256) {\n // literal\n if (code < 256) {\n if (op >= olength) {\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n output[op++] = code;\n\n continue;\n }\n\n // length code\n ti = code - 257;\n codeLength = lengthCodeTable[ti];\n if (lengthExtraTable[ti] > 0) {\n codeLength += this.readBits(lengthExtraTable[ti]);\n }\n\n // dist code\n code = this.readCodeByTable(dist);\n codeDist = distCodeTable[code];\n if (distExtraTable[code] > 0) {\n codeDist += this.readBits(distExtraTable[code]);\n }\n\n // lz77 decode\n if (op >= olength) {\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n while (codeLength--) {\n output[op] = output[(op++) - codeDist];\n }\n }\n\n while (this.bitsbuflen >= 8) {\n this.bitsbuflen -= 8;\n this.ip--;\n }\n this.op = op;\n};\n\n/**\n * decode huffman code (adaptive)\n * @param {!(Array.<number>|Uint16Array)} litlen literal and length code table.\n * @param {!(Array.<number>|Uint8Array)} dist distination code table.\n */\nZlib.RawInflate.prototype.decodeHuffmanAdaptive = function(litlen, dist) {\n var output = this.output;\n var op = this.op;\n\n this.currentLitlenTable = litlen;\n\n /** @type {number} output position limit. */\n var olength = output.length;\n /** @type {number} huffman code. */\n var code;\n /** @type {number} table index. */\n var ti;\n /** @type {number} huffman code distination. */\n var codeDist;\n /** @type {number} huffman code length. */\n var codeLength;\n\n var lengthCodeTable = Zlib.RawInflate.LengthCodeTable;\n var lengthExtraTable = Zlib.RawInflate.LengthExtraTable;\n var distCodeTable = Zlib.RawInflate.DistCodeTable;\n var distExtraTable = Zlib.RawInflate.DistExtraTable;\n\n while ((code = this.readCodeByTable(litlen)) !== 256) {\n // literal\n if (code < 256) {\n if (op >= olength) {\n output = this.expandBufferAdaptive();\n olength = output.length;\n }\n output[op++] = code;\n\n continue;\n }\n\n // length code\n ti = code - 257;\n codeLength = lengthCodeTable[ti];\n if (lengthExtraTable[ti] > 0) {\n codeLength += this.readBits(lengthExtraTable[ti]);\n }\n\n // dist code\n code = this.readCodeByTable(dist);\n codeDist = distCodeTable[code];\n if (distExtraTable[code] > 0) {\n codeDist += this.readBits(distExtraTable[code]);\n }\n\n // lz77 decode\n if (op + codeLength > olength) {\n output = this.expandBufferAdaptive();\n olength = output.length;\n }\n while (codeLength--) {\n output[op] = output[(op++) - codeDist];\n }\n }\n\n while (this.bitsbuflen >= 8) {\n this.bitsbuflen -= 8;\n this.ip--;\n }\n this.op = op;\n};\n\n/**\n * expand output buffer.\n * @param {Object=} opt_param option parameters.\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.expandBufferBlock = function(opt_param) {\n /** @type {!(Array.<number>|Uint8Array)} store buffer. */\n var buffer =\n new (Uint8Array )(\n this.op - Zlib.RawInflate.MaxBackwardLength\n );\n /** @type {number} backward base point */\n var backward = this.op - Zlib.RawInflate.MaxBackwardLength;\n\n var output = this.output;\n\n // copy to output buffer\n {\n buffer.set(output.subarray(Zlib.RawInflate.MaxBackwardLength, buffer.length));\n }\n\n this.blocks.push(buffer);\n this.totalpos += buffer.length;\n\n // copy to backward buffer\n {\n output.set(\n output.subarray(backward, backward + Zlib.RawInflate.MaxBackwardLength)\n );\n }\n\n this.op = Zlib.RawInflate.MaxBackwardLength;\n\n return output;\n};\n\n/**\n * expand output buffer. (adaptive)\n * @param {Object=} opt_param option parameters.\n * @return {!(Array.<number>|Uint8Array)} output buffer pointer.\n */\nZlib.RawInflate.prototype.expandBufferAdaptive = function(opt_param) {\n /** @type {!(Array.<number>|Uint8Array)} store buffer. */\n var buffer;\n /** @type {number} expantion ratio. */\n var ratio = (this.input.length / this.ip + 1) | 0;\n /** @type {number} maximum number of huffman code. */\n var maxHuffCode;\n /** @type {number} new output buffer size. */\n var newSize;\n /** @type {number} max inflate size. */\n var maxInflateSize;\n\n var input = this.input;\n var output = this.output;\n\n if (opt_param) {\n if (typeof opt_param.fixRatio === 'number') {\n ratio = opt_param.fixRatio;\n }\n if (typeof opt_param.addRatio === 'number') {\n ratio += opt_param.addRatio;\n }\n }\n\n // calculate new buffer size\n if (ratio < 2) {\n maxHuffCode =\n (input.length - this.ip) / this.currentLitlenTable[2];\n maxInflateSize = (maxHuffCode / 2 * 258) | 0;\n newSize = maxInflateSize < output.length ?\n output.length + maxInflateSize :\n output.length << 1;\n } else {\n newSize = output.length * ratio;\n }\n\n // buffer expantion\n {\n buffer = new Uint8Array(newSize);\n buffer.set(output);\n }\n\n this.output = buffer;\n\n return this.output;\n};\n\n/**\n * concat output buffer.\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.concatBufferBlock = function() {\n /** @type {number} buffer pointer. */\n var pos = 0;\n /** @type {number} buffer pointer. */\n var limit = this.totalpos + (this.op - Zlib.RawInflate.MaxBackwardLength);\n /** @type {!(Array.<number>|Uint8Array)} output block array. */\n var output = this.output;\n /** @type {!Array} blocks array. */\n var blocks = this.blocks;\n /** @type {!(Array.<number>|Uint8Array)} output block array. */\n var block;\n /** @type {!(Array.<number>|Uint8Array)} output buffer. */\n var buffer = new (Uint8Array )(limit);\n /** @type {number} loop counter. */\n var i;\n /** @type {number} loop limiter. */\n var il;\n /** @type {number} loop counter. */\n var j;\n /** @type {number} loop limiter. */\n var jl;\n\n // single buffer\n if (blocks.length === 0) {\n return this.output.subarray(Zlib.RawInflate.MaxBackwardLength, this.op) ;\n }\n\n // copy to buffer\n for (i = 0, il = blocks.length; i < il; ++i) {\n block = blocks[i];\n for (j = 0, jl = block.length; j < jl; ++j) {\n buffer[pos++] = block[j];\n }\n }\n\n // current buffer\n for (i = Zlib.RawInflate.MaxBackwardLength, il = this.op; i < il; ++i) {\n buffer[pos++] = output[i];\n }\n\n this.blocks = [];\n this.buffer = buffer;\n\n return this.buffer;\n};\n\n/**\n * concat output buffer. (dynamic)\n * @return {!(Array.<number>|Uint8Array)} output buffer.\n */\nZlib.RawInflate.prototype.concatBufferDynamic = function() {\n /** @type {Array.<number>|Uint8Array} output buffer. */\n var buffer;\n var op = this.op;\n\n {\n if (this.resize) {\n buffer = new Uint8Array(op);\n buffer.set(this.output.subarray(0, op));\n } else {\n buffer = this.output.subarray(0, op);\n }\n }\n\n this.buffer = buffer;\n\n return this.buffer;\n};\n\n\n\n\nvar buildHuffmanTable = Zlib.Huffman.buildHuffmanTable;\n\n/**\n * @param {!(Uint8Array|Array.<number>)} input input buffer.\n * @param {number} ip input buffer pointer.\n * @param {number=} opt_buffersize buffer block size.\n * @constructor\n */\nZlib.RawInflateStream = function(input, ip, opt_buffersize) {\n /** @type {!Array.<(Array|Uint8Array)>} */\n this.blocks = [];\n /** @type {number} block size. */\n this.bufferSize =\n opt_buffersize ? opt_buffersize : ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE;\n /** @type {!number} total output buffer pointer. */\n this.totalpos = 0;\n /** @type {!number} input buffer pointer. */\n this.ip = ip === void 0 ? 0 : ip;\n /** @type {!number} bit stream reader buffer. */\n this.bitsbuf = 0;\n /** @type {!number} bit stream reader buffer size. */\n this.bitsbuflen = 0;\n /** @type {!(Array|Uint8Array)} input buffer. */\n this.input = new Uint8Array(input) ;\n /** @type {!(Uint8Array|Array)} output buffer. */\n this.output = new (Uint8Array )(this.bufferSize);\n /** @type {!number} output buffer pointer. */\n this.op = 0;\n /** @type {boolean} is final block flag. */\n this.bfinal = false;\n /** @type {number} uncompressed block length. */\n this.blockLength;\n /** @type {boolean} resize flag for memory size optimization. */\n this.resize = false;\n /** @type {Array} */\n this.litlenTable;\n /** @type {Array} */\n this.distTable;\n /** @type {number} */\n this.sp = 0; // stream pointer\n /** @type {Zlib.RawInflateStream.Status} */\n this.status = Zlib.RawInflateStream.Status.INITIALIZED;\n\n //\n // backup\n //\n /** @type {!number} */\n this.ip_;\n /** @type {!number} */\n this.bitsbuflen_;\n /** @type {!number} */\n this.bitsbuf_;\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflateStream.BlockType = {\n UNCOMPRESSED: 0,\n FIXED: 1,\n DYNAMIC: 2\n};\n\n/**\n * @enum {number}\n */\nZlib.RawInflateStream.Status = {\n INITIALIZED: 0,\n BLOCK_HEADER_START: 1,\n BLOCK_HEADER_END: 2,\n BLOCK_BODY_START: 3,\n BLOCK_BODY_END: 4,\n DECODE_BLOCK_START: 5,\n DECODE_BLOCK_END: 6\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.RawInflateStream.prototype.decompress = function(newInput, ip) {\n /** @type {boolean} */\n var stop = false;\n\n if (newInput !== void 0) {\n this.input = newInput;\n }\n\n if (ip !== void 0) {\n this.ip = ip;\n }\n\n // decompress\n while (!stop) {\n switch (this.status) {\n // block header\n case Zlib.RawInflateStream.Status.INITIALIZED:\n case Zlib.RawInflateStream.Status.BLOCK_HEADER_START:\n if (this.readBlockHeader() < 0) {\n stop = true;\n }\n break;\n // block body\n case Zlib.RawInflateStream.Status.BLOCK_HEADER_END: /* FALLTHROUGH */\n case Zlib.RawInflateStream.Status.BLOCK_BODY_START:\n switch(this.currentBlockType) {\n case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:\n if (this.readUncompressedBlockHeader() < 0) {\n stop = true;\n }\n break;\n case Zlib.RawInflateStream.BlockType.FIXED:\n if (this.parseFixedHuffmanBlock() < 0) {\n stop = true;\n }\n break;\n case Zlib.RawInflateStream.BlockType.DYNAMIC:\n if (this.parseDynamicHuffmanBlock() < 0) {\n stop = true;\n }\n break;\n }\n break;\n // decode data\n case Zlib.RawInflateStream.Status.BLOCK_BODY_END:\n case Zlib.RawInflateStream.Status.DECODE_BLOCK_START:\n switch(this.currentBlockType) {\n case Zlib.RawInflateStream.BlockType.UNCOMPRESSED:\n if (this.parseUncompressedBlock() < 0) {\n stop = true;\n }\n break;\n case Zlib.RawInflateStream.BlockType.FIXED: /* FALLTHROUGH */\n case Zlib.RawInflateStream.BlockType.DYNAMIC:\n if (this.decodeHuffman() < 0) {\n stop = true;\n }\n break;\n }\n break;\n case Zlib.RawInflateStream.Status.DECODE_BLOCK_END:\n if (this.bfinal) {\n stop = true;\n } else {\n this.status = Zlib.RawInflateStream.Status.INITIALIZED;\n }\n break;\n }\n }\n\n return this.concatBuffer();\n};\n\n/**\n * @const\n * @type {number} max backward length for LZ77.\n */\nZlib.RawInflateStream.MaxBackwardLength = 32768;\n\n/**\n * @const\n * @type {number} max copy length for LZ77.\n */\nZlib.RawInflateStream.MaxCopyLength = 258;\n\n/**\n * huffman order\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.Order = (function(table) {\n return new Uint16Array(table) ;\n})([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n\n/**\n * huffman length code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflateStream.LengthCodeTable = (function(table) {\n return new Uint16Array(table) ;\n})([\n 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b,\n 0x000d, 0x000f, 0x0011, 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x002b,\n 0x0033, 0x003b, 0x0043, 0x0053, 0x0063, 0x0073, 0x0083, 0x00a3, 0x00c3,\n 0x00e3, 0x0102, 0x0102, 0x0102\n]);\n\n/**\n * huffman length extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.LengthExtraTable = (function(table) {\n return new Uint8Array(table) ;\n})([\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5,\n 5, 5, 0, 0, 0\n]);\n\n/**\n * huffman dist code table.\n * @const\n * @type {!(Array.<number>|Uint16Array)}\n */\nZlib.RawInflateStream.DistCodeTable = (function(table) {\n return new Uint16Array(table) ;\n})([\n 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011,\n 0x0019, 0x0021, 0x0031, 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181,\n 0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01, 0x1001, 0x1801, 0x2001,\n 0x3001, 0x4001, 0x6001\n]);\n\n/**\n * huffman dist extra-bits table.\n * @const\n * @type {!(Array.<number>|Uint8Array)}\n */\nZlib.RawInflateStream.DistExtraTable = (function(table) {\n return new Uint8Array(table) ;\n})([\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11,\n 11, 12, 12, 13, 13\n]);\n\n/**\n * fixed huffman length code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflateStream.FixedLiteralLengthTable = (function(table) {\n return table;\n})((function() {\n var lengths = new (Uint8Array )(288);\n var i, il;\n\n for (i = 0, il = lengths.length; i < il; ++i) {\n lengths[i] =\n (i <= 143) ? 8 :\n (i <= 255) ? 9 :\n (i <= 279) ? 7 :\n 8;\n }\n\n return buildHuffmanTable(lengths);\n})());\n\n/**\n * fixed huffman distance code table\n * @const\n * @type {!Array}\n */\nZlib.RawInflateStream.FixedDistanceTable = (function(table) {\n return table;\n})((function() {\n var lengths = new (Uint8Array )(30);\n var i, il;\n\n for (i = 0, il = lengths.length; i < il; ++i) {\n lengths[i] = 5;\n }\n\n return buildHuffmanTable(lengths);\n})());\n\n/**\n * parse deflated block.\n */\nZlib.RawInflateStream.prototype.readBlockHeader = function() {\n /** @type {number} header */\n var hdr;\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_HEADER_START;\n\n this.save_();\n if ((hdr = this.readBits(3)) < 0) {\n this.restore_();\n return -1;\n }\n\n // BFINAL\n if (hdr & 0x1) {\n this.bfinal = true;\n }\n\n // BTYPE\n hdr >>>= 1;\n switch (hdr) {\n case 0: // uncompressed\n this.currentBlockType = Zlib.RawInflateStream.BlockType.UNCOMPRESSED;\n break;\n case 1: // fixed huffman\n this.currentBlockType = Zlib.RawInflateStream.BlockType.FIXED;\n break;\n case 2: // dynamic huffman\n this.currentBlockType = Zlib.RawInflateStream.BlockType.DYNAMIC;\n break;\n default: // reserved or other\n throw new Error('unknown BTYPE: ' + hdr);\n }\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_HEADER_END;\n};\n\n/**\n * read inflate bits\n * @param {number} length bits length.\n * @return {number} read bits.\n */\nZlib.RawInflateStream.prototype.readBits = function(length) {\n var bitsbuf = this.bitsbuf;\n var bitsbuflen = this.bitsbuflen;\n var input = this.input;\n var ip = this.ip;\n\n /** @type {number} input and output byte. */\n var octet;\n\n // not enough buffer\n while (bitsbuflen < length) {\n // input byte\n if (input.length <= ip) {\n return -1;\n }\n octet = input[ip++];\n\n // concat octet\n bitsbuf |= octet << bitsbuflen;\n bitsbuflen += 8;\n }\n\n // output byte\n octet = bitsbuf & /* MASK */ ((1 << length) - 1);\n bitsbuf >>>= length;\n bitsbuflen -= length;\n\n this.bitsbuf = bitsbuf;\n this.bitsbuflen = bitsbuflen;\n this.ip = ip;\n\n return octet;\n};\n\n/**\n * read huffman code using table\n * @param {Array} table huffman code table.\n * @return {number} huffman code.\n */\nZlib.RawInflateStream.prototype.readCodeByTable = function(table) {\n var bitsbuf = this.bitsbuf;\n var bitsbuflen = this.bitsbuflen;\n var input = this.input;\n var ip = this.ip;\n\n /** @type {!(Array|Uint8Array)} huffman code table */\n var codeTable = table[0];\n /** @type {number} */\n var maxCodeLength = table[1];\n /** @type {number} input byte */\n var octet;\n /** @type {number} code length & code (16bit, 16bit) */\n var codeWithLength;\n /** @type {number} code bits length */\n var codeLength;\n\n // not enough buffer\n while (bitsbuflen < maxCodeLength) {\n if (input.length <= ip) {\n return -1;\n }\n octet = input[ip++];\n bitsbuf |= octet << bitsbuflen;\n bitsbuflen += 8;\n }\n\n // read max length\n codeWithLength = codeTable[bitsbuf & ((1 << maxCodeLength) - 1)];\n codeLength = codeWithLength >>> 16;\n\n if (codeLength > bitsbuflen) {\n throw new Error('invalid code length: ' + codeLength);\n }\n\n this.bitsbuf = bitsbuf >> codeLength;\n this.bitsbuflen = bitsbuflen - codeLength;\n this.ip = ip;\n\n return codeWithLength & 0xffff;\n};\n\n/**\n * read uncompressed block header\n */\nZlib.RawInflateStream.prototype.readUncompressedBlockHeader = function() {\n /** @type {number} block length */\n var len;\n /** @type {number} number for check block length */\n var nlen;\n\n var input = this.input;\n var ip = this.ip;\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n if (ip + 4 >= input.length) {\n return -1;\n }\n\n len = input[ip++] | (input[ip++] << 8);\n nlen = input[ip++] | (input[ip++] << 8);\n\n // check len & nlen\n if (len === ~nlen) {\n throw new Error('invalid uncompressed block header: length verify');\n }\n\n // skip buffered header bits\n this.bitsbuf = 0;\n this.bitsbuflen = 0;\n\n this.ip = ip;\n this.blockLength = len;\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n};\n\n/**\n * parse uncompressed block.\n */\nZlib.RawInflateStream.prototype.parseUncompressedBlock = function() {\n var input = this.input;\n var ip = this.ip;\n var output = this.output;\n var op = this.op;\n var len = this.blockLength;\n\n this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_START;\n\n // copy\n // XXX: とりあえず素直にコピー\n while (len--) {\n if (op === output.length) {\n output = this.expandBuffer({fixRatio: 2});\n }\n\n // not enough input buffer\n if (ip >= input.length) {\n this.ip = ip;\n this.op = op;\n this.blockLength = len + 1; // コピーしてないので戻す\n return -1;\n }\n\n output[op++] = input[ip++];\n }\n\n if (len < 0) {\n this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_END;\n }\n\n this.ip = ip;\n this.op = op;\n\n return 0;\n};\n\n/**\n * parse fixed huffman block.\n */\nZlib.RawInflateStream.prototype.parseFixedHuffmanBlock = function() {\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n this.litlenTable = Zlib.RawInflateStream.FixedLiteralLengthTable;\n this.distTable = Zlib.RawInflateStream.FixedDistanceTable;\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n\n return 0;\n};\n\n/**\n * オブジェクトのコンテキストを別のプロパティに退避する.\n * @private\n */\nZlib.RawInflateStream.prototype.save_ = function() {\n this.ip_ = this.ip;\n this.bitsbuflen_ = this.bitsbuflen;\n this.bitsbuf_ = this.bitsbuf;\n};\n\n/**\n * 別のプロパティに退避したコンテキストを復元する.\n * @private\n */\nZlib.RawInflateStream.prototype.restore_ = function() {\n this.ip = this.ip_;\n this.bitsbuflen = this.bitsbuflen_;\n this.bitsbuf = this.bitsbuf_;\n};\n\n/**\n * parse dynamic huffman block.\n */\nZlib.RawInflateStream.prototype.parseDynamicHuffmanBlock = function() {\n /** @type {number} number of literal and length codes. */\n var hlit;\n /** @type {number} number of distance codes. */\n var hdist;\n /** @type {number} number of code lengths. */\n var hclen;\n /** @type {!(Uint8Array|Array)} code lengths. */\n var codeLengths =\n new (Uint8Array )(Zlib.RawInflateStream.Order.length);\n /** @type {!Array} code lengths table. */\n var codeLengthsTable;\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_START;\n\n this.save_();\n hlit = this.readBits(5) + 257;\n hdist = this.readBits(5) + 1;\n hclen = this.readBits(4) + 4;\n if (hlit < 0 || hdist < 0 || hclen < 0) {\n this.restore_();\n return -1;\n }\n\n try {\n parseDynamicHuffmanBlockImpl.call(this);\n } catch(e) {\n this.restore_();\n return -1;\n }\n\n function parseDynamicHuffmanBlockImpl() {\n /** @type {number} */\n var bits;\n var code;\n var prev = 0;\n var repeat;\n /** @type {!(Uint8Array|Array.<number>)} code length table. */\n var lengthTable;\n /** @type {number} loop counter. */\n var i;\n /** @type {number} loop limit. */\n var il;\n\n // decode code lengths\n for (i = 0; i < hclen; ++i) {\n if ((bits = this.readBits(3)) < 0) {\n throw new Error('not enough input');\n }\n codeLengths[Zlib.RawInflateStream.Order[i]] = bits;\n }\n\n // decode length table\n codeLengthsTable = buildHuffmanTable(codeLengths);\n lengthTable = new (Uint8Array )(hlit + hdist);\n for (i = 0, il = hlit + hdist; i < il;) {\n code = this.readCodeByTable(codeLengthsTable);\n if (code < 0) {\n throw new Error('not enough input');\n }\n switch (code) {\n case 16:\n if ((bits = this.readBits(2)) < 0) {\n throw new Error('not enough input');\n }\n repeat = 3 + bits;\n while (repeat--) { lengthTable[i++] = prev; }\n break;\n case 17:\n if ((bits = this.readBits(3)) < 0) {\n throw new Error('not enough input');\n }\n repeat = 3 + bits;\n while (repeat--) { lengthTable[i++] = 0; }\n prev = 0;\n break;\n case 18:\n if ((bits = this.readBits(7)) < 0) {\n throw new Error('not enough input');\n }\n repeat = 11 + bits;\n while (repeat--) { lengthTable[i++] = 0; }\n prev = 0;\n break;\n default:\n lengthTable[i++] = code;\n prev = code;\n break;\n }\n }\n\n this.litlenTable = buildHuffmanTable(lengthTable.subarray(0, hlit))\n ;\n this.distTable = buildHuffmanTable(lengthTable.subarray(hlit))\n ;\n }\n\n this.status = Zlib.RawInflateStream.Status.BLOCK_BODY_END;\n\n return 0;\n};\n\n/**\n * decode huffman code (dynamic)\n * @return {(number|undefined)} -1 is error.\n */\nZlib.RawInflateStream.prototype.decodeHuffman = function() {\n var output = this.output;\n var op = this.op;\n\n /** @type {number} huffman code. */\n var code;\n /** @type {number} table index. */\n var ti;\n /** @type {number} huffman code distination. */\n var codeDist;\n /** @type {number} huffman code length. */\n var codeLength;\n\n var litlen = this.litlenTable;\n var dist = this.distTable;\n\n var olength = output.length;\n var bits;\n\n this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_START;\n\n while (true) {\n this.save_();\n\n code = this.readCodeByTable(litlen);\n if (code < 0) {\n this.op = op;\n this.restore_();\n return -1;\n }\n\n if (code === 256) {\n break;\n }\n\n // literal\n if (code < 256) {\n if (op === olength) {\n output = this.expandBuffer();\n olength = output.length;\n }\n output[op++] = code;\n\n continue;\n }\n\n // length code\n ti = code - 257;\n codeLength = Zlib.RawInflateStream.LengthCodeTable[ti];\n if (Zlib.RawInflateStream.LengthExtraTable[ti] > 0) {\n bits = this.readBits(Zlib.RawInflateStream.LengthExtraTable[ti]);\n if (bits < 0) {\n this.op = op;\n this.restore_();\n return -1;\n }\n codeLength += bits;\n }\n\n // dist code\n code = this.readCodeByTable(dist);\n if (code < 0) {\n this.op = op;\n this.restore_();\n return -1;\n }\n codeDist = Zlib.RawInflateStream.DistCodeTable[code];\n if (Zlib.RawInflateStream.DistExtraTable[code] > 0) {\n bits = this.readBits(Zlib.RawInflateStream.DistExtraTable[code]);\n if (bits < 0) {\n this.op = op;\n this.restore_();\n return -1;\n }\n codeDist += bits;\n }\n\n // lz77 decode\n if (op + codeLength >= olength) {\n output = this.expandBuffer();\n olength = output.length;\n }\n\n while (codeLength--) {\n output[op] = output[(op++) - codeDist];\n }\n\n // break\n if (this.ip === this.input.length) {\n this.op = op;\n return -1;\n }\n }\n\n while (this.bitsbuflen >= 8) {\n this.bitsbuflen -= 8;\n this.ip--;\n }\n\n this.op = op;\n this.status = Zlib.RawInflateStream.Status.DECODE_BLOCK_END;\n};\n\n/**\n * expand output buffer. (dynamic)\n * @param {Object=} opt_param option parameters.\n * @return {!(Array|Uint8Array)} output buffer pointer.\n */\nZlib.RawInflateStream.prototype.expandBuffer = function(opt_param) {\n /** @type {!(Array|Uint8Array)} store buffer. */\n var buffer;\n /** @type {number} expantion ratio. */\n var ratio = (this.input.length / this.ip + 1) | 0;\n /** @type {number} maximum number of huffman code. */\n var maxHuffCode;\n /** @type {number} new output buffer size. */\n var newSize;\n /** @type {number} max inflate size. */\n var maxInflateSize;\n\n var input = this.input;\n var output = this.output;\n\n if (opt_param) {\n if (typeof opt_param.fixRatio === 'number') {\n ratio = opt_param.fixRatio;\n }\n if (typeof opt_param.addRatio === 'number') {\n ratio += opt_param.addRatio;\n }\n }\n\n // calculate new buffer size\n if (ratio < 2) {\n maxHuffCode =\n (input.length - this.ip) / this.litlenTable[2];\n maxInflateSize = (maxHuffCode / 2 * 258) | 0;\n newSize = maxInflateSize < output.length ?\n output.length + maxInflateSize :\n output.length << 1;\n } else {\n newSize = output.length * ratio;\n }\n\n // buffer expantion\n {\n buffer = new Uint8Array(newSize);\n buffer.set(output);\n }\n\n this.output = buffer;\n\n return this.output;\n};\n\n/**\n * concat output buffer. (dynamic)\n * @return {!(Array|Uint8Array)} output buffer.\n */\nZlib.RawInflateStream.prototype.concatBuffer = function() {\n /** @type {!(Array|Uint8Array)} output buffer. */\n var buffer;\n /** @type {number} */\n var op = this.op;\n /** @type {Uint8Array} */\n var tmp;\n\n if (this.resize) {\n {\n buffer = new Uint8Array(this.output.subarray(this.sp, op));\n }\n } else {\n buffer =\n this.output.subarray(this.sp, op) ;\n }\n\n this.sp = op;\n\n // compaction\n if (op > Zlib.RawInflateStream.MaxBackwardLength + this.bufferSize) {\n this.op = this.sp = Zlib.RawInflateStream.MaxBackwardLength;\n {\n tmp = /** @type {Uint8Array} */(this.output);\n this.output = new Uint8Array(this.bufferSize + Zlib.RawInflateStream.MaxBackwardLength);\n this.output.set(tmp.subarray(op - Zlib.RawInflateStream.MaxBackwardLength, op));\n }\n }\n\n return buffer;\n};\n\n\n/**\n * @constructor\n * @param {!(Uint8Array|Array)} input deflated buffer.\n * @param {Object=} opt_params option parameters.\n *\n * opt_params は以下のプロパティを指定する事ができます。\n * - index: input buffer の deflate コンテナの開始位置.\n * - blockSize: バッファのブロックサイズ.\n * - verify: 伸張が終わった後 adler-32 checksum の検証を行うか.\n * - bufferType: Zlib.Inflate.BufferType の値によってバッファの管理方法を指定する.\n * Zlib.Inflate.BufferType は Zlib.RawInflate.BufferType のエイリアス.\n */\nZlib.Inflate = function(input, opt_params) {\n /** @type {number} */\n var cmf;\n /** @type {number} */\n var flg;\n\n /** @type {!(Uint8Array|Array)} */\n this.input = input;\n /** @type {number} */\n this.ip = 0;\n /** @type {Zlib.RawInflate} */\n this.rawinflate;\n /** @type {(boolean|undefined)} verify flag. */\n this.verify;\n\n // option parameters\n if (opt_params || !(opt_params = {})) {\n if (opt_params['index']) {\n this.ip = opt_params['index'];\n }\n if (opt_params['verify']) {\n this.verify = opt_params['verify'];\n }\n }\n\n // Compression Method and Flags\n cmf = input[this.ip++];\n flg = input[this.ip++];\n\n // compression method\n switch (cmf & 0x0f) {\n case Zlib.CompressionMethod.DEFLATE:\n this.method = Zlib.CompressionMethod.DEFLATE;\n break;\n default:\n throw new Error('unsupported compression method');\n }\n\n // fcheck\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new Error('invalid fcheck flag:' + ((cmf << 8) + flg) % 31);\n }\n\n // fdict (not supported)\n if (flg & 0x20) {\n throw new Error('fdict flag is not supported');\n }\n\n // RawInflate\n this.rawinflate = new Zlib.RawInflate(input, {\n 'index': this.ip,\n 'bufferSize': opt_params['bufferSize'],\n 'bufferType': opt_params['bufferType'],\n 'resize': opt_params['resize']\n });\n};\n\n/**\n * @enum {number}\n */\nZlib.Inflate.BufferType = Zlib.RawInflate.BufferType;\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.Inflate.prototype.decompress = function() {\n /** @type {!(Array|Uint8Array)} input buffer. */\n var input = this.input;\n /** @type {!(Uint8Array|Array)} inflated buffer. */\n var buffer;\n /** @type {number} adler-32 checksum */\n var adler32;\n\n buffer = this.rawinflate.decompress();\n this.ip = this.rawinflate.ip;\n\n // verify adler-32\n if (this.verify) {\n adler32 = (\n input[this.ip++] << 24 | input[this.ip++] << 16 |\n input[this.ip++] << 8 | input[this.ip++]\n ) >>> 0;\n\n if (adler32 !== Zlib.Adler32(buffer)) {\n throw new Error('invalid adler-32 checksum');\n }\n }\n\n return buffer;\n};\n\n\n/* vim:set expandtab ts=2 sw=2 tw=80: */\n\n\n/**\n * @param {!(Uint8Array|Array)} input deflated buffer.\n * @constructor\n */\nZlib.InflateStream = function(input) {\n /** @type {!(Uint8Array|Array)} */\n this.input = input === void 0 ? new (Uint8Array )() : input;\n /** @type {number} */\n this.ip = 0;\n /** @type {Zlib.RawInflateStream} */\n this.rawinflate = new Zlib.RawInflateStream(this.input, this.ip);\n /** @type {Zlib.CompressionMethod} */\n this.method;\n /** @type {!(Array|Uint8Array)} */\n this.output = this.rawinflate.output;\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array|Array)} inflated buffer.\n */\nZlib.InflateStream.prototype.decompress = function(input) {\n /** @type {!(Uint8Array|Array)} inflated buffer. */\n var buffer;\n\n // 新しい入力を入力バッファに結合する\n // XXX Array, Uint8Array のチェックを行うか確認する\n if (input !== void 0) {\n {\n var tmp = new Uint8Array(this.input.length + input.length);\n tmp.set(this.input, 0);\n tmp.set(input, this.input.length);\n this.input = tmp;\n }\n }\n\n if (this.method === void 0) {\n if(this.readHeader() < 0) {\n return new (Uint8Array )();\n }\n }\n\n buffer = this.rawinflate.decompress(this.input, this.ip);\n if (this.rawinflate.ip !== 0) {\n this.input = this.input.subarray(this.rawinflate.ip) ;\n this.ip = 0;\n }\n\n // verify adler-32\n /*\n if (this.verify) {\n adler32 =\n input[this.ip++] << 24 | input[this.ip++] << 16 |\n input[this.ip++] << 8 | input[this.ip++];\n\n if (adler32 !== Zlib.Adler32(buffer)) {\n throw new Error('invalid adler-32 checksum');\n }\n }\n */\n\n return buffer;\n};\n\nZlib.InflateStream.prototype.readHeader = function() {\n var ip = this.ip;\n var input = this.input;\n\n // Compression Method and Flags\n var cmf = input[ip++];\n var flg = input[ip++];\n\n if (cmf === void 0 || flg === void 0) {\n return -1;\n }\n\n // compression method\n switch (cmf & 0x0f) {\n case Zlib.CompressionMethod.DEFLATE:\n this.method = Zlib.CompressionMethod.DEFLATE;\n break;\n default:\n throw new Error('unsupported compression method');\n }\n\n // fcheck\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new Error('invalid fcheck flag:' + ((cmf << 8) + flg) % 31);\n }\n\n // fdict (not supported)\n if (flg & 0x20) {\n throw new Error('fdict flag is not supported');\n }\n\n this.ip = ip;\n};\n\n\n/**\n * @fileoverview GZIP (RFC1952) 展開コンテナ実装.\n */\n\n/**\n * @constructor\n * @param {!(Array|Uint8Array)} input input buffer.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Gunzip = function(input, opt_params) {\n /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n this.input = input;\n /** @type {number} input buffer pointer. */\n this.ip = 0;\n /** @type {Array.<Zlib.GunzipMember>} */\n this.member = [];\n /** @type {boolean} */\n this.decompressed = false;\n};\n\n/**\n * @return {Array.<Zlib.GunzipMember>}\n */\nZlib.Gunzip.prototype.getMembers = function() {\n if (!this.decompressed) {\n this.decompress();\n }\n\n return this.member.slice();\n};\n\n/**\n * inflate gzip data.\n * @return {!(Array.<number>|Uint8Array)} inflated buffer.\n */\nZlib.Gunzip.prototype.decompress = function() {\n /** @type {number} input length. */\n var il = this.input.length;\n\n while (this.ip < il) {\n this.decodeMember();\n }\n\n this.decompressed = true;\n\n return this.concatMember();\n};\n\n/**\n * decode gzip member.\n */\nZlib.Gunzip.prototype.decodeMember = function() {\n /** @type {Zlib.GunzipMember} */\n var member = new Zlib.GunzipMember();\n /** @type {number} */\n var isize;\n /** @type {Zlib.RawInflate} RawInflate implementation. */\n var rawinflate;\n /** @type {!(Array.<number>|Uint8Array)} inflated data. */\n var inflated;\n /** @type {number} inflate size */\n var inflen;\n /** @type {number} character code */\n var c;\n /** @type {number} character index in string. */\n var ci;\n /** @type {Array.<string>} character array. */\n var str;\n /** @type {number} modification time. */\n var mtime;\n /** @type {number} */\n var crc32;\n\n var input = this.input;\n var ip = this.ip;\n\n member.id1 = input[ip++];\n member.id2 = input[ip++];\n\n // check signature\n if (member.id1 !== 0x1f || member.id2 !== 0x8b) {\n throw new Error('invalid file signature:' + member.id1 + ',' + member.id2);\n }\n\n // check compression method\n member.cm = input[ip++];\n switch (member.cm) {\n case 8: /* XXX: use Zlib const */\n break;\n default:\n throw new Error('unknown compression method: ' + member.cm);\n }\n\n // flags\n member.flg = input[ip++];\n\n // modification time\n mtime = (input[ip++]) |\n (input[ip++] << 8) |\n (input[ip++] << 16) |\n (input[ip++] << 24);\n member.mtime = new Date(mtime * 1000);\n\n // extra flags\n member.xfl = input[ip++];\n\n // operating system\n member.os = input[ip++];\n\n // extra\n if ((member.flg & Zlib.Gzip.FlagsMask.FEXTRA) > 0) {\n member.xlen = input[ip++] | (input[ip++] << 8);\n ip = this.decodeSubField(ip, member.xlen);\n }\n\n // fname\n if ((member.flg & Zlib.Gzip.FlagsMask.FNAME) > 0) {\n for(str = [], ci = 0; (c = input[ip++]) > 0;) {\n str[ci++] = String.fromCharCode(c);\n }\n member.name = str.join('');\n }\n\n // fcomment\n if ((member.flg & Zlib.Gzip.FlagsMask.FCOMMENT) > 0) {\n for(str = [], ci = 0; (c = input[ip++]) > 0;) {\n str[ci++] = String.fromCharCode(c);\n }\n member.comment = str.join('');\n }\n\n // fhcrc\n if ((member.flg & Zlib.Gzip.FlagsMask.FHCRC) > 0) {\n member.crc16 = Zlib.CRC32.calc(input, 0, ip) & 0xffff;\n if (member.crc16 !== (input[ip++] | (input[ip++] << 8))) {\n throw new Error('invalid header crc16');\n }\n }\n\n // isize を事前に取得すると展開後のサイズが分かるため、\n // inflate処理のバッファサイズが事前に分かり、高速になる\n isize = (input[input.length - 4]) | (input[input.length - 3] << 8) |\n (input[input.length - 2] << 16) | (input[input.length - 1] << 24);\n\n // isize の妥当性チェック\n // ハフマン符号では最小 2-bit のため、最大で 1/4 になる\n // LZ77 符号では 長さと距離 2-Byte で最大 258-Byte を表現できるため、\n // 1/128 になるとする\n // ここから入力バッファの残りが isize の 512 倍以上だったら\n // サイズ指定のバッファ確保は行わない事とする\n if (input.length - ip - /* CRC-32 */4 - /* ISIZE */4 < isize * 512) {\n inflen = isize;\n }\n\n // compressed block\n rawinflate = new Zlib.RawInflate(input, {'index': ip, 'bufferSize': inflen});\n member.data = inflated = rawinflate.decompress();\n ip = rawinflate.ip;\n\n // crc32\n member.crc32 = crc32 =\n ((input[ip++]) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)) >>> 0;\n if (Zlib.CRC32.calc(inflated) !== crc32) {\n throw new Error('invalid CRC-32 checksum: 0x' +\n Zlib.CRC32.calc(inflated).toString(16) + ' / 0x' + crc32.toString(16));\n }\n\n // input size\n member.isize = isize =\n ((input[ip++]) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)) >>> 0;\n if ((inflated.length & 0xffffffff) !== isize) {\n throw new Error('invalid input size: ' +\n (inflated.length & 0xffffffff) + ' / ' + isize);\n }\n\n this.member.push(member);\n this.ip = ip;\n};\n\n/**\n * サブフィールドのデコード\n * XXX: 現在は何もせずスキップする\n */\nZlib.Gunzip.prototype.decodeSubField = function(ip, length) {\n return ip + length;\n};\n\n/**\n * @return {!(Array.<number>|Uint8Array)}\n */\nZlib.Gunzip.prototype.concatMember = function() {\n /** @type {Array.<Zlib.GunzipMember>} */\n var member = this.member;\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n /** @type {number} */\n var p = 0;\n /** @type {number} */\n var size = 0;\n /** @type {!(Array.<number>|Uint8Array)} */\n var buffer;\n\n for (i = 0, il = member.length; i < il; ++i) {\n size += member[i].data.length;\n }\n\n {\n buffer = new Uint8Array(size);\n for (i = 0; i < il; ++i) {\n buffer.set(member[i].data, p);\n p += member[i].data.length;\n }\n }\n\n return buffer;\n};\n\n\n\n/**\n * @constructor\n */\nZlib.GunzipMember = function() {\n /** @type {number} signature first byte. */\n this.id1;\n /** @type {number} signature second byte. */\n this.id2;\n /** @type {number} compression method. */\n this.cm;\n /** @type {number} flags. */\n this.flg;\n /** @type {Date} modification time. */\n this.mtime;\n /** @type {number} extra flags. */\n this.xfl;\n /** @type {number} operating system number. */\n this.os;\n /** @type {number} CRC-16 value for FHCRC flag. */\n this.crc16;\n /** @type {number} extra length. */\n this.xlen;\n /** @type {number} CRC-32 value for verification. */\n this.crc32;\n /** @type {number} input size modulo 32 value. */\n this.isize;\n /** @type {string} filename. */\n this.name;\n /** @type {string} comment. */\n this.comment;\n /** @type {!(Uint8Array|Array.<number>)} */\n this.data;\n};\n\nZlib.GunzipMember.prototype.getName = function() {\n return this.name;\n};\n\nZlib.GunzipMember.prototype.getData = function() {\n return this.data;\n};\n\nZlib.GunzipMember.prototype.getMtime = function() {\n return this.mtime;\n};\n\n/**\n * @fileoverview GZIP (RFC1952) 実装.\n */\n\n/**\n * @constructor\n * @param {!(Array|Uint8Array)} input input buffer.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Gzip = function(input, opt_params) {\n /** @type {!(Array.<number>|Uint8Array)} input buffer. */\n this.input = input;\n /** @type {number} input buffer pointer. */\n this.ip = 0;\n /** @type {!(Array.<number>|Uint8Array)} output buffer. */\n this.output;\n /** @type {number} output buffer. */\n this.op = 0;\n /** @type {!Object} flags option flags. */\n this.flags = {};\n /** @type {!string} filename. */\n this.filename;\n /** @type {!string} comment. */\n this.comment;\n /** @type {!Object} deflate options. */\n this.deflateOptions;\n\n // option parameters\n if (opt_params) {\n if (opt_params['flags']) {\n this.flags = opt_params['flags'];\n }\n if (typeof opt_params['filename'] === 'string') {\n this.filename = opt_params['filename'];\n }\n if (typeof opt_params['comment'] === 'string') {\n this.comment = opt_params['comment'];\n }\n if (opt_params['deflateOptions']) {\n this.deflateOptions = opt_params['deflateOptions'];\n }\n }\n\n if (!this.deflateOptions) {\n this.deflateOptions = {};\n }\n};\n\n/**\n * @type {number}\n * @const\n */\nZlib.Gzip.DefaultBufferSize = 0x8000;\n\n/**\n * encode gzip members.\n * @return {!(Array|Uint8Array)} gzip binary array.\n */\nZlib.Gzip.prototype.compress = function() {\n /** @type {number} flags. */\n var flg;\n /** @type {number} modification time. */\n var mtime;\n /** @type {number} CRC-16 value for FHCRC flag. */\n var crc16;\n /** @type {number} CRC-32 value for verification. */\n var crc32;\n /** @type {!Zlib.RawDeflate} raw deflate object. */\n var rawdeflate;\n /** @type {number} character code */\n var c;\n /** @type {number} loop counter. */\n var i;\n /** @type {number} loop limiter. */\n var il;\n /** @type {!(Array|Uint8Array)} output buffer. */\n var output =\n new (Uint8Array )(Zlib.Gzip.DefaultBufferSize);\n /** @type {number} output buffer pointer. */\n var op = 0;\n\n var input = this.input;\n var ip = this.ip;\n var filename = this.filename;\n var comment = this.comment;\n\n // check signature\n output[op++] = 0x1f;\n output[op++] = 0x8b;\n\n // check compression method\n output[op++] = 8; /* XXX: use Zlib const */\n\n // flags\n flg = 0;\n if (this.flags['fname']) flg |= Zlib.Gzip.FlagsMask.FNAME;\n if (this.flags['fcomment']) flg |= Zlib.Gzip.FlagsMask.FCOMMENT;\n if (this.flags['fhcrc']) flg |= Zlib.Gzip.FlagsMask.FHCRC;\n // XXX: FTEXT\n // XXX: FEXTRA\n output[op++] = flg;\n\n // modification time\n mtime = (Date.now ? Date.now() : +new Date()) / 1000 | 0;\n output[op++] = mtime & 0xff;\n output[op++] = mtime >>> 8 & 0xff;\n output[op++] = mtime >>> 16 & 0xff;\n output[op++] = mtime >>> 24 & 0xff;\n\n // extra flags\n output[op++] = 0;\n\n // operating system\n output[op++] = Zlib.Gzip.OperatingSystem.UNKNOWN;\n\n // extra\n /* NOP */\n\n // fname\n if (this.flags['fname'] !== void 0) {\n for (i = 0, il = filename.length; i < il; ++i) {\n c = filename.charCodeAt(i);\n if (c > 0xff) { output[op++] = (c >>> 8) & 0xff; }\n output[op++] = c & 0xff;\n }\n output[op++] = 0; // null termination\n }\n\n // fcomment\n if (this.flags['comment']) {\n for (i = 0, il = comment.length; i < il; ++i) {\n c = comment.charCodeAt(i);\n if (c > 0xff) { output[op++] = (c >>> 8) & 0xff; }\n output[op++] = c & 0xff;\n }\n output[op++] = 0; // null termination\n }\n\n // fhcrc\n if (this.flags['fhcrc']) {\n crc16 = Zlib.CRC32.calc(output, 0, op) & 0xffff;\n output[op++] = (crc16 ) & 0xff;\n output[op++] = (crc16 >>> 8) & 0xff;\n }\n\n // add compress option\n this.deflateOptions['outputBuffer'] = output;\n this.deflateOptions['outputIndex'] = op;\n\n // compress\n rawdeflate = new Zlib.RawDeflate(input, this.deflateOptions);\n output = rawdeflate.compress();\n op = rawdeflate.op;\n\n // expand buffer\n {\n if (op + 8 > output.buffer.byteLength) {\n this.output = new Uint8Array(op + 8);\n this.output.set(new Uint8Array(output.buffer));\n output = this.output;\n } else {\n output = new Uint8Array(output.buffer);\n }\n }\n\n // crc32\n crc32 = Zlib.CRC32.calc(input);\n output[op++] = (crc32 ) & 0xff;\n output[op++] = (crc32 >>> 8) & 0xff;\n output[op++] = (crc32 >>> 16) & 0xff;\n output[op++] = (crc32 >>> 24) & 0xff;\n\n // input size\n il = input.length;\n output[op++] = (il ) & 0xff;\n output[op++] = (il >>> 8) & 0xff;\n output[op++] = (il >>> 16) & 0xff;\n output[op++] = (il >>> 24) & 0xff;\n\n this.ip = ip;\n\n if (op < output.length) {\n this.output = output = output.subarray(0, op);\n }\n\n return output;\n};\n\n/** @enum {number} */\nZlib.Gzip.OperatingSystem = {\n FAT: 0,\n AMIGA: 1,\n VMS: 2,\n UNIX: 3,\n VM_CMS: 4,\n ATARI_TOS: 5,\n HPFS: 6,\n MACINTOSH: 7,\n Z_SYSTEM: 8,\n CP_M: 9,\n TOPS_20: 10,\n NTFS: 11,\n QDOS: 12,\n ACORN_RISCOS: 13,\n UNKNOWN: 255\n};\n\n/** @enum {number} */\nZlib.Gzip.FlagsMask = {\n FTEXT: 0x01,\n FHCRC: 0x02,\n FEXTRA: 0x04,\n FNAME: 0x08,\n FCOMMENT: 0x10\n};\n\n\n/**\n * @fileoverview Heap Sort 実装. ハフマン符号化で使用する.\n */\n\n/**\n * カスタムハフマン符号で使用するヒープ実装\n * @param {number} length ヒープサイズ.\n * @constructor\n */\nZlib.Heap = function(length) {\n this.buffer = new (Uint16Array )(length * 2);\n this.length = 0;\n};\n\n/**\n * 親ノードの index 取得\n * @param {number} index 子ノードの index.\n * @return {number} 親ノードの index.\n *\n */\nZlib.Heap.prototype.getParent = function(index) {\n return ((index - 2) / 4 | 0) * 2;\n};\n\n/**\n * 子ノードの index 取得\n * @param {number} index 親ノードの index.\n * @return {number} 子ノードの index.\n */\nZlib.Heap.prototype.getChild = function(index) {\n return 2 * index + 2;\n};\n\n/**\n * Heap に値を追加する\n * @param {number} index キー index.\n * @param {number} value 値.\n * @return {number} 現在のヒープ長.\n */\nZlib.Heap.prototype.push = function(index, value) {\n var current, parent,\n heap = this.buffer,\n swap;\n\n current = this.length;\n heap[this.length++] = value;\n heap[this.length++] = index;\n\n // ルートノードにたどり着くまで入れ替えを試みる\n while (current > 0) {\n parent = this.getParent(current);\n\n // 親ノードと比較して親の方が小さければ入れ替える\n if (heap[current] > heap[parent]) {\n swap = heap[current];\n heap[current] = heap[parent];\n heap[parent] = swap;\n\n swap = heap[current + 1];\n heap[current + 1] = heap[parent + 1];\n heap[parent + 1] = swap;\n\n current = parent;\n // 入れ替えが必要なくなったらそこで抜ける\n } else {\n break;\n }\n }\n\n return this.length;\n};\n\n/**\n * Heapから一番大きい値を返す\n * @return {{index: number, value: number, length: number}} {index: キーindex,\n * value: 値, length: ヒープ長} の Object.\n */\nZlib.Heap.prototype.pop = function() {\n var index, value,\n heap = this.buffer, swap,\n current, parent;\n\n value = heap[0];\n index = heap[1];\n\n // 後ろから値を取る\n this.length -= 2;\n heap[0] = heap[this.length];\n heap[1] = heap[this.length + 1];\n\n parent = 0;\n // ルートノードから下がっていく\n while (true) {\n current = this.getChild(parent);\n\n // 範囲チェック\n if (current >= this.length) {\n break;\n }\n\n // 隣のノードと比較して、隣の方が値が大きければ隣を現在ノードとして選択\n if (current + 2 < this.length && heap[current + 2] > heap[current]) {\n current += 2;\n }\n\n // 親ノードと比較して親の方が小さい場合は入れ替える\n if (heap[current] > heap[parent]) {\n swap = heap[parent];\n heap[parent] = heap[current];\n heap[current] = swap;\n\n swap = heap[parent + 1];\n heap[parent + 1] = heap[current + 1];\n heap[current + 1] = swap;\n } else {\n break;\n }\n\n parent = current;\n }\n\n return {index: index, value: value, length: this.length};\n};\n\n\n/* vim:set expandtab ts=2 sw=2 tw=80: */\n\n/**\n * @fileoverview Deflate (RFC1951) 符号化アルゴリズム実装.\n */\n\n\n/**\n * Raw Deflate 実装\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} input 符号化する対象のバッファ.\n * @param {Object=} opt_params option parameters.\n *\n * typed array が使用可能なとき、outputBuffer が Array は自動的に Uint8Array に\n * 変換されます.\n * 別のオブジェクトになるため出力バッファを参照している変数などは\n * 更新する必要があります.\n */\nZlib.RawDeflate = function(input, opt_params) {\n /** @type {Zlib.RawDeflate.CompressionType} */\n this.compressionType = Zlib.RawDeflate.CompressionType.DYNAMIC;\n /** @type {number} */\n this.lazy = 0;\n /** @type {!(Array.<number>|Uint32Array)} */\n this.freqsLitLen;\n /** @type {!(Array.<number>|Uint32Array)} */\n this.freqsDist;\n /** @type {!(Array.<number>|Uint8Array)} */\n this.input =\n (input instanceof Array) ? new Uint8Array(input) : input;\n /** @type {!(Array.<number>|Uint8Array)} output output buffer. */\n this.output;\n /** @type {number} pos output buffer position. */\n this.op = 0;\n\n // option parameters\n if (opt_params) {\n if (opt_params['lazy']) {\n this.lazy = opt_params['lazy'];\n }\n if (typeof opt_params['compressionType'] === 'number') {\n this.compressionType = opt_params['compressionType'];\n }\n if (opt_params['outputBuffer']) {\n this.output =\n (opt_params['outputBuffer'] instanceof Array) ?\n new Uint8Array(opt_params['outputBuffer']) : opt_params['outputBuffer'];\n }\n if (typeof opt_params['outputIndex'] === 'number') {\n this.op = opt_params['outputIndex'];\n }\n }\n\n if (!this.output) {\n this.output = new (Uint8Array )(0x8000);\n }\n};\n\n/**\n * @enum {number}\n */\nZlib.RawDeflate.CompressionType = {\n NONE: 0,\n FIXED: 1,\n DYNAMIC: 2,\n RESERVED: 3\n};\n\n\n/**\n * LZ77 の最小マッチ長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.Lz77MinLength = 3;\n\n/**\n * LZ77 の最大マッチ長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.Lz77MaxLength = 258;\n\n/**\n * LZ77 のウィンドウサイズ\n * @const\n * @type {number}\n */\nZlib.RawDeflate.WindowSize = 0x8000;\n\n/**\n * 最長の符号長\n * @const\n * @type {number}\n */\nZlib.RawDeflate.MaxCodeLength = 16;\n\n/**\n * ハフマン符号の最大数値\n * @const\n * @type {number}\n */\nZlib.RawDeflate.HUFMAX = 286;\n\n/**\n * 固定ハフマン符号の符号化テーブル\n * @const\n * @type {Array.<Array.<number, number>>}\n */\nZlib.RawDeflate.FixedHuffmanTable = (function() {\n var table = [], i;\n\n for (i = 0; i < 288; i++) {\n switch (true) {\n case (i <= 143): table.push([i + 0x030, 8]); break;\n case (i <= 255): table.push([i - 144 + 0x190, 9]); break;\n case (i <= 279): table.push([i - 256 + 0x000, 7]); break;\n case (i <= 287): table.push([i - 280 + 0x0C0, 8]); break;\n default:\n throw 'invalid literal: ' + i;\n }\n }\n\n return table;\n})();\n\n/**\n * DEFLATE ブロックの作成\n * @return {!(Array.<number>|Uint8Array)} 圧縮済み byte array.\n */\nZlib.RawDeflate.prototype.compress = function() {\n /** @type {!(Array.<number>|Uint8Array)} */\n var blockArray;\n /** @type {number} */\n var position;\n /** @type {number} */\n var length;\n\n var input = this.input;\n\n // compression\n switch (this.compressionType) {\n case Zlib.RawDeflate.CompressionType.NONE:\n // each 65535-Byte (length header: 16-bit)\n for (position = 0, length = input.length; position < length;) {\n blockArray = input.subarray(position, position + 0xffff) ;\n position += blockArray.length;\n this.makeNocompressBlock(blockArray, (position === length));\n }\n break;\n case Zlib.RawDeflate.CompressionType.FIXED:\n this.output = this.makeFixedHuffmanBlock(input, true);\n this.op = this.output.length;\n break;\n case Zlib.RawDeflate.CompressionType.DYNAMIC:\n this.output = this.makeDynamicHuffmanBlock(input, true);\n this.op = this.output.length;\n break;\n default:\n throw 'invalid compression type';\n }\n\n return this.output;\n};\n\n/**\n * 非圧縮ブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 非圧縮ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeNocompressBlock =\nfunction(blockArray, isFinalBlock) {\n /** @type {number} */\n var bfinal;\n /** @type {Zlib.RawDeflate.CompressionType} */\n var btype;\n /** @type {number} */\n var len;\n /** @type {number} */\n var nlen;\n\n var output = this.output;\n var op = this.op;\n\n // expand buffer\n {\n output = new Uint8Array(this.output.buffer);\n while (output.length <= op + blockArray.length + 5) {\n output = new Uint8Array(output.length << 1);\n }\n output.set(this.output);\n }\n\n // header\n bfinal = isFinalBlock ? 1 : 0;\n btype = Zlib.RawDeflate.CompressionType.NONE;\n output[op++] = (bfinal) | (btype << 1);\n\n // length\n len = blockArray.length;\n nlen = (~len + 0x10000) & 0xffff;\n output[op++] = len & 0xff;\n output[op++] = (len >>> 8) & 0xff;\n output[op++] = nlen & 0xff;\n output[op++] = (nlen >>> 8) & 0xff;\n\n // copy buffer\n {\n output.set(blockArray, op);\n op += blockArray.length;\n output = output.subarray(0, op);\n }\n\n this.op = op;\n this.output = output;\n\n return output;\n};\n\n/**\n * 固定ハフマンブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 固定ハフマン符号化ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeFixedHuffmanBlock =\nfunction(blockArray, isFinalBlock) {\n /** @type {Zlib.BitStream} */\n var stream = new Zlib.BitStream(new Uint8Array(this.output.buffer) , this.op);\n /** @type {number} */\n var bfinal;\n /** @type {Zlib.RawDeflate.CompressionType} */\n var btype;\n /** @type {!(Array.<number>|Uint16Array)} */\n var data;\n\n // header\n bfinal = isFinalBlock ? 1 : 0;\n btype = Zlib.RawDeflate.CompressionType.FIXED;\n\n stream.writeBits(bfinal, 1, true);\n stream.writeBits(btype, 2, true);\n\n data = this.lz77(blockArray);\n this.fixedHuffman(data, stream);\n\n return stream.finish();\n};\n\n/**\n * 動的ハフマンブロックの作成\n * @param {!(Array.<number>|Uint8Array)} blockArray ブロックデータ byte array.\n * @param {!boolean} isFinalBlock 最後のブロックならばtrue.\n * @return {!(Array.<number>|Uint8Array)} 動的ハフマン符号ブロック byte array.\n */\nZlib.RawDeflate.prototype.makeDynamicHuffmanBlock =\nfunction(blockArray, isFinalBlock) {\n /** @type {Zlib.BitStream} */\n var stream = new Zlib.BitStream(new Uint8Array(this.output.buffer) , this.op);\n /** @type {number} */\n var bfinal;\n /** @type {Zlib.RawDeflate.CompressionType} */\n var btype;\n /** @type {!(Array.<number>|Uint16Array)} */\n var data;\n /** @type {number} */\n var hlit;\n /** @type {number} */\n var hdist;\n /** @type {number} */\n var hclen;\n /** @const @type {Array.<number>} */\n var hclenOrder =\n [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /** @type {!(Array.<number>|Uint8Array)} */\n var litLenLengths;\n /** @type {!(Array.<number>|Uint16Array)} */\n var litLenCodes;\n /** @type {!(Array.<number>|Uint8Array)} */\n var distLengths;\n /** @type {!(Array.<number>|Uint16Array)} */\n var distCodes;\n /** @type {{\n * codes: !(Array.<number>|Uint32Array),\n * freqs: !(Array.<number>|Uint8Array)\n * }} */\n var treeSymbols;\n /** @type {!(Array.<number>|Uint8Array)} */\n var treeLengths;\n /** @type {Array} */\n var transLengths = new Array(19);\n /** @type {!(Array.<number>|Uint16Array)} */\n var treeCodes;\n /** @type {number} */\n var code;\n /** @type {number} */\n var bitlen;\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n // header\n bfinal = isFinalBlock ? 1 : 0;\n btype = Zlib.RawDeflate.CompressionType.DYNAMIC;\n\n stream.writeBits(bfinal, 1, true);\n stream.writeBits(btype, 2, true);\n\n data = this.lz77(blockArray);\n\n // リテラル・長さ, 距離のハフマン符号と符号長の算出\n litLenLengths = this.getLengths_(this.freqsLitLen, 15);\n litLenCodes = this.getCodesFromLengths_(litLenLengths);\n distLengths = this.getLengths_(this.freqsDist, 7);\n distCodes = this.getCodesFromLengths_(distLengths);\n\n // HLIT, HDIST の決定\n for (hlit = 286; hlit > 257 && litLenLengths[hlit - 1] === 0; hlit--) {}\n for (hdist = 30; hdist > 1 && distLengths[hdist - 1] === 0; hdist--) {}\n\n // HCLEN\n treeSymbols =\n this.getTreeSymbols_(hlit, litLenLengths, hdist, distLengths);\n treeLengths = this.getLengths_(treeSymbols.freqs, 7);\n for (i = 0; i < 19; i++) {\n transLengths[i] = treeLengths[hclenOrder[i]];\n }\n for (hclen = 19; hclen > 4 && transLengths[hclen - 1] === 0; hclen--) {}\n\n treeCodes = this.getCodesFromLengths_(treeLengths);\n\n // 出力\n stream.writeBits(hlit - 257, 5, true);\n stream.writeBits(hdist - 1, 5, true);\n stream.writeBits(hclen - 4, 4, true);\n for (i = 0; i < hclen; i++) {\n stream.writeBits(transLengths[i], 3, true);\n }\n\n // ツリーの出力\n for (i = 0, il = treeSymbols.codes.length; i < il; i++) {\n code = treeSymbols.codes[i];\n\n stream.writeBits(treeCodes[code], treeLengths[code], true);\n\n // extra bits\n if (code >= 16) {\n i++;\n switch (code) {\n case 16: bitlen = 2; break;\n case 17: bitlen = 3; break;\n case 18: bitlen = 7; break;\n default:\n throw 'invalid code: ' + code;\n }\n\n stream.writeBits(treeSymbols.codes[i], bitlen, true);\n }\n }\n\n this.dynamicHuffman(\n data,\n [litLenCodes, litLenLengths],\n [distCodes, distLengths],\n stream\n );\n\n return stream.finish();\n};\n\n\n/**\n * 動的ハフマン符号化(カスタムハフマンテーブル)\n * @param {!(Array.<number>|Uint16Array)} dataArray LZ77 符号化済み byte array.\n * @param {!Zlib.BitStream} stream 書き込み用ビットストリーム.\n * @return {!Zlib.BitStream} ハフマン符号化済みビットストリームオブジェクト.\n */\nZlib.RawDeflate.prototype.dynamicHuffman =\nfunction(dataArray, litLen, dist, stream) {\n /** @type {number} */\n var index;\n /** @type {number} */\n var length;\n /** @type {number} */\n var literal;\n /** @type {number} */\n var code;\n /** @type {number} */\n var litLenCodes;\n /** @type {number} */\n var litLenLengths;\n /** @type {number} */\n var distCodes;\n /** @type {number} */\n var distLengths;\n\n litLenCodes = litLen[0];\n litLenLengths = litLen[1];\n distCodes = dist[0];\n distLengths = dist[1];\n\n // 符号を BitStream に書き込んでいく\n for (index = 0, length = dataArray.length; index < length; ++index) {\n literal = dataArray[index];\n\n // literal or length\n stream.writeBits(litLenCodes[literal], litLenLengths[literal], true);\n\n // 長さ・距離符号\n if (literal > 256) {\n // length extra\n stream.writeBits(dataArray[++index], dataArray[++index], true);\n // distance\n code = dataArray[++index];\n stream.writeBits(distCodes[code], distLengths[code], true);\n // distance extra\n stream.writeBits(dataArray[++index], dataArray[++index], true);\n // 終端\n } else if (literal === 256) {\n break;\n }\n }\n\n return stream;\n};\n\n/**\n * 固定ハフマン符号化\n * @param {!(Array.<number>|Uint16Array)} dataArray LZ77 符号化済み byte array.\n * @param {!Zlib.BitStream} stream 書き込み用ビットストリーム.\n * @return {!Zlib.BitStream} ハフマン符号化済みビットストリームオブジェクト.\n */\nZlib.RawDeflate.prototype.fixedHuffman = function(dataArray, stream) {\n /** @type {number} */\n var index;\n /** @type {number} */\n var length;\n /** @type {number} */\n var literal;\n\n // 符号を BitStream に書き込んでいく\n for (index = 0, length = dataArray.length; index < length; index++) {\n literal = dataArray[index];\n\n // 符号の書き込み\n Zlib.BitStream.prototype.writeBits.apply(\n stream,\n Zlib.RawDeflate.FixedHuffmanTable[literal]\n );\n\n // 長さ・距離符号\n if (literal > 0x100) {\n // length extra\n stream.writeBits(dataArray[++index], dataArray[++index], true);\n // distance\n stream.writeBits(dataArray[++index], 5);\n // distance extra\n stream.writeBits(dataArray[++index], dataArray[++index], true);\n // 終端\n } else if (literal === 0x100) {\n break;\n }\n }\n\n return stream;\n};\n\n/**\n * マッチ情報\n * @param {!number} length マッチした長さ.\n * @param {!number} backwardDistance マッチ位置との距離.\n * @constructor\n */\nZlib.RawDeflate.Lz77Match = function(length, backwardDistance) {\n /** @type {number} match length. */\n this.length = length;\n /** @type {number} backward distance. */\n this.backwardDistance = backwardDistance;\n};\n\n/**\n * 長さ符号テーブル.\n * [コード, 拡張ビット, 拡張ビット長] の配列となっている.\n * @const\n * @type {!(Array.<number>|Uint32Array)}\n */\nZlib.RawDeflate.Lz77Match.LengthCodeTable = (function(table) {\n return new Uint32Array(table) ;\n})((function() {\n /** @type {!Array} */\n var table = [];\n /** @type {number} */\n var i;\n /** @type {!Array.<number>} */\n var c;\n\n for (i = 3; i <= 258; i++) {\n c = code(i);\n table[i] = (c[2] << 24) | (c[1] << 16) | c[0];\n }\n\n /**\n * @param {number} length lz77 length.\n * @return {!Array.<number>} lz77 codes.\n */\n function code(length) {\n switch (true) {\n case (length === 3): return [257, length - 3, 0]; case (length === 4): return [258, length - 4, 0]; case (length === 5): return [259, length - 5, 0]; case (length === 6): return [260, length - 6, 0]; case (length === 7): return [261, length - 7, 0]; case (length === 8): return [262, length - 8, 0]; case (length === 9): return [263, length - 9, 0]; case (length === 10): return [264, length - 10, 0]; case (length <= 12): return [265, length - 11, 1]; case (length <= 14): return [266, length - 13, 1]; case (length <= 16): return [267, length - 15, 1]; case (length <= 18): return [268, length - 17, 1]; case (length <= 22): return [269, length - 19, 2]; case (length <= 26): return [270, length - 23, 2]; case (length <= 30): return [271, length - 27, 2]; case (length <= 34): return [272, length - 31, 2]; case (length <= 42): return [273, length - 35, 3]; case (length <= 50): return [274, length - 43, 3]; case (length <= 58): return [275, length - 51, 3]; case (length <= 66): return [276, length - 59, 3]; case (length <= 82): return [277, length - 67, 4]; case (length <= 98): return [278, length - 83, 4]; case (length <= 114): return [279, length - 99, 4]; case (length <= 130): return [280, length - 115, 4]; case (length <= 162): return [281, length - 131, 5]; case (length <= 194): return [282, length - 163, 5]; case (length <= 226): return [283, length - 195, 5]; case (length <= 257): return [284, length - 227, 5]; case (length === 258): return [285, length - 258, 0]; default: throw 'invalid length: ' + length;\n }\n }\n\n return table;\n})());\n\n/**\n * 距離符号テーブル\n * @param {!number} dist 距離.\n * @return {!Array.<number>} コード、拡張ビット、拡張ビット長の配列.\n * @private\n */\nZlib.RawDeflate.Lz77Match.prototype.getDistanceCode_ = function(dist) {\n /** @type {!Array.<number>} distance code table. */\n var r;\n\n switch (true) {\n case (dist === 1): r = [0, dist - 1, 0]; break;\n case (dist === 2): r = [1, dist - 2, 0]; break;\n case (dist === 3): r = [2, dist - 3, 0]; break;\n case (dist === 4): r = [3, dist - 4, 0]; break;\n case (dist <= 6): r = [4, dist - 5, 1]; break;\n case (dist <= 8): r = [5, dist - 7, 1]; break;\n case (dist <= 12): r = [6, dist - 9, 2]; break;\n case (dist <= 16): r = [7, dist - 13, 2]; break;\n case (dist <= 24): r = [8, dist - 17, 3]; break;\n case (dist <= 32): r = [9, dist - 25, 3]; break;\n case (dist <= 48): r = [10, dist - 33, 4]; break;\n case (dist <= 64): r = [11, dist - 49, 4]; break;\n case (dist <= 96): r = [12, dist - 65, 5]; break;\n case (dist <= 128): r = [13, dist - 97, 5]; break;\n case (dist <= 192): r = [14, dist - 129, 6]; break;\n case (dist <= 256): r = [15, dist - 193, 6]; break;\n case (dist <= 384): r = [16, dist - 257, 7]; break;\n case (dist <= 512): r = [17, dist - 385, 7]; break;\n case (dist <= 768): r = [18, dist - 513, 8]; break;\n case (dist <= 1024): r = [19, dist - 769, 8]; break;\n case (dist <= 1536): r = [20, dist - 1025, 9]; break;\n case (dist <= 2048): r = [21, dist - 1537, 9]; break;\n case (dist <= 3072): r = [22, dist - 2049, 10]; break;\n case (dist <= 4096): r = [23, dist - 3073, 10]; break;\n case (dist <= 6144): r = [24, dist - 4097, 11]; break;\n case (dist <= 8192): r = [25, dist - 6145, 11]; break;\n case (dist <= 12288): r = [26, dist - 8193, 12]; break;\n case (dist <= 16384): r = [27, dist - 12289, 12]; break;\n case (dist <= 24576): r = [28, dist - 16385, 13]; break;\n case (dist <= 32768): r = [29, dist - 24577, 13]; break;\n default: throw 'invalid distance';\n }\n\n return r;\n};\n\n/**\n * マッチ情報を LZ77 符号化配列で返す.\n * なお、ここでは以下の内部仕様で符号化している\n * [ CODE, EXTRA-BIT-LEN, EXTRA, CODE, EXTRA-BIT-LEN, EXTRA ]\n * @return {!Array.<number>} LZ77 符号化 byte array.\n */\nZlib.RawDeflate.Lz77Match.prototype.toLz77Array = function() {\n /** @type {number} */\n var length = this.length;\n /** @type {number} */\n var dist = this.backwardDistance;\n /** @type {Array} */\n var codeArray = [];\n /** @type {number} */\n var pos = 0;\n /** @type {!Array.<number>} */\n var code;\n\n // length\n code = Zlib.RawDeflate.Lz77Match.LengthCodeTable[length];\n codeArray[pos++] = code & 0xffff;\n codeArray[pos++] = (code >> 16) & 0xff;\n codeArray[pos++] = code >> 24;\n\n // distance\n code = this.getDistanceCode_(dist);\n codeArray[pos++] = code[0];\n codeArray[pos++] = code[1];\n codeArray[pos++] = code[2];\n\n return codeArray;\n};\n\n/**\n * LZ77 実装\n * @param {!(Array.<number>|Uint8Array)} dataArray LZ77 符号化するバイト配列.\n * @return {!(Array.<number>|Uint16Array)} LZ77 符号化した配列.\n */\nZlib.RawDeflate.prototype.lz77 = function(dataArray) {\n /** @type {number} input position */\n var position;\n /** @type {number} input length */\n var length;\n /** @type {number} loop counter */\n var i;\n /** @type {number} loop limiter */\n var il;\n /** @type {number} chained-hash-table key */\n var matchKey;\n /** @type {Object.<number, Array.<number>>} chained-hash-table */\n var table = {};\n /** @const @type {number} */\n var windowSize = Zlib.RawDeflate.WindowSize;\n /** @type {Array.<number>} match list */\n var matchList;\n /** @type {Zlib.RawDeflate.Lz77Match} longest match */\n var longestMatch;\n /** @type {Zlib.RawDeflate.Lz77Match} previous longest match */\n var prevMatch;\n /** @type {!(Array.<number>|Uint16Array)} lz77 buffer */\n var lz77buf = new Uint16Array(dataArray.length * 2) ;\n /** @type {number} lz77 output buffer pointer */\n var pos = 0;\n /** @type {number} lz77 skip length */\n var skipLength = 0;\n /** @type {!(Array.<number>|Uint32Array)} */\n var freqsLitLen = new (Uint32Array )(286);\n /** @type {!(Array.<number>|Uint32Array)} */\n var freqsDist = new (Uint32Array )(30);\n /** @type {number} */\n var lazy = this.lazy;\n /** @type {*} temporary variable */\n var tmp;\n freqsLitLen[256] = 1; // EOB の最低出現回数は 1\n\n /**\n * マッチデータの書き込み\n * @param {Zlib.RawDeflate.Lz77Match} match LZ77 Match data.\n * @param {!number} offset スキップ開始位置(相対指定).\n * @private\n */\n function writeMatch(match, offset) {\n /** @type {Array.<number>} */\n var lz77Array = match.toLz77Array();\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n for (i = 0, il = lz77Array.length; i < il; ++i) {\n lz77buf[pos++] = lz77Array[i];\n }\n freqsLitLen[lz77Array[0]]++;\n freqsDist[lz77Array[3]]++;\n skipLength = match.length + offset - 1;\n prevMatch = null;\n }\n\n // LZ77 符号化\n for (position = 0, length = dataArray.length; position < length; ++position) {\n // ハッシュキーの作成\n for (matchKey = 0, i = 0, il = Zlib.RawDeflate.Lz77MinLength; i < il; ++i) {\n if (position + i === length) {\n break;\n }\n matchKey = (matchKey << 8) | dataArray[position + i];\n }\n\n // テーブルが未定義だったら作成する\n if (table[matchKey] === void 0) { table[matchKey] = []; }\n matchList = table[matchKey];\n\n // skip\n if (skipLength-- > 0) {\n matchList.push(position);\n continue;\n }\n\n // マッチテーブルの更新 (最大戻り距離を超えているものを削除する)\n while (matchList.length > 0 && position - matchList[0] > windowSize) {\n matchList.shift();\n }\n\n // データ末尾でマッチしようがない場合はそのまま流しこむ\n if (position + Zlib.RawDeflate.Lz77MinLength >= length) {\n if (prevMatch) {\n writeMatch(prevMatch, -1);\n }\n\n for (i = 0, il = length - position; i < il; ++i) {\n tmp = dataArray[position + i];\n lz77buf[pos++] = tmp;\n ++freqsLitLen[tmp];\n }\n break;\n }\n\n // マッチ候補から最長のものを探す\n if (matchList.length > 0) {\n longestMatch = this.searchLongestMatch_(dataArray, position, matchList);\n\n if (prevMatch) {\n // 現在のマッチの方が前回のマッチよりも長い\n if (prevMatch.length < longestMatch.length) {\n // write previous literal\n tmp = dataArray[position - 1];\n lz77buf[pos++] = tmp;\n ++freqsLitLen[tmp];\n\n // write current match\n writeMatch(longestMatch, 0);\n } else {\n // write previous match\n writeMatch(prevMatch, -1);\n }\n } else if (longestMatch.length < lazy) {\n prevMatch = longestMatch;\n } else {\n writeMatch(longestMatch, 0);\n }\n // 前回マッチしていて今回マッチがなかったら前回のを採用\n } else if (prevMatch) {\n writeMatch(prevMatch, -1);\n } else {\n tmp = dataArray[position];\n lz77buf[pos++] = tmp;\n ++freqsLitLen[tmp];\n }\n\n matchList.push(position); // マッチテーブルに現在の位置を保存\n }\n\n // 終端処理\n lz77buf[pos++] = 256;\n freqsLitLen[256]++;\n this.freqsLitLen = freqsLitLen;\n this.freqsDist = freqsDist;\n\n return /** @type {!(Uint16Array|Array.<number>)} */ (\n lz77buf.subarray(0, pos) \n );\n};\n\n/**\n * マッチした候補の中から最長一致を探す\n * @param {!Object} data plain data byte array.\n * @param {!number} position plain data byte array position.\n * @param {!Array.<number>} matchList 候補となる位置の配列.\n * @return {!Zlib.RawDeflate.Lz77Match} 最長かつ最短距離のマッチオブジェクト.\n * @private\n */\nZlib.RawDeflate.prototype.searchLongestMatch_ =\nfunction(data, position, matchList) {\n var match,\n currentMatch,\n matchMax = 0, matchLength,\n i, j, l, dl = data.length;\n\n // 候補を後ろから 1 つずつ絞り込んでゆく\n permatch:\n for (i = 0, l = matchList.length; i < l; i++) {\n match = matchList[l - i - 1];\n matchLength = Zlib.RawDeflate.Lz77MinLength;\n\n // 前回までの最長一致を末尾から一致検索する\n if (matchMax > Zlib.RawDeflate.Lz77MinLength) {\n for (j = matchMax; j > Zlib.RawDeflate.Lz77MinLength; j--) {\n if (data[match + j - 1] !== data[position + j - 1]) {\n continue permatch;\n }\n }\n matchLength = matchMax;\n }\n\n // 最長一致探索\n while (matchLength < Zlib.RawDeflate.Lz77MaxLength &&\n position + matchLength < dl &&\n data[match + matchLength] === data[position + matchLength]) {\n ++matchLength;\n }\n\n // マッチ長が同じ場合は後方を優先\n if (matchLength > matchMax) {\n currentMatch = match;\n matchMax = matchLength;\n }\n\n // 最長が確定したら後の処理は省略\n if (matchLength === Zlib.RawDeflate.Lz77MaxLength) {\n break;\n }\n }\n\n return new Zlib.RawDeflate.Lz77Match(matchMax, position - currentMatch);\n};\n\n/**\n * Tree-Transmit Symbols の算出\n * reference: PuTTY Deflate implementation\n * @param {number} hlit HLIT.\n * @param {!(Array.<number>|Uint8Array)} litlenLengths リテラルと長さ符号の符号長配列.\n * @param {number} hdist HDIST.\n * @param {!(Array.<number>|Uint8Array)} distLengths 距離符号の符号長配列.\n * @return {{\n * codes: !(Array.<number>|Uint32Array),\n * freqs: !(Array.<number>|Uint8Array)\n * }} Tree-Transmit Symbols.\n */\nZlib.RawDeflate.prototype.getTreeSymbols_ =\nfunction(hlit, litlenLengths, hdist, distLengths) {\n var src = new (Uint32Array )(hlit + hdist),\n i, j, runLength, l,\n result = new (Uint32Array )(286 + 30),\n nResult,\n rpt,\n freqs = new (Uint8Array )(19);\n\n j = 0;\n for (i = 0; i < hlit; i++) {\n src[j++] = litlenLengths[i];\n }\n for (i = 0; i < hdist; i++) {\n src[j++] = distLengths[i];\n }\n\n // 符号化\n nResult = 0;\n for (i = 0, l = src.length; i < l; i += j) {\n // Run Length Encoding\n for (j = 1; i + j < l && src[i + j] === src[i]; ++j) {}\n\n runLength = j;\n\n if (src[i] === 0) {\n // 0 の繰り返しが 3 回未満ならばそのまま\n if (runLength < 3) {\n while (runLength-- > 0) {\n result[nResult++] = 0;\n freqs[0]++;\n }\n } else {\n while (runLength > 0) {\n // 繰り返しは最大 138 までなので切り詰める\n rpt = (runLength < 138 ? runLength : 138);\n\n if (rpt > runLength - 3 && rpt < runLength) {\n rpt = runLength - 3;\n }\n\n // 3-10 回 -> 17\n if (rpt <= 10) {\n result[nResult++] = 17;\n result[nResult++] = rpt - 3;\n freqs[17]++;\n // 11-138 回 -> 18\n } else {\n result[nResult++] = 18;\n result[nResult++] = rpt - 11;\n freqs[18]++;\n }\n\n runLength -= rpt;\n }\n }\n } else {\n result[nResult++] = src[i];\n freqs[src[i]]++;\n runLength--;\n\n // 繰り返し回数が3回未満ならばランレングス符号は要らない\n if (runLength < 3) {\n while (runLength-- > 0) {\n result[nResult++] = src[i];\n freqs[src[i]]++;\n }\n // 3 回以上ならばランレングス符号化\n } else {\n while (runLength > 0) {\n // runLengthを 3-6 で分割\n rpt = (runLength < 6 ? runLength : 6);\n\n if (rpt > runLength - 3 && rpt < runLength) {\n rpt = runLength - 3;\n }\n\n result[nResult++] = 16;\n result[nResult++] = rpt - 3;\n freqs[16]++;\n\n runLength -= rpt;\n }\n }\n }\n }\n\n return {\n codes:\n result.subarray(0, nResult) ,\n freqs: freqs\n };\n};\n\n/**\n * ハフマン符号の長さを取得する\n * @param {!(Array.<number>|Uint8Array|Uint32Array)} freqs 出現カウント.\n * @param {number} limit 符号長の制限.\n * @return {!(Array.<number>|Uint8Array)} 符号長配列.\n * @private\n */\nZlib.RawDeflate.prototype.getLengths_ = function(freqs, limit) {\n /** @type {number} */\n var nSymbols = freqs.length;\n /** @type {Zlib.Heap} */\n var heap = new Zlib.Heap(2 * Zlib.RawDeflate.HUFMAX);\n /** @type {!(Array.<number>|Uint8Array)} */\n var length = new (Uint8Array )(nSymbols);\n /** @type {Array} */\n var nodes;\n /** @type {!(Array.<number>|Uint32Array)} */\n var values;\n /** @type {!(Array.<number>|Uint8Array)} */\n var codeLength;\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n // ヒープの構築\n for (i = 0; i < nSymbols; ++i) {\n if (freqs[i] > 0) {\n heap.push(i, freqs[i]);\n }\n }\n nodes = new Array(heap.length / 2);\n values = new (Uint32Array )(heap.length / 2);\n\n // 非 0 の要素が一つだけだった場合は、そのシンボルに符号長 1 を割り当てて終了\n if (nodes.length === 1) {\n length[heap.pop().index] = 1;\n return length;\n }\n\n // Reverse Package Merge Algorithm による Canonical Huffman Code の符号長決定\n for (i = 0, il = heap.length / 2; i < il; ++i) {\n nodes[i] = heap.pop();\n values[i] = nodes[i].value;\n }\n codeLength = this.reversePackageMerge_(values, values.length, limit);\n\n for (i = 0, il = nodes.length; i < il; ++i) {\n length[nodes[i].index] = codeLength[i];\n }\n\n return length;\n};\n\n/**\n * Reverse Package Merge Algorithm.\n * @param {!(Array.<number>|Uint32Array)} freqs sorted probability.\n * @param {number} symbols number of symbols.\n * @param {number} limit code length limit.\n * @return {!(Array.<number>|Uint8Array)} code lengths.\n */\nZlib.RawDeflate.prototype.reversePackageMerge_ = function(freqs, symbols, limit) {\n /** @type {!(Array.<number>|Uint16Array)} */\n var minimumCost = new (Uint16Array )(limit);\n /** @type {!(Array.<number>|Uint8Array)} */\n var flag = new (Uint8Array )(limit);\n /** @type {!(Array.<number>|Uint8Array)} */\n var codeLength = new (Uint8Array )(symbols);\n /** @type {Array} */\n var value = new Array(limit);\n /** @type {Array} */\n var type = new Array(limit);\n /** @type {Array.<number>} */\n var currentPosition = new Array(limit);\n /** @type {number} */\n var excess = (1 << limit) - symbols;\n /** @type {number} */\n var half = (1 << (limit - 1));\n /** @type {number} */\n var i;\n /** @type {number} */\n var j;\n /** @type {number} */\n var t;\n /** @type {number} */\n var weight;\n /** @type {number} */\n var next;\n\n /**\n * @param {number} j\n */\n function takePackage(j) {\n /** @type {number} */\n var x = type[j][currentPosition[j]];\n\n if (x === symbols) {\n takePackage(j+1);\n takePackage(j+1);\n } else {\n --codeLength[x];\n }\n\n ++currentPosition[j];\n }\n\n minimumCost[limit-1] = symbols;\n\n for (j = 0; j < limit; ++j) {\n if (excess < half) {\n flag[j] = 0;\n } else {\n flag[j] = 1;\n excess -= half;\n }\n excess <<= 1;\n minimumCost[limit-2-j] = (minimumCost[limit-1-j] / 2 | 0) + symbols;\n }\n minimumCost[0] = flag[0];\n\n value[0] = new Array(minimumCost[0]);\n type[0] = new Array(minimumCost[0]);\n for (j = 1; j < limit; ++j) {\n if (minimumCost[j] > 2 * minimumCost[j-1] + flag[j]) {\n minimumCost[j] = 2 * minimumCost[j-1] + flag[j];\n }\n value[j] = new Array(minimumCost[j]);\n type[j] = new Array(minimumCost[j]);\n }\n\n for (i = 0; i < symbols; ++i) {\n codeLength[i] = limit;\n }\n\n for (t = 0; t < minimumCost[limit-1]; ++t) {\n value[limit-1][t] = freqs[t];\n type[limit-1][t] = t;\n }\n\n for (i = 0; i < limit; ++i) {\n currentPosition[i] = 0;\n }\n if (flag[limit-1] === 1) {\n --codeLength[0];\n ++currentPosition[limit-1];\n }\n\n for (j = limit-2; j >= 0; --j) {\n i = 0;\n weight = 0;\n next = currentPosition[j+1];\n\n for (t = 0; t < minimumCost[j]; t++) {\n weight = value[j+1][next] + value[j+1][next+1];\n\n if (weight > freqs[i]) {\n value[j][t] = weight;\n type[j][t] = symbols;\n next += 2;\n } else {\n value[j][t] = freqs[i];\n type[j][t] = i;\n ++i;\n }\n }\n\n currentPosition[j] = 0;\n if (flag[j] === 1) {\n takePackage(j);\n }\n }\n\n return codeLength;\n};\n\n/**\n * 符号長配列からハフマン符号を取得する\n * reference: PuTTY Deflate implementation\n * @param {!(Array.<number>|Uint8Array)} lengths 符号長配列.\n * @return {!(Array.<number>|Uint16Array)} ハフマン符号配列.\n * @private\n */\nZlib.RawDeflate.prototype.getCodesFromLengths_ = function(lengths) {\n var codes = new (Uint16Array )(lengths.length),\n count = [],\n startCode = [],\n code = 0, i, il, j, m;\n\n // Count the codes of each length.\n for (i = 0, il = lengths.length; i < il; i++) {\n count[lengths[i]] = (count[lengths[i]] | 0) + 1;\n }\n\n // Determine the starting code for each length block.\n for (i = 1, il = Zlib.RawDeflate.MaxCodeLength; i <= il; i++) {\n startCode[i] = code;\n code += count[i] | 0;\n code <<= 1;\n }\n\n // Determine the code for each symbol. Mirrored, of course.\n for (i = 0, il = lengths.length; i < il; i++) {\n code = startCode[lengths[i]];\n startCode[lengths[i]] += 1;\n codes[i] = 0;\n\n for (j = 0, m = lengths[i]; j < m; j++) {\n codes[i] = (codes[i] << 1) | (code & 1);\n code >>>= 1;\n }\n }\n\n return codes;\n};\n\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {Object=} opt_params options.\n * @constructor\n */\nZlib.Unzip = function(input, opt_params) {\n opt_params = opt_params || {};\n /** @type {!(Array.<number>|Uint8Array)} */\n this.input =\n ((input instanceof Array)) ?\n new Uint8Array(input) : input;\n /** @type {number} */\n this.ip = 0;\n /** @type {number} */\n this.eocdrOffset;\n /** @type {number} */\n this.numberOfThisDisk;\n /** @type {number} */\n this.startDisk;\n /** @type {number} */\n this.totalEntriesThisDisk;\n /** @type {number} */\n this.totalEntries;\n /** @type {number} */\n this.centralDirectorySize;\n /** @type {number} */\n this.centralDirectoryOffset;\n /** @type {number} */\n this.commentLength;\n /** @type {(Array.<number>|Uint8Array)} */\n this.comment;\n /** @type {Array.<Zlib.Unzip.FileHeader>} */\n this.fileHeaderList;\n /** @type {Object.<string, number>} */\n this.filenameToIndex;\n /** @type {boolean} */\n this.verify = opt_params['verify'] || false;\n /** @type {(Array.<number>|Uint8Array)} */\n this.password = opt_params['password'];\n};\n\nZlib.Unzip.CompressionMethod = Zlib.Zip.CompressionMethod;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.FileHeaderSignature = Zlib.Zip.FileHeaderSignature;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.LocalFileHeaderSignature = Zlib.Zip.LocalFileHeaderSignature;\n\n/**\n * @type {Array.<number>}\n * @const\n */\nZlib.Unzip.CentralDirectorySignature = Zlib.Zip.CentralDirectorySignature;\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {number} ip input position.\n * @constructor\n */\nZlib.Unzip.FileHeader = function(input, ip) {\n /** @type {!(Array.<number>|Uint8Array)} */\n this.input = input;\n /** @type {number} */\n this.offset = ip;\n /** @type {number} */\n this.length;\n /** @type {number} */\n this.version;\n /** @type {number} */\n this.os;\n /** @type {number} */\n this.needVersion;\n /** @type {number} */\n this.flags;\n /** @type {number} */\n this.compression;\n /** @type {number} */\n this.time;\n /** @type {number} */\n this.date;\n /** @type {number} */\n this.crc32;\n /** @type {number} */\n this.compressedSize;\n /** @type {number} */\n this.plainSize;\n /** @type {number} */\n this.fileNameLength;\n /** @type {number} */\n this.extraFieldLength;\n /** @type {number} */\n this.fileCommentLength;\n /** @type {number} */\n this.diskNumberStart;\n /** @type {number} */\n this.internalFileAttributes;\n /** @type {number} */\n this.externalFileAttributes;\n /** @type {number} */\n this.relativeOffset;\n /** @type {string} */\n this.filename;\n /** @type {!(Array.<number>|Uint8Array)} */\n this.extraField;\n /** @type {!(Array.<number>|Uint8Array)} */\n this.comment;\n};\n\nZlib.Unzip.FileHeader.prototype.parse = function() {\n /** @type {!(Array.<number>|Uint8Array)} */\n var input = this.input;\n /** @type {number} */\n var ip = this.offset;\n\n // central file header signature\n if (input[ip++] !== Zlib.Unzip.FileHeaderSignature[0] ||\n input[ip++] !== Zlib.Unzip.FileHeaderSignature[1] ||\n input[ip++] !== Zlib.Unzip.FileHeaderSignature[2] ||\n input[ip++] !== Zlib.Unzip.FileHeaderSignature[3]) {\n throw new Error('invalid file header signature');\n }\n\n // version made by\n this.version = input[ip++];\n this.os = input[ip++];\n\n // version needed to extract\n this.needVersion = input[ip++] | (input[ip++] << 8);\n\n // general purpose bit flag\n this.flags = input[ip++] | (input[ip++] << 8);\n\n // compression method\n this.compression = input[ip++] | (input[ip++] << 8);\n\n // last mod file time\n this.time = input[ip++] | (input[ip++] << 8);\n\n //last mod file date\n this.date = input[ip++] | (input[ip++] << 8);\n\n // crc-32\n this.crc32 = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // compressed size\n this.compressedSize = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // uncompressed size\n this.plainSize = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // file name length\n this.fileNameLength = input[ip++] | (input[ip++] << 8);\n\n // extra field length\n this.extraFieldLength = input[ip++] | (input[ip++] << 8);\n\n // file comment length\n this.fileCommentLength = input[ip++] | (input[ip++] << 8);\n\n // disk number start\n this.diskNumberStart = input[ip++] | (input[ip++] << 8);\n\n // internal file attributes\n this.internalFileAttributes = input[ip++] | (input[ip++] << 8);\n\n // external file attributes\n this.externalFileAttributes =\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24);\n\n // relative offset of local header\n this.relativeOffset = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // file name\n this.filename = String.fromCharCode.apply(null, input.subarray(ip, ip += this.fileNameLength) \n );\n\n // extra field\n this.extraField = input.subarray(ip, ip += this.extraFieldLength) ;\n\n // file comment\n this.comment = input.subarray(ip, ip + this.fileCommentLength) ;\n\n this.length = ip - this.offset;\n};\n\n/**\n * @param {!(Array.<number>|Uint8Array)} input input buffer.\n * @param {number} ip input position.\n * @constructor\n */\nZlib.Unzip.LocalFileHeader = function(input, ip) {\n /** @type {!(Array.<number>|Uint8Array)} */\n this.input = input;\n /** @type {number} */\n this.offset = ip;\n /** @type {number} */\n this.length;\n /** @type {number} */\n this.needVersion;\n /** @type {number} */\n this.flags;\n /** @type {number} */\n this.compression;\n /** @type {number} */\n this.time;\n /** @type {number} */\n this.date;\n /** @type {number} */\n this.crc32;\n /** @type {number} */\n this.compressedSize;\n /** @type {number} */\n this.plainSize;\n /** @type {number} */\n this.fileNameLength;\n /** @type {number} */\n this.extraFieldLength;\n /** @type {string} */\n this.filename;\n /** @type {!(Array.<number>|Uint8Array)} */\n this.extraField;\n};\n\nZlib.Unzip.LocalFileHeader.Flags = Zlib.Zip.Flags;\n\nZlib.Unzip.LocalFileHeader.prototype.parse = function() {\n /** @type {!(Array.<number>|Uint8Array)} */\n var input = this.input;\n /** @type {number} */\n var ip = this.offset;\n\n // local file header signature\n if (input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[0] ||\n input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[1] ||\n input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[2] ||\n input[ip++] !== Zlib.Unzip.LocalFileHeaderSignature[3]) {\n throw new Error('invalid local file header signature');\n }\n\n // version needed to extract\n this.needVersion = input[ip++] | (input[ip++] << 8);\n\n // general purpose bit flag\n this.flags = input[ip++] | (input[ip++] << 8);\n\n // compression method\n this.compression = input[ip++] | (input[ip++] << 8);\n\n // last mod file time\n this.time = input[ip++] | (input[ip++] << 8);\n\n //last mod file date\n this.date = input[ip++] | (input[ip++] << 8);\n\n // crc-32\n this.crc32 = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // compressed size\n this.compressedSize = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // uncompressed size\n this.plainSize = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // file name length\n this.fileNameLength = input[ip++] | (input[ip++] << 8);\n\n // extra field length\n this.extraFieldLength = input[ip++] | (input[ip++] << 8);\n\n // file name\n this.filename = String.fromCharCode.apply(null, input.subarray(ip, ip += this.fileNameLength) \n );\n\n // extra field\n this.extraField = input.subarray(ip, ip += this.extraFieldLength) ;\n\n this.length = ip - this.offset;\n};\n\n\nZlib.Unzip.prototype.searchEndOfCentralDirectoryRecord = function() {\n /** @type {!(Array.<number>|Uint8Array)} */\n var input = this.input;\n /** @type {number} */\n var ip;\n\n for (ip = input.length - 12; ip > 0; --ip) {\n if (input[ip ] === Zlib.Unzip.CentralDirectorySignature[0] &&\n input[ip+1] === Zlib.Unzip.CentralDirectorySignature[1] &&\n input[ip+2] === Zlib.Unzip.CentralDirectorySignature[2] &&\n input[ip+3] === Zlib.Unzip.CentralDirectorySignature[3]) {\n this.eocdrOffset = ip;\n return;\n }\n }\n\n throw new Error('End of Central Directory Record not found');\n};\n\nZlib.Unzip.prototype.parseEndOfCentralDirectoryRecord = function() {\n /** @type {!(Array.<number>|Uint8Array)} */\n var input = this.input;\n /** @type {number} */\n var ip;\n\n if (!this.eocdrOffset) {\n this.searchEndOfCentralDirectoryRecord();\n }\n ip = this.eocdrOffset;\n\n // signature\n if (input[ip++] !== Zlib.Unzip.CentralDirectorySignature[0] ||\n input[ip++] !== Zlib.Unzip.CentralDirectorySignature[1] ||\n input[ip++] !== Zlib.Unzip.CentralDirectorySignature[2] ||\n input[ip++] !== Zlib.Unzip.CentralDirectorySignature[3]) {\n throw new Error('invalid signature');\n }\n\n // number of this disk\n this.numberOfThisDisk = input[ip++] | (input[ip++] << 8);\n\n // number of the disk with the start of the central directory\n this.startDisk = input[ip++] | (input[ip++] << 8);\n\n // total number of entries in the central directory on this disk\n this.totalEntriesThisDisk = input[ip++] | (input[ip++] << 8);\n\n // total number of entries in the central directory\n this.totalEntries = input[ip++] | (input[ip++] << 8);\n\n // size of the central directory\n this.centralDirectorySize = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // offset of start of central directory with respect to the starting disk number\n this.centralDirectoryOffset = (\n (input[ip++] ) | (input[ip++] << 8) |\n (input[ip++] << 16) | (input[ip++] << 24)\n ) >>> 0;\n\n // .ZIP file comment length\n this.commentLength = input[ip++] | (input[ip++] << 8);\n\n // .ZIP file comment\n this.comment = input.subarray(ip, ip + this.commentLength) ;\n};\n\nZlib.Unzip.prototype.parseFileHeader = function() {\n /** @type {Array.<Zlib.Unzip.FileHeader>} */\n var filelist = [];\n /** @type {Object.<string, number>} */\n var filetable = {};\n /** @type {number} */\n var ip;\n /** @type {Zlib.Unzip.FileHeader} */\n var fileHeader;\n /*: @type {number} */\n var i;\n /*: @type {number} */\n var il;\n\n if (this.fileHeaderList) {\n return;\n }\n\n if (this.centralDirectoryOffset === void 0) {\n this.parseEndOfCentralDirectoryRecord();\n }\n ip = this.centralDirectoryOffset;\n\n for (i = 0, il = this.totalEntries; i < il; ++i) {\n fileHeader = new Zlib.Unzip.FileHeader(this.input, ip);\n fileHeader.parse();\n ip += fileHeader.length;\n filelist[i] = fileHeader;\n filetable[fileHeader.filename] = i;\n }\n\n if (this.centralDirectorySize < ip - this.centralDirectoryOffset) {\n throw new Error('invalid file header size');\n }\n\n this.fileHeaderList = filelist;\n this.filenameToIndex = filetable;\n};\n\n/**\n * @param {number} index file header index.\n * @param {Object=} opt_params\n * @return {!(Array.<number>|Uint8Array)} file data.\n */\nZlib.Unzip.prototype.getFileData = function(index, opt_params) {\n opt_params = opt_params || {};\n /** @type {!(Array.<number>|Uint8Array)} */\n var input = this.input;\n /** @type {Array.<Zlib.Unzip.FileHeader>} */\n var fileHeaderList = this.fileHeaderList;\n /** @type {Zlib.Unzip.LocalFileHeader} */\n var localFileHeader;\n /** @type {number} */\n var offset;\n /** @type {number} */\n var length;\n /** @type {!(Array.<number>|Uint8Array)} */\n var buffer;\n /** @type {number} */\n var crc32;\n /** @type {Array.<number>|Uint32Array|Object} */\n var key;\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n if (!fileHeaderList) {\n this.parseFileHeader();\n }\n\n if (fileHeaderList[index] === void 0) {\n throw new Error('wrong index');\n }\n\n offset = fileHeaderList[index].relativeOffset;\n localFileHeader = new Zlib.Unzip.LocalFileHeader(this.input, offset);\n localFileHeader.parse();\n offset += localFileHeader.length;\n length = localFileHeader.compressedSize;\n\n // decryption\n if ((localFileHeader.flags & Zlib.Unzip.LocalFileHeader.Flags.ENCRYPT) !== 0) {\n if (!(opt_params['password'] || this.password)) {\n throw new Error('please set password');\n }\n key = this.createDecryptionKey(opt_params['password'] || this.password);\n\n // encryption header\n for(i = offset, il = offset + 12; i < il; ++i) {\n this.decode(key, input[i]);\n }\n offset += 12;\n length -= 12;\n\n // decryption\n for (i = offset, il = offset + length; i < il; ++i) {\n input[i] = this.decode(key, input[i]);\n }\n }\n\n switch (localFileHeader.compression) {\n case Zlib.Unzip.CompressionMethod.STORE:\n buffer = this.input.subarray(offset, offset + length) ;\n break;\n case Zlib.Unzip.CompressionMethod.DEFLATE:\n buffer = new Zlib.RawInflate(this.input, {\n 'index': offset,\n 'bufferSize': localFileHeader.plainSize\n }).decompress();\n break;\n default:\n throw new Error('unknown compression type');\n }\n\n if (this.verify) {\n crc32 = Zlib.CRC32.calc(buffer);\n if (localFileHeader.crc32 !== crc32) {\n throw new Error(\n 'wrong crc: file=0x' + localFileHeader.crc32.toString(16) +\n ', data=0x' + crc32.toString(16)\n );\n }\n }\n\n return buffer;\n};\n\n/**\n * @return {Array.<string>}\n */\nZlib.Unzip.prototype.getFilenames = function() {\n /** @type {Array.<string>} */\n var filenameList = [];\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n /** @type {Array.<Zlib.Unzip.FileHeader>} */\n var fileHeaderList;\n\n if (!this.fileHeaderList) {\n this.parseFileHeader();\n }\n fileHeaderList = this.fileHeaderList;\n\n for (i = 0, il = fileHeaderList.length; i < il; ++i) {\n filenameList[i] = fileHeaderList[i].filename;\n }\n\n return filenameList;\n};\n\n/**\n * @param {string} filename extract filename.\n * @param {Object=} opt_params\n * @return {!(Array.<number>|Uint8Array)} decompressed data.\n */\nZlib.Unzip.prototype.decompress = function(filename, opt_params) {\n /** @type {number} */\n var index;\n\n if (!this.filenameToIndex) {\n this.parseFileHeader();\n }\n index = this.filenameToIndex[filename];\n\n if (index === void 0) {\n throw new Error(filename + ' not found');\n }\n\n return this.getFileData(index, opt_params);\n};\n\n/**\n * @param {(Array.<number>|Uint8Array)} password\n */\nZlib.Unzip.prototype.setPassword = function(password) {\n this.password = password;\n};\n\n/**\n * @param {(Array.<number>|Uint32Array|Object)} key\n * @param {number} n\n * @return {number}\n */\nZlib.Unzip.prototype.decode = function(key, n) {\n n ^= this.getByte(/** @type {(Array.<number>|Uint32Array)} */(key));\n this.updateKeys(/** @type {(Array.<number>|Uint32Array)} */(key), n);\n\n return n;\n};\n\n// common method\nZlib.Unzip.prototype.updateKeys = Zlib.Zip.prototype.updateKeys;\nZlib.Unzip.prototype.createDecryptionKey = Zlib.Zip.prototype.createEncryptionKey;\nZlib.Unzip.prototype.getByte = Zlib.Zip.prototype.getByte;\n\n/**\n * @fileoverview 雑多な関数群をまとめたモジュール実装.\n */\n\n\n/**\n * Byte String から Byte Array に変換.\n * @param {!string} str byte string.\n * @return {!Array.<number>} byte array.\n */\nZlib.Util.stringToByteArray = function(str) {\n /** @type {!Array.<(string|number)>} */\n var tmp = str.split('');\n /** @type {number} */\n var i;\n /** @type {number} */\n var il;\n\n for (i = 0, il = tmp.length; i < il; i++) {\n tmp[i] = (tmp[i].charCodeAt(0) & 0xff) >>> 0;\n }\n\n return tmp;\n};\n\n\n/**\n * @fileoverview Adler32 checksum 実装.\n */\n\n\n/**\n * Adler32 ハッシュ値の作成\n * @param {!(Array|Uint8Array|string)} array 算出に使用する byte array.\n * @return {number} Adler32 ハッシュ値.\n */\nZlib.Adler32 = function(array) {\n if (typeof(array) === 'string') {\n array = Zlib.Util.stringToByteArray(array);\n }\n return Zlib.Adler32.update(1, array);\n};\n\n/**\n * Adler32 ハッシュ値の更新\n * @param {number} adler 現在のハッシュ値.\n * @param {!(Array|Uint8Array)} array 更新に使用する byte array.\n * @return {number} Adler32 ハッシュ値.\n */\nZlib.Adler32.update = function(adler, array) {\n /** @type {number} */\n var s1 = adler & 0xffff;\n /** @type {number} */\n var s2 = (adler >>> 16) & 0xffff;\n /** @type {number} array length */\n var len = array.length;\n /** @type {number} loop length (don't overflow) */\n var tlen;\n /** @type {number} array index */\n var i = 0;\n\n while (len > 0) {\n tlen = len > Zlib.Adler32.OptimizationParameter ?\n Zlib.Adler32.OptimizationParameter : len;\n len -= tlen;\n do {\n s1 += array[i++];\n s2 += s1;\n } while (--tlen);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return ((s2 << 16) | s1) >>> 0;\n};\n\n/**\n * Adler32 最適化パラメータ\n * 現状では 1024 程度が最適.\n * @see http://jsperf.com/adler-32-simple-vs-optimized/3\n * @define {number}\n */\nZlib.Adler32.OptimizationParameter = 1024;\n\n\n\n\n/**\n * ビットストリーム\n * @constructor\n * @param {!(Array|Uint8Array)=} buffer output buffer.\n * @param {number=} bufferPosition start buffer pointer.\n */\nZlib.BitStream = function(buffer, bufferPosition) {\n /** @type {number} buffer index. */\n this.index = typeof bufferPosition === 'number' ? bufferPosition : 0;\n /** @type {number} bit index. */\n this.bitindex = 0;\n /** @type {!(Array|Uint8Array)} bit-stream output buffer. */\n this.buffer = buffer instanceof (Uint8Array ) ?\n buffer :\n new (Uint8Array )(Zlib.BitStream.DefaultBlockSize);\n\n // 入力された index が足りなかったら拡張するが、倍にしてもダメなら不正とする\n if (this.buffer.length * 2 <= this.index) {\n throw new Error(\"invalid index\");\n } else if (this.buffer.length <= this.index) {\n this.expandBuffer();\n }\n};\n\n/**\n * デフォルトブロックサイズ.\n * @const\n * @type {number}\n */\nZlib.BitStream.DefaultBlockSize = 0x8000;\n\n/**\n * expand buffer.\n * @return {!(Array|Uint8Array)} new buffer.\n */\nZlib.BitStream.prototype.expandBuffer = function() {\n /** @type {!(Array|Uint8Array)} old buffer. */\n var oldbuf = this.buffer;\n /** @type {number} loop limiter. */\n var il = oldbuf.length;\n /** @type {!(Array|Uint8Array)} new buffer. */\n var buffer =\n new (Uint8Array )(il << 1);\n\n // copy buffer\n {\n buffer.set(oldbuf);\n }\n\n return (this.buffer = buffer);\n};\n\n\n/**\n * 数値をビットで指定した数だけ書き込む.\n * @param {number} number 書き込む数値.\n * @param {number} n 書き込むビット数.\n * @param {boolean=} reverse 逆順に書き込むならば true.\n */\nZlib.BitStream.prototype.writeBits = function(number, n, reverse) {\n var buffer = this.buffer;\n var index = this.index;\n var bitindex = this.bitindex;\n\n /** @type {number} current octet. */\n var current = buffer[index];\n /** @type {number} loop counter. */\n var i;\n\n /**\n * 32-bit 整数のビット順を逆にする\n * @param {number} n 32-bit integer.\n * @return {number} reversed 32-bit integer.\n * @private\n */\n function rev32_(n) {\n return (Zlib.BitStream.ReverseTable[n & 0xFF] << 24) |\n (Zlib.BitStream.ReverseTable[n >>> 8 & 0xFF] << 16) |\n (Zlib.BitStream.ReverseTable[n >>> 16 & 0xFF] << 8) |\n Zlib.BitStream.ReverseTable[n >>> 24 & 0xFF];\n }\n\n if (reverse && n > 1) {\n number = n > 8 ?\n rev32_(number) >> (32 - n) :\n Zlib.BitStream.ReverseTable[number] >> (8 - n);\n }\n\n // Byte 境界を超えないとき\n if (n + bitindex < 8) {\n current = (current << n) | number;\n bitindex += n;\n // Byte 境界を超えるとき\n } else {\n for (i = 0; i < n; ++i) {\n current = (current << 1) | ((number >> n - i - 1) & 1);\n\n // next byte\n if (++bitindex === 8) {\n bitindex = 0;\n buffer[index++] = Zlib.BitStream.ReverseTable[current];\n current = 0;\n\n // expand\n if (index === buffer.length) {\n buffer = this.expandBuffer();\n }\n }\n }\n }\n buffer[index] = current;\n\n this.buffer = buffer;\n this.bitindex = bitindex;\n this.index = index;\n};\n\n\n/**\n * ストリームの終端処理を行う\n * @return {!(Array|Uint8Array)} 終端処理後のバッファを byte array で返す.\n */\nZlib.BitStream.prototype.finish = function() {\n var buffer = this.buffer;\n var index = this.index;\n\n /** @type {!(Array|Uint8Array)} output buffer. */\n var output;\n\n // bitindex が 0 の時は余分に index が進んでいる状態\n if (this.bitindex > 0) {\n buffer[index] <<= 8 - this.bitindex;\n buffer[index] = Zlib.BitStream.ReverseTable[buffer[index]];\n index++;\n }\n\n // array truncation\n {\n output = buffer.subarray(0, index);\n }\n\n return output;\n};\n\n/**\n * 0-255 のビット順を反転したテーブル\n * @const\n * @type {!(Uint8Array|Array.<number>)}\n */\nZlib.BitStream.ReverseTable = (function(table) {\n return table;\n})((function() {\n /** @type {!(Array|Uint8Array)} reverse table. */\n var table = new (Uint8Array )(256);\n /** @type {number} loop counter. */\n var i;\n\n // generate\n for (i = 0; i < 256; ++i) {\n table[i] = (function(n) {\n var r = n;\n var s = 7;\n\n for (n >>>= 1; n; n >>>= 1) {\n r <<= 1;\n r |= n & 1;\n --s;\n }\n\n return (r << s & 0xff) >>> 0;\n })(i);\n }\n\n return table;\n})());\n\n/**\n * CRC32 ハッシュ値を取得\n * @param {!(Array.<number>|Uint8Array)} data data byte array.\n * @param {number=} pos data position.\n * @param {number=} length data length.\n * @return {number} CRC32.\n */\nZlib.CRC32.calc = function(data, pos, length) {\n return Zlib.CRC32.update(data, 0, pos, length);\n};\n\n/**\n * CRC32ハッシュ値を更新\n * @param {!(Array.<number>|Uint8Array)} data data byte array.\n * @param {number} crc CRC32.\n * @param {number=} pos data position.\n * @param {number=} length data length.\n * @return {number} CRC32.\n */\nZlib.CRC32.update = function(data, crc, pos, length) {\n var table = Zlib.CRC32.Table;\n var i = (typeof pos === 'number') ? pos : (pos = 0);\n var il = (typeof length === 'number') ? length : data.length;\n\n crc ^= 0xffffffff;\n\n // loop unrolling for performance\n for (i = il & 7; i--; ++pos) {\n crc = (crc >>> 8) ^ table[(crc ^ data[pos]) & 0xff];\n }\n for (i = il >> 3; i--; pos += 8) {\n crc = (crc >>> 8) ^ table[(crc ^ data[pos ]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 1]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 2]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 3]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 4]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 5]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 6]) & 0xff];\n crc = (crc >>> 8) ^ table[(crc ^ data[pos + 7]) & 0xff];\n }\n\n return (crc ^ 0xffffffff) >>> 0;\n};\n\n/**\n * @param {number} num\n * @param {number} crc\n * @returns {number}\n */\nZlib.CRC32.single = function(num, crc) {\n return (Zlib.CRC32.Table[(num ^ crc) & 0xff] ^ (num >>> 8)) >>> 0;\n};\n\n/**\n * @type {Array.<number>}\n * @const\n * @private\n */\nZlib.CRC32.Table_ = [\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n];\n\n/**\n * @type {!(Array.<number>|Uint32Array)} CRC-32 Table.\n * @const\n */\nZlib.CRC32.Table = new Uint32Array(Zlib.CRC32.Table_) ;\n\n/**\n * @fileoverview Deflate (RFC1951) 実装.\n * Deflateアルゴリズム本体は Zlib.RawDeflate で実装されている.\n */\n\n/**\n * Zlib Deflate\n * @constructor\n * @param {!(Array|Uint8Array)} input 符号化する対象の byte array.\n * @param {Object=} opt_params option parameters.\n */\nZlib.Deflate = function(input, opt_params) {\n /** @type {!(Array|Uint8Array)} */\n this.input = input;\n /** @type {!(Array|Uint8Array)} */\n this.output =\n new (Uint8Array )(Zlib.Deflate.DefaultBufferSize);\n /** @type {Zlib.Deflate.CompressionType} */\n this.compressionType = Zlib.Deflate.CompressionType.DYNAMIC;\n /** @type {Zlib.RawDeflate} */\n this.rawDeflate;\n /** @type {Object} */\n var rawDeflateOption = {};\n /** @type {string} */\n var prop;\n\n // option parameters\n if (opt_params || !(opt_params = {})) {\n if (typeof opt_params['compressionType'] === 'number') {\n this.compressionType = opt_params['compressionType'];\n }\n }\n\n // copy options\n for (prop in opt_params) {\n rawDeflateOption[prop] = opt_params[prop];\n }\n\n // set raw-deflate output buffer\n rawDeflateOption['outputBuffer'] = this.output;\n\n this.rawDeflate = new Zlib.RawDeflate(this.input, rawDeflateOption);\n};\n\n/**\n * @const\n * @type {number} デフォルトバッファサイズ.\n */\nZlib.Deflate.DefaultBufferSize = 0x8000;\n\n/**\n * @enum {number}\n */\nZlib.Deflate.CompressionType = Zlib.RawDeflate.CompressionType;\n\n/**\n * 直接圧縮に掛ける.\n * @param {!(Array|Uint8Array)} input target buffer.\n * @param {Object=} opt_params option parameters.\n * @return {!(Array|Uint8Array)} compressed data byte array.\n */\nZlib.Deflate.compress = function(input, opt_params) {\n return (new Zlib.Deflate(input, opt_params)).compress();\n};\n\n/**\n * Deflate Compression.\n * @return {!(Array|Uint8Array)} compressed data byte array.\n */\nZlib.Deflate.prototype.compress = function() {\n /** @type {Zlib.CompressionMethod} */\n var cm;\n /** @type {number} */\n var cinfo;\n /** @type {number} */\n var cmf;\n /** @type {number} */\n var flg;\n /** @type {number} */\n var fcheck;\n /** @type {number} */\n var fdict;\n /** @type {number} */\n var flevel;\n /** @type {number} */\n var adler;\n /** @type {!(Array|Uint8Array)} */\n var output;\n /** @type {number} */\n var pos = 0;\n\n output = this.output;\n\n // Compression Method and Flags\n cm = Zlib.CompressionMethod.DEFLATE;\n switch (cm) {\n case Zlib.CompressionMethod.DEFLATE:\n cinfo = Math.LOG2E * Math.log(Zlib.RawDeflate.WindowSize) - 8;\n break;\n default:\n throw new Error('invalid compression method');\n }\n cmf = (cinfo << 4) | cm;\n output[pos++] = cmf;\n\n // Flags\n fdict = 0;\n switch (cm) {\n case Zlib.CompressionMethod.DEFLATE:\n switch (this.compressionType) {\n case Zlib.Deflate.CompressionType.NONE: flevel = 0; break;\n case Zlib.Deflate.CompressionType.FIXED: flevel = 1; break;\n case Zlib.Deflate.CompressionType.DYNAMIC: flevel = 2; break;\n default: throw new Error('unsupported compression type');\n }\n break;\n default:\n throw new Error('invalid compression method');\n }\n flg = (flevel << 6) | (fdict << 5);\n fcheck = 31 - (cmf * 256 + flg) % 31;\n flg |= fcheck;\n output[pos++] = flg;\n\n // Adler-32 checksum\n adler = Zlib.Adler32(this.input);\n\n this.rawDeflate.op = pos;\n output = this.rawDeflate.compress();\n pos = output.length;\n\n {\n // subarray 分を元にもどす\n output = new Uint8Array(output.buffer);\n // expand buffer\n if (output.length <= pos + 4) {\n this.output = new Uint8Array(output.length + 4);\n this.output.set(output);\n output = this.output;\n }\n output = output.subarray(0, pos + 4);\n }\n\n // adler32\n output[pos++] = (adler >> 24) & 0xff;\n output[pos++] = (adler >> 16) & 0xff;\n output[pos++] = (adler >> 8) & 0xff;\n output[pos++] = (adler ) & 0xff;\n\n return output;\n};\n\nclass BrowserLocalFile {\n\n constructor(blob) {\n this.file = blob;\n }\n\n async read(position, length) {\n const file = this.file;\n if (position !== undefined) {\n return file.slice(position, position + length).arrayBuffer()\n\n } else {\n return file.arrayBuffer()\n\n }\n }\n}\n\ntypeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\nclass RemoteFile {\n\n constructor(args) {\n this.config = args;\n this.url = mapUrl(args.path || args.url);\n }\n\n\n async read(position, length) {\n\n length = Math.ceil(length);\n const headers = this.config.headers || {};\n const rangeString = \"bytes=\" + position + \"-\" + (position + length - 1);\n headers['Range'] = rangeString;\n\n let url = this.url.slice(); // slice => copy\n // headers['User-Agent'] = 'straw'\n if (this.config.oauthToken) {\n const token = resolveToken(this.config.oauthToken);\n headers['Authorization'] = `Bearer ${token}`;\n }\n if (this.config.apiKey) {\n url = addParameter(url, \"key\", this.config.apiKey);\n }\n\n const response = await fetch(url, {\n method: 'GET',\n headers: headers,\n redirect: 'follow',\n mode: 'cors',\n\n });\n\n const status = response.status;\n\n if (status >= 400) {\n console.error(`${status} ${this.config.url}`);\n const err = Error(response.statusText);\n err.code = status;\n throw err\n } else {\n return response.arrayBuffer()\n }\n\n /**\n * token can be a string, a function that returns a string, or a function that returns a Promise for a string\n * @param token\n * @returns {Promise<*>}\n */\n async function resolveToken(token) {\n if (typeof token === 'function') {\n return await Promise.resolve(token()) // Normalize the result to a promise, since we don't know what the function returns\n } else {\n return token\n }\n }\n\n }\n}\n\n\nfunction mapUrl(url) {\n\n if (url.includes(\"//www.dropbox.com\")) {\n return url.replace(\"//www.dropbox.com\", \"//dl.dropboxusercontent.com\")\n } else if (url.startsWith(\"ftp://ftp.ncbi.nlm.nih.gov\")) {\n return url.replace(\"ftp://\", \"https://\")\n } else {\n return url\n }\n}\n\n\nfunction addParameter(url, name, value) {\n const paramSeparator = url.includes(\"?\") ? \"&\" : \"?\";\n return url + paramSeparator + name + \"=\" + value\n}\n\nclass ThrottledFile {\n\n constructor(file, rateLimiter) {\n this.file = file;\n this.rateLimiter = rateLimiter;\n }\n\n\n async read(position, length) {\n\n const file = this.file;\n const rateLimiter = this.rateLimiter;\n\n return new Promise(function (fulfill, reject) {\n rateLimiter.limiter(async function (f) {\n try {\n const result = await f.read(position, length);\n fulfill(result);\n } catch (e) {\n reject(e);\n }\n })(file);\n })\n }\n}\n\nclass RateLimiter {\n\n constructor(wait) {\n this.wait = wait === undefined ? 100 : wait;\n\n this.isCalled = false;\n this.calls = [];\n }\n\n\n limiter(fn) {\n\n const self = this;\n\n let caller = function () {\n\n if (self.calls.length && !self.isCalled) {\n self.isCalled = true;\n self.calls.shift().call();\n setTimeout(function () {\n self.isCalled = false;\n caller();\n }, self.wait);\n }\n };\n\n return function () {\n self.calls.push(fn.bind(this, ...arguments));\n caller();\n };\n }\n\n}\n\nclass BufferedFile {\n\n constructor(args) {\n this.file = args.file;\n this.size = args.size || 64000;\n this.position = 0;\n this.bufferStart = 0;\n this.bufferLength = 0;\n this.buffer = undefined;\n }\n\n\n async read(position, length) {\n\n const start = position;\n const end = position + length;\n const bufferStart = this.bufferStart;\n const bufferEnd = this.bufferStart + this.bufferLength;\n\n\n if (length > this.size) {\n // Request larger than max buffer size, pass through to underlying file\n //console.log(\"0\")\n this.buffer = undefined;\n this.bufferStart = 0;\n this.bufferLength = 0;\n return this.file.read(position, length)\n }\n\n if (start >= bufferStart && end <= bufferEnd) {\n // Request within buffer bounds\n //console.log(\"1\")\n const sliceStart = start - bufferStart;\n const sliceEnd = sliceStart + length;\n return this.buffer.slice(sliceStart, sliceEnd)\n }\n\n else if (start < bufferStart && end > bufferStart) {\n // Overlap left, here for completness but this is an unexpected case in straw. We don't adjust the buffer.\n //console.log(\"2\")\n const l1 = bufferStart - start;\n const a1 = await this.file.read(position, l1);\n const l2 = length - l1;\n if (l2 > 0) {\n //this.buffer = await this.file.read(bufferStart, this.size)\n const a2 = this.buffer.slice(0, l2);\n return concatBuffers(a1, a2)\n } else {\n return a1\n }\n\n }\n\n else if (start < bufferEnd && end > bufferEnd) {\n // Overlap right\n // console.log(\"3\")\n const l1 = bufferEnd - start;\n const sliceStart = this.bufferLength - l1;\n const a1 = this.buffer.slice(sliceStart, this.bufferLength);\n\n const l2 = length - l1;\n if (l2 > 0) {\n try {\n this.buffer = await this.file.read(bufferEnd, this.size);\n this.bufferStart = bufferEnd;\n this.bufferLength = this.buffer.byteLength;\n const a2 = this.buffer.slice(0, l2);\n return concatBuffers(a1, a2)\n } catch (e) {\n // A \"unsatisfiable range\" error is expected here if we overlap past the end of file\n if (e.code && e.code === 416) {\n return a1\n }\n else {\n throw e\n }\n }\n\n } else {\n return a1\n }\n\n }\n\n else {\n // No overlap with buffer\n // console.log(\"4\")\n this.buffer = await this.file.read(position, this.size);\n this.bufferStart = position;\n this.bufferLength = this.buffer.byteLength;\n return this.buffer.slice(0, length)\n }\n\n }\n\n}\n\n/**\n * concatenates 2 array buffers.\n * Credit: https://gist.github.com/72lions/4528834\n *\n * @private\n * @param {ArrayBuffers} buffer1 The first buffer.\n * @param {ArrayBuffers} buffer2 The second buffer.\n * @return {ArrayBuffers} The new ArrayBuffer created out of the two.\n */\nvar concatBuffers = function (buffer1, buffer2) {\n var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n tmp.set(new Uint8Array(buffer1), 0);\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n return tmp.buffer;\n};\n\n// TODO -- big endian\n\nconst BinaryParser = function (dataView, littleEndian) {\n\n this.littleEndian = littleEndian !== undefined ? littleEndian : true;\n this.position = 0;\n this.view = dataView;\n this.length = dataView.byteLength;\n};\n\nBinaryParser.prototype.available = function () {\n return this.length - this.position;\n};\n\nBinaryParser.prototype.remLength = function () {\n return this.length - this.position;\n};\n\nBinaryParser.prototype.hasNext = function () {\n return this.position < this.length - 1;\n};\n\nBinaryParser.prototype.getByte = function () {\n var retValue = this.view.getUint8(this.position, this.littleEndian);\n this.position++;\n return retValue;\n};\n\nBinaryParser.prototype.getShort = function () {\n\n var retValue = this.view.getInt16(this.position, this.littleEndian);\n this.position += 2;\n return retValue;\n};\n\nBinaryParser.prototype.getUShort = function () {\n\n // var byte1 = this.getByte(),\n // byte2 = this.getByte(),\n // retValue = ((byte2 << 24 >>> 16) + (byte1 << 24 >>> 24));\n // return retValue;\n\n //\n var retValue = this.view.getUint16(this.position, this.littleEndian);\n this.position += 2;\n return retValue;\n};\n\n\nBinaryParser.prototype.getInt = function () {\n\n var retValue = this.view.getInt32(this.position, this.littleEndian);\n this.position += 4;\n return retValue;\n};\n\n\nBinaryParser.prototype.getUInt = function () {\n var retValue = this.view.getUint32(this.position, this.littleEndian);\n this.position += 4;\n return retValue;\n};\n\nBinaryParser.prototype.getLong = function () {\n\n // DataView doesn't support long. So we'll try manually\n\n var b = [];\n b[0] = this.view.getUint8(this.position);\n b[1] = this.view.getUint8(this.position + 1);\n b[2] = this.view.getUint8(this.position + 2);\n b[3] = this.view.getUint8(this.position + 3);\n b[4] = this.view.getUint8(this.position + 4);\n b[5] = this.view.getUint8(this.position + 5);\n b[6] = this.view.getUint8(this.position + 6);\n b[7] = this.view.getUint8(this.position + 7);\n\n var value = 0;\n if (this.littleEndian) {\n for (var i = b.length - 1; i >= 0; i--) {\n value = (value * 256) + b[i];\n }\n } else {\n for (var i = 0; i < b.length; i++) {\n value = (value * 256) + b[i];\n }\n }\n\n\n this.position += 8;\n return value;\n};\n\nBinaryParser.prototype.getString = function (len) {\n\n var s = \"\";\n var c;\n while ((c = this.view.getUint8(this.position++)) != 0) {\n s += String.fromCharCode(c);\n if (len && s.length == len) break;\n }\n return s;\n};\n\nBinaryParser.prototype.getFixedLengthString = function (len) {\n\n var s = \"\";\n var i;\n var c;\n for (i = 0; i < len; i++) {\n c = this.view.getUint8(this.position++);\n if (c > 0) {\n s += String.fromCharCode(c);\n }\n }\n return s;\n};\n\nBinaryParser.prototype.getFixedLengthTrimmedString = function (len) {\n\n var s = \"\";\n var i;\n var c;\n for (i = 0; i < len; i++) {\n c = this.view.getUint8(this.position++);\n if (c > 32) {\n s += String.fromCharCode(c);\n }\n }\n return s;\n};\n\nBinaryParser.prototype.getFloat = function () {\n\n var retValue = this.view.getFloat32(this.position, this.littleEndian);\n this.position += 4;\n return retValue;\n\n\n};\n\nBinaryParser.prototype.getDouble = function () {\n\n var retValue = this.view.getFloat64(this.position, this.littleEndian);\n this.position += 8;\n return retValue;\n};\n\nBinaryParser.prototype.skip = function (n) {\n\n this.position += n;\n return this.position;\n};\n\n\n/**\n * Return a bgzip (bam and tabix) virtual pointer\n * TODO -- why isn't 8th byte used ?\n * @returns {*}\n */\nBinaryParser.prototype.getVPointer = function () {\n\n var position = this.position,\n offset = (this.view.getUint8(position + 1) << 8) | (this.view.getUint8(position)),\n byte6 = ((this.view.getUint8(position + 6) & 0xff) * 0x100000000),\n byte5 = ((this.view.getUint8(position + 5) & 0xff) * 0x1000000),\n byte4 = ((this.view.getUint8(position + 4) & 0xff) * 0x10000),\n byte3 = ((this.view.getUint8(position + 3) & 0xff) * 0x100),\n byte2 = ((this.view.getUint8(position + 2) & 0xff)),\n block = byte6 + byte5 + byte4 + byte3 + byte2;\n this.position += 8;\n\n // if (block == 0 && offset == 0) {\n // return null;\n // } else {\n return new VPointer(block, offset);\n // }\n};\n\n\nfunction VPointer(block, offset) {\n this.block = block;\n this.offset = offset;\n}\n\nVPointer.prototype.isLessThan = function (vp) {\n return this.block < vp.block ||\n (this.block === vp.block && this.offset < vp.offset);\n};\n\nVPointer.prototype.isGreaterThan = function (vp) {\n return this.block > vp.block ||\n (this.block === vp.block && this.offset > vp.offset);\n};\n\nVPointer.prototype.print = function () {\n return \"\" + this.block + \":\" + this.offset;\n};\n\nclass MatrixZoomData {\n\n constructor(chr1, chr2) {\n\n this.chr1 = chr1; // chromosome index\n this.chr2 = chr2;\n }\n\n getKey () {\n return this.chr1.name + \"_\" + this.chr2.name + \"_\" + this.zoom.unit + \"_\" + this.zoom.binSize;\n }\n\n getBlockNumbers(region1, region2, version) {\n\n // Verify region chromosomes and swap if neccessary\n if(region1.chr == this.chr2 && region2.chr === this.chr1) {\n const tmp = region1;\n region1 = region2;\n region2 = tmp;\n }\n\n const sameChr = this.chr1 === this.chr2;\n const binsize = this.zoom.binSize;\n const blockBinCount = this.blockBinCount;\n const blockColumnCount = this.blockColumnCount;\n return (version < 9 || !sameChr) ? getBlockNumbersV8() : getBlockNumbersV9();\n\n function getBlockNumbersV8()\n {\n const x1 = region1.start / binsize;\n const x2 = region1.end / binsize;\n const y1 = region2.start / binsize;\n const y2 = region2.end / binsize;\n\n const col1 = Math.floor(x1 / blockBinCount);\n const col2 = Math.floor((x2 - 1) / blockBinCount);\n const row1 = Math.floor(y1 / blockBinCount);\n const row2 = Math.floor((y2 - 1) / blockBinCount);\n\n const blockNumbers = [];\n for (let row = row1; row <= row2; row++) {\n for (let column = col1; column <= col2; column++) {\n let blockNumber;\n if (sameChr && row < column) {\n blockNumber = column * blockColumnCount + row;\n } else {\n blockNumber = row * blockColumnCount + column;\n }\n if (!blockNumbers.includes(blockNumber)) { // possible from transposition\n blockNumbers.push(blockNumber);\n }\n }\n }\n return blockNumbers\n }\n\n function getBlockNumbersV9()\n {\n\n const binX1 = region1.start / binsize;\n const binX2 = region1.end / binsize;\n const binY1 = region2.start / binsize;\n const binY2 = region2.end / binsize;\n\n // PAD = positionAlongDiagonal (~projected)\n // Depth is axis perpendicular to diagonal; nearer means closer to diagonal\n const translatedLowerPAD = Math.floor((binX1 + binY1) / 2 / blockBinCount);\n const translatedHigherPAD = Math.floor((binX2 + binY2) / 2 / blockBinCount);\n const translatedNearerDepth = Math.floor(Math.log2(1 + Math.abs(binX1 - binY2) / Math.sqrt(2) / blockBinCount));\n const translatedFurtherDepth = Math.floor(Math.log2(1 + Math.abs(binX2 - binY1) / Math.sqrt(2) / blockBinCount));\n\n // because code above assume above diagonal; but we could be below diagonal\n const containsDiagonal = (binX2 - binY1) * (binX1 - binY2) < 0; // i.e. sign of (x-y) opposite on 2 corners\n const nearerDepth = containsDiagonal ? 0 : Math.min(translatedNearerDepth, translatedFurtherDepth);\n const furtherDepth = Math.max(translatedNearerDepth, translatedFurtherDepth);\n\n const blockNumbers = [];\n for (let depth = nearerDepth; depth <= furtherDepth; depth++) {\n for (let pad = translatedLowerPAD; pad <= translatedHigherPAD; pad++) {\n const block_number = depth * blockColumnCount + pad;\n blockNumbers.push(block_number);\n }\n }\n return blockNumbers\n }\n }\n\n static parseMatrixZoomData(chr1, chr2, dis) {\n\n const zd = new MatrixZoomData(chr1, chr2);\n\n const unit = dis.getString();\n const zoomIndex = dis.getInt();\n const sumCounts = dis.getFloat();\n const occupiedCellCount = dis.getFloat();\n const stdDev = dis.getFloat();\n const percent95 = dis.getFloat();\n const binSize = dis.getInt();\n zd. blockBinCount = dis.getInt();\n zd. blockColumnCount = dis.getInt();\n const nBlocks = dis.getInt();\n\n zd. zoom = {index: zoomIndex, unit: unit, binSize: binSize};\n\n zd.blockIndex = new StaticBlockIndex(nBlocks, dis);\n\n const nBins1 = (chr1.size / binSize);\n const nBins2 = (chr2.size / binSize);\n const avgCount = (sumCounts / nBins1) / nBins2; // <= trying to avoid overflows\n\n zd.averageCount = avgCount;\n zd.sumCounts = sumCounts;\n zd.stdDev = stdDev;\n zd.occupiedCellCount = occupiedCellCount;\n zd.percent95 = percent95;\n\n return zd;\n }\n}\n\n\nclass StaticBlockIndex {\n\n constructor(nBlocks, dis) {\n this.blockIndex = {};\n while (nBlocks-- > 0) {\n const blockNumber = dis.getInt();\n const filePosition = dis.getLong();\n const size = dis.getInt();\n this.blockIndex[blockNumber] = {filePosition, size};\n }\n }\n\n getBlockIndexEntry(blockNumber) {\n return this.blockIndex[blockNumber];\n }\n}\n\nclass Matrix {\n\n constructor(chr1, chr2, zoomDataList) {\n this.chr1 = chr1;\n this.chr2 = chr2;\n this.bpZoomData = [];\n this.fragZoomData = [];\n for (let zd of zoomDataList) {\n if (zd.zoom.unit === \"BP\") {\n this.bpZoomData.push(zd);\n } else {\n this.fragZoomData.push(zd);\n }\n }\n }\n\n /**\n * Find the best zoom level for the given bin size\n * @param binSize\n * @param unit\n * @returns {number}\n */\n findZoomForResolution(binSize, unit) {\n const zdArray = \"FRAG\" === unit ? this.fragZoomData : this.bpZoomData;\n for (let i = 1; i < zdArray.length; i++) {\n var zd = zdArray[i];\n if (zd.zoom.binSize < binSize) {\n return i - 1\n }\n }\n return zdArray.length - 1\n }\n\n /**\n * Fetch zoom data by bin size. If no matching level exists return undefined.\n *\n * @param unit\n * @param binSize\n * @param zoom\n * @returns {undefined|*}\n */\n getZoomData(binSize, unit) {\n unit = unit || \"BP\";\n const zdArray = unit === \"BP\" ? this.bpZoomData : this.fragZoomData;\n for (let i = 0; i < zdArray.length; i++) {\n var zd = zdArray[i];\n if (binSize === zd.zoom.binSize) {\n return zd\n }\n }\n return undefined\n }\n\n /**\n * Return zoom data by resolution index.\n * @param index\n * @param unit\n * @returns {*}\n */\n getZoomDataByIndex(index, unit) {\n const zdArray = \"FRAG\" === unit ? this.fragZoomData : this.bpZoomData;\n return zdArray[index]\n }\n\n static getKey(chrIdx1, chrIdx2) {\n if (chrIdx1 > chrIdx2) {\n const tmp = chrIdx1;\n chrIdx1 = chrIdx2;\n chrIdx2 = tmp;\n }\n return `${chrIdx1}_${chrIdx2}`;\n }\n\n static parseMatrix(data, chromosomes) {\n\n const dis = new BinaryParser(new DataView(data));\n const c1 = dis.getInt(); // Should equal chrIdx1\n const c2 = dis.getInt(); // Should equal chrIdx2\n\n // TODO validate this\n const chr1 = chromosomes[c1];\n const chr2 = chromosomes[c2];\n\n // # of resolution levels (bp and frags)\n let nResolutions = dis.getInt();\n const zdList = [];\n\n while (nResolutions-- > 0) {\n const zd = MatrixZoomData.parseMatrixZoomData(chr1, chr2, dis);\n zdList.push(zd);\n }\n return new Matrix(c1, c2, zdList);\n }\n\n}\n\nclass ContactRecord {\n\n constructor(bin1, bin2, counts) {\n this.bin1 = bin1;\n this.bin2 = bin2;\n this.counts = counts;\n };\n\n getKey() {\n return \"\" + this.bin1 + \"_\" + this.bin2;\n }\n}\n\nclass LRU {\n constructor(max = 10) {\n this.max = max;\n this.map = new Map();\n }\n\n get(key) {\n let item = this.map.get(key);\n if (item) {\n // refresh key\n this.map.delete(key);\n this.map.set(key, item);\n }\n return item;\n }\n\n set(key, val) {\n // refresh key\n if (this.map.has(key)) this.map.delete(key);\n // evict oldest\n else if (this.map.size === this.max) {\n this.map.delete(this.first());\n }\n this.map.set(key, val);\n }\n\n has(key) {\n return this.map.has(key);\n }\n\n clear() {\n this.map.clear();\n }\n\n first() {\n return this.map.keys().next().value;\n }\n}\n\n/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2016-2017 The Regents of the University of California\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and\n * associated documentation files (the \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial\n * portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n */\nconst DOUBLE$1 = 8;\n\nclass NormalizationVector {\n\n constructor(file, filePosition, nValues, dataType) {\n this.file = file;\n this.filePosition = filePosition;\n this.nValues = nValues;\n this.dataType = dataType;\n this.cache = undefined;\n }\n\n async getValues(start, end) {\n\n if(!this.cache || start < this.cache.start || end > this.cache.end) {\n const adjustedStart = Math.max(0, start - 1000);\n const adjustedEnd = Math.min(this.nValues, end + 1000);\n const startPosition = this.filePosition + adjustedStart * this.dataType;\n const n = adjustedEnd - adjustedStart;\n const sizeInBytes = n * this.dataType;\n const data = await this.file.read(startPosition, sizeInBytes);\n if (!data) {\n return undefined;\n }\n const parser = new BinaryParser(new DataView(data));\n\n const values = [];\n for (let i = 0; i < n; i++) {\n values[i] = this.dataType === DOUBLE$1 ? parser.getDouble() : parser.getFloat();\n\n }\n this.cache = {\n start: adjustedStart,\n end: adjustedEnd,\n values: values\n };\n }\n\n const sliceStart = start - this.cache.start;\n const sliceEnd = sliceStart + (end - start);\n return this.cache.values.slice(sliceStart, sliceEnd);\n }\n\n getKey() {\n return NormalizationVector.getKey(this.type, this.chrIdx, this.unit, this.resolution);\n }\n\n\n static getNormalizationVectorKey(type, chrIdx, unit, resolution) {\n return type + \"_\" + chrIdx + \"_\" + unit + \"_\" + resolution;\n }\n}\n\n// Contains \"normalization vector index\" (nvi values) for legacy (v8) hosted files from aidenlab, ENCODE, and 4DN.\n// These values can speed up initialization by a few seconds.\nvar nvi = {\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined.hic\": \"54386046426,55860\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fprimary.hic\": \"33860030033,37504\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Freplicate.hic\": \"30849652794,55832\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fmaternal.hic\": \"1380542661,17185\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fpaternal.hic\": \"1389001777,17185\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2Fcombined.hic\": \"13433880319,35723\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC001.hic\": \"3409347253,35975\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC002.hic\": \"4529947083,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC003.hic\": \"6894962500,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC004.hic\": \"3395593338,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC005.hic\": \"5204128636,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC006.hic\": \"3278363811,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC007.hic\": \"3585547340,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC008.hic\": \"4134197273,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC009.hic\": \"2851728310,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC010.hic\": \"1754216102,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC011.hic\": \"1716829574,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC012.hic\": \"4367980375,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC013.hic\": \"2309654671,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC014.hic\": \"5324950266,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC015.hic\": \"3132333594,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC016.hic\": \"3159154704,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC017.hic\": \"3262554627,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC018.hic\": \"3014216364,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC019.hic\": \"5025753246,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC020.hic\": \"5861584507,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC021.hic\": \"3542263275,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC022.hic\": \"5061949378,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC023.hic\": \"4816423919,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC024.hic\": \"2683781104,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC025.hic\": \"6522701781,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC026.hic\": \"6748846520,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC027.hic\": \"5642693007,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC028.hic\": \"2098921691,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC029.hic\": \"3886454027,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC030.hic\": \"2288984204,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fagar%2FHIC031.hic\": \"2115342419,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fpellet%2FHIC032.hic\": \"2063314324,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fsupernatant%2FHIC033.hic\": \"1933908457,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC034.hic\": \"13555514595,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC035.hic\": \"6129650900,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC036.hic\": \"4307445019,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2FHIC037.hic\": \"9375139867,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fdilution%2Fcombined.hic\": \"11664249584,33929\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_DpnII.hic\": \"7003537290,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC038.hic\": \"2099825544,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC039.hic\": \"2096900138,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC040.hic\": \"2593642141,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC041.hic\": \"2263919098,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC042.hic\": \"2684774693,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2Fcombined_noXlink.hic\": \"5574807456,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC043.hic\": \"2986114347,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC044.hic\": \"1916378621,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC045.hic\": \"746463126,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC046.hic\": \"2338476164,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC047.hic\": \"1167496250,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC048.hic\": \"2231690794,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fin-situ%2FHIC049.hic\": \"2782308678,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC050.hic\": \"3633531346,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC051.hic\": \"4063486444,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC052.hic\": \"929756278,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC053.hic\": \"2489657204,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC054.hic\": \"4036419444,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC055.hic\": \"4284185549,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fin-situ%2FHIC056.hic\": \"4410546240,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fimr90%2Fdilution%2FHIC057.hic\": \"1491998259,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2Fcombined.hic\": \"7266425111,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC058.hic\": \"6532635593,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC059.hic\": \"400684530,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC060.hic\": \"645352187,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC061.hic\": \"736291871,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC062.hic\": \"762731037,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fin-situ%2FHIC063.hic\": \"682917431,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhmec%2Fdilution%2FHIC064.hic\": \"4550171307,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2Fcombined.hic\": \"11897184911,35789\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC065.hic\": \"5425943567,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC066.hic\": \"5942869818,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fin-situ%2FHIC067.hic\": \"5191049261,35647\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fnhek%2Fdilution%2FHIC068.hic\": \"2713318801,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2Fcombined.hic\": \"12641555389,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC069.hic\": \"5630177461,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC070.hic\": \"5926611269,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC071.hic\": \"2486191351,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC072.hic\": \"2281343366,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC073.hic\": \"2173074239,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fk562%2Fin-situ%2FHIC074.hic\": \"2463700999,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2Fcombined.hic\": \"14661922519,35639\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC075.hic\": \"3685310515,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC076.hic\": \"5833658487,35891\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC077.hic\": \"2406346486,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC078.hic\": \"5241454987,35919\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fkbm7%2Fin-situ%2FHIC079.hic\": \"6297234263,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2Fcombined.hic\": \"9193858096,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC080.hic\": \"5171405536,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC081.hic\": \"3489767688,35891\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fin-situ%2FHIC082.hic\": \"4243339375,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhuvec%2Fdilution%2FHIC083.hic\": \"1497495406,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2Fcombined.hic\": \"7923332224,35593\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC084.hic\": \"867699123,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC085.hic\": \"3669518514,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC086.hic\": \"5306474712,35595\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhela%2Fin-situ%2FHIC087.hic\": \"1490963755,36397\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2Fcombined.hic\": \"8956382853,50248\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC088.hic\": \"1874185366,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC089.hic\": \"1301165236,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC090.hic\": \"1105246282,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC091.hic\": \"1338325770,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC092.hic\": \"1307918730,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC093.hic\": \"755136918,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC094.hic\": \"1606583694,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC095.hic\": \"2039711245,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC096.hic\": \"1909573053,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC097.hic\": \"1826710712,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC098.hic\": \"1998793575,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC099.hic\": \"1007740962,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC100.hic\": \"736464120,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC101.hic\": \"980505082,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fin-situ%2FHIC102.hic\": \"1116083646,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC103.hic\": \"1096994310,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fch12-lx-b-lymphoblasts%2Fdilution%2FHIC104.hic\": \"841063882,32102\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC105.hic\": \"107742864,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC106.hic\": \"134295912,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC107.hic\": \"110228014,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC108.hic\": \"102761401,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC109.hic\": \"100461491,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC110.hic\": \"88828472,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC111.hic\": \"81471064,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC112.hic\": \"92297035,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC113.hic\": \"65503916,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC114.hic\": \"49181188,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC115.hic\": \"46471102,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC116.hic\": \"64284432,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC117.hic\": \"60434076,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC118.hic\": \"45248563,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC119.hic\": \"60288782,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC120.hic\": \"136888414,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC121.hic\": \"125009003,33681\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC122.hic\": \"154011688,34127\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC123.hic\": \"177663372,35293\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC124.hic\": \"382186226,35245\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC125.hic\": \"158160717,35271\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC127.hic\": \"110261177,34659\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC128.hic\": \"246131875,35509\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC129.hic\": \"260160119,35667\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC130.hic\": \"117479562,34681\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC131.hic\": \"81508929,34673\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC132.hic\": \"105959102,34895\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC133.hic\": \"91504812,33451\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC134.hic\": \"52222546,33737\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC135.hic\": \"57763085,34159\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC136.hic\": \"50618489,33731\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC137.hic\": \"193163606,33363\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC138.hic\": \"229876152,33777\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC139.hic\": \"201783666,33571\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC140.hic\": \"281163862,34125\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC141.hic\": \"275969727,33935\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC142.hic\": \"275020431,34125\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC144.hic\": \"223834810,34177\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC145.hic\": \"296632653,33937\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC146.hic\": \"290945216,33961\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC147.hic\": \"234459964,34231\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC148.hic\": \"295457850,34039\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC149.hic\": \"113569632,35695\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC150.hic\": \"304381897,33963\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC151.hic\": \"289314545,33805\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC152.hic\": \"284320182,33803\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC153.hic\": \"401393947,34659\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC154.hic\": \"188065488,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC155.hic\": \"299157119,33967\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC156.hic\": \"279289244,33787\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC157.hic\": \"254852119,33917\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC158.hic\": \"195969660,33477\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC159.hic\": \"185720388,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC160.hic\": \"227709279,33599\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC161.hic\": \"157225076,33209\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC162.hic\": \"105703444,32033\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC163.hic\": \"122665658,32121\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC164.hic\": \"228048231,33761\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC165.hic\": \"114440819,32011\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC166.hic\": \"285147558,33891\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC167.hic\": \"363116754,33943\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC168.hic\": \"119592158,31937\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC169.hic\": \"236853872,33785\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC170.hic\": \"195187639,33395\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC171.hic\": \"208044058,33309\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC172.hic\": \"144645916,32877\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC173.hic\": \"119115941,32203\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC175.hic\": \"178030481,33525\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC176.hic\": \"117220136,32169\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC177.hic\": \"128586196,32659\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC178.hic\": \"191419141,33629\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC179.hic\": \"141556748,32959\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC180.hic\": \"199825102,33185\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC181.hic\": \"301022688,33783\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC182.hic\": \"185384453,33205\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC183.hic\": \"202189264,36367\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC184.hic\": \"37464475,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC185.hic\": \"161938278,36099\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC186.hic\": \"133853166,36179\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC188.hic\": \"128068030,36237\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC189.hic\": \"148053886,36177\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC190.hic\": \"198946958,35803\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC191.hic\": \"226584564,36063\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC192.hic\": \"194412797,36341\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC193.hic\": \"176408194,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC194.hic\": \"207215649,36055\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC195.hic\": \"175185530,36315\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC196.hic\": \"168969337,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC197.hic\": \"121231252,36339\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC198.hic\": \"92713752,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC199.hic\": \"105130500,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC200.hic\": \"114526350,36479\",\n \"hicfiles.s3.amazonaws.com%2Fmiseq%2Frh2014%2FHIC201.hic\": \"122689717,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fhap1%2Fin-situ%2Fcombined.hic\": \"9614983328,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fctbp_8_4_17%2Fall_intra_megabase_michrom.hic\": \"154205644,10960\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xa-combined.hic\": \"8843305329,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXa-chrX-diploid.hic\": \"11173520,1498\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-combined.hic\": \"13365182403,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FWT-chrX-diploid.hic\": \"17343459,1498\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC002.hic\": \"4279298739,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC003.hic\": \"3027365532,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC004.hic\": \"2896130835,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC005.hic\": \"4717830071,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC006.hic\": \"5066210154,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC007.hic\": \"3069516128,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2Fdel-Xi-combined.hic\": \"14551096423,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FdelXi-chrX-diploid.hic\": \"17362477,1498\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC008.hic\": \"2572386655,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC009.hic\": \"2935931663,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC010.hic\": \"2019085070,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC011.hic\": \"6087610814,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC012.hic\": \"2809618194,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frpe1%2FDarrowHuntley-2015%2FHIC013.hic\": \"2572386655,36479\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fcombined.hic\": \"6950423609,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fpaternal.hic\": \"220592749,15691\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2Fmaternal.hic\": \"323233095,15691\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC014.hic\": \"3183235800,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC015.hic\": \"1739539801,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC016.hic\": \"1105912758,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC017.hic\": \"1060773319,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC018.hic\": \"1203679874,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fpatski%2FDarrowHuntley-2015%2FHIC019.hic\": \"3321955269,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Frhesus%2FDarrowHuntley-2015%2FHIC020.hic\": \"7108980626,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fgm12878%2Fcola%2FDarrowHuntley-2015%2FHIC021.hic\": \"3906448676,34955\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Faedes%2Fcombined.hic\": \"390780490,2245\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2Fhs2-hic.hic\": \"1960284186,33561\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2Fassembly%2FCpipJ3.hic\": \"766279097,4381\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2Fupdated_O%2FSnyder_O.hic\": \"8046980555,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fphanstiel%2FA_inter.hic\": \"10986005145,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2Fcombined.hic\": \"30439217680,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2Fcombined.hic\": \"33255540403,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F20min_withdraw_combined.hic\": \"11078436933,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F40min_withdraw_combined.hic\": \"11031830038,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F60min_withdraw_combined.hic\": \"10312725340,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Fdeep%2F180min_withdraw_combined.hic\": \"10038610214,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC001.hic\": \"8004335785,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC002.hic\": \"8453215933,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC003.hic\": \"9118406189,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC004.hic\": \"5973342894,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC005.hic\": \"6846576837,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC006.hic\": \"6075148017,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Funsynchronized%2FHIC007.hic\": \"8192366992,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC008.hic\": \"6844159653,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC009.hic\": \"7282063059,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC010.hic\": \"10410578833,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC011.hic\": \"8192366992,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC012.hic\": \"7223422850,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC013.hic\": \"7435986997,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Funsynchronized%2FHIC014.hic\": \"9120113605,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2Fcombined.hic\": \"4170577904,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC015.hic\": \"1504084990,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC016.hic\": \"1686244500,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC017.hic\": \"1804802410,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Funtreated%2Fsynchronized%2FHIC018.hic\": \"1533942067,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2Fcombined.hic\": \"4572390198,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC019.hic\": \"1543609666,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC020.hic\": \"1814133288,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC021.hic\": \"1942698243,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftreated_6hr%2Fsynchronized%2FHIC022.hic\": \"1873587413,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC049.hic\": \"405127557,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC060.hic\": \"326681741,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2Funtreated%2FRao-2017-HIC061.hic\": \"300908673,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC050.hic\": \"481758242,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_20min%2FRao-2017-HIC051.hic\": \"417577401,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC052.hic\": \"419353227,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_40min%2FRao-2017-HIC053.hic\": \"411554953,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC054.hic\": \"386655891,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_60min%2FRao-2017-HIC055.hic\": \"402170701,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_240min%2FRao-2017-HIC057.hic\": \"735906308,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC058.hic\": \"443789827,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC059.hic\": \"491422615,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC062.hic\": \"320261375,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min%2FRao-2017-HIC063.hic\": \"306590499,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC032S.hic\": \"367051742,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_20min%2FRao-2017-HIC033S.hic\": \"344555339,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC036S.hic\": \"349392947,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_40min%2FRao-2017-HIC037S.hic\": \"317714554,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC040S.hic\": \"266786397,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_60min%2FRao-2017-HIC041S.hic\": \"279445530,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC044S.hic\": \"898418269,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_180min%2FRao-2017-HIC045S.hic\": \"961006347,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC064.hic\": \"833576408,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_360min%2FRao-2017-HIC065.hic\": \"840881418,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC066.hic\": \"980958864,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1080min%2FRao-2017-HIC067.hic\": \"882023129,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC068.hic\": \"1110292630,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fdegron%2Ftime_course%2FAuxin_treated_360min_withdraw_1440min%2FRao-2017-HIC069.hic\": \"1001747023,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FCP190_HiChIP.hic\": \"144107588,6976\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27ac_HiChIP_combined.hic\": \"43171370,5233\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FH3K27me3_HiChIP_combined.hic\": \"42906472,5233\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2_ChIAPET.hic\": \"41992430,6976\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPol2S2_HiChIP.hic\": \"145842743,6976\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FArabidopsis_Wang2015_Liu2016.hic\": \"1134391078,4984\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FElegans_Crane2015.hic\": \"387127568,8758\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FNcrassa_Galazka2016.hic\": \"26555511,27725\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fexternal%2Frowley_nichols_mol_cell_2017%2FPfalciparum_trophozoite_Ay2014.hic\": \"15640893,13948\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-A.hic\": \"6897251,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Me-B.hic\": \"4959088,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-A.hic\": \"5232286,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FE-Mp-B.hic\": \"5105292,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-A.hic\": \"6900072,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Me-B.hic\": \"8653258,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-A.hic\": \"7999058,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fduan%2FH-Mp-B.hic\": \"8774657,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc.hic\": \"23671753603,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep1.hic\": \"23671754721,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fh1hesc_rep2.hic\": \"22269909910,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdekker%2F4dn%2Fhffc6_rep1.hic\": \"19016661622,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_NcoI.hic\": \"480725203,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2F302NH.hic\": \"99948617,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FK562.hic\": \"470263605,36151\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_HindIII.hic\": \"293706559,36289\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flieberman_aiden_van_berkum%2FGM06990_rep_HindIII.hic\": \"309673862,36087\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep1.hic\": \"1531151371,56905\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fcanis-lupus-rep2.hic\": \"2851437676,56905\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmouse-rep1.hic\": \"582052544,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep1.hic\": \"698509182,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Fmacaque-rep2.hic\": \"461410393,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep1.hic\": \"691045338,33561\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frudan%2Frabbit-rep2.hic\": \"668888336,33561\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsexton%2Fcombined.hic\": \"50650087,4486\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-hindiii.hic\": \"1071142023,16500\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-mboi.hic\": \"1508851093,16448\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Fnon-tcc-hindiii.hic\": \"395179229,36093\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fkalhor%2Ftcc-combined.hic\": \"1050423847,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-hindiii%2Fsplit-read-run.hic\": \"9599984876,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fhesc-hindiii.hic\": \"1952555632,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fimr90-hindiii.hic\": \"9691260435,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdixon%2Fmm9-cortex.hic\": \"3712072953,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr18.hic\": \"2083350075,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr2.hic\": \"3362049644,16360\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fatm-i-scei-chr7.hic\": \"1658399854,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr15.hic\": \"866691249,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzhang%2Fwt-i-scei-chr2.hic\": \"3304782795,16386\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-1.hic\": \"23673506,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-2.hic\": \"26873280,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-3.hic\": \"31066362,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-4.hic\": \"16807724,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-5.hic\": \"28665065,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-6.hic\": \"13124158,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-7.hic\": \"15118945,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-8.hic\": \"68316814,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-9.hic\": \"18965101,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2Fcell-10.hic\": \"17020666,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Fcombined.hic\": \"6526601242,36427\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep1.hic\": \"1861562891,36401\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep2.hic\": \"3061013635,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep3.hic\": \"1564588211,35969\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep4.hic\": \"1255543175,36153\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep5.hic\": \"974683253,36179\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90%2Frep6.hic\": \"1040805629,36053\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Fcombined.hic\": \"8424080116,36401\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep1.hic\": \"2697976702,36295\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep3.hic\": \"1718610467,36159\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep4.hic\": \"2029519405,36101\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep5.hic\": \"985310855,36069\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjin%2Fimr90-tnf-alpha%2Frep6.hic\": \"1418750480,35967\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fmhh-call-4-cell-line.hic\": \"538380253,35351\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fprimary-b-all.hic\": \"773764191,35793\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Fnormal-b-cell-line.hic\": \"336271459,35005\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fcheng%2Frl-cell-line.hic\": \"484807998,35351\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-biorep.hic\": \"135932435,8758\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep1.hic\": \"160355961,8758\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fhou%2Fkc167-techrep2.hic\": \"188809887,8758\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fpre-prob-egs.hic\": \"2237792858,15483\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-egs.hic\": \"5744720377,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Flin%2Fprob-fa.hic\": \"2174866215,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhct116-rnapii-pilot.hic\": \"396366166,35999\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fhela-rnapii-pilot.hic\": \"882516759,35107\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-pilot.hic\": \"1131576189,35969\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fk562-rnapii-saturated.hic\": \"571583828,36291\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fmcf7-rnapii-saturated.hic\": \"1282547841,36035\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fli%2Fnb4-rnapii-pilot.hic\": \"761614686,34861\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fjung%2Fmouse_sperm.hic\": \"1730231642,29184\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ftang%2Fgm12878.hic\": \"1953518212,20505\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791299.hic\": \"5723484,11956\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frutledge%2FSRR1791297.hic\": \"16534743,23348\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv.hic\": \"5094525579,36289\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep1.hic\": \"2574358912,36373\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-hrv-rep2.hic\": \"3417099433,36243\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev.hic\": \"4785157552,36323\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep1.hic\": \"2648268465,36321\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-rad21cv-tev-rep2.hic\": \"2994727980,36107\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf.hic\": \"5391791815,36063\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep1.hic\": \"3325842095,36269\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctcf-rep2.hic\": \"3096215920,36167\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl.hic\": \"3830902383,36167\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl-rep1.hic\": \"1346712252,36079\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fzuin%2Fhek293t-sirna-ctrl_rep2.hic\": \"3098067367,36271\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-0h-hiseq.hic\": \"38174042,21889\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq.hic\": \"26506099,21889\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-18h-hiseq-non-crosslinked_control.hic\": \"3545496,21889\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fay%2Fp-falciparum-3d7-36h-hiseq.hic\": \"70754194,21889\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fg1mid-r1.hic\": \"200863476,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r1.hic\": \"249021190,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3%2Fm-r2.hic\": \"212341157,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-0-25fa.hic\": \"583572265,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fg1-1fa.hic\": \"354502306,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-0-25fa.hic\": \"149308791,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-98percent.hic\": \"778175225,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhelas3ccl2p2%2Fm-1fa.hic\": \"158091047,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-ns-r1.hic\": \"801670039,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fhff1%2Fcchic-hff1-m-r1.hic\": \"875922086,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r1.hic\": \"130959943,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnaumova%2Fk562%2Fm-r2.hic\": \"237861106,17185\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT.hic\": \"496104039,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-WT-adv-cre.hic\": \"438608517,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep1.hic\": \"446205712,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-floxed-rep2.hic\": \"386354767,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep1.hic\": \"621998722,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmAST-deleted-rep2.hic\": \"583840829,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep1.hic\": \"801290988,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-floxed-rep2.hic\": \"819406658,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep1.hic\": \"792825269,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-deleted-rep2.hic\": \"746189884,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT.hic\": \"309353372,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fsofueva%2FmNSC-WT-OHT.hic\": \"274229679,30643\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R1.hic\": \"1490362251,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21KO-R3.hic\": \"2403664421,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R1.hic\": \"1377124538,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fseitan%2FTcell-Rad21WT-R3.hic\": \"2646201369,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2Fcrh6-mutant.hic\": \"105261071,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmoissiard%2FWT.hic\": \"127506388,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2FCol.hic\": \"153638500,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn1.hic\": \"211213220,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fgrob%2Fcrwn4.hic\": \"134236837,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fxie%2Fprimary.hic\": \"92936173,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt337.hic\": \"318737891,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt-control6wt67.hic\": \"348123956,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt337.hic\": \"251107279,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2F6wt67.hic\": \"351840994,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2FCol0.hic\": \"345969497,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fclf28-swn7.hic\": \"299585025,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fcmt3-11.hic\": \"253427706,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fddm1-2.hic\": \"303626924,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fmet1-3.hic\": \"347697973,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Ffeng%2Fsuvh4-suvh5-suvh6.hic\": \"263122019,10217\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNase-HiC-WG-K562.hic\": \"892955840,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FDNaseHiC-WG-H1.hic\": \"696922695,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-K562-rep1.hic\": \"341917716,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargeredDNaseHiC-lincRNA-K562-rep2.hic\": \"214841185,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep1.hic\": \"616326137,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-lincRNA-H1-rep2.hic\": \"579654013,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-H1-rep1.hic\": \"519810544,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fma%2FtargetedDNaseHiC-pe-K562-rep1.hic\": \"199553123,18679\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII.hic\": \"1319373594,6976\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_HinfI.hic\": \"1465493873,6976\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Frowley%2FKc167_DpnII_HinfI_combo.hic\": \"753062558,5814\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-10A.hic\": \"2784956115,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbarutcu%2FMCF-7.hic\": \"2700457411,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbatullin%2Fsperm.hic\": \"501052169,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep1.hic\": \"1450697530,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2FWT_hiC_rep2.hic\": \"1189371558,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Fcombined.hic\": \"2262007875,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Finactive.hic\": \"4444564,751\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fminajigi%2Factive.hic\": \"3993495,751\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep1.hic\": \"1650838357,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_rep2.hic\": \"1258038606,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski.hic\": \"499827296,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_active.hic\": \"79175714,15691\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fpatski_inactive.hic\": \"98947881,15691\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_dnase.hic\": \"4298088401,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_in_situ_dnase.hic\": \"609321852,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain.hic\": \"1028196506,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_active.hic\": \"79175714,15691\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fdeng%2Fbrain_inactive.hic\": \"98947881,15691\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep1.hic\": \"1283306,1463\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FBglII_rep2.hic\": \"1263227,1463\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fle%2FNcoI_rep1.hic\": \"4380906,1463\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined.hic\": \"1829549643,25624\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Feagen%2FGSE89112_Kc167combined_randomized.hic\": \"1859742654,25624\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_GM_cohesin.hic\": \"1231264781,17932\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_cohesin_all.hic\": \"1152008628,16438\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fmumbach%2FGSE80820_HiChIP_mES_Oct4.hic\": \"912828146,16438\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FSCC4KO.hic\": \"1767906138,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FDKO.hic\": \"1487228787,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_1.14.hic\": \"1189751862,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWaplKO_3.3.hic\": \"1155057696,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fwapl_hic%2FWT.hic\": \"1522401568,18679\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2Fmega_Liverpool%2Fmega.hic\": \"2612171975,4381\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2836_Liverpool1%2FLiverpool1.hic\": \"191729195,2245\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2861_Liverpool2%2FLiverpool2.hic\": \"1637096030,4381\",\n \"s3.amazonaws.com%2Fhicfiles%2Fhiseq%2Fskfuwi4fnsjkdf9jekrw2%2FHIC2862_Liverpool3%2FLiverpool3.hic\": \"1160045602,4381\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC.hic\": \"11857786247,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2FHSPC_CanyonDel.hic\": \"8139168836,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Ftcell.hic\": \"9871547081,36479\",\n \"s3.amazonaws.com%2Fhicfiles%2Fexternal%2Fgoodell%2Fep.hic\": \"17479335373,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fnagano%2FTh1_ensemble.hic\": \"1690592868,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FES_mapq30.hic\": \"32930498831,32386\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FNPC_mapq30.hic\": \"55053730986,32386\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fbonev%2FCN_mapq30.hic\": \"53138031154,32386\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_72_hours_WT.hic\": \"16492991184,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_WT.hic\": \"23057795398,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_MYC_KO.hic\": \"21245554876,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-resting_B_cells_TSA.hic\": \"13933346059,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-activated_B_cells_24_hours_oligomycin.hic\": \"21902506832,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FKieffer-Kwon_et_al_2017%2FMain_maps%2FKieffer-Kwon-2017-mES_WT.hic\": \"9451969795,32102\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_WT.hic\": \"3600188564,16438\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_WT.hic\": \"1309503359,16438\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_30_hours_HU_treated.hic\": \"1477252396,16438\",\n \"hicfiles.s3.amazonaws.com%2Fhiseq%2FVian_et_al_2018%2FMain_maps%2FVian-2018-activated_B_cells_24_hours_flavopiridol.hic\": \"15711773490,32102\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FPGP1F_mega_090118%2FPGP1F_mega_090118_30.hic\": \"24786676166,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7145%2FHIC7145_30.hic\": \"4554644616,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7146%2FHIC7146_30.hic\": \"4174848944,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7147%2FHIC7147_30.hic\": \"5062229182,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7862%2FHIC7862_30.hic\": \"4520990620,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7863%2FHIC7863_30.hic\": \"4330354773,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7864%2FHIC7864_30.hic\": \"5880640268,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7865%2FHIC7865_30.hic\": \"4431632469,36479\",\n \"hicfiles.s3.amazonaws.com%2Fexternal%2Fpgp%2FHIC7866%2FHIC7866_30.hic\": \"4686000222,36479\",\n \"encode-public.s3.amazonaws.com%2F2018%2F10%2F19%2Fb122542b-306c-4631-bdc3-2e155e89af55%2FENCFF718AWL.hic\": \"39544267907,58932\",\n \"encode-public.s3.amazonaws.com%2F2019%2F02%2F15%2F8e787cd8-e388-4bc2-a236-7a5e6f39e0c0%2FENCFF999YXX.hic\": \"9255069996,56883\",\n \"encode-public.s3.amazonaws.com%2F2019%2F02%2F08%2Ffc1d9d5d-8fa0-4e29-9080-3da674d9490d%2FENCFF543USQ.hic\": \"5005263062,36479\",\n \"s3.us-east-1.wasabisys.com%2Fhicfiles%2Finternal%2FLCL_mega_42B_500bp_30.hic\": \"106482584851,22829\",\n \"www.encodeproject.org%2Ffiles%2FENCFF925QIF%2F%40%40download%2FENCFF925QIF.hic\": \"51712684396,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF259YUS%2F%40%40download%2FENCFF259YUS.hic\": \"24640030444,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF783KQI%2F%40%40download%2FENCFF783KQI.hic\": \"27209249856,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF318JAP%2F%40%40download%2FENCFF318JAP.hic\": \"28636979242,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF512PQA%2F%40%40download%2FENCFF512PQA.hic\": \"28124104361,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF591MHA%2F%40%40download%2FENCFF591MHA.hic\": \"37373387202,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF197OWW%2F%40%40download%2FENCFF197OWW.hic\": \"41826180893,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF317OIA%2F%40%40download%2FENCFF317OIA.hic\": \"34741636038,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF522YLZ%2F%40%40download%2FENCFF522YLZ.hic\": \"24064692329,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF420JTA%2F%40%40download%2FENCFF420JTA.hic\": \"21202405177,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF871ZDJ%2F%40%40download%2FENCFF871ZDJ.hic\": \"10124815680,18679\",\n \"www.encodeproject.org%2Ffiles%2FENCFF349RZY%2F%40%40download%2FENCFF349RZY.hic\": \"4446702705,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF738YON%2F%40%40download%2FENCFF738YON.hic\": \"3338049584,35947\",\n \"www.encodeproject.org%2Ffiles%2FENCFF406KJN%2F%40%40download%2FENCFF406KJN.hic\": \"4132875306,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF081NPN%2F%40%40download%2FENCFF081NPN.hic\": \"34495587443,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF946RZW%2F%40%40download%2FENCFF946RZW.hic\": \"34571955193,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF602CHT%2F%40%40download%2FENCFF602CHT.hic\": \"30674798032,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF150DKS%2F%40%40download%2FENCFF150DKS.hic\": \"12618769864,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF614IPZ%2F%40%40download%2FENCFF614IPZ.hic\": \"42450060331,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF571ZQR%2F%40%40download%2FENCFF571ZQR.hic\": \"15230068871,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF705MKK%2F%40%40download%2FENCFF705MKK.hic\": \"38686554702,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF658KTB%2F%40%40download%2FENCFF658KTB.hic\": \"13195884405,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF435JYN%2F%40%40download%2FENCFF435JYN.hic\": \"17192139674,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF016JKX%2F%40%40download%2FENCFF016JKX.hic\": \"37266736642,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF294GFP%2F%40%40download%2FENCFF294GFP.hic\": \"36389843399,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF700CYI%2F%40%40download%2FENCFF700CYI.hic\": \"60482012152,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF962EDB%2F%40%40download%2FENCFF962EDB.hic\": \"39394328182,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF467OGP%2F%40%40download%2FENCFF467OGP.hic\": \"35572788855,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF556RLR%2F%40%40download%2FENCFF556RLR.hic\": \"34826921187,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF309UNV%2F%40%40download%2FENCFF309UNV.hic\": \"48510618174,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF653HCO%2F%40%40download%2FENCFF653HCO.hic\": \"41079007620,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF120DSV%2F%40%40download%2FENCFF120DSV.hic\": \"12790195576,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF284OEA%2F%40%40download%2FENCFF284OEA.hic\": \"46007570339,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF035BLF%2F%40%40download%2FENCFF035BLF.hic\": \"63868871985,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF094KKX%2F%40%40download%2FENCFF094KKX.hic\": \"42151419971,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF965BPU%2F%40%40download%2FENCFF965BPU.hic\": \"42717376107,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF842DUO%2F%40%40download%2FENCFF842DUO.hic\": \"39553892515,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF417GBZ%2F%40%40download%2FENCFF417GBZ.hic\": \"45544785452,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF499BVX%2F%40%40download%2FENCFF499BVX.hic\": \"40900674170,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF136XCV%2F%40%40download%2FENCFF136XCV.hic\": \"47700392974,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF224HKR%2F%40%40download%2FENCFF224HKR.hic\": \"40426005932,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF711XSR%2F%40%40download%2FENCFF711XSR.hic\": \"41434581949,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF660JWA%2F%40%40download%2FENCFF660JWA.hic\": \"54201632697,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF081PMO%2F%40%40download%2FENCFF081PMO.hic\": \"53428285130,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF799QGA%2F%40%40download%2FENCFF799QGA.hic\": \"1228682189,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF473CAA%2F%40%40download%2FENCFF473CAA.hic\": \"1077514950,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF663FRL%2F%40%40download%2FENCFF663FRL.hic\": \"39843938245,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF341WOY%2F%40%40download%2FENCFF341WOY.hic\": \"34792598619,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF515ZBF%2F%40%40download%2FENCFF515ZBF.hic\": \"41779230923,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF545GBW%2F%40%40download%2FENCFF545GBW.hic\": \"38351980358,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF252ANV%2F%40%40download%2FENCFF252ANV.hic\": \"37668839771,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF912NDK%2F%40%40download%2FENCFF912NDK.hic\": \"21196851956,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF683PLM%2F%40%40download%2FENCFF683PLM.hic\": \"21849338763,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF355NFJ%2F%40%40download%2FENCFF355NFJ.hic\": \"47880627268,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF507WEW%2F%40%40download%2FENCFF507WEW.hic\": \"35777782924,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF241MSL%2F%40%40download%2FENCFF241MSL.hic\": \"22507408288,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF135MUT%2F%40%40download%2FENCFF135MUT.hic\": \"24168734040,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF459FRB%2F%40%40download%2FENCFF459FRB.hic\": \"37166770103,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF705YZH%2F%40%40download%2FENCFF705YZH.hic\": \"44679182442,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF395INO%2F%40%40download%2FENCFF395INO.hic\": \"56727346538,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF736ITL%2F%40%40download%2FENCFF736ITL.hic\": \"49036286185,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF546TZN%2F%40%40download%2FENCFF546TZN.hic\": \"33195126348,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF706SFK%2F%40%40download%2FENCFF706SFK.hic\": \"3271831702,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF922ERE%2F%40%40download%2FENCFF922ERE.hic\": \"12476647122,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF876OWE%2F%40%40download%2FENCFF876OWE.hic\": \"1538692704,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF227XJZ%2F%40%40download%2FENCFF227XJZ.hic\": \"1925617685,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF053BXY%2F%40%40download%2FENCFF053BXY.hic\": \"1032237652,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF014VMM%2F%40%40download%2FENCFF014VMM.hic\": \"1564021703,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF563XES%2F%40%40download%2FENCFF563XES.hic\": \"1489180508,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF482LGO%2F%40%40download%2FENCFF482LGO.hic\": \"1208778887,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF216QQM%2F%40%40download%2FENCFF216QQM.hic\": \"6293163571,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF256UOW%2F%40%40download%2FENCFF256UOW.hic\": \"6293163571,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF791UZC%2F%40%40download%2FENCFF791UZC.hic\": \"37029615181,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF911AHQ%2F%40%40download%2FENCFF911AHQ.hic\": \"34246649165,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF491AOR%2F%40%40download%2FENCFF491AOR.hic\": \"558663570,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF307PDL%2F%40%40download%2FENCFF307PDL.hic\": \"525321519,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF773ITV%2F%40%40download%2FENCFF773ITV.hic\": \"295464771,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF198SSL%2F%40%40download%2FENCFF198SSL.hic\": \"500142476,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF251UEF%2F%40%40download%2FENCFF251UEF.hic\": \"567443575,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF942LTN%2F%40%40download%2FENCFF942LTN.hic\": \"4430960222,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF543USQ%2F%40%40download%2FENCFF543USQ.hic\": \"5005263062,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF434XQU%2F%40%40download%2FENCFF434XQU.hic\": \"25506511674,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF318GOM%2F%40%40download%2FENCFF318GOM.hic\": \"44750824314,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF004TKY%2F%40%40download%2FENCFF004TKY.hic\": \"20705661833,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF493YNC%2F%40%40download%2FENCFF493YNC.hic\": \"53407154984,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF334XXU%2F%40%40download%2FENCFF334XXU.hic\": \"14341194962,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF569RJM%2F%40%40download%2FENCFF569RJM.hic\": \"1922066634,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF076LWH%2F%40%40download%2FENCFF076LWH.hic\": \"39406255845,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF977XWK%2F%40%40download%2FENCFF977XWK.hic\": \"20563512962,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF127TPS%2F%40%40download%2FENCFF127TPS.hic\": \"21032070512,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF480KLP%2F%40%40download%2FENCFF480KLP.hic\": \"33115569647,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF281ILS%2F%40%40download%2FENCFF281ILS.hic\": \"28236353584,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF129LMU%2F%40%40download%2FENCFF129LMU.hic\": \"35247096013,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF759YCW%2F%40%40download%2FENCFF759YCW.hic\": \"16058537743,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF045YOM%2F%40%40download%2FENCFF045YOM.hic\": \"19775445828,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF013TGD%2F%40%40download%2FENCFF013TGD.hic\": \"4208420532,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF929RPW%2F%40%40download%2FENCFF929RPW.hic\": \"1974260276,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF996XEO%2F%40%40download%2FENCFF996XEO.hic\": \"2072918865,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF097SKJ%2F%40%40download%2FENCFF097SKJ.hic\": \"1983524001,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF464KRA%2F%40%40download%2FENCFF464KRA.hic\": \"1957300131,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF406HHC%2F%40%40download%2FENCFF406HHC.hic\": \"3854527235,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF080DPJ%2F%40%40download%2FENCFF080DPJ.hic\": \"19953768024,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF621AIY%2F%40%40download%2FENCFF621AIY.hic\": \"26781700010,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF366ERB%2F%40%40download%2FENCFF366ERB.hic\": \"1049184239,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF997RGL%2F%40%40download%2FENCFF997RGL.hic\": \"2521167549,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF029MPB%2F%40%40download%2FENCFF029MPB.hic\": \"1854711185,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF043EEE%2F%40%40download%2FENCFF043EEE.hic\": \"2924133032,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF920CJR%2F%40%40download%2FENCFF920CJR.hic\": \"3011577886,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF928NJV%2F%40%40download%2FENCFF928NJV.hic\": \"2778936244,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF894GLR%2F%40%40download%2FENCFF894GLR.hic\": \"2831733099,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF303PCK%2F%40%40download%2FENCFF303PCK.hic\": \"688704435,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF999YXX%2F%40%40download%2FENCFF999YXX.hic\": \"9255069996,56883\",\n \"www.encodeproject.org%2Ffiles%2FENCFF685BLG%2F%40%40download%2FENCFF685BLG.hic\": \"16797022992,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF188SSH%2F%40%40download%2FENCFF188SSH.hic\": \"16797023050,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF465ESX%2F%40%40download%2FENCFF465ESX.hic\": \"13489465953,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF493SFI%2F%40%40download%2FENCFF493SFI.hic\": \"30033046818,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF235LCO%2F%40%40download%2FENCFF235LCO.hic\": \"38572174589,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF625VNK%2F%40%40download%2FENCFF625VNK.hic\": \"45202258438,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF304HMS%2F%40%40download%2FENCFF304HMS.hic\": \"36994445315,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF605CEN%2F%40%40download%2FENCFF605CEN.hic\": \"40358346301,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF086ORS%2F%40%40download%2FENCFF086ORS.hic\": \"22650781304,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF237UKR%2F%40%40download%2FENCFF237UKR.hic\": \"41516707246,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF004YZQ%2F%40%40download%2FENCFF004YZQ.hic\": \"71900665326,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF104THR%2F%40%40download%2FENCFF104THR.hic\": \"15172410632,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF807IRK%2F%40%40download%2FENCFF807IRK.hic\": \"17346637451,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF193CQL%2F%40%40download%2FENCFF193CQL.hic\": \"55726903245,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF700DEX%2F%40%40download%2FENCFF700DEX.hic\": \"20231399798,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF234MDO%2F%40%40download%2FENCFF234MDO.hic\": \"24635312640,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF181ROW%2F%40%40download%2FENCFF181ROW.hic\": \"26883606497,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF896OFN%2F%40%40download%2FENCFF896OFN.hic\": \"36952196833,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF573OPJ%2F%40%40download%2FENCFF573OPJ.hic\": \"36685546919,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF028RXH%2F%40%40download%2FENCFF028RXH.hic\": \"31053919206,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF156GGD%2F%40%40download%2FENCFF156GGD.hic\": \"35284134289,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF496GEU%2F%40%40download%2FENCFF496GEU.hic\": \"44659660933,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF945TUH%2F%40%40download%2FENCFF945TUH.hic\": \"3898570191,35639\",\n \"www.encodeproject.org%2Ffiles%2FENCFF698KFV%2F%40%40download%2FENCFF698KFV.hic\": \"4427896684,35751\",\n \"www.encodeproject.org%2Ffiles%2FENCFF239BHZ%2F%40%40download%2FENCFF239BHZ.hic\": \"1718552021,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF277LAN%2F%40%40download%2FENCFF277LAN.hic\": \"4542391336,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF397CMD%2F%40%40download%2FENCFF397CMD.hic\": \"2832016430,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF778OYA%2F%40%40download%2FENCFF778OYA.hic\": \"14067187484,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF775VSU%2F%40%40download%2FENCFF775VSU.hic\": \"14067187484,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF812THZ%2F%40%40download%2FENCFF812THZ.hic\": \"9667720429,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF777KBU%2F%40%40download%2FENCFF777KBU.hic\": \"5058284320,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF688KOY%2F%40%40download%2FENCFF688KOY.hic\": \"4198695833,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF223UBX%2F%40%40download%2FENCFF223UBX.hic\": \"1206064037,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF273XBU%2F%40%40download%2FENCFF273XBU.hic\": \"44085607579,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF952JZV%2F%40%40download%2FENCFF952JZV.hic\": \"44728845246,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF643NDM%2F%40%40download%2FENCFF643NDM.hic\": \"35877886780,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF586MQY%2F%40%40download%2FENCFF586MQY.hic\": \"71158037547,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF251VFA%2F%40%40download%2FENCFF251VFA.hic\": \"40089479399,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF033WGK%2F%40%40download%2FENCFF033WGK.hic\": \"30802023728,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF649OHR%2F%40%40download%2FENCFF649OHR.hic\": \"28203184265,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF782WVZ%2F%40%40download%2FENCFF782WVZ.hic\": \"37248221674,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF579CAR%2F%40%40download%2FENCFF579CAR.hic\": \"39662025395,54779\",\n \"www.encodeproject.org%2Ffiles%2FENCFF514XWQ%2F%40%40download%2FENCFF514XWQ.hic\": \"1319613701,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF666USK%2F%40%40download%2FENCFF666USK.hic\": \"15051670107,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF047SDP%2F%40%40download%2FENCFF047SDP.hic\": \"1357076705,16438\",\n \"www.encodeproject.org%2Ffiles%2FENCFF584LEP%2F%40%40download%2FENCFF584LEP.hic\": \"9314176858,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF671SOE%2F%40%40download%2FENCFF671SOE.hic\": \"3273732256,16438\",\n \"www.encodeproject.org%2Ffiles%2FENCFF702LAP%2F%40%40download%2FENCFF702LAP.hic\": \"1800427500,31682\",\n \"www.encodeproject.org%2Ffiles%2FENCFF339PON%2F%40%40download%2FENCFF339PON.hic\": \"5394351199,31514\",\n \"www.encodeproject.org%2Ffiles%2FENCFF741QPR%2F%40%40download%2FENCFF741QPR.hic\": \"4271510019,30139\",\n \"www.encodeproject.org%2Ffiles%2FENCFF103ANX%2F%40%40download%2FENCFF103ANX.hic\": \"4439745804,30083\",\n \"www.encodeproject.org%2Ffiles%2FENCFF395SBC%2F%40%40download%2FENCFF395SBC.hic\": \"1596732351,31850\",\n \"www.encodeproject.org%2Ffiles%2FENCFF289WNN%2F%40%40download%2FENCFF289WNN.hic\": \"8632980535,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF381EAU%2F%40%40download%2FENCFF381EAU.hic\": \"1702476311,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF976FEY%2F%40%40download%2FENCFF976FEY.hic\": \"1448279040,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF485LVS%2F%40%40download%2FENCFF485LVS.hic\": \"1593610856,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF143VJV%2F%40%40download%2FENCFF143VJV.hic\": \"1422312076,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF588NHX%2F%40%40download%2FENCFF588NHX.hic\": \"3943637009,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF768UBD%2F%40%40download%2FENCFF768UBD.hic\": \"24786676166,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF965PEE%2F%40%40download%2FENCFF965PEE.hic\": \"29387092778,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF702IFC%2F%40%40download%2FENCFF702IFC.hic\": \"29387092778,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF288DNV%2F%40%40download%2FENCFF288DNV.hic\": \"10313429504,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF698HWZ%2F%40%40download%2FENCFF698HWZ.hic\": \"10962849269,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF355OWW%2F%40%40download%2FENCFF355OWW.hic\": \"3219571601,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF177TYX%2F%40%40download%2FENCFF177TYX.hic\": \"10325679706,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF542BHD%2F%40%40download%2FENCFF542BHD.hic\": \"11085397879,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF684IFW%2F%40%40download%2FENCFF684IFW.hic\": \"11085397879,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF592UHE%2F%40%40download%2FENCFF592UHE.hic\": \"21363948089,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF779XIS%2F%40%40download%2FENCFF779XIS.hic\": \"9517383271,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF518PSL%2F%40%40download%2FENCFF518PSL.hic\": \"7500581463,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF275GBB%2F%40%40download%2FENCFF275GBB.hic\": \"7889407162,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF634KXI%2F%40%40download%2FENCFF634KXI.hic\": \"6430702966,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF337QPM%2F%40%40download%2FENCFF337QPM.hic\": \"8529733887,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF162KMP%2F%40%40download%2FENCFF162KMP.hic\": \"5615896908,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF992VTE%2F%40%40download%2FENCFF992VTE.hic\": \"7328975027,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF464WXY%2F%40%40download%2FENCFF464WXY.hic\": \"5715339664,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF752EGH%2F%40%40download%2FENCFF752EGH.hic\": \"1733758743,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF474UJM%2F%40%40download%2FENCFF474UJM.hic\": \"222309548,18679\",\n \"www.encodeproject.org%2Ffiles%2FENCFF531UPZ%2F%40%40download%2FENCFF531UPZ.hic\": \"1827756846,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF022VHA%2F%40%40download%2FENCFF022VHA.hic\": \"244983451,18679\",\n \"www.encodeproject.org%2Ffiles%2FENCFF732NGR%2F%40%40download%2FENCFF732NGR.hic\": \"1679484567,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF513VSF%2F%40%40download%2FENCFF513VSF.hic\": \"28397932940,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF750AOC%2F%40%40download%2FENCFF750AOC.hic\": \"36471430712,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF219YOB%2F%40%40download%2FENCFF219YOB.hic\": \"2859767211,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF604YDD%2F%40%40download%2FENCFF604YDD.hic\": \"3549694085,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF746AMV%2F%40%40download%2FENCFF746AMV.hic\": \"2954867135,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF845ZEB%2F%40%40download%2FENCFF845ZEB.hic\": \"2763039282,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF570LWS%2F%40%40download%2FENCFF570LWS.hic\": \"2861588289,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF883YVR%2F%40%40download%2FENCFF883YVR.hic\": \"2433679887,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF056VLK%2F%40%40download%2FENCFF056VLK.hic\": \"2502986910,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF532DUQ%2F%40%40download%2FENCFF532DUQ.hic\": \"3172615899,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF723PYJ%2F%40%40download%2FENCFF723PYJ.hic\": \"10292839095,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF991SGJ%2F%40%40download%2FENCFF991SGJ.hic\": \"13072407683,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF885UZI%2F%40%40download%2FENCFF885UZI.hic\": \"1201881201,16438\",\n \"www.encodeproject.org%2Ffiles%2FENCFF287KXA%2F%40%40download%2FENCFF287KXA.hic\": \"14705801988,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF335HYI%2F%40%40download%2FENCFF335HYI.hic\": \"20366756545,32102\",\n \"www.encodeproject.org%2Ffiles%2FENCFF121YPY%2F%40%40download%2FENCFF121YPY.hic\": \"2760104016,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF675SJE%2F%40%40download%2FENCFF675SJE.hic\": \"3751779995,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF876LAW%2F%40%40download%2FENCFF876LAW.hic\": \"4032376256,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF740KVX%2F%40%40download%2FENCFF740KVX.hic\": \"3202490322,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF977OQV%2F%40%40download%2FENCFF977OQV.hic\": \"2919735477,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF525EFN%2F%40%40download%2FENCFF525EFN.hic\": \"2394748073,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF690QRC%2F%40%40download%2FENCFF690QRC.hic\": \"3183023394,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF452FWS%2F%40%40download%2FENCFF452FWS.hic\": \"2951805127,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF089KBG%2F%40%40download%2FENCFF089KBG.hic\": \"2531936700,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF939ARM%2F%40%40download%2FENCFF939ARM.hic\": \"3066385212,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF401ZAN%2F%40%40download%2FENCFF401ZAN.hic\": \"3008677144,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF378RZT%2F%40%40download%2FENCFF378RZT.hic\": \"2830232168,26979\",\n \"www.encodeproject.org%2Ffiles%2FENCFF304AVD%2F%40%40download%2FENCFF304AVD.hic\": \"6164439305,50358\",\n \"www.encodeproject.org%2Ffiles%2FENCFF453DBX%2F%40%40download%2FENCFF453DBX.hic\": \"6775246670,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF590VOM%2F%40%40download%2FENCFF590VOM.hic\": \"6443478922,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF246DOF%2F%40%40download%2FENCFF246DOF.hic\": \"6837914659,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF125FXX%2F%40%40download%2FENCFF125FXX.hic\": \"9736232550,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF241RAY%2F%40%40download%2FENCFF241RAY.hic\": \"7686758397,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF415XWQ%2F%40%40download%2FENCFF415XWQ.hic\": \"6973092068,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF374EBH%2F%40%40download%2FENCFF374EBH.hic\": \"8557459058,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF263YWR%2F%40%40download%2FENCFF263YWR.hic\": \"331586820,18679\",\n \"www.encodeproject.org%2Ffiles%2FENCFF280CGS%2F%40%40download%2FENCFF280CGS.hic\": \"1743569614,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF553ZNS%2F%40%40download%2FENCFF553ZNS.hic\": \"1717253636,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF451VOI%2F%40%40download%2FENCFF451VOI.hic\": \"1626927468,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF420MQO%2F%40%40download%2FENCFF420MQO.hic\": \"31055961677,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF301BWY%2F%40%40download%2FENCFF301BWY.hic\": \"38902429246,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF606XNW%2F%40%40download%2FENCFF606XNW.hic\": \"1009699327,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF439ZOU%2F%40%40download%2FENCFF439ZOU.hic\": \"12381714313,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF499SYK%2F%40%40download%2FENCFF499SYK.hic\": \"13182654663,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF532LFI%2F%40%40download%2FENCFF532LFI.hic\": \"8286030286,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF020DPP%2F%40%40download%2FENCFF020DPP.hic\": \"23521952420,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF306VTV%2F%40%40download%2FENCFF306VTV.hic\": \"23521952480,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF399IHE%2F%40%40download%2FENCFF399IHE.hic\": \"10216571232,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF944AII%2F%40%40download%2FENCFF944AII.hic\": \"12567308552,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF230HVV%2F%40%40download%2FENCFF230HVV.hic\": \"8629849711,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF174LAF%2F%40%40download%2FENCFF174LAF.hic\": \"9446506633,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF898HRO%2F%40%40download%2FENCFF898HRO.hic\": \"9446506633,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF429MOR%2F%40%40download%2FENCFF429MOR.hic\": \"1455757398,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF061NXV%2F%40%40download%2FENCFF061NXV.hic\": \"1710915891,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF434PYS%2F%40%40download%2FENCFF434PYS.hic\": \"1832274903,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF704HHX%2F%40%40download%2FENCFF704HHX.hic\": \"1768142834,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF349DPM%2F%40%40download%2FENCFF349DPM.hic\": \"4316041260,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF718AWL%2F%40%40download%2FENCFF718AWL.hic\": \"39544267907,58932\",\n \"www.encodeproject.org%2Ffiles%2FENCFF065LSP%2F%40%40download%2FENCFF065LSP.hic\": \"24929805283,55874\",\n \"www.encodeproject.org%2Ffiles%2FENCFF632MFV%2F%40%40download%2FENCFF632MFV.hic\": \"22333105467,55798\",\n \"www.encodeproject.org%2Ffiles%2FENCFF179HVU%2F%40%40download%2FENCFF179HVU.hic\": \"2659219603,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF791SPZ%2F%40%40download%2FENCFF791SPZ.hic\": \"2537491657,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF211ZWF%2F%40%40download%2FENCFF211ZWF.hic\": \"3512141227,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF614BNU%2F%40%40download%2FENCFF614BNU.hic\": \"5252155462,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF891DLM%2F%40%40download%2FENCFF891DLM.hic\": \"2549095612,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF056EXT%2F%40%40download%2FENCFF056EXT.hic\": \"2219014704,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF776DSS%2F%40%40download%2FENCFF776DSS.hic\": \"3920308353,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF814LQF%2F%40%40download%2FENCFF814LQF.hic\": \"1349480197,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF513ZNA%2F%40%40download%2FENCFF513ZNA.hic\": \"2638868195,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF692IOL%2F%40%40download%2FENCFF692IOL.hic\": \"3106768498,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF294WZY%2F%40%40download%2FENCFF294WZY.hic\": \"2211089761,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF339UWS%2F%40%40download%2FENCFF339UWS.hic\": \"2142759055,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF835FSK%2F%40%40download%2FENCFF835FSK.hic\": \"3919821739,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF328BMB%2F%40%40download%2FENCFF328BMB.hic\": \"2550686152,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF897RTY%2F%40%40download%2FENCFF897RTY.hic\": \"1323294397,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF306MWH%2F%40%40download%2FENCFF306MWH.hic\": \"1665386199,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF039YUJ%2F%40%40download%2FENCFF039YUJ.hic\": \"2335679939,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF468QIN%2F%40%40download%2FENCFF468QIN.hic\": \"3352516594,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF364WXU%2F%40%40download%2FENCFF364WXU.hic\": \"3959043175,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF373MSH%2F%40%40download%2FENCFF373MSH.hic\": \"4429550624,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF959EGQ%2F%40%40download%2FENCFF959EGQ.hic\": \"2475218228,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF624XMK%2F%40%40download%2FENCFF624XMK.hic\": \"3527855681,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF445OKS%2F%40%40download%2FENCFF445OKS.hic\": \"3369125589,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF239QDV%2F%40%40download%2FENCFF239QDV.hic\": \"1960069888,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF645AVM%2F%40%40download%2FENCFF645AVM.hic\": \"4969006589,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF494IPI%2F%40%40download%2FENCFF494IPI.hic\": \"1565483792,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF753IXE%2F%40%40download%2FENCFF753IXE.hic\": \"2892400648,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF731GXX%2F%40%40download%2FENCFF731GXX.hic\": \"5131381303,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF369CAQ%2F%40%40download%2FENCFF369CAQ.hic\": \"4236629448,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF053VBX%2F%40%40download%2FENCFF053VBX.hic\": \"54305946375,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF555ISR%2F%40%40download%2FENCFF555ISR.hic\": \"54305946434,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF964RSP%2F%40%40download%2FENCFF964RSP.hic\": \"12065485229,36479\",\n \"www.encodeproject.org%2Ffiles%2FENCFF234MZQ%2F%40%40download%2FENCFF234MZQ.hic\": \"17507142760,47429\",\n \"www.encodeproject.org%2Ffiles%2FENCFF994CEG%2F%40%40download%2FENCFF994CEG.hic\": \"17507142760,47429\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb068e787-bbdd-49e2-9f6d-7a0e9f065d6e%2F4DNFIHSUIRFY.hic\": \"2701182442,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3768b89a-e124-40eb-8acd-94a4fdd35807%2F4DNFIXTAS6EE.hic\": \"3283740601,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9c513602-5abb-4088-8415-c827c381ab0d%2F4DNFIC3JD6O2.hic\": \"4896075767,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde954dad-1849-4c23-beb4-bf893b7d76c9%2F4DNFIGY85S4W.hic\": \"3364151996,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe1befa6e-8067-4296-8db2-67d2a2458985%2F4DNFI2LTNXME.hic\": \"3699291418,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbb3307fd-7162-477a-87c5-52f12d03befc%2F4DNFID162B9J.hic\": \"3576428773,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8597cdae-8319-42d9-9175-3f77aaee34e1%2F4DNFIQWS3632.hic\": \"4022561190,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F327f091d-6a63-47c4-9752-2dff303a13d9%2F4DNFI6GFHB6G.hic\": \"4239331168,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd70dc3b8-48a7-42c2-bd23-80bc44fc2266%2F4DNFIS5F6EBL.hic\": \"4404671861,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77df7bf8-6a3d-407a-8968-4ca1e78d2269%2F4DNFIF2D3TL9.hic\": \"4793989394,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8f7cc35-d2ef-4717-9009-c02154050fbf%2F4DNFI6EIFUZI.hic\": \"3370273763,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F98449d79-30d1-4e32-801d-07435819a42f%2F4DNFIRKGMZRQ.hic\": \"4669813207,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd4fe1844-2493-4722-8b98-34a93a4bb7d8%2F4DNFIQWD8ZYD.hic\": \"5379889057,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1ee40499-1de4-47ff-b540-d9a65943c6b8%2F4DNFIX7H3CE2.hic\": \"4857679239,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac016170-23a7-4111-8773-353d6c150f34%2F4DNFIO21YDCV.hic\": \"4695989644,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1faea4e7-9a32-466e-a826-0bfdab6cd915%2F4DNFIUE5RAS6.hic\": \"4788044799,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcbd396ed-11bb-404f-aed9-ef10abc258e6%2F4DNFIFI6NIKJ.hic\": \"2069414927,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3f78db-ae92-4215-bcae-76d30c617e5d%2F4DNFIL5K3MA1.hic\": \"2585598247,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66fc2893-224e-48b4-bdb0-25e022dedd03%2F4DNFIPV5KFMK.hic\": \"2060965679,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2b39781d-aadc-434f-abe3-562d61308fdd%2F4DNFIW8TIFI5.hic\": \"1694424195,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6d28f7b-27d3-486f-b5ac-32567416560d%2F4DNFIA6NSSBJ.hic\": \"2219532611,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F08785616-722e-46bb-ade2-2fdd21324e11%2F4DNFIBKZK63V.hic\": \"2429136232,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F904b13d3-1203-42a4-812c-963e80c159b1%2F4DNFI3CFMRID.hic\": \"1233390166,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0ed4afe-5ecf-451d-bb1f-444697e3f558%2F4DNFIYIAUEPW.hic\": \"1753567534,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4bb9a9b3-12a8-4d2f-8071-4722294c88ea%2F4DNFIC3HAU11.hic\": \"2271375254,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5abf9c36-c1d1-44dc-8197-74d860d896c0%2F4DNFIM2BMJ33.hic\": \"1770471113,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa68475db-7816-4cec-b2da-d4ce4a0c7a0e%2F4DNFIBY3UHJB.hic\": \"2095528423,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07c40943-0d0b-4b3e-94a0-8583b0e00b47%2F4DNFIWZEN3FF.hic\": \"1558559508,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8a39553-2718-4866-9b2a-45d8e9c5ac6f%2F4DNFIE5TEYK7.hic\": \"1323063102,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294b61ef-5565-4f04-ade9-f921a6686cce%2F4DNFI7H4II2V.hic\": \"1436947982,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a70ad7-7d34-4302-9c03-eb824bd4e633%2F4DNFIAS8LV1C.hic\": \"1263105698,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9db804c6-5a91-4cf5-8ae9-e054223afb77%2F4DNFIBXWIH8J.hic\": \"1587059951,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd1e55906-ec8f-444b-8ce1-2de22a431a76%2F4DNFIO2HBDAI.hic\": \"1666436393,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a4b9b37-8e38-470c-8190-fd4d513c0bbb%2F4DNFIXWCLD4M.hic\": \"1513511880,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7615b2-5310-4bbf-a605-98761d3a3079%2F4DNFINASC4NQ.hic\": \"1420358914,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F20454014-49cd-4e2d-93da-f40ad52776d5%2F4DNFIZF1KI43.hic\": \"1377041630,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5df04e86-ee2a-45f2-b878-bf1648e2cca5%2F4DNFIQBHR9XC.hic\": \"1179502734,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1cc910-bb3f-4106-802a-73184c58d5ba%2F4DNFIQVMVRP6.hic\": \"1811976991,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe431986b-0732-460f-92ff-0abd1694d2d0%2F4DNFIJ7OAIFQ.hic\": \"1685503856,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56d0c575-4962-4ea3-92c3-55bd0e17c096%2F4DNFIE8E4ANZ.hic\": \"1598369564,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb1502fb-a989-4ef9-b800-7eaa7be172ae%2F4DNFIOUSETUP.hic\": \"1493294709,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Facc2f1c3-8c96-4d21-814a-3a8ba81e7741%2F4DNFIVJ3IIQL.hic\": \"1472376655,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F037fb4c3-8641-4953-a977-cc71f2137582%2F4DNFIHN2QSMX.hic\": \"1179632606,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16d2c3c0-6d29-4815-b074-b142af90b615%2F4DNFIILDWK8M.hic\": \"2280059989,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31789849-e4db-45d8-9730-66a048c02d8a%2F4DNFI6XD6JAQ.hic\": \"2253961696,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fff04947e-e6e8-4d62-8374-ef2ee4104809%2F4DNFIALNLR78.hic\": \"1914687914,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F53e6c1e7-9410-4158-84e6-57c2e683b095%2F4DNFIBT4EAKN.hic\": \"2296378356,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0127900a-258f-4815-97d2-6fd2b043d853%2F4DNFIDJ2JZ7Q.hic\": \"2558945393,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F89f95693-3d28-44eb-9d45-14932f8e258c%2F4DNFI8JFOAJT.hic\": \"1726440253,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd803d818-b0d4-4796-8d61-a9f3943f3b10%2F4DNFIRZA6EV6.hic\": \"1805017504,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff9165fb1-0782-4757-a740-5b929e0252bb%2F4DNFIB7QTIMH.hic\": \"2541020707,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8d916b2-b58e-4cdf-894c-ffcb3bf6ebd9%2F4DNFIJ5DQZVK.hic\": \"2445734043,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14066a5b-e01a-43c2-a468-b18826174df3%2F4DNFISTWNV9C.hic\": \"2499319890,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd0692151-7f9a-4475-b059-f8802616dded%2F4DNFIBN9K4V9.hic\": \"1591570769,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70a7ef36-a514-4e45-918f-47c4e9e30ef4%2F4DNFIR8OU6QJ.hic\": \"1689882108,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F180306cd-8593-413a-ae83-24f19209c5d2%2F4DNFIDSWKFF5.hic\": \"1596696630,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e7b9be7-f465-4434-8e9c-68d1e44a76af%2F4DNFIV239W4L.hic\": \"2345867406,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F55df948c-941d-4930-854c-6a07557a0c1d%2F4DNFIREVU1Z5.hic\": \"2254683002,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f590cb7-df3a-498f-81c3-d5ed4179b8ad%2F4DNFIFHU75I5.hic\": \"2497670883,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8f064770-6008-4f74-bfca-268d4a22d745%2F4DNFIMROE6N4.hic\": \"9850583704,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa93d0588-76b7-4ccf-933c-4325876b0a53%2F4DNFI5SUHCGZ.hic\": \"10364705187,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f5f0d6b-0b22-4936-93c9-0944d49c037b%2F4DNFII84FBKM.hic\": \"8836986129,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12e90fc5-0b76-4e42-b346-58d267f9ad6e%2F4DNFI2J1ODWB.hic\": \"13410858286,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2702a45-3e8b-4980-bcd5-6bb0e291614f%2F4DNFIJWBWE41.hic\": \"20515676755,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa0859349-5f06-4ad3-b56f-b1166b34a9eb%2F4DNFIIMZB6Y9.hic\": \"15350325963,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F12685c57-d54a-46fa-9efb-acf34ed77574%2F4DNFICJECID5.hic\": \"1525002266,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd101a58e-89aa-44fd-96c5-6bf1e2476272%2F4DNFIR6UW2QA.hic\": \"1264999913,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8c73bf-1335-4af4-b124-e3622d48c5f6%2F4DNFIGOEKBUZ.hic\": \"1905947578,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcd2477cf-6ed0-4d7b-b4e9-88fb38b0df48%2F4DNFIMDNAEW4.hic\": \"996444147,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0f03953e-29da-4f2e-8c05-572d0edf4525%2F4DNFI5OSZ3JC.hic\": \"369361754,22829\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F29d95dbb-005a-4ae1-8b9c-0fec9ec0bbd0%2F4DNFI7KOUGFM.hic\": \"1227434049,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa441ab7b-afbe-437d-bf98-b6b916558642%2F4DNFIGKX4A32.hic\": \"883933242,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F941b2f94-2fff-4d3c-aceb-fee4a5ae41a9%2F4DNFI1ORHOTA.hic\": \"1140970677,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8720ede9-093f-4c00-912f-373283260a16%2F4DNFIWSVLZED.hic\": \"458091151,26979\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9e17155-2b62-4a68-afb2-31dfa674e169%2F4DNFI6H926RO.hic\": \"3552863515,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F22f22778-987a-4dc0-97bc-f26eae0156d9%2F4DNFIKTYSPOF.hic\": \"2939475400,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40f40192-0acb-44cb-8778-8d21afe593fb%2F4DNFIZ4S52BV.hic\": \"3067438113,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd8767374-7018-4e11-9226-bf5612d39ebb%2F4DNFI3APMXHF.hic\": \"3258874744,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c5140ec-a65a-4186-8c59-2927233eecaa%2F4DNFIQLIKDSD.hic\": \"2746398416,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8cdedda6-d7d8-4231-a85b-d56fcd962366%2F4DNFIKYXMF1E.hic\": \"14442148774,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa4d4497-7c6c-4dad-8040-be13ba07ea32%2F4DNFI9815EEJ.hic\": \"17960817603,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9b7b95f-190b-49fe-8047-ef4a8fc59746%2F4DNFIQ2687RT.hic\": \"15954277087,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F59863d3a-8d7c-49c7-9a41-7f2a58ad24d1%2F4DNFIYDBBSE3.hic\": \"16499534862,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e80ca41-b3e0-4f4f-a05e-8f95fe96d938%2F4DNFIMOCN1YS.hic\": \"863725312,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F96f97a01-0020-4f09-93e8-fc8a9fd07218%2F4DNFI6558CM8.hic\": \"1597967345,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fce9e9334-ee0b-4549-a845-110470ba5986%2F4DNFIQZRKS7Y.hic\": \"907626411,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaac8209-1015-48da-9e31-2e252dfd8fe0%2F4DNFIX4DLXSE.hic\": \"1369766288,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F268b7d52-9655-474c-9467-8ba31bb2195c%2F4DNFII3JV8I1.hic\": \"856656441,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9681f9b5-335a-4f56-afa1-15b58bbb41e8%2F4DNFI5IAH9H1.hic\": \"1495185175,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3e082eab-95aa-4677-88ed-9d7adcc1effb%2F4DNFIK5HY1GP.hic\": \"2135337789,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31af1ead-4520-4669-957e-424b4b197c33%2F4DNFIFA89L5B.hic\": \"1975593640,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcc2b78fd-52d4-4e0c-ac93-b84ee82daf7e%2F4DNFICXCFGEI.hic\": \"2628202920,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff54efece-280f-46ca-95e3-1f8a3cd18820%2F4DNFIK4CECUH.hic\": \"1901129375,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1181c0c4-afb7-4b6a-9fdc-d868fb2253fc%2F4DNFI1EYIGOC.hic\": \"1947135384,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1d3e2905-b9b9-4b91-bcb4-8d34746e78f6%2F4DNFI7TLEWUI.hic\": \"1185758726,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faba3d42f-39cd-4a85-9d3f-835aefb5c803%2F4DNFIVCJKHMN.hic\": \"687240974,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F27f54fcb-54fe-41a4-b25a-2f8944c89044%2F4DNFIN8F14CS.hic\": \"1304082029,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb75fedb5-88f4-4bc0-8e38-298df7847a7f%2F4DNFI5LCW273.hic\": \"12497258313,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2f22b2a0-3712-496e-92d2-63775ec0e421%2F4DNFIVSCH2CH.hic\": \"12594733778,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F07e47261-5863-44f5-9198-76e263081bea%2F4DNFIZ268JGC.hic\": \"1499059135,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F682b1ae1-3ac3-40e4-a330-c49f63946952%2F4DNFIJ1P4HBI.hic\": \"1190211725,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F197e7c89-ea73-41de-8cb2-8c0b1e3bb945%2F4DNFITEGKBIW.hic\": \"2061501971,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F191f6928-c9a8-44b2-8516-ee4d6005f24b%2F4DNFIE1P6RVH.hic\": \"1711447310,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F94435086-3701-4b28-a6d0-4a59b24d7615%2F4DNFICJ6I4DO.hic\": \"1557899940,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa9ac173-d233-41c7-8985-ca91949664e4%2F4DNFIKUG8MEW.hic\": \"1339072088,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fba6d8ab6-ee18-4ba2-8da9-d631888dd50a%2F4DNFICFZGFAV.hic\": \"1261083478,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87a3ab04-7094-4673-81e4-ac8c9add8eb5%2F4DNFIQXCZVVA.hic\": \"1084913802,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc1ff488-82af-4579-9424-959184edb139%2F4DNFIB6PJFJ3.hic\": \"1114571343,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f7026ee-987a-41e7-8a61-45510ee3f86b%2F4DNFIX97731O.hic\": \"1246860402,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6186787c-2e72-4925-9729-02121e2e4597%2F4DNFIYQYZOTO.hic\": \"1212210849,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b98a946-0109-4efa-a13e-cc7a36772125%2F4DNFIPXU7V25.hic\": \"1696288217,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fea17d041-c6ed-43a1-8047-535f3d19ad44%2F4DNFIL39PR76.hic\": \"1719284710,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72774afe-f166-42ac-9849-4070b0dadf6d%2F4DNFIYLJ3R3B.hic\": \"1106419640,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a45e733-55f8-4a8e-be24-2ef34c976e25%2F4DNFIL51WBN6.hic\": \"1327651164,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F086c62b0-a26f-41ae-a5ff-88b8be2bd2aa%2F4DNFI6SFPUDA.hic\": \"1336964405,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4d9b79c7-af62-4070-84a9-b953903f2732%2F4DNFI2KM22QR.hic\": \"953067310,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c9889d1-f49e-4639-8e15-2d99d6cd22e7%2F4DNFIVF8Q45U.hic\": \"984193565,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa080dd7b-b7bb-4eae-a275-572a8b45b2d0%2F4DNFI2RN3WFP.hic\": \"1046525527,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb81860ca-c227-4b68-a298-1907fd32300a%2F4DNFI4TJTL7A.hic\": \"1160373401,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F74ab47dc-7b52-421c-845e-6feb33457adf%2F4DNFIYJ4TWB8.hic\": \"1268416204,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc6582128-a930-4bcc-941e-5c0733bdd4d5%2F4DNFIM6RGKPV.hic\": \"863347067,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11a75514-4450-4295-9eda-18e3678a575a%2F4DNFIL2VWWL5.hic\": \"860731581,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5eb52a8c-bf14-4225-bf34-14a0aa47c369%2F4DNFIX6ZXCA8.hic\": \"893462267,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66aaa4c0-1f62-4040-8ecc-4e95da23cd18%2F4DNFIEVR81FS.hic\": \"879736207,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F821c6e7f-96f7-47de-b7d9-4970562b3c8e%2F4DNFIAUI6BBI.hic\": \"996313881,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9252c362-31ab-413d-a47a-cc97bdbf243a%2F4DNFIAFEE9G2.hic\": \"1103265750,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc1a0bf52-2e65-4deb-871f-ede736babd41%2F4DNFIPZBEXCP.hic\": \"1081257762,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F729f5ce3-d7e0-466d-b781-d18049e63bfa%2F4DNFIWPKRZGU.hic\": \"973779283,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80b769ee-a717-4825-9db0-dca86f913173%2F4DNFIMD9QNDX.hic\": \"1158688208,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F266290c0-2767-4158-85ab-7274368905b9%2F4DNFIATA1HD5.hic\": \"1073361089,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc46f18a8-eb24-4d35-b112-36db72bde2f5%2F4DNFIH9U4I7I.hic\": \"1111124316,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fec91a79e-7de7-49f7-9b3d-d28313aeddc8%2F4DNFIZ95S6TR.hic\": \"1242494051,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e9390b9-da20-43bb-a8f4-9830f354ddf9%2F4DNFI5ERM9J7.hic\": \"1271051397,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee8ea82e-b9e4-41ad-bced-5f4fbdaa4fec%2F4DNFI15FPSQL.hic\": \"1216714120,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbed7eb86-8990-42f2-b3ee-5992d6361f7c%2F4DNFIJ3DZPGM.hic\": \"1035089437,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdaa8a324-3bf8-424c-8a86-b8ad325cc20d%2F4DNFINW9P6XF.hic\": \"1215712740,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70631758-6bf8-47a0-92b6-132574886faa%2F4DNFITS16HW8.hic\": \"1105283847,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe473304b-7bc8-49b8-bba1-ecb9f06914ee%2F4DNFIS3DIH4V.hic\": \"1036056660,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F10f9224a-111c-402a-ac25-e221ad0af9ef%2F4DNFIY3KDHP6.hic\": \"1071761024,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17519b96-2bdd-4294-98f0-1535f1aef28e%2F4DNFIO8HVKOL.hic\": \"953793750,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb18f896-4730-4909-86a3-867fc8e76cd6%2F4DNFIMF6CFOM.hic\": \"708717889,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcfee4d87-0873-40b0-b79f-35dcc8669c1c%2F4DNFIZZ77KD2.hic\": \"732668723,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8b5d909-8a1b-41bb-bcdd-d108a0bde762%2F4DNFIOLO226X.hic\": \"951271932,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ce81f6e-b9cf-4ec9-8bd3-517539e4b662%2F4DNFIJMS2ODT.hic\": \"932509067,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F506aa952-5d41-49ff-b658-916bcf88a395%2F4DNFI49F3LJ4.hic\": \"1208494817,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4dc392d-ca36-4bdf-a27d-173cae34f520%2F4DNFI65MQOIJ.hic\": \"854630155,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F149ef8d7-e0b4-4e4f-b7e5-7226e2603746%2F4DNFIM4KEPRD.hic\": \"882790622,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa436f0a8-4f9a-4524-90ac-795c5b8491cf%2F4DNFIIXBIZFC.hic\": \"848244425,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbc8a05dc-7449-4b01-8330-a55db37ca8e6%2F4DNFIWDOOBVE.hic\": \"1116239020,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faef8b881-28fe-4694-9a95-1d31940e6726%2F4DNFIDT9EB5M.hic\": \"888289053,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff66f3162-a53d-46f2-8800-3752935d5400%2F4DNFIX2VUNV8.hic\": \"1226661451,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F36c782e6-2c48-4298-aa43-bd6624da003d%2F4DNFIEQHTV1R.hic\": \"804665819,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff15d571e-605d-4bcc-a359-0350b57a6815%2F4DNFIFW7GA64.hic\": \"901568712,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2aa2e8b-ac7f-4acb-b4b5-ac5f845840fe%2F4DNFIXGXD67I.hic\": \"970995551,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F71b6fd7d-b249-4d65-a597-b80b95845399%2F4DNFIA7GB1NB.hic\": \"956785837,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cbb1418-34db-427f-9273-5174eac81529%2F4DNFIVOJGWNP.hic\": \"890415052,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc69c2ee7-b6c3-4a62-8d4f-913491c9dab8%2F4DNFIW22BNB5.hic\": \"1075499540,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa268f28f-c6d9-4324-8989-75d2d317af1b%2F4DNFIIFBC8WN.hic\": \"1045459440,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c7361d4-60a6-440b-b5be-072cada98663%2F4DNFI9ZBEBJH.hic\": \"759395398,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcceaad1a-e01e-4430-8bd6-24ffa6891802%2F4DNFID4SLU53.hic\": \"921288444,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9eee5854-b33e-4d5a-9ba8-ceffd47e7488%2F4DNFIODI1NUJ.hic\": \"733159777,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5e1089b0-42e8-441c-99bb-4be99bcec28b%2F4DNFIJL26LFN.hic\": \"723567970,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F298a429e-ea29-49d3-bfed-fa851e1e7c4c%2F4DNFI5KTF553.hic\": \"2213661745,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F965d29f0-e4a3-477c-8ae4-faf4a654e69a%2F4DNFIYSPGFGV.hic\": \"2274989349,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd88acbc1-37b9-4266-9f97-d8fed576d0f3%2F4DNFILOR6D2D.hic\": \"2595459358,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7b6ddbce-0ed1-4272-b8ae-32793e4ea4e4%2F4DNFI1WMMPJQ.hic\": \"2262433890,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fedc0c8c4-97d8-4372-9a4f-5e0cdf09d7d0%2F4DNFI47P5978.hic\": \"2146314403,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0edcc389-43a4-44d7-b946-fe3496f93d56%2F4DNFI7XGW6IH.hic\": \"2302805723,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0a802926-e235-4c80-b521-83a1774dfb46%2F4DNFIK1EJG8I.hic\": \"2374943035,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3c36aedb-6a58-4aa2-9b11-bb440ec174f1%2F4DNFIDQ3THN9.hic\": \"2341188249,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F846123cd-8828-4e51-8b8a-27deaf293858%2F4DNFI3WPNFWT.hic\": \"775145629,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd06e3ad-0e37-48a3-8367-c7d5912cab03%2F4DNFI9DCUOQ1.hic\": \"870487824,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc2eaf9bf-9584-4cec-8685-bd74038a6c01%2F4DNFIU8AF5ZY.hic\": \"1276224366,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F219497b5-3f35-473b-9d4e-e1cf21c69561%2F4DNFIHW8NTQX.hic\": \"28864787856,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4be13558-114a-4f2d-abca-7598e2ff4757%2F4DNFI4OUMWZ8.hic\": \"17061013588,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49aed637-87a1-4d4d-ae68-e5da82aec05b%2F4DNFIEYQ5ZIR.hic\": \"13555272651,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa2f48779-4eff-44a6-8a9d-96435aca1ddc%2F4DNFIDZT7PR8.hic\": \"13425047093,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6ec6b71-27b8-4891-b10a-ab06a5270468%2F4DNFIEJEFCAM.hic\": \"15394960208,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F68b9a7b5-8413-44fc-8c2d-59a67b1c4166%2F4DNFIJ8JKKWJ.hic\": \"17012681779,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F294d45a4-8b5e-456f-a9cb-1cbbbad3a7d2%2F4DNFINEQY95T.hic\": \"13966775978,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd7f3a48-b822-41e2-bd9c-f52b3aff7b6a%2F4DNFII6AN691.hic\": \"12367300362,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7da44594-0dc8-4e74-8e10-a957aeaea51a%2F4DNFIDBIEXI7.hic\": \"2015474981,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F085a0453-3784-4eba-80b2-3556e53e2f52%2F4DNFIDKJFK2S.hic\": \"1983111659,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc370c78c-0a99-4c3f-a29b-2dfafc6a3e86%2F4DNFIPAF4PYT.hic\": \"3041434294,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F907ce45f-baa5-416d-92de-e86db4bacff1%2F4DNFIWIYYNQ5.hic\": \"7082321112,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff13afc6b-cf69-4c9d-881f-eed4dd3c28ee%2F4DNFIHMCILEN.hic\": \"1739157603,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7575d891-0e3d-4a77-896a-3e1b3a8d330b%2F4DNFIJBJ6QVH.hic\": \"5213499748,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0daa830-60d5-4c7c-a2e1-a4ee70b3fee7%2F4DNFIH2A7IKF.hic\": \"4099503507,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4970a25-91d8-49a7-9a4a-fe0f12cb2b0f%2F4DNFIOL8KGQ2.hic\": \"2256042055,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879f1850-d175-4a86-8a97-12658482e3d1%2F4DNFIWILLD6C.hic\": \"5476286356,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F787f538e-d619-4c8f-985b-78753fb7e57c%2F4DNFIZBXXJAF.hic\": \"5946467856,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8ee785f-1016-4989-9e64-78352621d32f%2F4DNFI8PZOJHN.hic\": \"8307204961,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d8997fa-528c-4531-b25b-a412de6bd472%2F4DNFIGXAMSJY.hic\": \"6577588285,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87aede55-7610-4283-af0e-c6840429a31e%2F4DNFIWNNO89O.hic\": \"2871061417,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93b8e020-b337-4685-81dc-40cc8a12b5e9%2F4DNFIXU2KPNQ.hic\": \"3401717686,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffb5cf1bd-59d6-46fe-857d-b86d9756029d%2F4DNFIHBGD6N6.hic\": \"840028421,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2d1bc088-d838-49b8-85fc-fea78a7353c4%2F4DNFI7J8NI4A.hic\": \"675705256,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a27b63-fd67-401b-9aa2-2798e6588d21%2F4DNFISFM9VFK.hic\": \"800145922,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F656c0a9d-7058-4c4b-a3ce-701d929561c1%2F4DNFIJU5XBK7.hic\": \"966593603,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2efacfbd-9c81-4e62-8df7-847d1ab774d5%2F4DNFIPKY8ED1.hic\": \"3401629450,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa50b6a26-56b5-43f2-b525-fa219fd716f1%2F4DNFIQRTP7NM.hic\": \"5358852759,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5dc7a59-b998-4490-8a76-afbf3b258a49%2F4DNFIBCIA62Q.hic\": \"5779049277,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62b2b237-cb02-45f7-89d9-616cf9ffb678%2F4DNFIV56OFE3.hic\": \"5818844506,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ac79b4f-cfbf-4b2a-9fc2-898ed6c3e5e1%2F4DNFILIM6FDL.hic\": \"19637469163,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cff8afa-5a13-4ad4-bcad-91fc3ced759c%2F4DNFIP71EWXC.hic\": \"17934647326,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F000789fe-9a22-4280-a71c-7ad228fd4cac%2F4DNFIM7ZVQOQ.hic\": \"700134697,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8d78457f-0c2b-4358-b08c-4d4ef4d9f59d%2F4DNFIS6EYHCX.hic\": \"628314484,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ca3b4a0-2478-49c9-b4a2-a28430417a32%2F4DNFIKKCMS1Q.hic\": \"584050634,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff5041473-18ec-439d-92b1-8ad98c9b25c0%2F4DNFIBIV8OUN.hic\": \"522632731,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcf474ec6-abd4-431e-a21c-252fcf5ee6b3%2F4DNFIAUMRM2S.hic\": \"313395531,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bb1c73e-fb0f-41c4-8620-a938cc8d24a0%2F4DNFI9ZUXG61.hic\": \"332217525,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F26dfa41e-7e4f-457a-a3ac-72daf8059f3c%2F4DNFIDBFENL7.hic\": \"359604894,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8ed2e68b-189e-4988-bb6d-94e63240a231%2F4DNFI7XAZNNQ.hic\": \"5312422266,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6f2b1ce0-5205-4680-981e-d91b694dc3e4%2F4DNFISNGDB53.hic\": \"2008546759,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F73c8147f-bc7d-4d33-8a10-a9e7b413ecc6%2F4DNFI1CIGHYC.hic\": \"2221847625,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F526ae3e3-32cc-4670-970f-1faa9cfafd4d%2F4DNFIQD2DP2F.hic\": \"5295591503,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6e803530-47f8-4c56-bb19-fbdcd578d2f0%2F4DNFINHT8P7C.hic\": \"3159499486,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe705f38-903f-47b7-9b38-f80ebd18a479%2F4DNFIGF8EM7M.hic\": \"3490552542,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa197328-d6da-4299-a0fd-409ac9892668%2F4DNFIUPG2ZBJ.hic\": \"5382003751,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffe5d52c4-2be7-4812-bca0-cd4bb3025e6b%2F4DNFIH3OTR14.hic\": \"3224693110,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21935f61-daa8-4df2-aa69-fcd27953b405%2F4DNFIUATRW3Z.hic\": \"3835865655,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72147527-e3e8-4967-bc45-8251249d76c9%2F4DNFI6V7ZQAE.hic\": \"4382708138,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F589f0919-f54d-49ff-a482-e2f453ef7f34%2F4DNFICKMT1CY.hic\": \"4479068191,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F861946ca-bad8-4a87-96e1-b2eb20b9ef10%2F4DNFIF9BDCNI.hic\": \"3698151402,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff76346ac-97ec-4893-8984-2b75ce1cdc51%2F4DNFIG5O1OQS.hic\": \"5704288175,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe8b43826-f049-4c3f-b83a-e75fa7aacc85%2F4DNFIHS2SVBQ.hic\": \"990025510,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46316260-f555-4dd4-9e40-8ae06ca52822%2F4DNFIU95B69H.hic\": \"1275878544,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff62ef491-a3ae-4f66-ab33-c5673c9e0b65%2F4DNFIYRROFCR.hic\": \"1522530503,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1cd617e1-fad4-4fdc-8b4e-cb277650123c%2F4DNFIF7JN3IU.hic\": \"1463443128,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb20fe2a-0078-4d4a-8a52-d76043d06f40%2F4DNFIB2RYULQ.hic\": \"1269529700,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d386fcf-1d22-47de-a0d6-0c3a641ca174%2F4DNFIMVDK3SI.hic\": \"1185489599,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F00e470bd-c533-41b1-923a-4b471824da12%2F4DNFIRLOTXSC.hic\": \"978217499,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb8774fb3-d0c5-43cc-a6c9-eb0ca39841fb%2F4DNFIZAPX6J8.hic\": \"1100356082,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fab3b826e-614c-448b-860f-a3ebef68a82f%2F4DNFIQD5VCSD.hic\": \"1322319877,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F66c78d2b-993a-4937-95ed-9e2d302ceb3e%2F4DNFIIF6VAGN.hic\": \"868885799,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5d106fe1-2d80-466e-87aa-46b38ba142c5%2F4DNFI86IEZXH.hic\": \"751443267,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc99490b6-faf9-413f-9c38-3f53018089d6%2F4DNFIP881SR2.hic\": \"754427927,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F39c7e387-e710-4b1d-b757-357dec03f6ad%2F4DNFI42NNCW8.hic\": \"1166392978,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4742a211-43b1-4325-af6f-82490aeb766b%2F4DNFIEV4PKP6.hic\": \"1102227476,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaa73842-1c86-4ad9-8a9e-c189c0b4c01d%2F4DNFIF1DUQHE.hic\": \"1206699207,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd25f24df-0298-4079-bb6f-1c8e1e32392b%2F4DNFIGW55EAY.hic\": \"1033358104,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc57a7ab5-2778-4fe2-9d64-9a4e95135f12%2F4DNFISZRU6I4.hic\": \"1539570262,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd89f494a-27ca-46b6-89be-7583f3f6d18c%2F4DNFIBKKDTAP.hic\": \"350372180,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F06725280-cb24-4f22-a267-18b434bfa79e%2F4DNFIJSRQW24.hic\": \"314361467,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8fe5c3c5-006f-425b-ac6d-ea475e29be78%2F4DNFI3REN89E.hic\": \"299665258,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8b6ac5c-13b4-427e-9158-cec0b890b6d8%2F4DNFIF5XLHKM.hic\": \"235668364,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F01ff33fc-fc23-48aa-a6c6-b720d6fe0768%2F4DNFIB6Q538N.hic\": \"316494853,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F552978c8-abbc-424a-9187-3e34cf802a97%2F4DNFI3ST3F7Y.hic\": \"296298411,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F72e66520-5170-4f2e-844a-fbfd0e23b480%2F4DNFIQT4M6UI.hic\": \"307691265,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb3eb3953-ffe8-4d5a-970c-a16f3b7b9ec3%2F4DNFIFNCC7M2.hic\": \"364160436,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F37d413fb-afab-41ff-99aa-1678830f7dde%2F4DNFITM9MDJL.hic\": \"252412426,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf5db92c-aaf1-4086-a0d2-79b28648f172%2F4DNFI3NTD7B3.hic\": \"227586640,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6892f7b-1f8a-4d7d-9605-c67932cd5654%2F4DNFIBED48O1.hic\": \"328344868,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd64afb07-5ab1-4c4f-8438-2fee37afa86a%2F4DNFISATK9PF.hic\": \"379669025,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fad11bb63-8692-461c-b698-89c601451321%2F4DNFISRP84FE.hic\": \"298491537,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F63710ec5-35d2-47dd-bf9a-08d3daa83d67%2F4DNFI2LY7B73.hic\": \"303150299,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76077d9e-ca75-4301-ab79-88aa49bda495%2F4DNFIXEB4UZO.hic\": \"711757090,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F34dd4c0e-3487-4fb4-b95f-c4bb66e0fa31%2F4DNFIQWWATGK.hic\": \"221304476,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F48a8cf86-3248-4a8e-8e85-472ec219d49c%2F4DNFI44JLUSL.hic\": \"284772724,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fee399fbf-2a9e-46e2-8364-457713bff508%2F4DNFIM7Q2FQQ.hic\": \"330729464,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F124d191a-c5c7-49b6-b84b-0d1bad8bef2b%2F4DNFIZK7W8GZ.hic\": \"293166018,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe351f7cc-7a2c-4515-ae0b-3bb2f91c986a%2F4DNFIMIMLMD3.hic\": \"240094740,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffd1ae249-57b1-41d6-81a6-16b21dcd8f12%2F4DNFI7QUSU5J.hic\": \"681762505,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46c92c5c-9ad8-4d49-beba-f35c5cd99208%2F4DNFINXUOI5H.hic\": \"375594313,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7350d40-4e9e-4131-9151-bb539d39b431%2F4DNFIIJR2296.hic\": \"331322302,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfacf37b-1665-45f3-a046-e29e1544e9b0%2F4DNFIJMZUTXR.hic\": \"361313244,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F234e18fb-9990-43bf-9a48-f72722cfa232%2F4DNFIZQPT9EL.hic\": \"540421873,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b35ab09-2e79-4876-b2bc-d3a8faa26257%2F4DNFIZIXSZ9J.hic\": \"545066813,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae5118e-807a-46e0-8e92-143d4b282b3d%2F4DNFIDD9IF9T.hic\": \"237409149,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb34d7f6f-73f7-4b6b-80c7-c8af0f991549%2F4DNFIVC8OQPG.hic\": \"355121712,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9ab169fd-cbdd-4f60-8553-a4c6912ad89e%2F4DNFITUPI4HA.hic\": \"313085022,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4e53712b-d0d9-40c5-afe1-ffa0fad71e59%2F4DNFI5IZNXIO.hic\": \"341863906,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a91477f-45eb-4a16-affb-fc131f9326b8%2F4DNFII16KXA7.hic\": \"248904495,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F153729de-0eca-43cc-9b61-61aa8d775b38%2F4DNFIAAH19VM.hic\": \"668047244,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F879fd78a-7165-43d9-a0de-ca158b53df30%2F4DNFIVKIY3KV.hic\": \"247571318,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f901a4-040b-4b04-9fff-94a1780423cd%2F4DNFIVVCWL6C.hic\": \"198355985,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd5b30c5a-654a-463c-9474-39bdc3ce4500%2F4DNFIJRF2273.hic\": \"343971277,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7070280a-8f03-40d0-9fef-e9d9f4d3dae7%2F4DNFI6FCC9ZA.hic\": \"312013061,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F47049719-9407-4d76-9048-26231045f642%2F4DNFI1CPQ4O3.hic\": \"352923267,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F862c2b5f-44c2-4bd7-9264-b3ca032d3d8d%2F4DNFISXFEDE9.hic\": \"271745977,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feffbe052-39ff-4217-9871-44199ed90818%2F4DNFIF9L6QEQ.hic\": \"668409334,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa7791854-1b35-4258-90fb-603c55f24642%2F4DNFIPKASX1Q.hic\": \"312727920,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79cccad6-a78e-4de9-9fe7-08f7e8df663d%2F4DNFIWXZ4JQZ.hic\": \"151808553,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7e86e0cc-d6f1-4ce0-aba4-c36c6ebb3c4c%2F4DNFIEMQ1O8V.hic\": \"700533280,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4a1b58d3-9ae6-43e4-91cf-49f1fcbbab33%2F4DNFIYWONU7A.hic\": \"729050356,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67bff264-0b0c-4c5c-9d4d-ff5abef2bbe4%2F4DNFISNIE5FH.hic\": \"7987657997,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3a6a943f-2cc0-4433-a27d-c89f3fdd3309%2F4DNFIV8MLWJB.hic\": \"6646216171,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9e235711-ba90-404d-b4ac-b15990ea8e33%2F4DNFIXSTDPHL.hic\": \"3146468238,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c89f4bc-e9fc-4ecf-b868-26108dbb7bb2%2F4DNFIQJNOH8U.hic\": \"2919703928,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1856ff9e-de7a-4fa1-ae0b-3e04b837b5e1%2F4DNFI57XB4A8.hic\": \"13417594377,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F099bb5b9-6315-4650-8f78-d603f5a046b3%2F4DNFIQ7UKVZV.hic\": \"9016468637,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faf3c7a30-0fc4-410d-8d41-247da3eb105d%2F4DNFIWJY8GHD.hic\": \"7921314766,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda99f429-20ab-4d91-bbfe-f8bdea8ed7b1%2F4DNFIN8NKRNF.hic\": \"4247121358,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0ca0f4e3-30ca-4332-b735-e32dce08e1a4%2F4DNFIZYGEHNZ.hic\": \"4910404663,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F243f48b0-6b59-4f37-ad39-a12e0986f530%2F4DNFIRPYGAV8.hic\": \"4220073636,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F49f1a890-d458-42a6-9c78-99c38b6c7a8f%2F4DNFI6MZTDM1.hic\": \"375035361,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76bd4768-9343-44ba-a99d-5500e184e39d%2F4DNFIG3BCGPL.hic\": \"2422923206,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F9d1ed866-eaf6-4906-aa8c-9e39616dde38%2F4DNFIS9YPJ3L.hic\": \"1593271574,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1e7a5636-bdb6-45fb-85d8-87a7e908de43%2F4DNFIOWGA9AX.hic\": \"1632314387,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ecc552a-0a6b-49a9-9aa5-9f3fd9b535fd%2F4DNFINKEDSBF.hic\": \"1458761024,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6c03f1d2-bb25-4c94-b5f5-d5cdd01c14b6%2F4DNFIVIXVUK7.hic\": \"1504818271,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1a4616ff-6d04-4a6a-9773-b80e81da2471%2F4DNFIANHFY16.hic\": \"1850724180,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd2231870-a78d-4c8b-9cfd-084f2468acb1%2F4DNFIJ67ZFBI.hic\": \"1473864703,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F859c2dd3-df8a-42b7-86ea-bf6524f75e80%2F4DNFIG3YQQ4V.hic\": \"1539822829,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8bad667e-6003-4828-9a20-07585fa9c811%2F4DNFIOLKEOME.hic\": \"3036353747,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F92ea551b-5779-4d31-a0f5-621e4bd0eb21%2F4DNFIVLN8WJE.hic\": \"2710426318,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61ee79fa-0617-4083-b121-f92ef3a8905c%2F4DNFI2111XQA.hic\": \"2589549183,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F83ebb98d-e5db-403d-aa23-875293156c0e%2F4DNFI88HXX7D.hic\": \"2462367030,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6d63671a-8f1d-4159-82c0-931b43464772%2F4DNFIUBM6QK8.hic\": \"2486020469,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcccb9014-ce15-4032-81ac-222b3d621cb4%2F4DNFIVILEERC.hic\": \"2052537210,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21a07867-4007-4ca5-b066-25d3168208dc%2F4DNFIF7Q43N4.hic\": \"2091773428,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff738de0f-358b-44bf-97dd-644c8d9b1b1c%2F4DNFID56VJGW.hic\": \"878913568,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fda97c1d4-bb92-4a77-92a7-f7960f88b9dc%2F4DNFIYUR29KO.hic\": \"983915575,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F54ea363a-99e7-4f55-861e-1644acab7939%2F4DNFIUDPGHO8.hic\": \"905253594,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcd66a07-55ee-48d9-a157-419cf4ee3eef%2F4DNFISWC2N8T.hic\": \"1233576358,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F40363837-7466-4a1d-b20d-a66d1670b700%2F4DNFICMPHDMI.hic\": \"516590777,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0b3fa4e6-caeb-40b4-8942-e9c0b03dfe4f%2F4DNFIKMKN736.hic\": \"634310295,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb6a34050-d52b-4880-91cf-d3fe4b0ce982%2F4DNFIN5NLS49.hic\": \"650451131,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8e63a47b-9fd4-4772-8b0c-10ee589ffb16%2F4DNFI4P8UBRL.hic\": \"705655033,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d92b666-30cc-4838-9d46-c1f11cee3d3c%2F4DNFISNC3LAI.hic\": \"176146197,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F17f7dc63-a1bc-4970-b389-87d9ee93b753%2F4DNFIVBWPFD7.hic\": \"749678512,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff8897333-4791-4a83-9444-a653e24aee13%2F4DNFITMQRXB7.hic\": \"254477361,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8712bf31-33d0-4562-ab0b-a1e9cf4fd30c%2F4DNFIUYD3HBY.hic\": \"995625724,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbfaf6383-9cc6-4b5c-9b20-d3bf2e8c3495%2F4DNFIRRSC7P9.hic\": \"1149985362,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb0b70598-5d17-4e0a-8831-6cbe697e69e2%2F4DNFIWKR8FP6.hic\": \"1151628407,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fccc094a8-23ce-4fd8-9c4a-41f07c045c8f%2F4DNFIQ74RSUY.hic\": \"931695969,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8eda16f3-af5e-4f1f-b46d-c74df44b76aa%2F4DNFI9IIO5PW.hic\": \"1077740364,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff283637b-cf2c-4412-ba00-0e3d7e279fad%2F4DNFI8WGJG19.hic\": \"812086456,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ad8438f-d3d9-42d8-88bf-42845a0dc2d0%2F4DNFIQ5CCESJ.hic\": \"652559720,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70e3bdcc-caf4-4822-b9c5-85234873db7a%2F4DNFIWTZHB4H.hic\": \"760694196,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F56ed767d-cd8a-4d38-8047-ed1e8bc8cd19%2F4DNFIENYQCDP.hic\": \"1159428005,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa912fff9-5f90-42b1-a3a6-cbb9eb2cf861%2F4DNFIFATZWPD.hic\": \"1033325746,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F21338ea5-fdee-4ad8-b61c-608fc6cec4bc%2F4DNFI7YRXKEO.hic\": \"388142539,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff0f88647-5631-437b-b48a-4603915e3714%2F4DNFIUY3J7EW.hic\": \"407344788,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F16926af8-ac3b-4f32-97d5-6c0dc6f1596a%2F4DNFIRKUYKP4.hic\": \"893352368,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93e39aec-6cde-4c5b-bcdf-283faa3163a2%2F4DNFIAQDBJZP.hic\": \"489922022,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0dc0b1ba-5509-4464-9814-dfe103ff09a0%2F4DNFIC1CLPK7.hic\": \"565748333,37769\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fb50964c7-b025-49d9-b1ed-289bedb59678%2F4DNFI3A3VYWU.hic\": \"4597459343,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff4390cea-b330-4022-88c1-9ff8c0a786f7%2F4DNFI6JJQKFJ.hic\": \"3678393678,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c0f730-5da1-4863-9b7a-6cdd31066cff%2F4DNFIK61ILGM.hic\": \"3324300994,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F14b14ac4-ab59-4754-9c43-eacd9d0638e2%2F4DNFIYD8LO9Z.hic\": \"3227227120,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7386f953-8da9-47b0-acb2-931cba810544%2F4DNFIOTPSS3L.hic\": \"253942497,7557\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6b5d8bd-27dc-4415-a320-53405a16db85%2F4DNFI525PKU5.hic\": \"305089653,7557\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1f922dbc-637b-4c43-b816-f604f0e79ad1%2F4DNFI8Y9SRP2.hic\": \"1438589609,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6a36d686-716c-4ba8-a9c3-fa8311791d3c%2F4DNFIP25GZGA.hic\": \"1419100109,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0e535542-2cf2-46e4-ba10-7a0b946a7fb2%2F4DNFITPO1WTY.hic\": \"3885296184,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c17d228-5052-4c83-880e-af05118e6929%2F4DNFIG4X5Z5F.hic\": \"2159245890,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc3977c00-525b-4556-9a27-061707f8cb76%2F4DNFIXLYR32S.hic\": \"587852728,21916\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3f856506-cbc5-4211-a29d-48a7530c622e%2F4DNFIWI3V5LI.hic\": \"2318237793,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F38f77979-5eb7-4b6f-9a60-c2451185db98%2F4DNFI2DGL7LH.hic\": \"2068150664,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe0992a75-7727-405e-95ac-aa97141b51c1%2F4DNFI1VSO8JP.hic\": \"1807949651,21916\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe925f1aa-2e7b-44e7-bfa8-2084a613ab13%2F4DNFIV5O2ZYO.hic\": \"2242134377,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F803a6d3c-3972-4939-8ff2-d195c5192090%2F4DNFIEWEWQ8D.hic\": \"2981341325,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F25104375-a588-46e6-a382-663cee6c332f%2F4DNFICSTCJQZ.hic\": \"14592996888,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F927aa8a5-24a5-43b7-807a-1e99ac321459%2F4DNFICEGAHRC.hic\": \"15431307603,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8c380474-12cd-41f4-b86f-2a29faf12eec%2F4DNFIY3XPKPO.hic\": \"2550999291,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F77da562e-d0ec-45a8-8764-14fa16d995a1%2F4DNFIK9PS9GM.hic\": \"3401011629,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F11b26222-d480-40a7-8d53-3ad8500396cb%2F4DNFIF4Y74JR.hic\": \"2127593378,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F93df02c6-1047-43f6-afae-d3598b61eeea%2F4DNFIBBKG9KD.hic\": \"5724446278,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6cd4378a-8f51-4e65-99eb-15f5c80abf8d%2F4DNFIT4I5C6Z.hic\": \"5419655766,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F067881e5-563d-40de-a9e3-caccad887fbc%2F4DNFI2U38HCE.hic\": \"14749043471,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fcb3da9ad-7afe-4d0c-9c2d-261181e7a95c%2F4DNFIETP228R.hic\": \"9401474797,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F185b7bcc-7bb7-41b7-9ebe-92d4fe159431%2F4DNFIXKC48TK.hic\": \"11624295594,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F18459b84-dd43-4af6-a05f-bcb773096322%2F4DNFIFPGOWJ6.hic\": \"2843730862,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffde1e48c-4a0d-4bb1-b84a-e0e45f9a0aa3%2F4DNFIIRMBE8Y.hic\": \"5820677927,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbabed539-1f0f-4e87-8815-fde596e6024c%2F4DNFIVUGNDD7.hic\": \"5170782436,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7d00531a-e616-469b-af52-5b028270e2ce%2F4DNFIFLJLIS5.hic\": \"18917549985,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7a9dad53-b8af-4cb6-9ce3-5c38e4a855c7%2F4DNFIOX3BGNE.hic\": \"5482775936,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F82fd7b7e-5f47-48d5-bf0d-daaa48a4674d%2F4DNFISPUVQHA.hic\": \"2177864938,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4c6680f3-9cf6-452f-9dc5-ecebf376775d%2F4DNFI8649RQJ.hic\": \"3288850368,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2395f001-19d9-4000-9f00-dae3dea708d6%2F4DNFIE8T8JZ8.hic\": \"1383191843,21916\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24464fa8-bf96-483c-8e9a-c2f626ad6e19%2F4DNFIBM714BP.hic\": \"1765204569,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F918fc048-fa27-41d2-a63a-d50c511fbb9a%2F4DNFI6CWNUFL.hic\": \"2431120602,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7ff5a0d1-8e54-4cf0-9fe7-339f147c78da%2F4DNFIZ4F74QR.hic\": \"3211825957,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F355f0412-cb17-452a-b15c-aba16c5a742c%2F4DNFIOUVOX3R.hic\": \"5547401083,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cac91c5-160a-4b91-a91e-edc309318dd5%2F4DNFIVTDXW6X.hic\": \"4797344498,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe9ac9ec5-6221-4f39-951a-1c5054fc9f1c%2F4DNFICA8Y9TN.hic\": \"4277557869,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F46f62222-b50a-428b-938b-5444951600eb%2F4DNFIDWM3HN5.hic\": \"4374808431,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F50e4f2a1-9cb6-4192-8199-64d354bfdf96%2F4DNFIBK5TB3N.hic\": \"3757387253,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe4cdd5a8-1a45-4c6a-906b-a9603260d4c8%2F4DNFI3JYF9VS.hic\": \"5260534916,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc8164e99-5778-427d-be26-f0e1b62400f0%2F4DNFIP1GNKUO.hic\": \"7589365689,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0d72e78a-fc87-4716-8b8e-6dc5650ff2ef%2F4DNFIQYQWPF5.hic\": \"22022259901,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac58fc15-48c2-4eec-a689-23b677b4b6e7%2F4DNFIW6H9U3S.hic\": \"6810897169,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31811e40-e3ca-4456-8ba6-2ee66d6c7104%2F4DNFI7J8BQ4P.hic\": \"7188744676,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F62d81a52-d2cb-4bbd-8510-0fe120e786e0%2F4DNFIA3AKFSU.hic\": \"1763730692,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae0b7513-d1a0-4f27-a9d3-348837f42cb6%2F4DNFID68JQY9.hic\": \"2422880133,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fae6a1a7e-1d2d-4fd2-a89f-1799abac8a9c%2F4DNFIL1FQDXE.hic\": \"1543814834,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F80d343c9-bd60-468a-803d-c3e351a958bc%2F4DNFITSIPCSK.hic\": \"2344682115,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff2d61195-a3a6-4d50-b928-546ca67546cb%2F4DNFIJ88LYHR.hic\": \"3362742962,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F31052aba-773a-4500-961b-e0a518245b0c%2F4DNFIJIPWD63.hic\": \"2529548812,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc93d0710-3fbf-40cc-b0eb-878e2aa659e4%2F4DNFIZUP2BBI.hic\": \"491996147,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F8660baeb-5be1-4ba5-93e4-66499e9a4587%2F4DNFIEBC4AF3.hic\": \"2993048734,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff6d08fbc-b836-4776-82ad-8b1b277ae837%2F4DNFI5VO3E1W.hic\": \"1949322679,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3af004a2-a6fa-46dc-8be8-898b847a77be%2F4DNFIFDGVWLU.hic\": \"2456400803,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd613b4b-2422-492c-8d8f-8afba9c8a182%2F4DNFITVGFNYZ.hic\": \"1411204423,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc340694f-14f3-4638-b09b-98220c20039a%2F4DNFIOW9TTC1.hic\": \"2611370588,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3effa71b-6aa3-4265-87ba-f8d709d778d7%2F4DNFIOAA3ZEQ.hic\": \"3123195980,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fde75cf8b-9ce1-44fc-8b7b-ca0adea6bae9%2F4DNFIA5ID1S6.hic\": \"3496246968,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F714f775d-a5a4-4314-83f8-016b9d73200b%2F4DNFIZYU7V81.hic\": \"4245592042,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5ca518af-6e1e-4777-b67b-0fe7f039ce58%2F4DNFIRV6PVUX.hic\": \"3981520466,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc29b57d5-c263-4372-b396-ab4f55682f5d%2F4DNFIMEANFBY.hic\": \"3999623376,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4196d3ef-161a-4c18-a57e-005165c6b32a%2F4DNFIGLGQXLC.hic\": \"4105683321,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe10828b5-9519-4ceb-81e7-7228bfd890de%2F4DNFILS2HLXC.hic\": \"3804942111,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Feaac88c7-9bdc-4b1e-aa9f-e675520dfffa%2F4DNFIQS8853L.hic\": \"5287726781,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faab371b1-bc8d-4e83-998e-5bb977c443ca%2F4DNFIVBYCYGS.hic\": \"4657988157,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdb116add-af8c-4a3b-b106-9f704ba0a175%2F4DNFIE4WWHMF.hic\": \"5116727268,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F033366e2-05a2-4381-9d48-90122892a9e0%2F4DNFIKDUUC3C.hic\": \"45638237,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F7284a446-442d-4a46-aae5-84987e75a7af%2F4DNFIJ5HIRA2.hic\": \"62201052,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F876649a3-6dd3-463a-8b17-5752a98a89c5%2F4DNFIXDFC7EM.hic\": \"69878143,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3cb4ce4d-d474-459f-8b8a-2159d8df8068%2F4DNFIO35EOVR.hic\": \"70153114,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5c5612fa-18c2-47fb-8074-693b1054e254%2F4DNFI57QGL6U.hic\": \"54605055,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F70c1472d-cf3a-41d7-8682-cd03b7cc978d%2F4DNFI2AGEBE5.hic\": \"67930121,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2bf4cce8-6e03-422b-a190-e51d4a07d501%2F4DNFI1E6NJQJ.hic\": \"4893181511,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0eb3aa56-8a23-435d-a07b-8bb545e8d708%2F4DNFI2DNFM1A.hic\": \"60466977,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F1201682a-a223-482d-913d-3c3972b8eb65%2F4DNFIIRIHBR2.hic\": \"48961678,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F6aee7913-6356-43cf-affa-f2b60dd478f6%2F4DNFIKXNMT46.hic\": \"39095246,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F357139a3-c9a5-4343-b0a4-b41c45fd03fd%2F4DNFIRV7IRJP.hic\": \"70916718,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76be3061-6259-42be-a917-19dcba41517b%2F4DNFIFX1XYKZ.hic\": \"229197441,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ff60c348a-a62c-43c3-ac85-f6c28b5f823f%2F4DNFI64CJUZ5.hic\": \"112428610,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fbd0b0a14-9703-49af-bb36-2359f96d4d0e%2F4DNFIBPL2HL1.hic\": \"73972428,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F79ac278d-83f7-4c1f-91b2-05c8018c1426%2F4DNFIBRSIPE4.hic\": \"415430378,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F0c3b8141-8e67-4211-80dd-3bae88f9e537%2F4DNFIDLDVY14.hic\": \"112747303,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2ae703d2-d85c-4ac4-9ce1-14d653927675%2F4DNFI4R1II4P.hic\": \"210565448,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76e641af-90be-49f8-b126-12c20f856159%2F4DNFINMLRY95.hic\": \"1590865292,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3b416382-ae5d-469f-9e9a-85a3e2ce9793%2F4DNFI8KBXYNL.hic\": \"4626496956,22663\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa27589a6-86b2-43a2-8218-1f2232d551e6%2F4DNFI53R5IKA.hic\": \"1536016455,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdd3999f5-b36e-4154-a6b9-446656959a3a%2F4DNFIAWVDQ8C.hic\": \"2210273411,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fc377953b-0e61-426b-a905-abab2d5a3002%2F4DNFI9VXTBE2.hic\": \"3384365692,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F2dbe0377-1db2-4aae-af2b-d87dff728035%2F4DNFIT96Z365.hic\": \"7692311974,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fdcfcb009-f006-4ab8-a4c7-af72be58c12c%2F4DNFITUOMFUQ.hic\": \"6592120312,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F67f9073d-b2c5-474e-b3d5-7d72cde555cd%2F4DNFIHLQKDN8.hic\": \"2647703964,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76968cc8-fb9f-485b-85b2-c9289067194b%2F4DNFIL9M97T2.hic\": \"6186798917,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F87d9330b-8d2c-4e9d-85bb-02e572de7a68%2F4DNFIDWGZLHX.hic\": \"4379708168,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Ffc01b381-3665-4225-88ee-2e5e9ecb7324%2F4DNFIMEG1QIC.hic\": \"3587146533,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3144a03c-15c3-4bf9-95f8-ffad2640a1bf%2F4DNFIWSB66VX.hic\": \"1529739069,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fd7d3aac0-ba66-494b-ba0c-147631084b98%2F4DNFIH7TH4MF.hic\": \"6896300679,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F4b13bd19-fbd1-4c68-8855-4f0158d1ce47%2F4DNFIHKWIZ9T.hic\": \"1954878455,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F3d04e286-30d4-4add-a806-7a929d36419e%2F4DNFIZBBX795.hic\": \"1350142414,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Faa26f261-a88a-4cac-9118-ff8e90ab6f61%2F4DNFI9ZWZ5BS.hic\": \"3410552807,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F24e516ce-0b49-4476-b818-cc96471d8765%2F4DNFIPAI8XB5.hic\": \"4168518737,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fac3b06b5-46d4-4c1e-97e9-9a4f353473a7%2F4DNFI1OUWFSC.hic\": \"10766406904,21916\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F76c6aa27-895f-4e82-8ed8-7a85aca84490%2F4DNFIX4PJKXZ.hic\": \"1463157350,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fe6fbe03a-997b-4d72-a3cc-f1ed7bd88a92%2F4DNFIZGCA8AH.hic\": \"1597664180,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F61d99a87-4ec6-4116-be99-b483999641c4%2F4DNFI5CGQ46V.hic\": \"2870576870,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F271ea8cd-53b9-44c9-9fff-1bb5c444b54c%2F4DNFIOCW5AEM.hic\": \"2463600138,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2Fa98ca64a-861a-4a8c-92e9-586af457b1fb%2F4DNFI1UEG1HD.hic\": \"22480709268,25900\",\n \"4dn-open-data-public.s3.amazonaws.com%2Ffourfront-webprod%2Fwfoutput%2F5809b32e-0aea-4cf5-a174-cf162d591a35%2F4DNFI9YAVTI1.hic\": \"3141182061,25900\"\n};\n\nconst isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\nconst Short_MIN_VALUE = -32768;\nconst DOUBLE = 8;\nconst FLOAT = 4;\nconst INT = 4;\nconst GoogleRateLimiter = new RateLimiter(100);\n\n\nclass HicFile {\n\n constructor(args) {\n\n if (args.alert) {\n this.alert = args.alert;\n }\n\n this.config = args;\n\n this.loadFragData = args.loadFragData;\n this.fragmentSitesCache = {};\n this.normVectorCache = new LRU(10);\n this.normalizationTypes = ['NONE'];\n this.matrixCache = new LRU(10);\n this.blockCache = new BlockCache();\n\n // args may specify an io.File object, a local path (Node only), or a url\n if (args.file) {\n this.file = args.file;\n } else if (args.blob) {\n this.file = new BrowserLocalFile(args.blob);\n } else if (args.url || (args.path && !isNode)) {\n this.url = args.url || this.path;\n this.remote = true;\n\n // Google drive must be rate limited. Perhaps all remote files should be rate limited?\n const remoteFile = new RemoteFile(args);\n if (isGoogleDrive(this.url)) {\n this.file = new ThrottledFile(remoteFile, GoogleRateLimiter);\n } else {\n this.file = remoteFile;\n }\n } else if (args.path) {\n // path argument, assumed local file\n throw Error(`path property is deprecated, use NodeLocalFile`)\n } else {\n throw Error(\"Arguments must include file, blob, url, or path\")\n }\n }\n\n async init() {\n\n if (this.initialized) {\n return;\n } else {\n await this.readHeaderAndFooter();\n // Footer is read with header\n //await this.readFooter()\n this.initialized = true;\n }\n }\n\n async getVersion() {\n if (this.version === undefined) {\n const data = await this.file.read(0, 128);\n if (!data) {\n return undefined;\n }\n const binaryParser = new BinaryParser(new DataView(data));\n this.magic = binaryParser.getString();\n this.version = binaryParser.getInt();\n return this.version\n } else {\n return this.version\n }\n }\n\n async getMetaData() {\n await this.init();\n return this.meta\n }\n\n async readHeaderAndFooter() {\n\n // Read initial fields magic, version, and footer position\n let data = await this.file.read(0, 16);\n if (!data || data.byteLength === 0) {\n throw Error(\"File content is empty\")\n }\n let binaryParser = new BinaryParser(new DataView(data));\n this.magic = binaryParser.getString();\n this.version = binaryParser.getInt();\n if (this.version < 5) {\n throw Error(\"Unsupported hic version: \" + this.version)\n }\n this.footerPosition = binaryParser.getLong();\n\n // Read footer and determine file position for body section (i.e. end of header)\n\n await this.readFooter();\n\n const bodyPostion = Object.values(this.masterIndex).reduce((min, currentValue) => {\n return Math.min(min, currentValue.start)\n }, Number.MAX_VALUE);\n\n const remainingSize = bodyPostion - 16;\n data = await this.file.read(16, remainingSize);\n binaryParser = new BinaryParser(new DataView(data));\n\n this.genomeId = binaryParser.getString();\n\n if (this.version >= 9) {\n this.normVectorIndexPosition = binaryParser.getLong();\n this.normVectorIndexSize = binaryParser.getLong();\n }\n\n this.attributes = {};\n let nAttributes = binaryParser.getInt();\n while (nAttributes-- > 0) {\n this.attributes[binaryParser.getString()] = binaryParser.getString();\n }\n\n this.chromosomes = [];\n this.chromosomeIndexMap = {};\n let nChrs = binaryParser.getInt();\n let i = 0;\n while (nChrs-- > 0) {\n const chr = {\n index: i,\n name: binaryParser.getString(),\n size: this.version < 9 ? binaryParser.getInt() : binaryParser.getLong()\n };\n if (chr.name.toLowerCase() === \"all\") {\n this.wholeGenomeChromosome = chr;\n this.wholeGenomeResolution = Math.round(chr.size * (1000 / 500)); // Hardcoded in juicer\n }\n this.chromosomes.push(chr);\n this.chromosomeIndexMap[chr.name] = chr.index;\n i++;\n }\n\n this.bpResolutions = [];\n let nBpResolutions = binaryParser.getInt();\n while (nBpResolutions-- > 0) {\n this.bpResolutions.push(binaryParser.getInt());\n }\n\n if (this.loadFragData) {\n this.fragResolutions = [];\n let nFragResolutions = binaryParser.getInt();\n if (nFragResolutions > 0) {\n while (nFragResolutions-- > 0) {\n this.fragResolutions.push(binaryParser.getInt());\n }\n\n // this.sites = [];\n // for(let i=0; i<this.chromosomes.length - 1; i++) {\n // const chrSites = [];\n // this.sites.push(chrSites);\n // let nSites = binaryParser.getInt();\n // console.log(nSites);\n // for(let s=0; s<nSites; s++) {\n // chrSites.push(binaryParser.getInt());\n // }\n // }\n }\n }\n\n // Build lookup table for well-known chr aliases\n this.chrAliasTable = {};\n for (let chrName of Object.keys(this.chromosomeIndexMap)) {\n\n if (chrName.startsWith(\"chr\")) {\n this.chrAliasTable[chrName.substr(3)] = chrName;\n } else if (chrName === \"MT\") {\n this.chrAliasTable[\"chrM\"] = chrName;\n } else {\n this.chrAliasTable[\"chr\" + chrName] = chrName;\n }\n }\n\n\n // Meta data for the API\n this.meta = {\n \"version\": this.version,\n \"genome\": this.genomeId,\n \"chromosomes\": this.chromosomes,\n \"resolutions\": this.bpResolutions,\n };\n\n\n }\n\n async readFooter() {\n\n\n const skip = this.version < 9 ? 8 : 12;\n let data = await this.file.read(this.footerPosition, skip);\n if (!data) {\n return null;\n }\n\n let binaryParser = new BinaryParser(new DataView(data));\n const nBytes = this.version < 9 ? binaryParser.getInt() : binaryParser.getLong(); // Total size, master index + expected values\n let nEntries = binaryParser.getInt();\n\n // Estimate the size of the master index. String length of key is unknown, be conservative (100 bytes)\n\n const miSize = nEntries * (100 + 64 + 32);\n data = await this.file.read(this.footerPosition + skip, Math.min(miSize, nBytes));\n\n binaryParser = new BinaryParser(new DataView(data));\n\n this.masterIndex = {};\n while (nEntries-- > 0) {\n const key = binaryParser.getString();\n const pos = binaryParser.getLong();\n const size = binaryParser.getInt();\n this.masterIndex[key] = {start: pos, size: size};\n }\n\n this.expectedValueVectors = {};\n\n // Expected values\n // const nExpValues = binaryParser.readInt();\n // while (nExpValues-- > 0) {\n // type = \"NONE\";\n // unit = binaryParser.getString();\n // binSize = binaryParser.getInt();\n // nValues = binaryParser.getInt();\n // values = [];\n // while (nValues-- > 0) {\n // values.push(binaryParser.getDouble());\n // }\n //\n // nChrScaleFactors = binaryParser.getInt();\n // normFactors = {};\n // while (nChrScaleFactors-- > 0) {\n // normFactors[binaryParser.getInt()] = binaryParser.getDouble();\n // }\n //\n // // key = unit + \"_\" + binSize + \"_\" + type;\n // // NOT USED YET SO DON'T STORE\n // // dataset.expectedValueVectors[key] =\n // // new ExpectedValueFunction(type, unit, binSize, values, normFactors);\n // }\n\n // normalized expected values start after expected value. Add 4 for\n if (this.version > 5) {\n const skip = this.version < 9 ? 4 : 8;\n this.normExpectedValueVectorsPosition = this.footerPosition + skip + nBytes;\n }\n return this;\n };\n\n async printIndexStats() {\n\n let totalSize = 0;\n let maxSize = 0;\n await await this.init();\n for (let key of Object.keys(this.masterIndex)) {\n const entry = this.masterIndex[key];\n // console.log(`${key}\\t${entry.start}\\t${entry.size}`)\n totalSize += entry.size;\n if (entry.size > maxSize) {\n maxSize = entry.size;\n }\n }\n // console.log(`Total size = ${totalSize}`);\n }\n\n async getMatrix(chrIdx1, chrIdx2) {\n const key = Matrix.getKey(chrIdx1, chrIdx2);\n if (this.matrixCache.has(key)) {\n return this.matrixCache.get(key);\n } else {\n const matrix = await this.readMatrix(chrIdx1, chrIdx2);\n this.matrixCache.set(key, matrix);\n return matrix;\n }\n }\n\n async readMatrix(chrIdx1, chrIdx2) {\n\n await this.init();\n\n if (chrIdx1 > chrIdx2) {\n const tmp = chrIdx1;\n chrIdx1 = chrIdx2;\n chrIdx2 = tmp;\n }\n\n const key = Matrix.getKey(chrIdx1 , chrIdx2);\n const idx = this.masterIndex[key];\n if (!idx) {\n return undefined\n }\n const data = await this.file.read(idx.start, idx.size);\n if (!data) {\n return undefined\n }\n\n return Matrix.parseMatrix(data, this.chromosomes);\n\n }\n\n async getContactRecords(normalization, region1, region2, units, binsize, allRecords = false) {\n\n await this.init();\n\n const idx1 = this.chromosomeIndexMap[this.getFileChrName(region1.chr)];\n const idx2 = this.chromosomeIndexMap[this.getFileChrName(region2.chr)];\n\n const transpose = (idx1 > idx2) || (idx1 === idx2 && region1.start >= region2.end);\n if (transpose) {\n const tmp = region1;\n region1 = region2;\n region2 = tmp;\n }\n\n const blocks = await this.getBlocks(region1, region2, units, binsize);\n if (!blocks || blocks.length === 0) {\n return []\n }\n\n const contactRecords = [];\n const x1 = region1.start / binsize;\n const x2 = region1.end / binsize;\n const y1 = region2.start / binsize;\n const y2 = region2.end / binsize;\n const nvX1 = Math.floor(x1);\n const nvX2 = Math.ceil(x2);\n const nvY1 = Math.floor(y1);\n const nvY2 = Math.ceil(y2);\n for (let block of blocks) {\n if (block) { // An undefined block is most likely caused by a base pair range outside the chromosome\n let normVector1;\n let normVector2;\n let isNorm = normalization && normalization !== \"NONE\";\n const chr1 = this.getFileChrName(region1.chr);\n const chr2 = this.getFileChrName(region2.chr);\n if (isNorm) {\n\n const nv1 = await this.getNormalizationVector(normalization, chr1, units, binsize);\n const nv2 = (chr1 === chr2) ? nv1 : await this.getNormalizationVector(normalization, chr2, units, binsize);\n\n if (nv1 && nv2) {\n normVector1 = await nv1.getValues(nvX1, nvX2);\n normVector2 = await nv2.getValues(nvY1, nvY2);\n } else {\n isNorm = false;\n // Raise message and switch pulldown\n }\n }\n\n for (let rec of block.records) {\n if (allRecords || (rec.bin1 >= x1 && rec.bin1 < x2 && rec.bin2 >= y1 && rec.bin2 < y2)) {\n if (isNorm) {\n const x = rec.bin1;\n const y = rec.bin2;\n const nvnv = normVector1[x - nvX1] * normVector2[y - nvY1];\n if (nvnv !== 0 && !isNaN(nvnv)) {\n const counts = rec.counts / nvnv;\n contactRecords.push(new ContactRecord(x, y, counts));\n }\n } else {\n contactRecords.push(rec);\n }\n }\n }\n }\n }\n\n return contactRecords;\n }\n\n async getBlocks(region1, region2, unit, binSize) {\n\n const blockKey = (blockNumber, zd) => `${zd.getKey()}_${blockNumber}`;\n\n await this.init();\n const chr1 = this.getFileChrName(region1.chr);\n const chr2 = this.getFileChrName(region2.chr);\n const idx1 = this.chromosomeIndexMap[chr1];\n const idx2 = this.chromosomeIndexMap[chr2];\n\n if (idx1 === undefined) {\n return []\n }\n if (idx2 === undefined) {\n return []\n }\n\n const matrix = await this.getMatrix(idx1, idx2);\n if (!matrix) {\n return []\n }\n\n const zd = matrix.getZoomData(binSize, unit);\n if (!zd) {\n let msg = `No data avalailble for resolution: ${binSize} for map ${region1.chr}-${region2.chr}`;\n throw new Error(msg)\n }\n\n const blockNumbers = zd.getBlockNumbers(region1, region2, this.version);\n\n const blocks = [];\n const blockNumbersToQuery = [];\n for (let num of blockNumbers) {\n const key = blockKey(num, zd);\n if (this.blockCache.has(binSize, key)) {\n blocks.push(this.blockCache.get(binSize, key));\n } else {\n blockNumbersToQuery.push(num);\n }\n }\n\n const promises = blockNumbersToQuery.map(blockNumber => this.readBlock(blockNumber, zd));\n const newBlocks = await Promise.all(promises);\n for (let block of newBlocks) {\n if (block) {\n this.blockCache.set(binSize, blockKey(block.blockNumber, zd), block);\n }\n }\n return blocks.concat(newBlocks);\n }\n\n async readBlock(blockNumber, zd) {\n\n const idx = await zd.blockIndex.getBlockIndexEntry(blockNumber);\n\n if (!idx) {\n return undefined\n } else {\n let data = await this.file.read(idx.filePosition, idx.size);\n if (!data) {\n return undefined;\n }\n\n const inflate = new Zlib.Inflate(new Uint8Array(data));\n const plain = inflate.decompress();\n //var plain = zlib.inflateSync(Buffer.from(data)) //.decompress();\n data = plain.buffer;\n\n const parser = new BinaryParser(new DataView(data));\n const nRecords = parser.getInt();\n const records = [];\n\n if (this.version < 7) {\n for (let i = 0; i < nRecords; i++) {\n const binX = parser.getInt();\n const binY = parser.getInt();\n const counts = parser.getFloat();\n records.push(new ContactRecord(binX, binY, counts));\n }\n } else {\n\n const binXOffset = parser.getInt();\n const binYOffset = parser.getInt();\n\n const useFloatContact = parser.getByte() === 1;\n const useIntXPos = this.version < 9 ? false : parser.getByte() == 1;\n const useIntYPos = this.version < 9 ? false : parser.getByte() == 1;\n const type = parser.getByte();\n\n if (type === 1) {\n // List-of-rows representation\n const rowCount = useIntYPos ? parser.getInt() : parser.getShort();\n for (let i = 0; i < rowCount; i++) {\n const dy = useIntYPos ? parser.getInt() : parser.getShort();\n const binY = binYOffset + dy;\n const colCount = useIntXPos ? parser.getInt() : parser.getShort();\n for (let j = 0; j < colCount; j++) {\n const dx = useIntXPos ? parser.getInt() : parser.getShort();\n const binX = binXOffset + dx;\n const counts = useFloatContact ? parser.getFloat() : parser.getShort();\n records.push(new ContactRecord(binX, binY, counts));\n }\n }\n } else if (type == 2) {\n\n const nPts = parser.getInt();\n const w = parser.getShort();\n\n for (let i = 0; i < nPts; i++) {\n //int idx = (p.y - binOffset2) * w + (p.x - binOffset1);\n const row = Math.floor(i / w);\n const col = i - row * w;\n const bin1 = binXOffset + col;\n const bin2 = binYOffset + row;\n\n if (useFloatContact) {\n const counts = parser.getFloat();\n if (!isNaN(counts)) {\n records.push(new ContactRecord(bin1, bin2, counts));\n }\n } else {\n const counts = parser.getShort();\n if (counts != Short_MIN_VALUE) {\n records.push(new ContactRecord(bin1, bin2, counts));\n }\n }\n }\n } else {\n throw new Error(\"Unknown block type: \" + type);\n }\n\n }\n\n return new Block(blockNumber, zd, records, idx);\n\n\n }\n };\n\n async hasNormalizationVector(type, chr, unit, binSize) {\n await this.init();\n let chrIdx;\n if (Number.isInteger(chr)) {\n chrIdx = chr;\n } else {\n const canonicalName = this.getFileChrName(chr);\n chrIdx = this.chromosomeIndexMap[canonicalName];\n }\n const key = getNormalizationVectorKey(type, chrIdx, unit.toString(), binSize);\n const normVectorIndex = await this.getNormVectorIndex();\n return normVectorIndex && normVectorIndex[key];\n }\n\n async isNormalizationValueAvailableAtResolution(normalization, chr, unit, resolution) {\n\n let chromosomeIndex;\n if (Number.isInteger(chr)) {\n chromosomeIndex = chr;\n } else {\n const canonicalName = this.getFileChrName(chr);\n chromosomeIndex = this.chromosomeIndexMap[canonicalName];\n }\n\n const normVectorIndex = await this.getNormVectorIndex();\n\n const key = getNormalizationVectorKey(normalization, chromosomeIndex, unit.toString(), resolution);\n\n const index = normVectorIndex[key];\n\n return undefined !== index\n\n }\n\n async getNormalizationVector(type, chr, unit, binSize) {\n\n await this.init();\n\n let chrIdx;\n if (Number.isInteger(chr)) {\n chrIdx = chr;\n } else {\n const canonicalName = this.getFileChrName(chr);\n chrIdx = this.chromosomeIndexMap[canonicalName];\n }\n\n const key = getNormalizationVectorKey(type, chrIdx, unit.toString(), binSize);\n\n if (this.normVectorCache.has(key)) {\n return this.normVectorCache.get(key);\n }\n\n const normVectorIndex = await this.getNormVectorIndex();\n\n if (!normVectorIndex) {\n return undefined\n }\n\n const status = await this.isNormalizationValueAvailableAtResolution(type, chr, unit, binSize);\n\n if (false === status) {\n\n const str = `Normalization option ${ type } not available at resolution ${ binSize }. Will use NONE.`;\n\n if (this.alert) {\n this.alert(str);\n } \n return undefined\n }\n\n const idx = normVectorIndex[key];\n\n const data = await this.file.read(idx.filePosition, 8);\n\n if (!data) {\n return undefined;\n }\n\n const parser = new BinaryParser(new DataView(data));\n const nValues = this.version < 9 ? parser.getInt() : parser.getLong();\n const dataType = this.version < 9 ? DOUBLE : FLOAT;\n const filePosition = this.version < 9 ? idx.filePosition + 4 : idx.filePosition + 8;\n const nv = new NormalizationVector(this.file, filePosition, nValues, dataType);\n this.normVectorCache.set(key, nv);\n return nv;\n\n }\n\n async getNormVectorIndex() {\n\n if (this.version < 6) {\n return undefined;\n }\n\n if (!this.normVectorIndex) {\n\n // If nvi is not supplied, try reading from remote lambda service\n if (!this.config.nvi && this.remote && this.url) {\n const url = new URL(this.url);\n const key = encodeURIComponent(url.hostname + url.pathname);\n if(nvi.hasOwnProperty(key)) {\n this.config.nvi = nvi[key];\n }\n }\n\n if (this.config.nvi) {\n const nviArray = decodeURIComponent(this.config.nvi).split(\",\");\n const range = {start: parseInt(nviArray[0]), size: parseInt(nviArray[1])};\n return this.readNormVectorIndex(range)\n } else {\n try {\n await this.readNormExpectedValuesAndNormVectorIndex();\n return this.normVectorIndex\n } catch (e) {\n if (e.code === \"416\" || e.code === 416) {\n // This is expected if file does not contain norm vectors\n this.normExpectedValueVectorsPosition = undefined;\n } else {\n console.error(e);\n }\n }\n }\n }\n\n return this.normVectorIndex\n }\n\n async getNormalizationOptions() {\n // Normalization options are computed as a side effect of loading the index. A bit\n // ugly but alternatives are worse.\n await this.getNormVectorIndex();\n return this.normalizationTypes;\n }\n\n /**\n * Return a promise to load the normalization vector index\n *\n * @param dataset\n * @param range -- file range {position, size}\n * @returns Promise for the normalization vector index\n */\n async readNormVectorIndex(range) {\n\n await this.init();\n\n this.normalizationVectorIndexRange = range;\n\n const data = await this.file.read(range.start, range.size);\n\n const binaryParser = new BinaryParser(new DataView(data));\n\n this.normVectorIndex = {};\n\n let nEntries = binaryParser.getInt();\n while (nEntries-- > 0) {\n this.parseNormVectorEntry(binaryParser);\n }\n\n return this.normVectorIndex;\n\n }\n\n /**\n * This function is used when the position of the norm vector index is unknown. We must read through the expected\n * values to find the index\n *\n * @param dataset\n * @returns {Promise}\n */\n async readNormExpectedValuesAndNormVectorIndex() {\n\n await this.init();\n\n if (this.normExpectedValueVectorsPosition === undefined) {\n return;\n }\n\n const nviStart = await this.skipExpectedValues(this.normExpectedValueVectorsPosition);\n let byteCount = INT;\n\n let data = await this.file.read(nviStart, INT);\n if (data.byteLength === 0) {\n // This is possible if there are no norm vectors. Its a legal v8 file, though uncommon\n return;\n }\n const binaryParser = new BinaryParser(new DataView(data));\n const nEntries = binaryParser.getInt();\n const sizeEstimate = nEntries * 30;\n const range = {start: nviStart + byteCount, size: sizeEstimate};\n\n data = await this.file.read(range.start, range.size);\n this.normalizedExpectedValueVectors = {};\n this.normVectorIndex = {};\n\n // Recursively process entries\n await processEntries.call(this, nEntries, data);\n\n this.config.nvi = nviStart.toString() + \",\" + byteCount;\n\n async function processEntries(nEntries, data) {\n\n const binaryParser = new BinaryParser(new DataView(data));\n\n while (nEntries-- > 0) {\n\n if (binaryParser.available() < 100) {\n\n nEntries++; // Reset counter as entry is not processed\n\n byteCount += binaryParser.position;\n const sizeEstimate = Math.max(1000, nEntries * 30);\n const range = {start: nviStart + byteCount, size: sizeEstimate};\n const data = await this.file.read(range.start, range.size);\n return processEntries.call(this, nEntries, data);\n }\n\n this.parseNormVectorEntry(binaryParser);\n\n }\n byteCount += binaryParser.position;\n }\n }\n\n /**\n * This function is used when the position of the norm vector index is unknown. We must read through the\n * normalized expected values to find the index\n *\n * @param dataset\n * @returns {Promise}\n */\n async skipExpectedValues(start) {\n\n const version = this.version;\n const file = new BufferedFile({file: this.file, size: 256000});\n const range = {start: start, size: INT};\n const data = await file.read(range.start, range.size);\n const binaryParser = new BinaryParser(new DataView(data));\n const nEntries = binaryParser.getInt(); // Total # of expected value chunks\n if (nEntries === 0) {\n return start + INT;\n } else {\n return parseNext(start + INT, nEntries);\n } // Skip 4 bytes for int\n\n\n async function parseNext(start, nEntries) {\n\n let range = {start: start, size: 500};\n let chunkSize = 0;\n let p0 = start;\n\n let data = await file.read(range.start, range.size);\n let binaryParser = new BinaryParser(new DataView(data));\n binaryParser.getString(); // type\n binaryParser.getString(); // unit\n binaryParser.getInt(); // binSize\n const nValues = version < 9 ? binaryParser.getInt() : binaryParser.getLong();\n\n chunkSize += binaryParser.position + nValues * (version < 9 ? DOUBLE : FLOAT);\n\n range = {start: start + chunkSize, size: INT};\n data = await file.read(range.start, range.size);\n binaryParser = new BinaryParser(new DataView(data));\n const nChrScaleFactors = binaryParser.getInt();\n chunkSize += (INT + nChrScaleFactors * (INT + (version < 9 ? DOUBLE : FLOAT)));\n\n\n nEntries--;\n if (nEntries === 0) {\n return p0 + chunkSize;\n } else {\n return parseNext(p0 + chunkSize, nEntries);\n }\n }\n }\n\n getZoomIndexForBinSize(binSize, unit) {\n\n unit = unit || \"BP\";\n\n let resolutionArray;\n if (unit === \"BP\") {\n resolutionArray = this.bpResolutions;\n } else if (unit === \"FRAG\") {\n resolutionArray = this.fragResolutions;\n } else {\n throw new Error(\"Invalid unit: \" + unit);\n }\n\n for (let i = 0; i < resolutionArray.length; i++) {\n if (resolutionArray[i] === binSize) return i;\n }\n\n return -1;\n }\n\n parseNormVectorEntry(binaryParser) {\n const type = binaryParser.getString(); //15\n const chrIdx = binaryParser.getInt(); //4\n const unit = binaryParser.getString(); //3\n const binSize = binaryParser.getInt(); //4\n const filePosition = binaryParser.getLong(); //8\n const sizeInBytes = this.version < 9 ? binaryParser.getInt() : binaryParser.getLong(); //4:8\n const key = type + \"_\" + chrIdx + \"_\" + unit + \"_\" + binSize;\n // TODO -- why does this not work? NormalizationVector.getNormalizationVectorKey(type, chrIdx, unit, binSize);\n\n if (!this.normalizationTypes.includes(type)) {\n this.normalizationTypes.push(type);\n }\n this.normVectorIndex[key] = {filePosition: filePosition, size: sizeInBytes};\n }\n\n getFileChrName(chrAlias) {\n if (this.chrAliasTable.hasOwnProperty(chrAlias)) {\n return this.chrAliasTable[chrAlias]\n } else {\n return chrAlias\n }\n }\n\n\n // NOTE sties are not currently used\n // async getSites(chrName) {\n // let sites = this.fragmentSitesCache[chrName];\n // if (!sites) {\n // if (this.fragmentSitesIndex) {\n // const entry = self.fragmentSitesIndex[chrName];\n // if (entry && entry.nSites > 0) {\n // sites = await this.readSites(entry.position, entry.nSites)\n // this.fragmentSitesCache[chrName] = sites;\n // }\n // }\n // }\n // return sites;\n // }\n //\n\n}\n\n\nfunction getNormalizationVectorKey(type, chrIdx, unit, resolution) {\n return type + \"_\" + chrIdx + \"_\" + unit + \"_\" + resolution;\n}\n\nfunction isGoogleDrive(url) {\n return url.indexOf(\"drive.google.com\") >= 0 || url.indexOf(\"www.googleapis.com/drive\") > 0\n}\n\nclass Block {\n constructor(blockNumber, zoomData, records, idx) {\n this.blockNumber = blockNumber;\n this.zoomData = zoomData;\n this.records = records;\n this.idx = idx;\n }\n}\n\n\nclass BlockCache {\n\n constructor() {\n this.resolution = undefined;\n this.map = new LRU(6);\n }\n\n set(resolution, key, value) {\n if (this.resolution !== resolution) {\n this.map.clear();\n }\n this.resolution = resolution;\n this.map.set(key, value);\n }\n\n get(resolution, key) {\n return this.resolution === resolution ? this.map.get(key) : undefined;\n }\n\n has(resolution, key) {\n return this.resolution === resolution && this.map.has(key);\n }\n}\n\nclass Straw {\n\n constructor(config) {\n this.config = config;\n this.hicFile = new HicFile(config);\n }\n\n async getMetaData() {\n return await this.hicFile.getMetaData()\n }\n\n //straw <NONE/VC/VC_SQRT/KR> <ile> <chr1>[:x1:x2] <chr2>[:y1:y2] <BP/FRAG> <binsize>\n async getContactRecords(normalization, region1, region2, units, binsize) {\n return this.hicFile.getContactRecords(normalization, region1, region2, units, binsize);\n }\n\n async getNormalizationOptions() {\n return this.hicFile.getNormalizationOptions()\n }\n\n async getNVI() {\n await this.hicFile.getNormVectorIndex();\n return this.hicFile.config.nvi;\n }\n\n async printIndexStats() {\n await this.hicFile.printIndexStats();\n }\n\n getFileChrName(chrAlias) {\n if (this.hicFile.chrAliasTable.hasOwnProperty(chrAlias)) {\n return this.hicFile.chrAliasTable[chrAlias]\n } else {\n return chrAlias\n }\n }\n}\n\nexport { Straw as default };\n"],"names":["Zlib","Huffman","Util","CRC32","DEFLATE","RESERVED","opt_params","this","files","comment","password","Zip","CompressionMethod","STORE","OperatingSystem","MSDOS","UNIX","MACINTOSH","Flags","ENCRYPT","DESCRIPTOR","UTF8","FileHeaderSignature","LocalFileHeaderSignature","CentralDirectorySignature","prototype","addFile","input","compressed","size","length","crc32","Array","Uint8Array","calc","deflateWithOption","Error","push","buffer","option","encrypted","setPassword","compress","file","output","op1","op2","op3","endOfCentralDirectorySize","offset","flags","compressionMethod","date","plainSize","filenameLength","extraFieldLength","commentLength","filename","extraField","tmp","key","i","il","j","jl","localFileSize","centralDirectorySize","createEncryptionKey","set","encode","Math","random","needVersion","Date","getMinutes","getSeconds","getHours","getMonth","getDate","getFullYear","RawDeflate","getByte","n","updateKeys","single","Uint32Array","buildHuffmanTable","lengths","table","bitLength","code","skip","reversed","rtemp","value","listSize","maxCodeLength","minCodeLength","Number","POSITIVE_INFINITY","RawInflate","blocks","bufferSize","totalpos","ip","bitsbuf","bitsbuflen","op","bfinal","bufferType","BufferType","ADAPTIVE","resize","BLOCK","MaxBackwardLength","MaxCopyLength","decompress","parseBlock","concatBufferBlock","concatBufferDynamic","Order","Uint16Array","LengthCodeTable","LengthExtraTable","DistCodeTable","DistExtraTable","FixedLiteralLengthTable","FixedDistanceTable","hdr","readBits","parseUncompressedBlock","parseFixedHuffmanBlock","parseDynamicHuffmanBlock","octet","readCodeByTable","codeWithLength","codeLength","inputLength","codeTable","len","preCopy","olength","subarray","expandBufferBlock","expandBufferAdaptive","fixRatio","decodeHuffmanAdaptive","decodeHuffmanBlock","codeLengthsTable","litlenTable","distTable","lengthTable","prev","repeat","hlit","hdist","hclen","codeLengths","litlen","dist","currentLitlenTable","ti","codeDist","lengthCodeTable","lengthExtraTable","distCodeTable","distExtraTable","opt_param","backward","newSize","maxInflateSize","ratio","addRatio","block","pos","limit","RawInflateStream","opt_buffersize","ZLIB_STREAM_RAW_INFLATE_BUFFER_SIZE","blockLength","sp","status","Status","INITIALIZED","ip_","bitsbuflen_","bitsbuf_","BlockType","UNCOMPRESSED","FIXED","DYNAMIC","BLOCK_HEADER_START","BLOCK_HEADER_END","BLOCK_BODY_START","BLOCK_BODY_END","DECODE_BLOCK_START","DECODE_BLOCK_END","newInput","stop","readBlockHeader","currentBlockType","readUncompressedBlockHeader","decodeHuffman","concatBuffer","save_","restore_","expandBuffer","bits","call","e","Inflate","cmf","flg","rawinflate","verify","method","Adler32","InflateStream","readHeader","Gunzip","member","decompressed","getMembers","slice","decodeMember","concatMember","isize","inflated","inflen","c","ci","str","mtime","GunzipMember","id1","id2","cm","xfl","os","Gzip","FlagsMask","FEXTRA","xlen","decodeSubField","FNAME","String","fromCharCode","name","join","FCOMMENT","FHCRC","crc16","data","toString","p","getName","getData","getMtime","deflateOptions","DefaultBufferSize","rawdeflate","now","UNKNOWN","charCodeAt","byteLength","FAT","AMIGA","VMS","VM_CMS","ATARI_TOS","HPFS","Z_SYSTEM","CP_M","TOPS_20","NTFS","QDOS","ACORN_RISCOS","FTEXT","Heap","getParent","index","getChild","current","parent","swap","heap","pop","compressionType","CompressionType","lazy","freqsLitLen","freqsDist","NONE","Lz77MinLength","Lz77MaxLength","WindowSize","MaxCodeLength","HUFMAX","FixedHuffmanTable","blockArray","position","makeNocompressBlock","makeFixedHuffmanBlock","makeDynamicHuffmanBlock","isFinalBlock","btype","nlen","stream","BitStream","writeBits","lz77","fixedHuffman","finish","litLenLengths","litLenCodes","distLengths","distCodes","treeSymbols","treeLengths","treeCodes","bitlen","hclenOrder","transLengths","getLengths_","getCodesFromLengths_","getTreeSymbols_","freqs","codes","dynamicHuffman","dataArray","litLen","literal","apply","Lz77Match","backwardDistance","getDistanceCode_","r","toLz77Array","codeArray","matchKey","matchList","longestMatch","prevMatch","windowSize","lz77buf","skipLength","writeMatch","match","lz77Array","shift","searchLongestMatch_","currentMatch","matchLength","l","matchMax","dl","permatch","litlenLengths","runLength","nResult","rpt","src","result","nodes","values","nSymbols","reversePackageMerge_","symbols","t","weight","next","minimumCost","flag","type","currentPosition","excess","half","takePackage","x","m","count","startCode","Unzip","eocdrOffset","numberOfThisDisk","startDisk","totalEntriesThisDisk","totalEntries","centralDirectoryOffset","fileHeaderList","filenameToIndex","FileHeader","version","compression","time","compressedSize","fileNameLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","relativeOffset","parse","LocalFileHeader","searchEndOfCentralDirectoryRecord","parseEndOfCentralDirectoryRecord","parseFileHeader","fileHeader","filelist","filetable","getFileData","localFileHeader","createDecryptionKey","decode","getFilenames","filenameList","stringToByteArray","split","array","update","adler","tlen","s1","s2","OptimizationParameter","bufferPosition","bitindex","DefaultBlockSize","oldbuf","number","reverse","ReverseTable","rev32_","s","crc","Table","num","Table_","Deflate","rawDeflate","prop","rawDeflateOption","flevel","LOG2E","log","BrowserLocalFile","constructor","blob","read","undefined","arrayBuffer","process","versions","node","RemoteFile","args","url","config","path","includes","replace","startsWith","ceil","headers","rangeString","oauthToken","token","async","Promise","resolve","resolveToken","apiKey","paramSeparator","addParameter","response","fetch","redirect","mode","console","error","err","statusText","ThrottledFile","rateLimiter","fulfill","reject","limiter","f","BufferedFile","bufferStart","bufferLength","start","end","bufferEnd","sliceStart","sliceEnd","l1","a1","l2","a2","concatBuffers","buffer1","buffer2","BinaryParser","dataView","littleEndian","view","VPointer","available","remLength","hasNext","retValue","getUint8","getShort","getInt16","getUShort","getUint16","getInt","getInt32","getUInt","getUint32","getLong","b","getString","getFixedLengthString","getFixedLengthTrimmedString","getFloat","getFloat32","getDouble","getFloat64","getVPointer","isLessThan","vp","isGreaterThan","print","MatrixZoomData","chr1","chr2","getKey","zoom","unit","binSize","getBlockNumbers","region1","region2","chr","sameChr","binsize","blockBinCount","blockColumnCount","x1","x2","y1","y2","col1","floor","col2","row1","row2","blockNumbers","row","column","blockNumber","getBlockNumbersV8","binX1","binX2","binY1","binY2","translatedLowerPAD","translatedHigherPAD","translatedNearerDepth","log2","abs","sqrt","translatedFurtherDepth","nearerDepth","min","furtherDepth","max","depth","pad","block_number","getBlockNumbersV9","parseMatrixZoomData","dis","zd","zoomIndex","sumCounts","occupiedCellCount","stdDev","percent95","nBlocks","blockIndex","StaticBlockIndex","avgCount","averageCount","filePosition","getBlockIndexEntry","Matrix","zoomDataList","bpZoomData","fragZoomData","findZoomForResolution","zdArray","getZoomData","getZoomDataByIndex","chrIdx1","chrIdx2","parseMatrix","chromosomes","DataView","c1","c2","nResolutions","zdList","ContactRecord","bin1","bin2","counts","LRU","map","Map","get","item","delete","val","has","first","clear","keys","NormalizationVector","nValues","dataType","cache","getValues","adjustedStart","adjustedEnd","startPosition","sizeInBytes","parser","chrIdx","resolution","getNormalizationVectorKey","nvi","isNode","GoogleRateLimiter","wait","isCalled","calls","fn","self","caller","setTimeout","bind","arguments","HicFile","alert","loadFragData","fragmentSitesCache","normVectorCache","normalizationTypes","matrixCache","blockCache","BlockCache","remote","remoteFile","indexOf","init","initialized","readHeaderAndFooter","getVersion","binaryParser","magic","getMetaData","meta","footerPosition","readFooter","remainingSize","Object","masterIndex","reduce","currentValue","MAX_VALUE","genomeId","normVectorIndexPosition","normVectorIndexSize","attributes","nAttributes","chromosomeIndexMap","nChrs","toLowerCase","wholeGenomeChromosome","wholeGenomeResolution","round","bpResolutions","nBpResolutions","fragResolutions","nFragResolutions","chrAliasTable","chrName","substr","nBytes","nEntries","miSize","expectedValueVectors","normExpectedValueVectorsPosition","printIndexStats","totalSize","maxSize","entry","getMatrix","matrix","readMatrix","idx","getContactRecords","normalization","units","allRecords","idx1","getFileChrName","idx2","getBlocks","contactRecords","nvX1","nvX2","nvY1","nvY2","normVector1","normVector2","isNorm","nv1","getNormalizationVector","nv2","rec","records","y","nvnv","isNaN","blockKey","msg","blockNumbersToQuery","promises","readBlock","newBlocks","all","concat","nRecords","binX","binY","binXOffset","binYOffset","useFloatContact","useIntXPos","useIntYPos","rowCount","colCount","nPts","w","Block","hasNormalizationVector","isInteger","canonicalName","normVectorIndex","getNormVectorIndex","isNormalizationValueAvailableAtResolution","chromosomeIndex","nv","URL","encodeURIComponent","hostname","pathname","hasOwnProperty","nviArray","decodeURIComponent","range","parseInt","readNormVectorIndex","readNormExpectedValuesAndNormVectorIndex","getNormalizationOptions","normalizationVectorIndexRange","parseNormVectorEntry","nviStart","skipExpectedValues","byteCount","normalizedExpectedValueVectors","processEntries","sizeEstimate","parseNext","chunkSize","p0","getZoomIndexForBinSize","resolutionArray","chrAlias","zoomData","Straw","hicFile","getNVI"],"sourceRoot":""} |