/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 , ĠSer gio ĠVe ga Ċ Ġ* Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠRedistribution Ġand Ġuse Ġin Ġsource Ġand Ġbinary Ġforms , Ġwith Ġor Ġwithout Ċ Ġ* Ġmodification , Ġare Ġpermitted Ġprovided Ġthat Ġthe Ġfollowing Ġconditions Ġare Ġmet : Ċ Ġ* Ċ Ġ* Ġ 1 . ĠRedistributions Ġof Ġsource Ġcode Ġmust Ġretain Ġthe Ġabove Ġcopyright Ġnotice , Ġthis Ċ Ġ* Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer . Ċ Ġ* Ċ Ġ* Ġ 2 . ĠRedistributions Ġin Ġbinary Ġform Ġmust Ġreproduce Ġthe Ġabove Ġcopyright Ġnotice , Ċ Ġ* Ġthis Ġlist Ġof Ġconditions Ġand Ġthe Ġfollowing Ġdisclaimer Ġin Ġthe Ġdocumentation Ċ Ġ* Ġand / or Ġother Ġmaterials Ġprovided Ġwith Ġthe Ġdistribution . Ċ Ġ* Ċ Ġ* Ġ 3 . ĠNeither Ġthe Ġname Ġof Ġthe Ġcopyright Ġholder Ġnor Ġthe Ġnames Ġof Ġits Ġcontributors Ċ Ġ* Ġmay Ġbe Ġused Ġto Ġendorse Ġor Ġpromote Ġproducts Ġderived Ġfrom Ġthis Ġsoftware Ġwithout Ċ Ġ* Ġspecific Ġprior Ġwritten Ġpermission . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " ĠAND Ċ Ġ* ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE ĠIMPLIED Ċ Ġ* ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠARE Ċ Ġ* ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠHOLDER ĠOR ĠCONTRIBUTORS ĠBE ĠLIABLE Ċ Ġ* ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR ĠCONSEQUENTIAL Ċ Ġ* ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF ĠSUBSTITUTE ĠGOODS ĠOR Ċ Ġ* ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS ĠINTERRUPTION ) ĠHOWEVER Ċ Ġ* ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN ĠCONTRACT , ĠSTRICT ĠLIABILITY , Ċ Ġ* ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE Ċ Ġ* ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . s ve ga . mon er outil s Ċ Ċ import Ġcom . s ve ga . mon er outil s . Bin Hex Utils . binary To Hex Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . Data OutputStream Ċ import Ġjava . math . BigInteger Ċ import Ġjava . nio . ByteBuffer Ċ Ċ fun ĠByteBuffer . getVar Long (): ĠLong Ġ{ ĊĠĠĠ Ġvar Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtmp ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġresult Ġ= Ġtmp Ġand Ġ 0 x 7 f ĊĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 7 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 1 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 3 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 3 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 4 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 4 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 4 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 4 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 5 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 5 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( this . get (). to Long () Ġshl Ġ 6 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ fun ĠByteBuffer . getVar Int (): ĠInt Ġ{ ĊĠĠĠ Ġvar Ġtmp : ĠInt Ġ= Ġthis . get (). toInt () ĊĠĠĠ Ġif Ġ(( tmp ) Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtmp ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġresult Ġ= Ġtmp Ġand Ġ 0 x 7 f ĊĠĠĠ Ġtmp Ġ= Ġthis . get (). toInt () ĊĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 7 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). toInt () ĊĠĠĠĠĠĠĠ Ġif Ġ( tmp Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 1 4 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 1 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( tmp ) Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġand Ġ 0 x 7 f Ġshl Ġ 2 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġor Ġ( tmp Ġshl Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( tmp Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġget Ġinto Ġthis Ġloop Ġonly Ġin Ġthe Ġcase Ġof Ġoverflow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBy Ġdoing Ġthis , Ġwe Ġcan Ġcall Ġget Var Int () Ġinstead Ġof ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Var Long () Ġwhen Ġwe Ġonly Ġneed Ġan Ġint . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġthis . get (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠByteBuffer . print Next Bytes ( n : ĠInt ){ ĊĠĠĠ Ġmark () ĊĠĠĠ Ġval Ġone Ġ= ĠByteArray ( Math . min ( n , Ġremaining ())) ĊĠĠĠ Ġget ( one ) ĊĠĠĠ Ġreset () ĊĠĠĠ Ġprintln (" next Ġis Ġ${ binary To Hex ( one )} ") Ċ } Ċ Ċ fun ĠByteBuffer . read New Buffer (): ĠByteBuffer { ĊĠĠĠ Ġval Ġtemp Ġ= ĠByteArray ( getVar Int ()) ĊĠĠĠ Ġget ( temp ) ĊĠĠĠ Ġreturn ĠByteBuffer . wrap ( temp ) Ċ } Ċ Ċ fun ĠData OutputStream . write Var Int ( v _: ĠInt ){ ĊĠĠĠ Ġvar Ġv Ġ= Ġv _ ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbits Ġ= Ġv Ġand Ġ 0 x 7 f ĊĠĠĠĠĠĠĠ Ġv Ġ= Ġv Ġ ush r Ġ 7 ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( bits ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite ( bits Ġor Ġ 0 x 8 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠData OutputStream . write Var Long ( v _: ĠLong ){ ĊĠĠĠ Ġvar Ġv Ġ= Ġv _ ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbits Ġ= Ġv . toInt () Ġand Ġ 0 x 7 f ĊĠĠĠĠĠĠĠ Ġv Ġ= Ġv Ġ ush r Ġ 7 ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ( bits ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwrite ( bits Ġor Ġ 0 x 8 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠInt . var Int Data (): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġb Ġ= ĠByteArrayOutputStream () ĊĠĠĠ Ġvar Ġv Ġ= Ġthis ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbits Ġ= Ġv Ġand Ġ 0 x 7 f ĊĠĠĠĠĠĠĠ Ġv Ġ= Ġv Ġ ush r Ġ 7 ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb . write ( bits ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġb . toByteArray () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġb . write ( bits Ġor Ġ 0 x 8 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠSW AP 3 2 ( x : ĠInt ) Ġ= Ġ( ((( x ) Ġand Ġ 0 x 0 0 0 0 0 0 ff ) Ġshl Ġ 2 4 ) Ġor Ġ((( x ) Ġand Ġ 0 x 0 0 0 0 ff 0 0 ) Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġor Ġ((( x ) Ġand Ġ 0 x 0 0 ff 0 0 0 0 ) Ġshr Ġ 8 ) Ġor Ġ((( x . to Long ()) Ġand Ġ 0 xff 0 0 0 0 0 0 L ) Ġ ush r Ġ 2 4 ). toInt ()) Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠSW AP 3 2 ( x : ĠUInt ): ĠUInt Ġ= Ġ((( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 ff u ) Ġshl Ġ 2 4 ) Ġor Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 ff 0 0 u ) Ġshl ĠĠ 8 ) ĊĠĠĠĠĠĠĠ Ġor Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 ff 0 0 0 0 u ) Ġshr ĠĠ 8 ) Ġor Ġ(( Ġ( x ) Ġand Ġ 0 xff 0 0 0 0 0 0 u ) Ġshr Ġ 2 4 )) Ċ Ċ fun ĠSW AP 6 4 ( x : ĠLong ) Ġ: ĠLong Ġ= Ġ((( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ff ) Ġshl Ġ 5 6 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 0 0 ff 0 0 ) Ġshl Ġ 4 0 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 ff 0 0 0 0 ) Ġshl Ġ 2 4 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 ff 0 0 0 0 0 0 ) Ġshl ĠĠ 8 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 ff 0 0 0 0 0 0 0 0 ) Ġ ush r ĠĠ 8 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 ff 0 0 0 0 0 0 0 0 0 0 ) Ġ ush r Ġ 2 4 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 ff 0 0 0 0 0 0 0 0 0 0 0 0 ) Ġ ush r Ġ 4 0 ) Ġor Ġ Ġ(( Ġ( x . to BigInteger ()). and ( BigInteger (" ff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", Ġ 1 6 ))). to Long () Ġ ush r Ġ 5 6 )) Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠSW AP 6 4 ( x : ĠU Long ) Ġ: ĠU Long Ġ= Ġ((( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ff u ) Ġshl Ġ 5 6 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 0 0 ff 0 0 u ) Ġshl Ġ 4 0 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 0 0 ff 0 0 0 0 u ) Ġshl Ġ 2 4 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 0 0 ff 0 0 0 0 0 0 u ) Ġshl ĠĠ 8 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 0 0 ff 0 0 0 0 0 0 0 0 u ) Ġshr ĠĠ 8 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 0 0 ff 0 0 0 0 0 0 0 0 0 0 u ) Ġshr Ġ 2 4 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 x 0 0 ff 0 0 0 0 0 0 0 0 0 0 0 0 u ) Ġshr Ġ 4 0 ) Ġor Ġ Ġ(( Ġ( x ) Ġand Ġ 0 xff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 u ) Ġshr Ġ 5 6 )) Ċ Ċ fun ĠInt . toByteArray (): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġib Ġ= ĠByteBuffer . allocate ( 4 ) ĊĠĠĠ Ġib . as Int Buffer (). put ( this ) ĊĠĠĠ Ġreturn Ġib . flip (). array () Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU Long . toDouble (): ĠDouble { ĊĠĠĠ Ġreturn Ġ( this Ġand Ġ 0 x 7 FFFFFFFF FFFF FFF u L ). to Long (). toDouble () Ġ+ Ġ( 9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 0 8 . 0 Ġ* Ġ( this Ġshr Ġ 6 3 ). toInt ()) Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠByteBuffer . get Sw apped UL ong ( long Offset : ĠInt ): ĠU Long { ĊĠĠĠ Ġval Ġi Ġ= Ġlong Offset Ġ* Ġ 8 ĊĠĠĠ Ġreturn Ġthis [ i ]. to UL ong () Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 1 ]. to UL ong () Ġshl Ġ 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 2 ]. to UL ong () Ġshl Ġ 1 6 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 3 ]. to UL ong () Ġshl Ġ 2 4 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 4 ]. to UL ong () Ġshl Ġ 3 2 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 5 ]. to UL ong () Ġshl Ġ 4 0 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 6 ]. to UL ong () Ġshl Ġ 4 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 7 ]. to UL ong () Ġshl Ġ 5 6 ) Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU ByteArray . get Sw apped UL ong ( long Offset : ĠInt ): ĠU Long { ĊĠĠĠ Ġval Ġi Ġ= Ġlong Offset Ġ* Ġ 8 ĊĠĠĠ Ġreturn Ġthis [ i ]. to UL ong () Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 1 ]. to UL ong () Ġshl Ġ 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 2 ]. to UL ong () Ġshl Ġ 1 6 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 3 ]. to UL ong () Ġshl Ġ 2 4 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 4 ]. to UL ong () Ġshl Ġ 3 2 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 5 ]. to UL ong () Ġshl Ġ 4 0 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 6 ]. to UL ong () Ġshl Ġ 4 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 7 ]. to UL ong () Ġshl Ġ 5 6 ) Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU ByteArray . get Sw apped UInt ( int Offset : ĠInt ): ĠUInt { ĊĠĠĠ Ġval Ġi Ġ= Ġint Offset Ġ* Ġ 4 ĊĠĠĠ Ġreturn Ġthis [ i ]. to UInt () Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 1 ]. to UInt () Ġshl Ġ 8 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 2 ]. to UInt () Ġshl Ġ 1 6 ) Ġor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this [ i Ġ+ Ġ 3 ]. to UInt () Ġshl Ġ 2 4 ) Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU Long . bits (): ĠInt { ĊĠĠĠ Ġvar Ġts Ġ= Ġthis ĊĠĠĠ Ġvar Ġbits Ġ= Ġ 0 ĊĠĠĠ Ġwhile ( ts Ġ!= Ġ 0 u L ){ ĊĠĠĠĠĠĠĠ Ġ++ bits ĊĠĠĠĠĠĠĠ Ġts Ġ= Ġts Ġshr Ġ 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbits Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU Long . bytes (): ĠInt Ġ= Ġ( bits () Ġ/ Ġ 8 ) Ġ+ Ġif ( bits () Ġ% Ġ 8 Ġ== Ġ 0 ) Ġ 0 Ġelse Ġ 1 Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠU Long . to U ByteArray (): ĠU ByteArray { ĊĠĠĠ Ġval Ġpad Ġ= ĠU ByteArray ( 8 ) ĊĠĠĠ Ġpad [ 7 ] Ġ= Ġthis . to U Byte () ĊĠĠĠ Ġpad [ 6 ] Ġ= Ġ( this Ġshr Ġ 8 ). to U Byte () ĊĠĠĠ Ġpad [ 5 ] Ġ= Ġ( this Ġshr Ġ 1 6 ). to U Byte () ĊĠĠĠ Ġpad [ 4 ] Ġ= Ġ( this Ġshr Ġ 2 4 ). to U Byte () ĊĠĠĠ Ġpad [ 3 ] Ġ= Ġ( this Ġshr Ġ 3 2 ). to U Byte () ĊĠĠĠ Ġpad [ 2 ] Ġ= Ġ( this Ġshr Ġ 4 0 ). to U Byte () ĊĠĠĠ Ġpad [ 1 ] Ġ= Ġ( this Ġshr Ġ 4 8 ). to U Byte () ĊĠĠĠ Ġpad [ 0 ] Ġ= Ġ( this Ġshr Ġ 5 6 ). to U Byte () ĊĠĠĠ Ġval Ġret Ġ= ĠU ByteArray ( bytes (). coerce At Least ( 1 )) ĊĠĠĠ Ġpad . copy Into ( ret , Ġ 0 , Ġ 8 Ġ- Ġret . size , Ġ 8 ) ĊĠĠĠ Ġreturn Ġret Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ infix Ġfun ĠU ByteArray . concat ( b : ĠU ByteArray ): ĠU ByteArray { ĊĠĠĠ Ġval Ġret Ġ= ĠU ByteArray ( size Ġ+ Ġb . size ) ĊĠĠĠ Ġthis . copy Into ( ret ) ĊĠĠĠ Ġb . copy Into ( ret , Ġsize ) ĊĠĠĠ Ġreturn Ġret Ċ }