package Ġcom . die go be z erra . cin em ais app . widget Ċ Ċ import Ġandroid . animation . Value Animator Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Linear Gradient Ċ import Ġandroid . graphics . Outline Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Paint . Style . ST RO KE Ċ import Ġandroid . graphics . Shader . Tile Mode . CLAMP Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build . VERSION Ċ import Ġandroid . os . Build . VERSION _ CODES Ċ import Ġandroid . text . Layout . Alignment . ALIGN _ NORMAL Ċ import Ġandroid . text . Static Layout Ċ import Ġandroid . text . Text Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Outline Provider Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġandroid . widget . Check able Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . animation . do On End Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . content . res . getColor OrThrow Ċ import Ġandroidx . core . content . res . get Dimension OrThrow Ċ import Ġandroidx . core . content . res . get Dimension Pixel Size OrThrow Ċ import Ġandroidx . core . content . res . get Drawable OrThrow Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroidx . core . graphics . with Translation Ċ import Ġcom . die go be z erra . cin em ais app . R Ċ Ċ /** Ċ Ġ* ĠA Ġcustom Ġview Ġfor Ġdisplaying Ġfilters . ĠAllows Ġa Ġcustom Ġpresentation Ġof Ġthe Ġtag Ġcolor Ġand Ġselection Ċ Ġ* Ġstate . Ċ Ġ* Ċ Ġ* ĠAdapt ed Ġfrom ĠGoogle ĠI / O Ġ 2 0 1 8 Ġsource . Ċ Ġ*/ Ċ class ĠSchedule Filter View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠView ( context , Ġattrs , Ġdef Style Attr ), ĠCheck able Ġ{ ĊĊĠĠĠ Ġvar Ġselected TextColor : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġtext : ĠCharSequence ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġprogress Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Invalidate On Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdefault Colors Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , ĠR . color . cin em ais _ green ), ĊĠĠĠĠĠĠĠ ĠContext Compat . getColor ( context , ĠR . color . cin em ais _ blue ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġdefault Positions Ġ= Ġfloat ArrayOf ( 0 f , Ġ 1 f ) ĊĊĠĠĠ Ġprivate Ġval Ġcolor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠLinear Gradient ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ-( width . toFloat () Ġ/ Ġ 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth . toFloat () Ġ+ Ġwidth . toFloat () Ġ/ Ġ 2 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Colors , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Positions , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCL AMP ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġlast X : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġval Ġpadding : ĠInt ĊĊĠĠĠ Ġprivate Ġval Ġoutline Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġval Ġtext Paint : ĠText Paint ĊĊĠĠĠ Ġprivate Ġval Ġbackground Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġval Ġtouch Feedback : ĠDrawable ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtext Layout : ĠStatic Layout ĊĊĠĠĠ Ġprivate Ġvar Ġprogress Animator : ĠValue Animator ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġinterp Ġ= ĊĠĠĠĠĠĠĠ ĠAnimation Utils . load Interpolator ( context , Ġandroid . R . interpol ator . fast _ out _ slow _ in ) ĊĊĠĠĠ Ġ@ Color Int ĊĠĠĠ Ġprivate Ġval Ġdefault TextColor : ĠInt ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= Ġcontext . obtain Styled Attributes ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style able . Schedule Filter View , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . attr . schedule Filter View Style , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . style . Widget _ C in em ais _ Schedule Filters ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġoutline Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġa . getColor OrThrow ( R . style able . Schedule Filter View _ android _ stroke Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstrokeWidth Ġ= Ġa . get Dimension OrThrow ( R . style able . Schedule Filter View _ outline Width ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠST RO KE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdefault TextColor Ġ= Ġa . getColor OrThrow ( R . style able . Schedule Filter View _ android _ textColor ) ĊĠĠĠĠĠĠĠ Ġtext Paint Ġ= ĠText Paint ( Paint . ANTI _ ALIAS _ FLAG ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġdefault TextColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġa . get Dimension OrThrow ( R . style able . Schedule Filter View _ android _ text Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbackground Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġtouch Feedback Ġ= Ġa . get Drawable OrThrow ( R . style able . Schedule Filter View _ foreground ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Ġ= Ġthis @ Schedule Filter View ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpadding Ġ= Ġa . get Dimension Pixel Size OrThrow ( R . style able . Schedule Filter View _ android _ padding ) ĊĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġa . getBoolean ( R . style able . Schedule Filter View _ android _ checked , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġa . recycle () ĊĠĠĠĠĠĠĠ Ġclip To Outline Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnon Text Width Ġ= Ġ( 4 Ġ* Ġpadding ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 2 Ġ* Ġoutline Paint . stroke Width ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġavailable Text Width Ġ= Ġwhen Ġ( Measure Spec . get Mode ( width Measure Spec )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . EX ACT LY Ġ-> ĠMeasure Spec . getSize ( width Measure Spec ) Ġ- Ġnon Text Width ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . AT _ MO ST Ġ-> ĠMeasure Spec . getSize ( width Measure Spec ) Ġ- Ġnon Text Width ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . UNSPECIFIED Ġ-> ĠInt . MAX _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠInt . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcreate Layout ( available Text Width ) ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġnon Text Width Ġ+ Ġtext Width ( text Layout ) ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġpadding Ġ+ Ġtext Layout . height Ġ+ Ġpadding ĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( w , Ġh ) ĊĠĠĠĠĠĠĠ Ġoutline Provider Ġ= Ġobject Ġ: ĠView Outline Provider () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Outline ( view : ĠView , Ġoutline : ĠOut line ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutline . set Round Rect ( 0 , Ġ 0 , Ġw , Ġh , Ġh Ġ/ Ġ 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtouch Feedback . setBounds ( 0 , Ġ 0 , Ġw , Ġh ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠstrokeWidth Ġ= Ġoutline Paint . stroke Width ĊĠĠĠĠĠĠĠ Ġval Ġhalf Stroke Ġ= ĠstrokeWidth Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġrounding Ġ= Ġ( height Ġ- ĠstrokeWidth ) Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠ Ġ// ĠOut line ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Ġ< Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Round Rect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Stroke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhalf Stroke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ- Ġhalf Stroke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ- Ġhalf Stroke , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrounding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrounding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutline Paint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( background Paint . shader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Paint . shader Ġ= Ġcolor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġradius Ġ= Ġl erp ( 0 f , Ġwidth . toFloat (), Ġprogress ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( last X , Ġheight Ġ/ Ġ 2 f , Ġradius , Ġbackground Paint ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠText ĊĠĠĠĠĠĠĠ Ġval Ġtext X Ġ= ĠstrokeWidth Ġ+ Ġpadding Ġ* Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġselected Color Ġ= Ġselected TextColor ĊĠĠĠĠĠĠĠ Ġtext Paint . color Ġ= Ġif Ġ( selected Color Ġ!= Ġnull Ġ&& Ġselected Color Ġ!= Ġ 0 Ġ&& Ġprogress Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Utils . blend ARGB ( default TextColor , Ġselected Color , Ġprogress ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault TextColor ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . with Translation ( x Ġ= Ġtext X , Ġy Ġ= Ġ( height Ġ- Ġtext Layout . height ) Ġ/ Ġ 2 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Layout . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠTouch Ġfeedback ĊĠĠĠĠĠĠĠ Ġtouch Feedback . draw ( canvas ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Click ableView Accessibility ") ĊĠĠĠ Ġoverride Ġfun Ġon Touch Event ( event : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( event . action Mask ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġevent . x ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Touch Event ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Touch Event ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġthe Ġanimation Ġto Ġenable / disable Ġa Ġfilter Ġand Ġinvokes Ġa Ġfunction Ġwhen Ġdone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġanimate Checked And Invoke ( checked : ĠBoolean , Ġon End : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Progress Ġ= Ġif Ġ( checked ) Ġ 1 f Ġelse Ġ 0 f ĊĠĠĠĠĠĠĠ Ġif Ġ( new Progress Ġ!= Ġprogress ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Animator ?. cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Animator Ġ= ĠValue Animator . of Float ( progress , Ġnew Progress ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġit . animated Value Ġas ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo On End Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= Ġnew Progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon End ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= Ġinterp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġif Ġ( checked ) ĠSELECT ING _ DURATION Ġelse ĠDE SELECT ING _ DURATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Checked () Ġ= Ġprogress Ġ== Ġ 1 f ĊĊĠĠĠ Ġoverride Ġfun Ġtoggle () Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Ġ= Ġif Ġ( progress Ġ== Ġ 0 f ) Ġ 1 f Ġelse Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Checked ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Ġ= Ġif Ġ( checked ) Ġ 1 f Ġelse Ġ 0 f ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġverify Drawable ( who : ĠDrawable ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . verify Drawable ( who ) Ġ|| Ġwho Ġ== Ġtouch Feedback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdrawable StateChanged () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . drawable StateChanged () ĊĠĠĠĠĠĠĠ Ġtouch Feedback . state Ġ= Ġdrawable State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġjump Draw ables To Current State () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . jump Draw ables To Current State () ĊĠĠĠĠĠĠĠ Ġtouch Feedback . jump To Current State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdrawable Hot spot Changed ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . drawable Hot spot Changed ( x , Ġy ) ĊĠĠĠĠĠĠĠ Ġtouch Feedback . set Hot spot ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġprivate Ġfun Ġcreate Layout ( text Width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Layout Ġ= Ġif Ġ( VERSION . SDK _ INT Ġ>= ĠVERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Layout . Builder . obtain ( text !! , Ġ 0 , Ġtext ?. length !! , Ġtext Paint , Ġtext Width ). build () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Layout ( text , Ġtext Paint , Ġtext Width , ĠALIGN _ NORMAL , Ġ 1 f , Ġ 0 f , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġl erp ( a : ĠFloat , Ġb : ĠFloat , Ġt : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġa Ġ+ Ġ( b Ġ- Ġa ) Ġ* Ġt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtext Width ( layout : ĠStatic Layout ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwidth Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlayout . line Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġwidth . coerce At Least ( layout . get LineWidth ( i )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwidth . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT ING _ DURATION Ġ= Ġ 3 5 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDE SELECT ING _ DURATION Ġ= Ġ 2 0 0 L ĊĠĠĠ Ġ} Ċ } Ċ