package Ġcom . vd urm ont . emoji ; Ċ Ċ import Ġcom . vd urm ont . emoji . Emoji Manager . is Emoji Ċ import Ġcom . vd urm ont . emoji . Emoji Parser . Fit z pat rick Action .* Ċ import Ġcom . vd urm ont . emoji . Emoji Parser . extract Emoji Strings Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠProvides Ġmethods Ġto Ġparse Ġstrings Ġwith Ġemo jis . Ċ Ġ* Ċ Ġ* Ġ@ author ĠImpro ver : ĠI van ĠI van ov Ġ[ https :// vk . com / iris ism ]< br > Ċ Ġ* ĠCreator : ĠV in cent ĠD UR M ONT Ġ[ vd urm ont @ gmail . com ] Ċ Ġ*/ Ċ object ĠEmoji Parser Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSee Ġ{@ link Ġ# parse To Aliases ( String , ĠF itz pat rick Action )} Ġwith Ġthe Ġaction ĊĠĠĠĠ Ġ* Ġ" PARSE " ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġalias . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Aliases ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse To Aliases ( input , ĠPAR SE ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe places Ġthe Ġemoji 's Ġunicode Ġoccurrences Ġby Ġone Ġof Ġtheir Ġalias ĊĠĠĠĠ Ġ* Ġ( between Ġ 2 Ġ': '). < br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĺ Ħ </ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code >: smile :</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠPAR SE Ġaction , Ġa Ġ" |" Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġappend end Ġto Ġthe Ġalias , Ġwith Ġthe Ġfit z pat rick Ġtype .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġ< code >: boy | type _ 6 :</ code >< br > ĊĠĠĠĠ Ġ* ĠThe Ġfit z pat rick Ġtypes Ġare : Ġtype _ 1 _ 2 , Ġtype _ 3 , Ġtype _ 4 , Ġtype _ 5 , Ġtype _ 6 < br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠREMOVE Ġaction , Ġthe Ġmodifier ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġdeleted .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code >: boy :</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠIG NORE Ġaction , Ġthe Ġmodifier ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġignored .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code >: boy : ðŁı ¿ </ code >< br > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ param Ġfit z pat rick Action Ġthe Ġaction Ġto Ġapply Ġfor Ġthe Ġfit z pat rick Ġmodifiers ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġalias . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Aliases ( input : ĠString , Ġfit z pat rick Action : ĠF itz pat rick Action ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( fit z pat rick Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREMOVE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ":" Ġ+ Ġemoji . emoji . aliases . get ( 0 ) Ġ+ Ġ": "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIG NORE Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ":" Ġ+ Ġemoji . emoji . aliases . get ( 0 ) Ġ+ Ġ":" Ġ+ Ġemoji . fit z pat rick Unicode ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Fit z pat rick Action . PARSE */ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( emoji . has Fit z pat rick ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ":" Ġ+ Ġemoji . emoji . aliases . get ( 0 ) Ġ+ Ġ" |" Ġ+ Ġemoji . fit z pat rick Type Ġ+ Ġ": "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ":" Ġ+ Ġemoji . emoji . aliases . get ( 0 ) Ġ+ Ġ": "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( input , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReplace Ġall Ġemo jis Ġwith Ġcharacter ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġprocess ĊĠĠĠĠ Ġ* Ġ@ param Ġreplacement String Ġreplacement Ġthe Ġstring Ġthat Ġwill Ġreplace Ġall Ġthe Ġemo jis ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġreplaced Ġcharacter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreplace All E moj is ( str : ĠString , Ġreplacement String : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer : ĠEmoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreplacement String ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( str , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe places Ġthe Ġemoji 's Ġaliases Ġ( between Ġ 2 Ġ': ') Ġoccurrences Ġand Ġthe Ġhtml ĊĠĠĠĠ Ġ* Ġrepresentations Ġby Ġtheir Ġunicode .< br > ĊĠĠĠĠ Ġ* ĠExamples :< br > ĊĠĠĠĠ Ġ* Ġ< code >: smile :</ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code > ðŁĺ Ħ </ code >< br > ĊĠĠĠĠ Ġ* Ġ< code >& amp ;# 1 2 8 5 1 6 ;</ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code > ðŁĺ Ħ </ code >< br > ĊĠĠĠĠ Ġ* Ġ< code >: boy | type _ 6 :</ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġaliases Ġand Ġhtml Ġrepresentations Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġtheir Ġunicode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Unicode ( input : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( input . length ) ĊĠĠĠĠĠĠĠ Ġvar Ġlast Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( last Ġ< Ġinput . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġalias : ĠAlias Candidate ? Ġ= Ġget Alias At ( input , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alias Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalias Ġ= Ġget Html Encoded Emoji At ( input , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alias Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( alias . emoji . unicode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Ġ= Ġalias . end Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alias . fit z pat rick Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( alias . fit z pat rick !!. unicode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( input [ last ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe Ġalias Ġin Ġthe Ġgiven Ġstring Ġstarting Ġat Ġthe Ġgiven Ġpoint , Ġnull Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Alias At ( input : ĠString , Ġstart : ĠInt ): ĠAlias Candidate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input . length Ġ< Ġstart Ġ+ Ġ 2 Ġ|| Ġinput [ start ] Ġ!= Ġ': ') Ġreturn Ġnull Ġ// ĠAli ases Ġstart Ġwith Ġ: ĊĠĠĠĠĠĠĠ Ġval Ġalias End Ġ= Ġinput . indexOf (' :', Ġstart Ġ+ Ġ 2 ) Ġ// ĠAlias Ġmust Ġbe Ġat Ġleast Ġ 1 Ġchar Ġin Ġlength ĊĠĠĠĠĠĠĠ Ġif Ġ( alias End Ġ== Ġ- 1 ) Ġreturn Ġnull Ġ// ĠNo Ġalias Ġend Ġfound ĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick Start Ġ= Ġinput . indexOf (' |', Ġstart Ġ+ Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fit z pat rick Start Ġ!= Ġ- 1 Ġ&& Ġfit z pat rick Start Ġ< Ġalias End ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemoji Ġ= ĠEmoji Manager . get For Alias ( input . substring ( start , Ġfit z pat rick Start )) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot Ġa Ġvalid Ġalias ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! emoji . supports Fit z pat rick ()) Ġreturn Ġnull Ġ// ĠF itz pat rick Ġwas Ġspecified , Ġbut Ġthe Ġemoji Ġdoes Ġnot Ġsupport Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfit z pat rick Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF itz pat rick . fit z pat rick From Type ( input . substring ( fit z pat rick Start Ġ+ Ġ 1 , Ġalias End )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAlias Candidate ( emoji , Ġfit z pat rick , Ġstart , Ġalias End ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġemoji Ġ= ĠEmoji Manager . get For Alias ( input . substring ( start , Ġalias End )) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠNot Ġa Ġvalid Ġalias ĊĠĠĠĠĠĠĠ Ġreturn ĠAlias Candidate ( emoji , Ġnull , Ġstart , Ġalias End ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe ĠHTML Ġencoded Ġemoji Ġin Ġthe Ġgiven Ġstring Ġstarting Ġat Ġthe Ġgiven Ġpoint , Ġnull Ġotherwise ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Html Encoded Emoji At ( input : ĠString , Ġstart : ĠInt ): ĠAlias Candidate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input . length Ġ< Ġstart Ġ+ Ġ 4 Ġ|| Ġinput [ start ] Ġ!= Ġ'& ' Ġ|| Ġinput [ start Ġ+ Ġ 1 ] Ġ!= Ġ'# ') Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġlongest Emoji : ĠEmoji ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġlongest Code Point End Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġchars Ġ= ĠChar Array ( Emoji Manager . E MO JI _ TR IE . max Depth ) ĊĠĠĠĠĠĠĠ Ġvar Ġchars Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġcode Point Start Ġ= Ġstart ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Point End Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput . indexOf (' ;', Ġcode Point Start Ġ+ Ġ 3 ) Ġ// ĠCode Ġpoint Ġmust Ġbe Ġat Ġleast Ġ 1 Ġchar Ġin Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Point End Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchars Index Ġ+= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġradix Ġ= Ġif Ġ( input [ code Point Start Ġ+ Ġ 2 ] Ġ== Ġ' x ') Ġ 1 6 Ġelse Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Point Ġ= Ġinput . substring ( code Point Start Ġ+ Ġ 2 Ġ+ Ġradix Ġ/ Ġ 1 6 , Ġcode Point End ). toInt ( radix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCharacter . to Chars ( code Point , Ġchars , Ġchars Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Emoji Ġ= ĠEmoji Manager . E MO JI _ TR IE . get Emoji ( chars , Ġ 0 , Ġchars Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found Emoji Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongest Emoji Ġ= Ġfound Emoji ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongest Code Point End Ġ= Ġcode Point End ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcode Point Start Ġ= Ġcode Point End Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( input . length Ġ> Ġcode Point Start Ġ+ Ġ 4 Ġ&& Ġinput [ code Point Start ] Ġ== Ġ'& ' Ġ&& Ġinput [ code Point Start Ġ+ Ġ 1 ] Ġ== Ġ'#' Ġ&& Ġchars Index Ġ< Ġchars . size Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! Emoji Manager . E MO JI _ TR IE . is Emoji ( chars , Ġ 0 , Ġchars Index ). imp ossible Match () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( longest Emoji Ġ== Ġnull ) Ġnull Ġelse ĠAlias Candidate ( longest Emoji , Ġnull , Ġstart , Ġlongest Code Point End ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSee Ġ[. parse To Html Decimal ] Ġwith Ġthe Ġaction ĊĠĠĠĠ Ġ* Ġ" PARSE " ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġhtml Ġdecimal ĊĠĠĠĠ Ġ* Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Html Decimal ( input : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse To Html Decimal ( input , ĠPAR SE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe places Ġthe Ġemoji 's Ġunicode Ġoccurrences Ġby Ġtheir Ġhtml Ġrepresentation .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĺ Ħ </ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code >& amp ;# 1 2 8 5 1 6 ;</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠPAR SE Ġor ĠREMOVE Ġaction , Ġthe ĊĠĠĠĠ Ġ* Ġmodifier Ġwill Ġbe Ġdeleted Ġfrom Ġthe Ġstring .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġ< code >& amp ;# 1 2 8 1 0 2 ;</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠIG NORE Ġaction , Ġthe Ġmodifier ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġignored Ġand Ġwill Ġremain Ġin Ġthe Ġstring .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġ< code >& amp ;# 1 2 8 1 0 2 ; ðŁı ¿ </ code > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ param Ġfit z pat rick Action Ġthe Ġaction Ġto Ġapply Ġfor Ġthe Ġfit z pat rick Ġmodifiers ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġhtml Ġdecimal ĊĠĠĠĠ Ġ* Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Html Decimal ( input : ĠString , Ġfit z pat rick Action : ĠF itz pat rick Action ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( fit z pat rick Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPAR SE , ĠREMOVE Ġ-> Ġemoji . emoji . get Html Decimal (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIG NORE Ġ-> Ġemoji . emoji . get Html Decimal () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . fit z pat rick Unicode ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( input , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSee Ġ{@ link Ġ# parse To Html Hex adecimal ( String , ĠF itz pat rick Action )} Ġwith Ġthe ĊĠĠĠĠ Ġ* Ġaction Ġ" PARSE " ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġhtml Ġhex ĊĠĠĠĠ Ġ* Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Html Hex adecimal ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġparse To Html Hex adecimal ( input , ĠPAR SE ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe places Ġthe Ġemoji 's Ġunicode Ġoccurrences Ġby Ġtheir Ġhtml Ġhex ĊĠĠĠĠ Ġ* Ġrepresentation .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ </ code > Ġwill Ġbe Ġreplaced Ġby Ġ< code >& amp ;# x 1 f 4 6 6 ;</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠPAR SE Ġor ĠREMOVE Ġaction , Ġthe ĊĠĠĠĠ Ġ* Ġmodifier Ġwill Ġbe Ġdeleted .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġ< code >& amp ;# x 1 f 4 6 6 ;</ code >< br > ĊĠĠĠĠ Ġ* Ġ< br > ĊĠĠĠĠ Ġ* ĠWhen Ġa Ġfit z pat rick Ġmodifier Ġis Ġpresent Ġwith Ġa ĠIG NORE Ġaction , Ġthe Ġmodifier ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġignored Ġand Ġwill Ġremain Ġin Ġthe Ġstring .< br > ĊĠĠĠĠ Ġ* ĠExample : Ġ< code > ðŁĳ ¦ ðŁı ¿ </ code > Ġwill Ġbe Ġreplaced Ġby ĊĠĠĠĠ Ġ* Ġ< code >& amp ;# x 1 f 4 6 6 ; ðŁı ¿ </ code > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġparse ĊĠĠĠĠ Ġ* Ġ@ param Ġfit z pat rick Action Ġthe Ġaction Ġto Ġapply Ġfor Ġthe Ġfit z pat rick Ġmodifiers ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwith Ġthe Ġemo jis Ġreplaced Ġby Ġtheir Ġhtml Ġhex ĊĠĠĠĠ Ġ* Ġrepresentation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġparse To Html Hex adecimal ( input : ĠString , fit z pat rick Action : ĠF itz pat rick Action ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( unicode Candidate : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( fit z pat rick Action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPAR SE , ĠREMOVE Ġ-> Ġunicode Candidate . emoji . get Html Hex adecimal (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIG NORE Ġ-> Ġunicode Candidate . emoji . get Html Hex adecimal () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunicode Candidate . fit z pat rick Unicode ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( input , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġemo jis Ġfrom Ġa ĠString ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr Ġthe Ġstring Ġto Ġprocess ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwithout Ġany Ġemoji ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove All E moj is ( str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( str , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġa Ġset Ġof Ġemo jis Ġfrom Ġa ĠString ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġprocess ĊĠĠĠĠ Ġ* Ġ@ param Ġemo jis ToRemove Ġthe Ġemo jis Ġto Ġremove Ġfrom Ġthis Ġstring ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwithout Ġthe Ġemo jis Ġthat Ġwere Ġremoved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove E moj is ( str : ĠString , Ġemo jis ToRemove : ĠCollection < Emoji >): String Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! emo jis ToRemove . contains ( emoji . emoji )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġemoji . emoji . unicode Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . fit z pat rick Unicode ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( str , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemoves Ġall Ġthe Ġemo jis Ġin Ġa ĠString Ġexcept Ġa Ġprovided Ġset ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĠĠĠĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġprocess ĊĠĠĠĠ Ġ* Ġ@ param Ġemo jis To Keep Ġthe Ġemo jis Ġto Ġkeep Ġin Ġthis Ġstring ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstring Ġwithout Ġthe Ġemo jis Ġthat Ġwere Ġremoved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove All E moj is Except ( str : ĠString , Ġemo jis To Keep : ĠCollection < Emoji >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Transformer Ġ= Ġobject Ġ: ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( emo jis To Keep . contains ( emoji . emoji )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġemoji . emoji . unicode Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemoji . fit z pat rick Unicode ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ""; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġreturn ĠparseFrom Unicode ( str , Ġemoji Transformer ); ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetect s Ġall Ġunicode Ġemo jis Ġin Ġinput Ġstring Ġand Ġreplaces Ġthem Ġwith Ġthe ĊĠĠĠĠ Ġ* Ġreturn Ġvalue Ġof Ġtransformer . transform () ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠĠĠĠĠĠ Ġthe Ġstring Ġto Ġprocess ĊĠĠĠĠ Ġ* Ġ@ param Ġtransformer Ġemoji Ġtransformer Ġto Ġapply Ġto Ġeach Ġemoji ĊĠĠĠĠ Ġ* Ġ@ return Ġinput Ġstring Ġwith Ġall Ġemo jis Ġtransformed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠparseFrom Unicode ( input : ĠString , Ġtransformer : ĠEmoji Transformer ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġprev Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( input . length ); ĊĠĠĠĠĠĠĠ Ġval Ġreplacement s Ġ= Ġget E moj ies ( input ); ĊĠĠĠĠĠĠĠ Ġfor Ġ( candidate Ġin Ġreplacement s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( input , Ġprev , Ġcandidate . emoji StartIndex ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( transformer . transform ( candidate )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev Ġ= Ġcandidate . end Index ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsb . append ( input . substring ( prev )). toString (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* fun Ġextract Emoji Strings ( input : ĠString ?): ĠList < String ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġextract Emoji Strings ( input , Ġ 0 ) ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġfun Ġextract Emoji Strings ( input : ĠString , Ġlimit : ĠInt Ġ= Ġ 0 ): ĠList < String ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġextract E moj is ( input , Ġlimit ) ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠMutable List < String ?> Ġ= ĠArrayList ( items . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġitems ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( i . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* fun Ġextract E moj is ( input : ĠString ): ĠList < Emoji Result ?> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget E moj ies ( input , Ġ 0 ) ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġfun Ġextract E moj is ( input : ĠString , Ġlimit : ĠInt Ġ= Ġ 0 ): ĠList < Emoji Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget E moj ies ( input , Ġlimit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerates Ġa Ġlist ĠUnicode Candidates Ġfound Ġin Ġinput Ġstring . ĠA ĊĠĠĠĠ Ġ* ĠUnicode Candidate Ġis Ġcreated Ġfor Ġevery Ġunicode Ġem ot icon Ġfound Ġin Ġinput ĊĠĠĠĠ Ġ* Ġstring , Ġaddition ally Ġif ĠF itz pat rick Ġmodifier Ġfollows Ġthe Ġemoji , Ġit Ġis ĊĠĠĠĠ Ġ* Ġincluded Ġin ĠUnicode Candidate . ĠFinally , Ġit Ġcontains Ġstart Ġand Ġend Ġindex Ġof ĊĠĠĠĠ Ġ* Ġunicode Ġemoji Ġitself Ġ( WITHOUT ĠF itz pat rick Ġmodifier Ġwhether Ġit Ġis Ġthere Ġor ĊĠĠĠĠ Ġ* Ġnot ! ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput ĠString Ġto Ġfind Ġall Ġunicode Ġemo jis Ġin ĊĠĠĠĠ Ġ* Ġ@ return ĠList Ġof ĠUnicode Candidates Ġfor Ġeach Ġunicode Ġem ote Ġin Ġtext ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget E moj ies ( input : ĠString , Ġlimit : ĠInt ): ĠList < Emoji Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlimit Ġ= Ġlimit ĊĠĠĠĠĠĠĠ Ġval Ġinput CharArray Ġ= Ġinput . toCharArray () ĊĠĠĠĠĠĠĠ Ġval Ġcandidates : ĠMutable List < Emoji Result > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġvar Ġnext : ĠEmoji Result ? ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( getNext Emoji ( input CharArray , Ġi ). also Ġ{ Ġnext Ġ= Ġit Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcandidates . add ( next !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( limit Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( limit Ġ<= Ġ 0 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġnext !!. end Index ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcandidates ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget E moj ies ( input : ĠString ): ĠList < Emoji Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget E moj ies ( input , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFinds Ġthe Ġnext ĠUnicode Candidate Ġafter Ġa Ġgiven Ġstarting Ġindex ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchars Ġchar Ġarray Ġto Ġfind ĠUnicode Candidate Ġin ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Ġstarting Ġindex Ġfor Ġsearch ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġnext ĠUnicode Candidate Ġor Ġnull Ġif Ġno ĠUnicode Candidate Ġis Ġfound Ġafter Ġstart Ġindex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetNext Emoji ( chars : ĠChar Array , Ġstart : ĠInt ): ĠEmoji Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstart Ġuntil Ġchars . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemoji Ġ= Ġget Emoji In Position ( chars , Ġi ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( emoji Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġemoji ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Emoji In Position ( chars : ĠChar Array , Ġstart : ĠInt ): ĠEmoji Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemoji Ġ= Ġget Best Base Emoji ( chars , Ġstart ); ĊĠĠĠĠĠĠĠ Ġif Ġ( emoji Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĊĠĠĠĠĠĠĠ Ġvar Ġfit z pat rick : ĠF itz pat rick ? Ġ= Ġnull ; ĊĠĠĠĠĠĠĠ Ġvar Ġgender : ĠGender ? Ġ= Ġnull ; ĊĠĠĠĠĠĠĠ Ġvar Ġend Pos Ġ= Ġstart Ġ+ Ġemoji . unicode . length ; ĊĠĠĠĠĠĠĠ Ġif Ġ( emoji . supports Fit z pat rick ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfit z pat rick Ġ= ĠF itz pat rick . find ( chars , Ġend Pos ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fit z pat rick Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Pos Ġ+= Ġ 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgg Ġ= Ġfind Gender ( chars , Ġend Pos ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( gg Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Pos Ġ= Ġgg . end Pos Ġ+ Ġ 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgender Ġ= Ġgg . gender ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( chars . size Ġ> Ġend Pos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch Ġ= Ġchars [ end Pos ]; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ch Ġ== Ġ'\ u FE 0 F ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Pos ++; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠEmoji Result ( emoji , Ġfit z pat rick , Ġgender , Ġchars , Ġstart , Ġend Pos ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Gender ( chars : ĠChar Array , Ġstart Pos : ĠInt ): ĠGender Match ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġchars . size ; ĊĠĠĠĠĠĠĠ Ġif Ġ( len Ġ<= Ġstart Pos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġvar Ġpos Ġ= Ġstart Pos ; ĊĠĠĠĠĠĠĠ Ġval Ġch Ġ= Ġchars [ pos ]; ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Ġ!= Ġ'\ u 2 0 0 D ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġpos ++; ĊĠĠĠĠĠĠĠ Ġval Ġgender Ġ= ĠGender . find ( chars , Ġpos ) Ġ?: Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġreturn ĠGender Match ( gender , Ġpos ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠGender Match ( val Ġgender : ĠGender ?, Ġval Ġend Pos : ĠInt ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġend Ġindex Ġof Ġa Ġunicode Ġemoji Ġif Ġit Ġis Ġfound Ġin Ġtext Ġstarting Ġat ĊĠĠĠĠ Ġ* Ġindex Ġstart Pos , Ġ- 1 Ġif Ġnot Ġfound . ĊĠĠĠĠ Ġ* ĠThis Ġreturns Ġthe Ġlongest Ġmatching Ġemoji , Ġfor Ġexample , Ġin ĊĠĠĠĠ Ġ* Ġ"\ uD 8 3 D \ u DC 6 8 \ u 2 0 0 D \ uD 8 3 D \ u DC 6 9 \ u 2 0 0 D \ uD 8 3 D \ u DC 6 6 " ĊĠĠĠĠ Ġ* Ġit Ġwill Ġfind Ġalias : family _ man _ w oman _ boy , ĠNOT Ġalias : man ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtext ĠĠĠĠ Ġthe Ġcurrent Ġtext Ġwhere Ġwe Ġare Ġlooking Ġfor Ġan Ġemoji ĊĠĠĠĠ Ġ* Ġ@ param Ġstart Pos Ġthe Ġposition Ġin Ġthe Ġtext Ġwhere Ġwe Ġshould Ġstart Ġlooking Ġfor ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan Ġemoji Ġend ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġend Ġindex Ġof Ġthe Ġunicode Ġemoji Ġstarting Ġat Ġstart Pos . Ġ- 1 Ġif Ġnot ĊĠĠĠĠ Ġ* Ġfound ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Best Base Emoji ( text : ĠChar Array , Ġstart Pos : ĠInt ): ĠEmoji ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠEmoji Manager . E MO JI _ TR IE . get Best Emoji ( text , Ġstart Pos ); ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠEmoji Result ( ĊĠĠĠĠĠĠĠ Ġval Ġemoji : ĠEmoji , ĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick : ĠF itz pat rick ?, ĊĠĠĠĠĠĠĠ Ġval Ġgender : ĠGender ?, ĊĠĠĠĠĠĠĠ Ġval Ġsource : ĠChar Array , ĊĠĠĠĠĠĠĠ Ġval Ġemoji StartIndex : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġend Index : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġhas Fit z pat rick (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfit z pat rick Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick Type : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( has Fit z pat rick ()) Ġfit z pat rick !!. name Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick Unicode : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( has Fit z pat rick ()) Ġfit z pat rick !!. unicode Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġemoji End Index : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġemoji StartIndex Ġ+ Ġemoji . unicode . length ĊĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick End Index : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġemoji End Index Ġ+ Ġif Ġ( fit z pat rick Ġ!= Ġnull ) Ġ 2 Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġsub : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sub Ġ!= Ġnull ) Ġreturn Ġsub !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġend Index Ġ- Ġemoji StartIndex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Ġ= ĠChar Array ( len ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( source , Ġemoji StartIndex , Ġsub , Ġ 0 , Ġlen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sub Ġ= ĠString ( sub ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . sub !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġclass ĠAlias Candidate Ġ( ĊĠĠĠĠĠĠĠ Ġval Ġemoji : ĠEmoji , ĊĠĠĠĠĠĠĠ Ġval Ġfit z pat rick : ĠF itz pat rick ?, ĊĠĠĠĠĠĠĠ Ġval ĠstartIndex : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġend Index : ĠInt ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnum Ġused Ġto Ġindicate Ġwhat Ġshould Ġbe Ġdone Ġwhen Ġa ĠF itz pat rick Ġmodifier Ġis ĊĠĠĠĠ Ġ* Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠF itz pat rick Action Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠT ries Ġto Ġmatch Ġthe ĠF itz pat rick Ġmodifier Ġwith Ġthe Ġprevious Ġemoji ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠPAR SE , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRemoves Ġthe ĠF itz pat rick Ġmodifier Ġfrom Ġthe Ġstring ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠREMOVE , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠI g no res Ġthe ĠF itz pat rick Ġmodifier Ġ( it Ġwill Ġstay Ġin Ġthe Ġstring ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠIG NORE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠEmoji Transformer Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġtransform ( emoji : ĠEmoji Result ): ĠString ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠ Ġ"\ uD 8 3 D \ u DC 6 8 \ u 2 0 0 D \ uD 8 3 D \ u DC BB \ uD 8 3 E \ uD DB 9 \ uD 8 3 C \ uD FFE \ uD 8 3 E \ u DDD 1 \ uD 8 3 C \ uD FFD \ u 2 0 0 D \ uD 8 3 D \ u DD 2 C \ uD 8 3 E \ u DDD 1 \ uD 8 3 C \ uD FF B \ u 2 0 0 D \ uD 8 3 C \ u DF 7 3 \ uD 8 3 D \ u DC 7 0 \ uD 8 3 C \ uD FFE \ uD 8 3 E \ u DD DB \ uD 8 3 C \ uD FFD \ u 2 0 0 D âĻ Ĥ ï¸ı \ uD 8 3 E \ u DD 3 1 \ uD 8 3 C \ uD FFF \ uD 8 3 D \ u DC 6 8 \ uD 8 3 C \ uD FF C \ u 2 0 0 D \ uD 8 3 C \ u DF EB \ uD 8 3 E \ u DDD 1 \ uD 8 3 C \ uD FF B \ u 2 0 0 D \ uD 8 3 C \ u DF 7 3 \ uD 8 3 E \ u DDD 1 \ uD 8 3 C \ uD FF B \ u 2 0 0 D \ uD 8 3 C \ u DF 7 3 \ uD 8 3 D \ u DC 7 3 \ uD 8 3 C \ uD FF B \ u 2 0 0 D âĻ Ĥ ï¸ı " ĊĠĠĠ Ġval Ġitems Ġ= Ġextract Emoji Strings ( text ) ĊĠĠĠ Ġprintln ( items ) ĊĠĠĠ Ġval Ġres Ġ= Ġis Emoji ("\ uD 8 3 E \ u DD DB \ uD 8 3 C \ uD FFD \ u 2 0 0 D âĻ Ĥ ï¸ı Ġ") ĊĠĠĠ Ġprintln ( res ) Ċ }