package Ġno . nav . su . se . bak over . domain . be handling Ċ Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . B ere g ning Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . B ere g ning Factory Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . fr ad rag . F rad rag Strategy Ċ import Ġno . nav . su . se . bak over . domain . ber eg ning . fr ad rag . F rad rag stype Ċ Ċ object ĠV ur der Av sl ag G run net B ere g ning Ġ{ ĊĠĠĠ Ġfun Ġv ur der Av sl ag G run net B ere g ning ( ĊĠĠĠĠĠĠĠ Ġbere g ning : ĠBere g ning ?, ĊĠĠĠ Ġ): ĠAv sl ag G run net B ere g ning Ġ= Ġif Ġ( ber eg ning Ġ== Ġnull ) ĠAv sl ag G run net B ere g ning . Ne i Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbere g ning U ten S os ial st Ã¸ nad Ġ= Ġbere gn U ten S os ial st Ã¸ nad ( ber eg ning ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbere g ning U ten S os ial st Ã¸ nad . getM Ã¥ ned s ber eg ning er (). any Ġ{ Ġit . er Sum Yt else Under M inst eb el Ã¸ p () Ġ} Ġ-> ĠAv sl ag G run net B ere g ning . Ja ( Av sl ag G run net B ere g ning . G run n . SU _ UNDER _ MIN ST EG REN SE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbere g ning U ten S os ial st Ã¸ nad . getM Ã¥ ned s ber eg ning er (). any Ġ{ Ġit . get Sum Yt else () Ġ<= Ġ 0 Ġ} Ġ-> ĠAv sl ag G run net B ere g ning . Ja ( Av sl ag G run net B ere g ning . G run n . FOR _ H Ã ĺ Y _ IN N TE KT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAv sl ag G run net B ere g ning . Ne i ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠS os ial st Ã¸ nad Ġskal Ġik ke Ġkun ne Ġf Ã¸ re Ġtil Ġav sl ag Ġeller Ġunder Ġmin ste Ġg ren se Ġfor Ġut bet aling Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġbere gn U ten S os ial st Ã¸ nad ( ber eg ning : ĠBere g ning ): ĠBere g ning Ġ= ĠBere g ning Factory . ny ( ĊĠĠĠĠĠĠĠ Ġper i ode Ġ= Ġbere g ning . peri ode , ĊĠĠĠĠĠĠĠ Ġs ats Ġ= Ġbere g ning . getS ats (), ĊĠĠĠĠĠĠĠ Ġf rad rag Ġ= Ġbere g ning . getF rad rag (). filter Not Ġ{ Ġit . fr ad rag stype Ġ== ĠF rad rag stype . S os ial st Ã¸ nad Ġ}, ĊĠĠĠĠĠĠĠ Ġf rad rag Strategy Ġ= ĠF rad rag Strategy . from Name ( ber eg ning . getF rad rag Strategy Name ()), ĊĠĠĠĠĠĠĠ Ġbe gr un n else Ġ= Ġbere g ning . get Be gr un n else () ĊĠĠĠ Ġ) Ċ } Ċ Ċ sealed Ġclass ĠAv sl ag G run net B ere g ning Ġ{ ĊĠĠĠ Ġdata Ġclass ĠJ a ( val Ġg run n : ĠG run n ) Ġ: ĠAv sl ag G run net B ere g ning () ĊĠĠĠ Ġobject ĠNe i Ġ: ĠAv sl ag G run net B ere g ning () ĊĊĠĠĠ Ġenum Ġclass ĠG run n Ġ{ ĊĠĠĠĠĠĠĠ ĠFOR _ H Ã ĺ Y _ IN N TE KT , ĊĠĠĠĠĠĠĠ ĠSU _ UNDER _ MIN ST EG REN SE ĊĠĠĠ Ġ} Ċ } Ċ