/* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApache ĠLicense Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVersion Ġ 2 . 0 , ĠJanuary Ġ 2 0 0 4 Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / Ċ Ġ* Ċ Ġ* ĠĠĠ ĠTER MS ĠAND ĠCONDITIONS ĠFOR ĠUSE , ĠRE PRO DU CTION , ĠAND ĠDI STRIB UTION Ċ Ġ* Ċ Ġ* ĠĠĠĠ 1 . ĠDefinitions . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" License " Ġshall Ġmean Ġthe Ġterms Ġand Ġconditions Ġfor Ġuse , Ġreproduction , Ċ Ġ* ĠĠĠĠĠĠ Ġand Ġdistribution Ġas Ġdefined Ġby ĠSe ctions Ġ 1 Ġthrough Ġ 9 Ġof Ġthis Ġdocument . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Lic ensor " Ġshall Ġmean Ġthe Ġcopyright Ġowner Ġor Ġentity Ġauthorized Ġby Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġcopyright Ġowner Ġthat Ġis Ġgrant ing Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Legal ĠEntity " Ġshall Ġmean Ġthe Ġunion Ġof Ġthe Ġact ing Ġentity Ġand Ġall Ċ Ġ* ĠĠĠĠĠĠ Ġother Ġentities Ġthat Ġcontrol , Ġare Ġcontrolled Ġby , Ġor Ġare Ġunder Ġcommon Ċ Ġ* ĠĠĠĠĠĠ Ġcontrol Ġwith Ġthat Ġentity . ĠFor Ġthe Ġpurposes Ġof Ġthis Ġdefinition , Ċ Ġ* ĠĠĠĠĠĠ Ġ" control " Ġmeans Ġ( i ) Ġthe Ġpower , Ġdirect Ġor Ġindirect , Ġto Ġcause Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġdirection Ġor Ġmanagement Ġof Ġsuch Ġentity , Ġwhether Ġby Ġcontract Ġor Ċ Ġ* ĠĠĠĠĠĠ Ġotherwise , Ġor Ġ( ii ) Ġownership Ġof Ġfifty Ġpercent Ġ( 5 0 %) Ġor Ġmore Ġof Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġoutstanding Ġshares , Ġor Ġ( iii ) Ġbene f icial Ġownership Ġof Ġsuch Ġentity . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" You " Ġ( or Ġ" Your ") Ġshall Ġmean Ġan Ġindividual Ġor ĠLeg al ĠEntity Ċ Ġ* ĠĠĠĠĠĠ Ġexerc ising Ġpermissions Ġgranted Ġby Ġthis ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Source " Ġform Ġshall Ġmean Ġthe Ġpreferred Ġform Ġfor Ġmaking Ġmodifications , Ċ Ġ* ĠĠĠĠĠĠ Ġincluding Ġbut Ġnot Ġlimited Ġto Ġsoftware Ġsource Ġcode , Ġdocumentation Ċ Ġ* ĠĠĠĠĠĠ Ġsource , Ġand Ġconfiguration Ġfiles . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Object " Ġform Ġshall Ġmean Ġany Ġform Ġresulting Ġfrom Ġmechan ical Ċ Ġ* ĠĠĠĠĠĠ Ġtransformation Ġor Ġtranslation Ġof Ġa ĠSource Ġform , Ġincluding Ġbut Ċ Ġ* ĠĠĠĠĠĠ Ġnot Ġlimited Ġto Ġcompiled Ġobject Ġcode , Ġgenerated Ġdocumentation , Ċ Ġ* ĠĠĠĠĠĠ Ġand Ġconversions Ġto Ġother Ġmedia Ġtypes . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Work " Ġshall Ġmean Ġthe Ġwork Ġof Ġauthor ship , Ġwhether Ġin ĠSource Ġor Ċ Ġ* ĠĠĠĠĠĠ ĠObject Ġform , Ġmade Ġavailable Ġunder Ġthe ĠLicense , Ġas Ġindicated Ġby Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġcopyright Ġnotice Ġthat Ġis Ġincluded Ġin Ġor Ġattached Ġto Ġthe Ġwork Ċ Ġ* ĠĠĠĠĠĠ Ġ( an Ġexample Ġis Ġprovided Ġin Ġthe ĠAppend ix Ġbelow ). Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Deriv ative ĠWorks " Ġshall Ġmean Ġany Ġwork , Ġwhether Ġin ĠSource Ġor ĠObject Ċ Ġ* ĠĠĠĠĠĠ Ġform , Ġthat Ġis Ġbased Ġon Ġ( or Ġderived Ġfrom ) Ġthe ĠWork Ġand Ġfor Ġwhich Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġeditor ial Ġrevisions , Ġannotations , Ġelabor ations , Ġor Ġother Ġmodifications Ċ Ġ* ĠĠĠĠĠĠ Ġrepresent , Ġas Ġa Ġwhole , Ġan Ġoriginal Ġwork Ġof Ġauthor ship . ĠFor Ġthe Ġpurposes Ċ Ġ* ĠĠĠĠĠĠ Ġof Ġthis ĠLicense , ĠDer iv ative ĠWorks Ġshall Ġnot Ġinclude Ġworks Ġthat Ġremain Ċ Ġ* ĠĠĠĠĠĠ Ġsepar able Ġfrom , Ġor Ġmerely Ġlink Ġ( or Ġbind Ġby Ġname ) Ġto Ġthe Ġinterfaces Ġof , Ċ Ġ* ĠĠĠĠĠĠ Ġthe ĠWork Ġand ĠDer iv ative ĠWorks Ġthere of . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Contribution " Ġshall Ġmean Ġany Ġwork Ġof Ġauthor ship , Ġincluding Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġoriginal Ġversion Ġof Ġthe ĠWork Ġand Ġany Ġmodifications Ġor Ġadditions Ċ Ġ* ĠĠĠĠĠĠ Ġto Ġthat ĠWork Ġor ĠDer iv ative ĠWorks Ġthere of , Ġthat Ġis Ġintention ally Ċ Ġ* ĠĠĠĠĠĠ Ġsubmitted Ġto ĠLic ensor Ġfor Ġinclusion Ġin Ġthe ĠWork Ġby Ġthe Ġcopyright Ġowner Ċ Ġ* ĠĠĠĠĠĠ Ġor Ġby Ġan Ġindividual Ġor ĠLeg al ĠEntity Ġauthorized Ġto Ġsubmit Ġon Ġbehalf Ġof Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġcopyright Ġowner . ĠFor Ġthe Ġpurposes Ġof Ġthis Ġdefinition , Ġ" submitted " Ċ Ġ* ĠĠĠĠĠĠ Ġmeans Ġany Ġform Ġof Ġelectronic , Ġver bal , Ġor Ġwritten Ġcommunication Ġsent Ċ Ġ* ĠĠĠĠĠĠ Ġto Ġthe ĠLic ensor Ġor Ġits Ġrepresent atives , Ġincluding Ġbut Ġnot Ġlimited Ġto Ċ Ġ* ĠĠĠĠĠĠ Ġcommunication Ġon Ġelectronic Ġmailing Ġlists , Ġsource Ġcode Ġcontrol Ġsystems , Ċ Ġ* ĠĠĠĠĠĠ Ġand Ġissue Ġtracking Ġsystems Ġthat Ġare Ġmanaged Ġby , Ġor Ġon Ġbehalf Ġof , Ġthe Ċ Ġ* ĠĠĠĠĠĠ ĠLic ensor Ġfor Ġthe Ġpurpose Ġof Ġdiscus sing Ġand Ġimproving Ġthe ĠWork , Ġbut Ċ Ġ* ĠĠĠĠĠĠ Ġexcluding Ġcommunication Ġthat Ġis Ġcon sp icu ously Ġmarked Ġor Ġotherwise Ċ Ġ* ĠĠĠĠĠĠ Ġdesign ated Ġin Ġwriting Ġby Ġthe Ġcopyright Ġowner Ġas Ġ" Not Ġa ĠCont ribution ." Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ" Contributor " Ġshall Ġmean ĠLic ensor Ġand Ġany Ġindividual Ġor ĠLeg al ĠEntity Ċ Ġ* ĠĠĠĠĠĠ Ġon Ġbehalf Ġof Ġwhom Ġa ĠCont ribution Ġhas Ġbeen Ġreceived Ġby ĠLic ensor Ġand Ċ Ġ* ĠĠĠĠĠĠ Ġsubsequent ly Ġincorpor ated Ġwithin Ġthe ĠWork . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 2 . ĠGrant Ġof ĠCopyright ĠLicense . ĠSubject Ġto Ġthe Ġterms Ġand Ġconditions Ġof Ċ Ġ* ĠĠĠĠĠĠ Ġthis ĠLicense , Ġeach ĠContributor Ġhereby Ġgr ants Ġto ĠYou Ġa Ġper pe tual , Ċ Ġ* ĠĠĠĠĠĠ Ġworld wide , Ġnon - exclusive , Ġno - charge , Ġro y alty - free , Ġir rev oc able Ċ Ġ* ĠĠĠĠĠĠ Ġcopyright Ġlicense Ġto Ġreproduce , Ġprepare ĠDer iv ative ĠWorks Ġof , Ċ Ġ* ĠĠĠĠĠĠ Ġpublicly Ġdisplay , Ġpublicly Ġperform , Ġsublicense , Ġand Ġdistribute Ġthe Ċ Ġ* ĠĠĠĠĠĠ ĠWork Ġand Ġsuch ĠDer iv ative ĠWorks Ġin ĠSource Ġor ĠObject Ġform . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 3 . ĠGrant Ġof ĠPat ent ĠLicense . ĠSubject Ġto Ġthe Ġterms Ġand Ġconditions Ġof Ċ Ġ* ĠĠĠĠĠĠ Ġthis ĠLicense , Ġeach ĠContributor Ġhereby Ġgr ants Ġto ĠYou Ġa Ġper pe tual , Ċ Ġ* ĠĠĠĠĠĠ Ġworld wide , Ġnon - exclusive , Ġno - charge , Ġro y alty - free , Ġir rev oc able Ċ Ġ* ĠĠĠĠĠĠ Ġ( except Ġas Ġstated Ġin Ġthis Ġsection ) Ġpat ent Ġlicense Ġto Ġmake , Ġhave Ġmade , Ċ Ġ* ĠĠĠĠĠĠ Ġuse , Ġoffer Ġto Ġsell , Ġsell , Ġimport , Ġand Ġotherwise Ġtransfer Ġthe ĠWork , Ċ Ġ* ĠĠĠĠĠĠ Ġwhere Ġsuch Ġlicense Ġapplies Ġonly Ġto Ġthose Ġpat ent Ġclaims Ġlic ens able Ċ Ġ* ĠĠĠĠĠĠ Ġby Ġsuch ĠContributor Ġthat Ġare Ġnecessarily Ġin fr ing ed Ġby Ġtheir Ċ Ġ* ĠĠĠĠĠĠ ĠCont ribution ( s ) Ġalone Ġor Ġby Ġcombination Ġof Ġtheir ĠCont ribution ( s ) Ċ Ġ* ĠĠĠĠĠĠ Ġwith Ġthe ĠWork Ġto Ġwhich Ġsuch ĠCont ribution ( s ) Ġwas Ġsubmitted . ĠIf ĠYou Ċ Ġ* ĠĠĠĠĠĠ Ġinst itute Ġpat ent Ġlit igation Ġagainst Ġany Ġentity Ġ( including Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġcross - claim Ġor Ġcounter claim Ġin Ġa Ġlaws uit ) Ġal leg ing Ġthat Ġthe ĠWork Ċ Ġ* ĠĠĠĠĠĠ Ġor Ġa ĠCont ribution Ġincorpor ated Ġwithin Ġthe ĠWork Ġconst it utes Ġdirect Ċ Ġ* ĠĠĠĠĠĠ Ġor Ġcontribut ory Ġpat ent Ġin fr ing ement , Ġthen Ġany Ġpat ent Ġlicenses Ċ Ġ* ĠĠĠĠĠĠ Ġgranted Ġto ĠYou Ġunder Ġthis ĠLicense Ġfor Ġthat ĠWork Ġshall Ġterminate Ċ Ġ* ĠĠĠĠĠĠ Ġas Ġof Ġthe Ġdate Ġsuch Ġlit igation Ġis Ġfiled . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 4 . ĠRedistribution . ĠYou Ġmay Ġreproduce Ġand Ġdistribute Ġcopies Ġof Ġthe Ċ Ġ* ĠĠĠĠĠĠ ĠWork Ġor ĠDer iv ative ĠWorks Ġthere of Ġin Ġany Ġmedium , Ġwith Ġor Ġwithout Ċ Ġ* ĠĠĠĠĠĠ Ġmodifications , Ġand Ġin ĠSource Ġor ĠObject Ġform , Ġprovided Ġthat ĠYou Ċ Ġ* ĠĠĠĠĠĠ Ġmeet Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ( a ) ĠYou Ġmust Ġgive Ġany Ġother Ġrecipients Ġof Ġthe ĠWork Ġor Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ ĠDer iv ative ĠWorks Ġa Ġcopy Ġof Ġthis ĠLicense ; Ġand Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ( b ) ĠYou Ġmust Ġcause Ġany Ġmodified Ġfiles Ġto Ġcarry Ġprom inent Ġnotices Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġst ating Ġthat ĠYou Ġchanged Ġthe Ġfiles ; Ġand Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ( c ) ĠYou Ġmust Ġretain , Ġin Ġthe ĠSource Ġform Ġof Ġany ĠDer iv ative ĠWorks Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġthat ĠYou Ġdistribute , Ġall Ġcopyright , Ġpat ent , Ġtrade mark , Ġand Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġat tribution Ġnotices Ġfrom Ġthe ĠSource Ġform Ġof Ġthe ĠWork , Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġexcluding Ġthose Ġnotices Ġthat Ġdo Ġnot Ġpert ain Ġto Ġany Ġpart Ġof Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġthe ĠDer iv ative ĠWorks ; Ġand Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġ( d ) ĠIf Ġthe ĠWork Ġincludes Ġa Ġ" NOTICE " Ġtext Ġfile Ġas Ġpart Ġof Ġits Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġdistribution , Ġthen Ġany ĠDer iv ative ĠWorks Ġthat ĠYou Ġdistribute Ġmust Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġinclude Ġa Ġreadable Ġcopy Ġof Ġthe Ġat tribution Ġnotices Ġcontained Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġwithin Ġsuch ĠNOTICE Ġfile , Ġexcluding Ġthose Ġnotices Ġthat Ġdo Ġnot Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġpert ain Ġto Ġany Ġpart Ġof Ġthe ĠDer iv ative ĠWorks , Ġin Ġat Ġleast Ġone Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġof Ġthe Ġfollowing Ġplaces : Ġwithin Ġa ĠNOTICE Ġtext Ġfile Ġdistributed Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġas Ġpart Ġof Ġthe ĠDer iv ative ĠWorks ; Ġwithin Ġthe ĠSource Ġform Ġor Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġdocumentation , Ġif Ġprovided Ġalong Ġwith Ġthe ĠDer iv ative ĠWorks ; Ġor , Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġwithin Ġa Ġdisplay Ġgenerated Ġby Ġthe ĠDer iv ative ĠWorks , Ġif Ġand Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġwhere ver Ġsuch Ġthird - party Ġnotices Ġnormally Ġappear . ĠThe Ġcontents Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġof Ġthe ĠNOTICE Ġfile Ġare Ġfor Ġinformation al Ġpurposes Ġonly Ġand Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġdo Ġnot Ġmodify Ġthe ĠLicense . ĠYou Ġmay Ġadd ĠYour Ġown Ġat tribution Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġnotices Ġwithin ĠDer iv ative ĠWorks Ġthat ĠYou Ġdistribute , Ġalong side Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġor Ġas Ġan Ġadd endum Ġto Ġthe ĠNOTICE Ġtext Ġfrom Ġthe ĠWork , Ġprovided Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġthat Ġsuch Ġadditional Ġat tribution Ġnotices Ġcannot Ġbe Ġconstr ued Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠ Ġas Ġmodifying Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ ĠYou Ġmay Ġadd ĠYour Ġown Ġcopyright Ġstatement Ġto ĠYour Ġmodifications Ġand Ċ Ġ* ĠĠĠĠĠĠ Ġmay Ġprovide Ġadditional Ġor Ġdifferent Ġlicense Ġterms Ġand Ġconditions Ċ Ġ* ĠĠĠĠĠĠ Ġfor Ġuse , Ġreproduction , Ġor Ġdistribution Ġof ĠYour Ġmodifications , Ġor Ċ Ġ* ĠĠĠĠĠĠ Ġfor Ġany Ġsuch ĠDer iv ative ĠWorks Ġas Ġa Ġwhole , Ġprovided ĠYour Ġuse , Ċ Ġ* ĠĠĠĠĠĠ Ġreproduction , Ġand Ġdistribution Ġof Ġthe ĠWork Ġotherwise Ġcomp lies Ġwith Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġconditions Ġstated Ġin Ġthis ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 5 . ĠSubmission Ġof ĠCont ributions . ĠUnless ĠYou Ġexplicitly Ġstate Ġotherwise , Ċ Ġ* ĠĠĠĠĠĠ Ġany ĠCont ribution Ġintention ally Ġsubmitted Ġfor Ġinclusion Ġin Ġthe ĠWork Ċ Ġ* ĠĠĠĠĠĠ Ġby ĠYou Ġto Ġthe ĠLic ensor Ġshall Ġbe Ġunder Ġthe Ġterms Ġand Ġconditions Ġof Ċ Ġ* ĠĠĠĠĠĠ Ġthis ĠLicense , Ġwithout Ġany Ġadditional Ġterms Ġor Ġconditions . Ċ Ġ* ĠĠĠĠĠĠ ĠNot with standing Ġthe Ġabove , Ġnothing Ġherein Ġshall Ġsuper se de Ġor Ġmodify Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġterms Ġof Ġany Ġseparate Ġlicense Ġagreement Ġyou Ġmay Ġhave Ġexecuted Ċ Ġ* ĠĠĠĠĠĠ Ġwith ĠLic ensor Ġregarding Ġsuch ĠCont ributions . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 6 . ĠTrade marks . ĠThis ĠLicense Ġdoes Ġnot Ġgrant Ġpermission Ġto Ġuse Ġthe Ġtrade Ċ Ġ* ĠĠĠĠĠĠ Ġnames , Ġtrade marks , Ġservice Ġmarks , Ġor Ġproduct Ġnames Ġof Ġthe ĠLic ensor , Ċ Ġ* ĠĠĠĠĠĠ Ġexcept Ġas Ġrequired Ġfor Ġreasonable Ġand Ġcustom ary Ġuse Ġin Ġdescribing Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġorigin Ġof Ġthe ĠWork Ġand Ġrepro ducing Ġthe Ġcontent Ġof Ġthe ĠNOTICE Ġfile . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 7 . ĠDis claimer Ġof ĠW arr anty . ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ċ Ġ* ĠĠĠĠĠĠ Ġagreed Ġto Ġin Ġwriting , ĠLic ensor Ġprovides Ġthe ĠWork Ġ( and Ġeach Ċ Ġ* ĠĠĠĠĠĠ ĠContributor Ġprovides Ġits ĠCont ributions ) Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ċ Ġ* ĠĠĠĠĠĠ Ġimplied , Ġincluding , Ġwithout Ġlimitation , Ġany Ġwarr ant ies Ġor Ġconditions Ċ Ġ* ĠĠĠĠĠĠ Ġof ĠTITLE , ĠNON - INFRINGEMENT , ĠMERCHANTABILITY , Ġor ĠFITNESS ĠFOR ĠA Ċ Ġ* ĠĠĠĠĠĠ ĠPARTICULAR ĠPURPOSE . ĠYou Ġare Ġsole ly Ġresponsible Ġfor Ġdetermining Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġappro pri aten ess Ġof Ġusing Ġor Ġre distribut ing Ġthe ĠWork Ġand Ġassume Ġany Ċ Ġ* ĠĠĠĠĠĠ Ġris ks Ġassociated Ġwith ĠYour Ġexercise Ġof Ġpermissions Ġunder Ġthis ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 8 . ĠLimit ation Ġof ĠLi ability . ĠIn Ġno Ġevent Ġand Ġunder Ġno Ġlegal Ġtheory , Ċ Ġ* ĠĠĠĠĠĠ Ġwhether Ġin Ġtort Ġ( including Ġne gl ig ence ), Ġcontract , Ġor Ġotherwise , Ċ Ġ* ĠĠĠĠĠĠ Ġunless Ġrequired Ġby Ġapplicable Ġlaw Ġ( such Ġas Ġdeli ber ate Ġand Ġg ross ly Ċ Ġ* ĠĠĠĠĠĠ Ġne gl ig ent Ġacts ) Ġor Ġagreed Ġto Ġin Ġwriting , Ġshall Ġany ĠContributor Ġbe Ċ Ġ* ĠĠĠĠĠĠ Ġli able Ġto ĠYou Ġfor Ġdamage s , Ġincluding Ġany Ġdirect , Ġindirect , Ġspecial , Ċ Ġ* ĠĠĠĠĠĠ Ġincident al , Ġor Ġcon sequential Ġdamage s Ġof Ġany Ġcharacter Ġar ising Ġas Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġresult Ġof Ġthis ĠLicense Ġor Ġout Ġof Ġthe Ġuse Ġor Ġin ability Ġto Ġuse Ġthe Ċ Ġ* ĠĠĠĠĠĠ ĠWork Ġ( including Ġbut Ġnot Ġlimited Ġto Ġdamage s Ġfor Ġloss Ġof Ġgood will , Ċ Ġ* ĠĠĠĠĠĠ Ġwork Ġstop page , Ġcomputer Ġfailure Ġor Ġmal function , Ġor Ġany Ġand Ġall Ċ Ġ* ĠĠĠĠĠĠ Ġother Ġcommercial Ġdamage s Ġor Ġlosses ), Ġeven Ġif Ġsuch ĠContributor Ċ Ġ* ĠĠĠĠĠĠ Ġhas Ġbeen Ġadv ised Ġof Ġthe Ġpossibility Ġof Ġsuch Ġdamage s . Ċ Ġ* Ċ Ġ* ĠĠĠĠ 9 . ĠAccept ing ĠW arr anty Ġor ĠAdditional ĠLi ability . ĠWhile Ġre distribut ing Ċ Ġ* ĠĠĠĠĠĠ Ġthe ĠWork Ġor ĠDer iv ative ĠWorks Ġthere of , ĠYou Ġmay Ġchoose Ġto Ġoffer , Ċ Ġ* ĠĠĠĠĠĠ Ġand Ġcharge Ġa Ġfee Ġfor , Ġacceptance Ġof Ġsupport , Ġwarranty , Ġin de mn ity , Ċ Ġ* ĠĠĠĠĠĠ Ġor Ġother Ġli ability Ġoblig ations Ġand / or Ġrights Ġconsistent Ġwith Ġthis Ċ Ġ* ĠĠĠĠĠĠ ĠLicense . ĠHowever , Ġin Ġaccepting Ġsuch Ġoblig ations , ĠYou Ġmay Ġact Ġonly Ċ Ġ* ĠĠĠĠĠĠ Ġon ĠYour Ġown Ġbehalf Ġand Ġon ĠYour Ġsole Ġresponsibility , Ġnot Ġon Ġbehalf Ċ Ġ* ĠĠĠĠĠĠ Ġof Ġany Ġother ĠContributor , Ġand Ġonly Ġif ĠYou Ġagree Ġto Ġin de mn ify , Ċ Ġ* ĠĠĠĠĠĠ Ġdef end , Ġand Ġhold Ġeach ĠContributor Ġharm less Ġfor Ġany Ġli ability Ċ Ġ* ĠĠĠĠĠĠ Ġinc urred Ġby , Ġor Ġclaims Ġassert ed Ġagainst , Ġsuch ĠContributor Ġby Ġreason Ċ Ġ* ĠĠĠĠĠĠ Ġof Ġyour Ġaccepting Ġany Ġsuch Ġwarranty Ġor Ġadditional Ġli ability . Ċ Ġ* Ċ Ġ* ĠĠĠ ĠEND ĠOF ĠTER MS ĠAND ĠCONDITIONS Ċ Ġ* Ċ Ġ* ĠĠĠ ĠAPP EN DI X : ĠHow Ġto Ġapply Ġthe ĠApache ĠLicense Ġto Ġyour Ġwork . Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ ĠTo Ġapply Ġthe ĠApache ĠLicense Ġto Ġyour Ġwork , Ġattach Ġthe Ġfollowing Ċ Ġ* ĠĠĠĠĠĠ Ġboilerplate Ġnotice , Ġwith Ġthe Ġfields Ġen closed Ġby Ġbrackets Ġ" []" Ċ Ġ* ĠĠĠĠĠĠ Ġreplaced Ġwith Ġyour Ġown Ġidentifying Ġinformation . Ġ( Don 't Ġinclude Ċ Ġ* ĠĠĠĠĠĠ Ġthe Ġbrackets !) Ġ ĠThe Ġtext Ġshould Ġbe Ġen closed Ġin Ġthe Ġappropriate Ċ Ġ* ĠĠĠĠĠĠ Ġcomment Ġsyntax Ġfor Ġthe Ġfile Ġformat . ĠWe Ġalso Ġrecommend Ġthat Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġfile Ġor Ġclass Ġname Ġand Ġdescription Ġof Ġpurpose Ġbe Ġincluded Ġon Ġthe Ċ Ġ* ĠĠĠĠĠĠ Ġsame Ġ" print ed Ġpage " Ġas Ġthe Ġcopyright Ġnotice Ġfor Ġeasier Ċ Ġ* ĠĠĠĠĠĠ Ġidentification Ġwithin Ġthird - party Ġarch ives . Ċ Ġ* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 2 0 - ĠNetwork ĠRe volution ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . dok od en . nr _ tel . libs ip Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . provider . Call Log Ċ import Ġandroid . provider . Contacts Contract Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . dok od en . nr _ tel . model . account . Account Data Ċ import Ġcom . dok od en . nr _ tel . model . acc status . Acc Status Data Ċ import Ġcom . dok od en . nr _ tel . model . acc status . Acc Status Database Ċ import Ġcom . dok od en . nr _ tel . model . acc status . Acc Status Repository Ċ import Ġcom . dok od en . nr _ tel . model . calls atus . Call Status Data Ċ import Ġcom . dok od en . nr _ tel . model . calls atus . Call Status Database Ċ import Ġcom . dok od en . nr _ tel . model . calls atus . Call Status Repository Ċ import Ġcom . dok od en . nr _ tel . utility . Constants Ċ import Ġcom . dok od en . nr _ tel . utility . Preferences Utils Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util . regex . Pattern Ċ Ċ class ĠS ip Stack ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġendpoint Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġacc Status Dao Ġ= ĠAcc Status Database . get Database ( application ). status Dao () ĊĠĠĠ Ġprivate Ġval Ġacc Repository Ġ= ĠAcc Status Repository ( acc Status Dao ) ĊĠĠĠ Ġval Ġall Acc Status Ġ= Ġacc Repository . all Acc Status ĊĠĠĠ Ġval Ġregistered Account Ġ= Ġacc Repository . registered Account ĊĠĠĠ Ġval Ġdefault Account Ġ= Ġacc Repository . default Account ĊĊĠĠĠ Ġprivate Ġval Ġcall Status Dao Ġ= ĠCall Status Database . get Database ( application ). status Dao () ĊĠĠĠ Ġprivate Ġval Ġcall Repository Ġ= ĠCall Status Repository ( call Status Dao ) ĊĠĠĠ Ġval Ġall Call Status Ġ= Ġcall Repository . all Call Status ĊĠĠĠ Ġval Ġcurrent Call Ġ= Ġcall Repository . current Call ĊĠĠĠ Ġval Ġtransfer Call Ġ= Ġcall Repository . transfer Call ĊĊĠĠĠ Ġprivate Ġval Ġpref Ġ= ĠPreferences Utils ( application . application Context ) ĊĠĠĠ Ġprivate Ġval Ġcontent Resolver Ġ= Ġapplication . application Context . content Resolver ĊĊĠĠĠ Ġprivate Ġval Ġaccount Map Ġ= Ġmutable Map Of < String , ĠS ip Account >() ĊĠĠĠ Ġprivate Ġval Ġcall Map Ġ= Ġmutable Map Of < Int , ĠS ip Call >() ĊĠĠĠ Ġprivate Ġvar Ġdefault Server Port Ġ= Ġ"" ĊĊĠĠĠ Ġfun Ġinit Lib () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġde Init Lib () Ġ{ ĊĠĠĠĠĠĠĠ Ġ/* ĠTry Ġforce ĠGC Ġto Ġavoid Ġlate Ġdestroy Ġof ĠP J Ġobjects Ġas Ġthey Ġshould Ġbe Ġdeleted Ġbefore Ġlib Ġis Ġdestroyed .*/ ĊĠĠĠĠĠĠĠ ĠRuntime . get Runtime (). gc () ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsip Observer () Ġ{ ĊĠĠĠĠĠĠĠ ĠS ip App Controller ( object Ġ: ĠS ip App Controller . S ip App Observer Ġ{ ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Network Change () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( registered Account . value . isNull OrEmpty ()) Ġreturn ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhold This Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ Ġcall Status Ġ-> ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun Hold This Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ Ġcall Status Ġ-> ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġhold Another Call ( active Call : ĠP j S ip Call ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġfor Ġ( call Ġin Ġm Calls ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Call . getId () Ġ=== Ġcall . getId ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . hold () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaccept Incoming Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Call ( it . call Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccept Call ( call Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Map [ call Id ]?. let Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Repository . update Status ( call Id , ĠConstants . Obs Call Actions . On Calling . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecl ine Incoming Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġdecl ine Current Call () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecl ine Current Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhang up Call ( it . call Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhang up Call ( call Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcall Map . remove ( call Id ) ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Repository . delete ById ( call Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecl ine Transfer Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ Ġcurrent Call Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Map [ transfer Call . value ?. get ( 0 )?. call Id ]?. let Ġ{ Ġtransfer Call Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Map . remove ( current Call . call Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoutgoing Call ( outgoing Number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount Map [ default Account . value ?. get ( 0 )] ?. let Ġ{ Ġaccount Ġ-> ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtransfer Call ( outgoing Number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutgoing Uri Ġ= Ġ" sip :${ outgoing Number }@ ${ default Server Port }" ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ Ġcall Status Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Map . remove ( call Status . call Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtransfer Replace Call ( outgoing Number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoutgoing Call ( outgoing Number ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdial D tm f ( digits : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Call . value ?. get ( 0 )?. let Ġ{ Ġcall Status Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Map . remove ( call Status . call Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget DisplayName ( num : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdisp Name Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġcontent Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContact s Contract . Common Data Kinds . Phone . CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContact s Contract . Common Data Kinds . Phone . NUMBER Ġ+ Ġ" ĠLIKE Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ("% " Ġ+ Ġnum . toCharArray (). join ToString ("% ") Ġ+ Ġ"% "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphone Index Ġ= Ġit . getColumnIndex ( Contacts Contract . Common Data Kinds . Phone . NUMBER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Index Ġ= Ġit . getColumnIndex ( Contacts Contract . Common Data Kinds . Phone . DISPLAY _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠphoneNumber Ġ= Ġit . getString ( phone Index ). replace (" [- \\ s .] ". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( phoneNumber Ġ== Ġnum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisp Name Ġ= Ġit . getString ( name Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdisp Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdel Account ( account Data : ĠAccount Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaccount Map [ make Account Uri ( account Data )] ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Account Config ( account Data : ĠAccount Data ){ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Account Uri ( account Data : ĠAccount Data ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" sip :${ account Data . userName }@ [ ${ account Data . server Uri }] " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Account ( account Data : ĠAccount Data ) Ġ{ ĊĊĠĠĠ Ġ} Ċ }