ï»¿ package Ġcom . jetbrains . util Ċ Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . channels . Seek able Byte Channel Ċ Ċ fun ĠSeek able Byte Channel . Rew ind (): ĠSeek able Byte Channel Ġ{ ĊĠ Ġthis . position ( 0 ) ĊĠ Ġreturn Ġthis Ċ } Ċ Ċ fun ĠSeek able Byte Channel . Skip ( len : ĠLong ) Ġ{ ĊĠ Ġthis . Seek ( len , ĠSeek Origin . Current ) Ċ } Ċ Ċ fun ĠSeek able Byte Channel . Jump ( len : ĠUInt ) Ġ{ ĊĠ Ġthis . Seek ( len . to Long (), ĠSeek Origin . Begin ) Ċ } Ċ Ċ fun ĠSeek able Byte Channel . Seek ( position : ĠLong , Ġorigin : ĠSeek Origin ) Ġ{ ĊĠ Ġwhen Ġ( origin ) Ġ{ ĊĠĠĠ ĠSeek Origin . Begin Ġ-> Ġthis . position ( position ) ĊĠĠĠ ĠSeek Origin . Current Ġ-> Ġthis . position ( this . position () Ġ+ Ġposition ) ĊĠĠĠ ĠSeek Origin . End Ġ-> Ġthis . position ( this . size () Ġ- Ġ 1 ) ĊĠ Ġ} Ċ } Ċ Ċ fun ĠSeek able Byte Channel . ReadAll (): ĠByteArray Ġ{ ĊĠ Ġthis . Rew ind () ĊĠ Ġval Ġbuf Ġ= ĠByteBuffer . wrap ( ByteArray ( this . size (). toInt ())) ĊĠ Ġthis . read ( buf ) ĊĠ Ġreturn Ġbuf . array () Ċ } Ċ Ċ fun ĠSeek able Byte Channel . Read ToEnd (): ĠByteArray Ġ{ ĊĠ Ġval Ġpos Ġ= Ġthis . position () ĊĠ Ġval Ġsize Ġ= Ġthis . size () ĊĠ Ġif Ġ( pos Ġ+ Ġ 1 Ġ== Ġsize ) ĊĠĠĠ Ġreturn ĠByteArray ( 0 ) ĊĠ Ġval Ġbuf Ġ= ĠByteBuffer . wrap ( ByteArray (( size Ġ- Ġpos ). toInt ())) ĊĠ Ġthis . read ( buf ) ĊĠ Ġreturn Ġbuf . array () Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 1 6 ( is Be : ĠBoolean ): ĠU Short Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 1 6 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 3 2 ( is Be : ĠBoolean ): ĠUInt Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 3 2 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 6 4 ( is Be : ĠBoolean ): ĠU Long Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 6 4 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } ĊĊ Ċ fun ĠBinary Reader . Read UInt 1 6 Le ( is Be : ĠBoolean ): ĠU Short Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 1 6 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 3 2 Le ( is Be : ĠBoolean ): ĠUInt Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 3 2 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 3 2 Be (): ĠUInt Ġ{ ĊĠ Ġreturn ĠSwap Bytes ( this . Read UInt 3 2 ()) Ċ } Ċ Ċ fun ĠBinary Reader . Read UInt 6 4 Le ( is Be : ĠBoolean ): ĠU Long Ġ{ ĊĠ Ġval Ġvalue Ġ= Ġthis . Read UInt 6 4 () ĊĠ Ġreturn Ġif Ġ( is Be ) ĠSwap Bytes ( value ) Ġelse Ġvalue Ċ } Ċ Ċ private Ġfun ĠSwap Bytes ( v : ĠU Short ): ĠU Short Ġ= Ġ((( v . toInt () Ġand Ġ 0 xFF ) Ġshl Ġ 8 ) Ġor Ġ(( v . toInt () Ġ ush r Ġ 8 ) Ġand Ġ 0 xFF )). to U Short () Ċ Ċ private Ġfun ĠSwap Bytes ( v : ĠUInt ): ĠUInt Ġ= ĊĠ Ġ( Swap Bytes ( v . to U Short ()). to UInt () Ġshl Ġ 1 6 ) Ġor Ġ( Swap Bytes (( v Ġshr Ġ 1 6 ). to U Short ()). to UInt ()) Ċ Ċ private Ġfun ĠSwap Bytes ( v : ĠU Long ): ĠU Long Ġ= ĊĠ Ġ( Swap Bytes ( v . to UInt ()) Ġshl Ġ 3 2 ). to UL ong () Ġor Ġ( Swap Bytes (( v Ġshr Ġ 3 2 ). to UInt ())). to UL ong () Ċ