// ĠCopyright Ġ( c ) ĠAk op ĠKar ape ty an Ċ // Ċ // ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ // Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ // Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ // Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ // Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ // Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ // Ċ // ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ // Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ // Ċ // ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ // ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ // ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ // ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ // ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ // ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ // ĠSOFTWARE . Ċ Ċ package Ġorg . ak op . ar ar at . stream Ċ Ċ import Ġorg . ak op . ar ar at . collections . Queue Ċ import Ġorg . ak op . ar ar at . collections . de q Ċ import Ġorg . ak op . ar ar at . collections . en q Ċ import Ġjava . io . InputStream Ċ Ċ /** Ċ Ġ* ĠA Ġstream Ġthat Ġun es cap es Ġ'% u '- format ĠJS Ġcontent Ġas Ġit Ġreads . Ċ Ġ*/ Ċ class ĠJS Un es cap ing Stream ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠinputStream : ĠInputStream ): ĠInputStream () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġq Ġ= ĠQueue < Int >() ĊĊĠĠĠ Ġprivate Ġfun Ġget Byte (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! q . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠinputStream . read () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġget Byte () ĊĠĠĠĠĠĠĠ Ġif Ġ( b Ġ== Ġ- 1 Ġ|| Ġb Ġ!= Ġ'% '. toInt ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġb ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġq . en q ( b ) ĊĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠinputStream . read () ĊĠĠĠĠĠĠĠ Ġif Ġ( m Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġq . en q ( m ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmb Ġ= Ġm Ġ== Ġ' u '. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġb 1 Ġ= Ġif Ġ( mb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . read (). also Ġ{ Ġq . en q ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( b 1 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġhb Ġ= Ġwhen Ġ( b 1 . to Char ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' A ' .. ' F ' Ġ-> Ġb 1 Ġ- Ġ' A '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' a ' .. ' f ' Ġ-> Ġb 1 Ġ- Ġ' a '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' 0 ' .. ' 9 ' Ġ-> Ġb 1 Ġ- Ġ' 0 '. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġb 2 Ġ= ĠinputStream . read () ĊĠĠĠĠĠĠĠ Ġif Ġ( b 2 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġq . en q ( b 2 ) ĊĊĠĠĠĠĠĠĠ Ġhb Ġ= Ġ( hb Ġshl Ġ 4 ) Ġor Ġwhen Ġ( b 2 . to Char ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' A ' .. ' F ' Ġ-> Ġb 2 Ġ- Ġ' A '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' a ' .. ' f ' Ġ-> Ġb 2 Ġ- Ġ' a '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' 0 ' .. ' 9 ' Ġ-> Ġb 2 Ġ- Ġ' 0 '. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mb ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmult ib yte , Ġread Ġ 2 Ġmore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb 3 Ġ= ĠinputStream . read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 3 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . en q ( b 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhb Ġ= Ġ( hb Ġshl Ġ 4 ) Ġor Ġwhen Ġ( b 3 . to Char ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' A ' .. ' F ' Ġ-> Ġb 3 Ġ- Ġ' A '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' a ' .. ' f ' Ġ-> Ġb 3 Ġ- Ġ' a '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' 0 ' .. ' 9 ' Ġ-> Ġb 3 Ġ- Ġ' 0 '. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb 4 Ġ= ĠinputStream . read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 4 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġq . en q ( b 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhb Ġ= Ġ( hb Ġshl Ġ 4 ) Ġor Ġwhen Ġ( b 4 . to Char ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' A ' .. ' F ' Ġ-> Ġb 4 Ġ- Ġ' A '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' a ' .. ' f ' Ġ-> Ġb 4 Ġ- Ġ' a '. toInt () Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ' 0 ' .. ' 9 ' Ġ-> Ġb 4 Ġ- Ġ' 0 '. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġq . de q () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġqueue ; Ġwe Ġwon 't Ġneed Ġto Ġback track Ġany Ġlonger ĊĠĠĠĠĠĠĠ Ġq . clear () ĊĠĠĠĠĠĠĠ Ġ// ĠConvert Ġchar Ġto Ġmult ib yte Ġarray , Ġadd Ġpieces Ġto Ġqueue , Ġreturn Ġhead ĊĠĠĠĠĠĠĠ Ġ( hb . to Char () Ġ+ Ġ""). toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . toInt () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġq . en q ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġq . de q () ĊĠĠĠ Ġ} Ċ } Ċ