package Ġcom . vic mik h ail au . mas ke ded it text ĊĊ Ċ abstract Ġclass ĠMask Character Ġ{ ĊĊĠĠĠ Ġopen Ġval Ġis Pre populate : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse ĊĊĠĠĠ Ġabstract Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean ĊĊĠĠĠ Ġopen Ġfun Ġprocess Character ( ch : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġch ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠDig it Character Ġ: ĠMask Character () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is Digit ( ch ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ internal Ġclass ĠUpper Case Character Ġ: ĠMask Character () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is UpperCase ( ch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Character ( ch : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . toUpperCase ( ch ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ internal Ġclass ĠLower Case Character Ġ: ĠMask Character () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is LowerCase ( ch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Character ( ch : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . toLowerCase ( ch ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠAlpha Numeric Character Ġ: ĠMask Character () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is Letter Or Digit ( ch ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠLetter Character Ġ: ĠMask Character () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is Letter ( ch ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠHex Character Ġ: ĠMask Character () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . is Letter Or Digit ( ch ) Ġ&& ĠHEX _ CHARS . indexOf ( Character . toUpperCase ( ch )) Ġ!= Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Character ( ch : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCharacter . toUpperCase ( ch ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHEX _ CHARS Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF " ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠLiteral Character Ġ: ĠMask Character Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcharacter : ĠChar ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġis Pre populate : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcharacter Ġ!= Ġnull ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( ch : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcharacter Ġ= Ġch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisValid Character ( ch : ĠChar ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcharacter Ġ== Ġnull Ġ|| Ġcharacter Ġ== Ġch ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġprocess Character ( ch : ĠChar ): ĠChar Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( character Ġ!= Ġnull ) Ġcharacter !! Ġelse Ġch ĊĠĠĠ Ġ} Ċ } ĊĊ