From f4deac5880791c47c0e15ea0abd0ebc1abdea9de Mon Sep 17 00:00:00 2001 From: John Carlson Date: Mon, 20 Mar 2023 15:44:17 -0500 Subject: [PATCH 1/2] Duration support --- app/build.gradle | 2 +- .../com/instacart/sample/SampleActivity.kt | 7 +- .../sample/TrueTimeLogEventListener.kt | 5 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 56177 -> 61608 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 292 +++++++++++------- gradlew.bat | 92 ++++++ .../truetime/TrueTimeEventListener.kt | 7 +- .../instacart/truetime/time/TrueTimeImpl.kt | 8 +- .../truetime/time/TrueTimeParameters.kt | 48 +-- 11 files changed, 319 insertions(+), 148 deletions(-) create mode 100644 gradlew.bat diff --git a/app/build.gradle b/app/build.gradle index 5187070e..b6c3af93 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,7 +54,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.0' implementation "io.reactivex.rxjava2:rxandroid:2.1.1" } diff --git a/app/src/main/java/com/instacart/sample/SampleActivity.kt b/app/src/main/java/com/instacart/sample/SampleActivity.kt index 1d1ec92a..cfe7f36e 100644 --- a/app/src/main/java/com/instacart/sample/SampleActivity.kt +++ b/app/src/main/java/com/instacart/sample/SampleActivity.kt @@ -21,6 +21,7 @@ import java.time.format.DateTimeFormatter import java.util.* import kotlin.concurrent.schedule import kotlinx.coroutines.* +import kotlin.time.Duration.Companion.milliseconds @SuppressLint("SetTextI18n") @RequiresApi(Build.VERSION_CODES.O) @@ -68,11 +69,11 @@ class SampleActivity : AppCompatActivity() { val params = TrueTimeParameters.Builder() .ntpHostPool(arrayListOf("time.apple.com")) - .connectionTimeoutInMillis(31428) - .syncIntervalInMillis(5_000) + .connectionTimeout(31428.milliseconds) + .syncInterval(5_000.milliseconds) .retryCountAgainstSingleIp(3) .returnSafelyWhenUninitialized(false) - .serverResponseDelayMaxInMillis(900) // this value is pretty high (coding on a plane) + .serverResponseDelayMax(900.milliseconds) // this value is pretty high (coding on a plane) .buildParams() sampleTrueTime = TrueTimeImpl(params, listener = TrueTimeLogEventListener()) diff --git a/app/src/main/java/com/instacart/sample/TrueTimeLogEventListener.kt b/app/src/main/java/com/instacart/sample/TrueTimeLogEventListener.kt index 60a9988b..6b339bda 100644 --- a/app/src/main/java/com/instacart/sample/TrueTimeLogEventListener.kt +++ b/app/src/main/java/com/instacart/sample/TrueTimeLogEventListener.kt @@ -6,6 +6,7 @@ import com.instacart.truetime.sntp.SntpResult import com.instacart.truetime.time.TrueTimeParameters import java.net.InetAddress import java.util.* +import kotlin.time.Duration class TrueTimeLogEventListener : TrueTimeEventListener { override fun initialize(params: TrueTimeParameters) { @@ -20,8 +21,8 @@ class TrueTimeLogEventListener : TrueTimeEventListener { Log.e("TrueTime4", "initialization call failed with a generic exception", e) } - override fun nextInitializeIn(delayInMillis: Long) { - Log.v("TrueTime4", " next initialization call will be made in $delayInMillis ms") + override fun nextInitializeIn(delay: Duration) { + Log.v("TrueTime4", " next initialization call will be made in ${delay.inWholeMilliseconds} ms") } override fun resolvedNtpHostToIPs(ntpHost: String, ipList: List) { diff --git a/build.gradle b/build.gradle index 24354638..9c1868f0 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:7.4.1' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 13536770052936a92b204cc34e72284a03a6903c..ccebba7710deaf9f98673a68957ea02138b60d0a 100644 GIT binary patch delta 53251 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 I zIt(yK@jE0wo>@CH`f-(&9?;d`^1TEb7*ehwHKhxQs8x&9)ID*AwA8y~Fe#vTF@Xu1 zkaZ+GIf3%FG|$+%$Q`cD!(D~!`h(vu1JHx0pV4z?c`%Lw%Iv7i1E-w~fIckP?g0(d zZuM&f$Vx}rH>T$#EUC<8cNzT^^y*}TXNT`Nw5UvWn0u?+1avMiMLW!wqgpt# zU5y)B+fO%ftc9caozw<#OUU)MsZI#700Cx}S4)C|T5x_GelW6i!#{JfaQY=pix?p+ za+SL{#1Yv1I1W%3Sq6I)6`nK?R^6x*hU2q1J`%j+%LPJ;`H?qYv~q>Tq{hLQ2#S-4QfKsd)3C^AN{xY@U(I1&;R4#Q#vT zT;M*z&#ge3=^&0aUk!-Igp%eicIJM4{tru|rP7CA!B!2bVG!M=36FS0iAIC?VcmqT~uOUe`eKW_<5E@ozKNd63{wl#E8o;v#6QnL^{dy))wn0huvn|!mLyHi8J z2ZG;qIg{TkRVh=q>zBVm?q3PpyUp7}0h>GD6RN)}EH^>oXdBnlhD-NV$Ie=|H-Xk@ovbXG#+f2) zbehxiuwAawecGrPK6@xoduk&Sjji?eopi=~*yP`!a~ZZUgy<7=;7I}EcdTEbL2ChU zp1L07EJwP5rY1|CH*FKMbf3G!dU?9=0v*l^i1~(r&qL#xS}nJb9BKb?+m#QabeyO_ z(Y+wMrL!zhM*P9Ed%(1?P+BdcJHg>K`c-VwwW70cCWUc}b9thw|NT6=O~l??+j4F~ zMx5L*tn1i3EJZIg;Z^)n^&L0+oE`Ypov3RXg(~tg71g$;nuV&Hovoavrtf@538Ol{ zu6c0~auk1bkP-gZ&U1Vc)4cRD<)y-*4e|GJULpgR?P)@4pQ%2r$AE|5{8m2Bc42En zQR)Wd;66hyYkQ)F<~Q8qAvdrKZu>m2Y)FN?@g6OBv`QlcBAhhQQ6a%8?0aCNv)X8@ z2Z7#F6Fn#PL=!1*(ov*l&Gmk@Eo4uJ&UcvxIhEbl_^-+a`!$Ze^>Y@2;?_S9dxMy_88m>8#g_g49#)*bEeWRnsJmJ9m&;lS!&h4drHM;^xU%>ou@rWv}I zoCDSJncc*Z+$Z9LVZL3>Y-C z1!qHun5_|nqR^K3SxVv|&Ms8uQ6u6Vf#I2e-MuybHW?2ffFEI%cXCBj*7D4C1>_?B3r8x@I zjT*6#E{nkLT9&vjp_lX5(ASSJcBT}gQC7tsJH|ke2y&f8m{nWgkgO1MWz|=Dy?oek zNwn;`Tf~g9Be~hMKM^Ixv*9gTILfe;?j)N9Es_)Kj$A&-Ol2fOm(KrS`tKd2gtgL0 z!Phpy|7)pX|36DjViy!Hpl0WyB989=NO@1$f`@BdtXicSo>pX+K-xV+s;I2U?DyM2 zQ9IybQo;Mi+o7}V_dU`J4uQOqIlkZtJn$0-N^uzJ14QsSeCOP5O?pltBHQ&TYx5|J z|A@!pNx=JKe)^k2q3K_0i9+@)&Y4h;WN*rdr|a$n0p@FxDO~J+pf$z?vH%u&P!c6e z<1W}aWSc1sZ{do36?6?Q*p>>ol{XYnOA)d3XYY3tmo{ zYEf#YD;NGcMzIrUP6Ph9;52jEX_y=nOAwsBH0wP&gQUW8w{GHApk{*=g_5hh5fjX` zvbPCKl}KKf)^t}3z@v1xT)d}Ka;+B|VBm&-f?=yvEz`HpOOU;B_H*}=Nft<%;L@#K zXtZcU>>pKa_tfxZaE`fm`S)u?w5s6k(zcQu6ikvz&0Cm4&PbCB{`{gWc$5N=)ovAiNDFh8F4=2hCXgN&3jVMlwxv(`;gT$}h z;T~qWrz;;}3C1C4z|S>`F(HKej>(has5gudW42*>Y%~3)JXtS0x2M@lOOUcDpS|Z| z<{7!idC5Gmj(~$`vF-_R;3CAq4Zft>NI5J`j#K|xON1SBnKRSOG7~Qyq9~(8RBE4* zXs~FS9EHgV&_yh8@-J?vGK7-r#HnWOkN?F+oSd56&@|_MsQ1q-Ag{nWifCNG$EZe* z;5vifJS{lqbh<+9ZkmksFbqFsl2cKy9G&IkuzdXKVZ81)*>aA*iS*D%9VBWmq3jd8 zg(qM5u&{ZznOzdm#9dsWq%5Y}(4XGaF?X+n&zTYifNe8W!8!EZ4N&sSmEX$*WccSg zs>7a8z|Zk+NIGyt4lgp0(tykB(Vp%vOY@3mNHoObyn<+(!{s|j&oc{|U>W@!_WUJ5 zI0C8gmm#CSq5+TagMvZMg+WE~nHT>R5>r~w?RaqFX@-#a7J2r70bA6~m5Lj|ZNPuP z2;om2U}62N5p@9;+0s`c=`X6WJ8~~do)Ri~>S+eo^+dCxaRmiaZunys3*tFj#8-qU zuJj(kJEY+mtnwMn;~GouEgJR%CSg>ur}B7k-4uiLo}p6|l`PY#NJ=?q0k^#5r`Jizq*K@Uw(Cx|6R|Bz@#>e?|(SeyC<9-D7i>* zh?&EfX=NXwNew}jP*I^xd*whORXfSKMte*tr#6h7s^RR_Di@ckYZm90iY?7RB?cJ_ znyPo_@+Ee3t^d`HP_S+B=ZJ(~pW|ys83{ zzRO|xN(YoTdX>%%&zNC&I_UaTD|$>J>MXX%{SqvV;rV*-1h5{ooze#`{0sdIB0m|E z!3c4IL;GYO)vc;qOc4GbmW|7z@11G~c7(4KxwW?tum;pZ>uTLnW_tOl=vzBG0+$-A z$R6<2d}Y^hW5UTE6`isNabx{~!*zLtN?u|Ik!mp&_$sTaJTBIT8D%D20m+_dEE~# zvTq7!Co3znZN(=44i9UDY%HK=*4$4!9@gRr39As&W(_^-a?0yyP-D`)S2n6bcSFWf znHeU* z7)rHWVy2;VZ@VZFCo)2s9cRIBL-Gk#K33`LQ{5-utQ6$LE&V6-j)r72oX&Pt{I}jQr@?!W1!RW zp9WLf5H=03q&u66_J#>1SgB^zY+XtQ0;8aetxo6xf32Il*&0|drI@ez$Z(c{)WdFq zicmCSUvP;O=f`Mr4AtDT4>=u=%N48p^oK-}zNKIgm8?l>jc zJ1P@k(sv@Cu-$KfHA$F|0f5rrgZHB=xx0FUcNGydD2p zL`+S%j#OG{hhoD^sfp9}Te9DBe={t%<17bXUy&K%QnLKNtH@8irJPbwYTS2raUZ~l z?am5_4)9i(qjpIAwRWZQQ`mXOH5gvDxo74tnB{j>gr8p7&|a=yHW6)Aw#A=&hU`|_ z$z=av->$l0@U0vIa(C9#N{*0rkBUTvaz`y zrnDMhhy5wLDSS(lxSI39eGd@`iiYT4oMYnnKqZ=a9)H7#{zDrw`~nl5yI;!wflH+N zY!#imQ)}}^zn#IJE)|+xo@a7P5qy6&Yx0pNwJ`e}W_7;|eHx0cV97TY$|2A<%@W^d zf-5-f7=;xCxE}!`6%zXjQ5i#?%;YBRm$Q%((XQ{bq2|DuAfoFolz(;G)7`Uc|%z8%bbc(=_E=o0ThU0(> zV&g1rkqUV;9}p~%Gzl@7DKeO?ofVh$n0w~_!x`SKWuJhzOnB8 zYf$MH45Zwu4b8t#n+=8R&7C?8l&Y_IbsG7j;9c^EsGAVsG7K&Y_p>A}z?UgzFi^2v zFozVoO!yhjIo|RbwWFt%fs)-j*T3fG>G>b-pD7387r1;IG3sUZvD^F`Cx0~m6h>I+ zG?*6+V6WxbZXIBoW|YdNu8$D$7+~#?r)prQev26r{7WPP@NY6K(s6vCd~(AvdAWMW zc=zsO&2(}2go<+T2JU=hG_{v!dOEXfO_QCNkhS(SYTAgIkmr2IGJVxU>>7IW2|S!Z zcZVB#+X*{~9h8(HC7!>6vL(8$0s0T!k2h@qvv^$INX?UCcD&Zn8qU6Apx~y1w8reE zY}F16ZBl<#+&H5NUqLiUs%of0k8q;Cr=6aPiXm!|G3sR;bLjK{IKWYf-rmb4Iv!Oy7@#;_QgniCfCVY~QLAGFdWJ>8=FC5ruw!HKhkPl>9b6p~k_`Is(A*N!-s7VS_!f(~bbj!!m-`D{+ATM#2 z7EE;&cbO*%(wNoEZ54jcHqPH!DTp0h**Xz+-;1trTTJq1a@#+Z8e-OEF`$pKL7#Q< z=0drV{t$I5lEb*S%dP*b`PZfFr}J?l@T3;F_vlx?UBffJ@6s%_RrOT*S9}JLRDYWs zQqgsIsBYz@HAt?hw~IE`%EG93u0(!NI_7JedIaETN$Ig|b4-bE8UV+~`Jw@|wTdf9E-@)JTh1pR6#wwmc_rZml1eqe`^cQBEJckkFVyRwV zKXP;J26^h(M>(t|%<|)nR+0!ukP-$ZKS#~(8VQ9F4wtv@_n+=^ju#T1$N4MZMA8-Z zm4j7P2z@i@V+lRp<97`ap$@DW?{dKjL7ywj3~%6jlrYePl({QM``kc--CX*F4kiDZ z1+YPwgaUsRa~}9UHI^S`r_!NLD+m|NamjYT6yYLG?H|nEQe{Q^2TecTzrO>Dbk=Ay zt49rSM{sH9>;#=QpO{5YnDBO%!~`iQ)OZ>gH9v)Y5v7_VH6 zlCuB>!jlpX<9&n>Ui?pjy zy5FXHtNDYrx*)hQgHsvIZDutA5G-RV62BMsmUC_m?-ql)Rj7kje^Yu?vN*|uG-=LT_+9;kAHB1Gmw>H;eTS7WfbWwJa}&Dl()#O6 zH#yWwI1qEGZP-%j3Y*~)Vy9k-_UgI~O;za#s4BZB0a5MqRdb7&KB<1BfvLFR$wxE@ zv`$Q%_nQJ|D0fLtn!U5mrd5|s^|{qR->;>?WFSYdm23d3Ru$+9g# zeo;w^gpWON!*+&l|?kr%lWtYkQ7$(8O( zF{oto*w^qxg2+@%b;9a-c5rX^ihg`mnw!Vk6+3p{((?*II|t>;;U~5HGx1$lc-e{J ziKCl=Wh7FOl=Zemw4sif?f)|$N>xf$7V0;LG2zDIn z)8K>WSi^e#P1i| zjf8-4qwJl%^%IC-=23vyBUUR@3>UG3CD1sQ58hHfwhP{hPj?Ah36~<0q?QXFL_KSq zb7HRD9}p!W42{ytGM+qMGS3l=Y=#46YT;7lm%06{g7UBiuJU*%imV(=L zrLyB7uOlO?ZQUity9R{io+`D^L=cdNx(Z}bsXT$@JrFPaL+17hGS3ftRkGD6oGI~1 z4pGImkt+TT`AUONj#R2KH*M;TzJm6m7ePfO)^t|2+ZlRf97^_Lc z>jC`Y`jJOJ?*kl%Ky3>E`Az6*ym@ww2=T4TMV;;O7tEU05o!}=X0N_vv4=*Wh|tOl zDgx2KXc#w7g5TWHzV3>ff>lkV_(xFJt>L|V8G_NNh>aITcS;Ox9*)S1k`j_Rne?*I zM?+qK3ks_qvJ-UqKbfFoHE4zW+PnOK)t+a%SDOt*(bCy%!$WYuloPdQyEjmD<~KwK z?BdbY2@&&|NWlw)d7q@c^vNq`xyJpD6zQkbCpckn2px?B{yxE6G>Xt4bQWa7&?jyc z;&0^WlK$d^4#Wqt9euU;i1**g>^ zRNIq_a~#|O;k_xKk*9If2G(V5me;bP7c5+kh+i^}RFd%xpv%w?b#*ZG$A9!hQ@Y2L z8D4hp-!?_e#X`!9QJ>_Z%uKdjr`D%P5Gn zT^W$yYeVP;cJv97xQhJ&L&D<=-TY;53rhTp!wYDvyWnZyd=hBQtyQ}DT2-h|$}4Eo z^8QYSl!>qv!CzK5kj)y3(MgSSWyoH^t92i=#u(mE$q><@ZfTxTH1y0zf@iyst0eaf zxi6n!?#F`%Kw|xNf^o2!|1{9?bW_OjKd!oT-);Wce!6)5@%jEv^bNna)|D^9LOX9y zs|lE}_EeBWH&}2~ki?%Z>rY*{>E^)PQ^uee#~<`ZeuW8osvG@|4E$;7#lQ`C$_)mB!QwSX zz~jwm{%<(4mzy0p6$?p;+i6(W7z0+OOf6vD_3&#GV!?Cw4q7c*qjDoZoXc`ifo^$I zo#0yeAto-g58RpZB-pyA}XlvHZ+2-QmgPOaQnKBHQAch_j>6rB|4>=^s7%C zB{v)cScVikOge+b{I`h~4zhVVIrziBv ziVEv}7XF^4SL#?j%a)#{47`Z6gaTJ=ve%s@T(q_~*%q})uwW36GWe4Wk^en8nc^q6$wO3!#~UIB>*gdgs6w3XgMDe~1Iz5Z5nXPGTwu8+ zslj%K-bFt96x9`)dRz|{1KU-FdAn`!SHG?BzbQX{cTetXH@=r$R;=z;Bl8~=v0J7u z!CzIt?HUT9!Nm= zM&)9;Xh>OS&hLLxh2CNYi5mqj);8;K+k7?MK;#@z zJ+X9|?s3;xy|nwcI%*9vzoYtHcq)ke1Xuz-R;ZK3{-e(!8nCIxnGB1FOK$uhYA zQ7TK&$c9Gt<{ooNt9p`sKCvu_KTgs-IG&Mxb`9jIncGJTPoG-3tVVIEE5AGJB$nFi zYvF4XLhg=E#Rw0po6mtYD^AaX+Ea@e3_~#mVa>PJx&C&cm7(>;R7U!F~{?M8(qXqM{c zE$-MetyJ?bYdNOREPPmwE+NrE<2x8@Hzt$-MwnQ;tK)Vo1|F~vfp;nvg9txjfAK~3 zr5Gsn$zYKjw_y;yq6X-!Wx~Mtg3X-;v_Y(xGU8c3gxvWEZf1Ce`a(CCX znDRW1tInwL#rhKl%Eh`bzAo)qTJ@x>t5Vq3Gn$spDHzAC0ewoua@@qQ@*NHV43_%8jELQ#8kHzmRaV{3@a>x_ z-!hel8jkKz_T+G!C)YoRUwaT72;0J1M5U#YXE10BmER;)moZUsZ>EgRY+_qB%L)@t zYx=+5L*w}oyq0i;M^QylQ8x$vvYew|kDjQp4n9fC6F-51oWewS=C(79G!(GFZgvA^!(JrDdzL_gZt4o3Yejg3=JO-9o^8yiR;dK|37=5aaTcf z9*O5fLO?RtDF3A-85lHaYOu1@5}hQ$B3>~HP4K{a($V|^{pHA?Ws*Ku zBE97m+?PQzM2JU*W=}^~Q(TwZ0{^~6Zj6E8;EGXF?i9v4{XY*-P+)}9lJ0b>^hM_a zsG+66VMa{ONP3f)0Dq%`G()~jjZGanniKWq7=ZMpQ6F|AlBcUJ>~IhO7XyOK4qI+= zzC*7R<+naY=gibyd3#&j^K2d8?J*{2x_0?t4txRY4b|@=%x(0vO*BqUE8e8OfkiZB z1DvglT|B#UFtMQ+8oihj6l593UnW{^J%wBs{EEMWh+H>+*x(%IwSLw&h z&%lRegLduxoeZxb^$=lm$6qk<(_(TKDfw8Ec7LKMA9_dqU)#}dK$7r?xIZh3@T zn)2Nb9Fg7Y*r#%7=S!5WL~_c5GJ3lh#;5a?*mK46tVx~s-HB%3K;DN z0;d#X02O_ZI`wgkt5bx*T`t7F75F4@p54Ed({RB3_X>uV_ao zb&LUCp?V;>EDD7;JmjGESAq6G7({xNenuMk@&Shf2)SE`s~kC3>De4NbymS8B*_3y zr(t#KfrY{IIq?76D@Z)0zlH%oRO#tL{rHi9lDNY_1N87lQ^)_;bHy}i0%}Q>k86QT z-6BJzDcp{N01G{A0mTX;oF_)nIcS!!p6=qBBFIenMqE5azE~Mzw^G`dvo)=lkH!Yf+7hMyBsg;D;SOA;Jvx&r;e)*(uUxr^El8{~;=wOrtYP4}BCJQA?LM&@45jEP&RI#?^9OQ&Xm%j(PHQ z0%{Xe--XI7Kfsk$u2fx*lYv|Dnub_W6!3`}P=pbm!JVBK(}H89E-o0B;4d?#*%jJd z%$WJ}kgyLH@a1RW`$yAOkAfCJ?bzjAk-n{?}iCH^$T2W>tQ1d z!N`9C+_xS(@1Q+pdonK#0kwOTC_N>6mz<@0xGyC^5@_DAu{1C26lC5K{okOXzo4>o zGd}n?t~gf4`$N)=kM<)!h>-e)$?5Z_K=LgMxWFg_TGl87`Ugxb^$Q!&w{Wku>Ytk= zlGz5Eh*MhjtpsxGl`+|we=A=(GB0@VxZSJfWF3oUXg2nBJ)^aR$O=i=`RmXm7F ziX51-oq7utInaDNIXP`JTB%Q5o)5PVk^aOqq_WHiJ+~3(haz_BBx5o9t0N+YoN^5* zFKV-&HCf24psTt@;U|f}9BbXBmdHu}jF~0z&_cz-hAZzRok*Ah6*tG?ppCTZ@)+$- zP=G0q?K%NhwZJRM7Fi`qMx%^rZ8vwE#da}8^8!s)2fRj$lx-1{QpvUa=0txMmPpL8 zEwm0Q_3D$%yIXON-7MHNTk4zIF9k2x8B(6shf)CPp+%>PxgRL7aKuO}gT5l!S(V(( z2OPbVDRL%Dd2`B2eX6J>EwOw2zQ$`MiH{wP zLH^6p=`uMoEd&B3v1qfxW6x$ms;QJFhOqN>W2Wu^@8=!T0wu1#ZP6|7E>gHS&aXw? z4aEyv-^J{|5LL!tIOfKEUw^MVb=)4_r1rha_M|xQ^)A>?pVk<1|> z#E`5pLY#vD3#$5HE#OcDBo|>VtBUy&{N$ZM{$N@cK!OWEpG7^qgdiF4p|hDIUs$^% zp=(ZY!M5AOCGSX&7gU(h!)s3A7P>K9zcsYk{JcyxS7Zq=+d%3%$Dbk`J?2r1GVX^G zW?jzVjt*wkj~7cjyY%GCXL}a@o9nmR8ou)7NOz$H7z!^S1HzsH&KnB#6nLdg{;CW0}kN%*2jlgr25^e)K9^_#gvvJuRrm z72y+Qze61c-Rj_r4xyeED*GEc5-zWU9PrWq>7Q1~=I159aDYWfNV?a!mPXhU8!AQu zcDuQT7343-vmC*$Q4*8ozgtdKcL?eDk&->=_klt)LEn|mvs2}t@3y@PXh^8cg-t62 zAgJ5tBawHZh%N!7e({;tf2piXtMLY8K_(hm;5nSTz;)as!9CMKC;t7hG^YpK)oZtL z?f>yVQ?Wm`z=Id)_j)7t_m3Yy;ywcbP|D89+0e#D#KP3r`u{Rf$w~k1QHJbVw(53l z3s>*Hs1{3V!)U`~APr+lg;9txSY_;O*TI<@T8`UQev#U@&50Jw56LimD2}i+ZX!y< zv&zj*t!F=T-K?i?e>>?vK!5ccgE^v^rYZcQ8m}W-6vH>=qQ{oZD=1?&E4!&k6@**%5ViicKf>sqg~vYoYLw@4*B6de$i6EI1M`>%A!KvY|{%t z6|Xd4|HWmWt21WJFzf{O21}`#y%mxDRdFq;UzM`G_;-4KQZJ)U0}0`zkDwT++UO5B z!f1L6&485=h-`kLaXambTD=lkoMyGr#$dWl0fR^sqXV3p%(NkLAS#6t1ss{&)(Ad6 zEu0gkv&jL3-NbDe@%HnRnV0^WZOHjQ<0Xpa_+kzkAqKsl*yny`*p{IqKaYCb;z@D&hEOA~bnqP!8mE1Ie`lI_X2S z=U;uydcaX`eOC&)s4mT>Oz!N=_eN1b*+o!xVKsF`96IZPfh-LHp!#D|) z?f({x%w*S-^~K){b5MBgVC|Nm(`sx|+!#J(o#P2S*}_J|N_TU0Ghk)A#ksz^jLe|IqPb1m+O2v`%Ub(#Mb%cd z=U=f->aXtM zBc?s-xC&m8B~>Aia8; z4C-Ge%G{g7pxi{8W2cDLNNFDLEpne$C};l>p3fy>wd*|vgu>QWq=7wPC)qlHT&smU-=EAFWj z+Y2@`3M&$EW}qcSIw-A`x|)5}uER`3#|Zr8Ws3dQuhy3RESF_mH74|>Tyq-^8dCA9 z?uL2kAmeLQ*+J_AVFoi>W)kYfQFRs%(z_>DmVVZ9{v3;18wIRtoRi4DFx5(79aTYPXP2{-4yzM(eSsgB5>LjF|;Lk zQyF>?1~_W0O5UjFrk2BQg2`z;;338tk6xi~uFJHG@+Zk{ z4TY15$5dPCaCQ)oW+NqLu!HBXKusW7JVfn@1w8nTU$>lPWsRzFVyioIbivrkNDyMb zi8k0p6<`t}M`YPjgko6P`5S%?+M))kHB$<o^lCqD>^>O4Mxy zdZKSlE1XV^mgVB7_(`2|27*UJtZPzo$f{nr6ZV= zT_O~C=iO=}{8ZstbK*gL$|Rg9Wb5cOMMcKHUsG@4kJOo&P^*~0qjB2`h5`e z`?3zM8ho_GWy&TwzxkJiY8F&A;4>3*{DdXe_&(h1qN}F;QwIY!wE|UK*p3rHCNYEW zGH7|&4p_)dyilK^$Dy2Z{(#0;y{Lb#noW=g>GB5lokJ$}6fK=yDCX9cO+8zZd3WiE z=mj02RC$~zsl9Lp*DYT(1vRb?iQBkk#&W@RUMxR|E9~=Lj=1HJ3TzG{yRD&C{ob8mFJ$ zf~Q{X3a5m3y0Yf@s$r}*WEw+(^RX2EGtYOQID|{DAii;ykM(RAtJu)Q8OwZUb+Adm zDa3PU-0hnC!4K4IAYy;fR=w0ji9_VXLBD(E;)+2g$Z1QC4jOF)8^~6Sb%D5B-Qb!X zM5Y`IMpKkUDH?J=zG0=YnWC(ZE?I$4C=GQ^U1WQDfd*r% zAVNV8EO=ysSiP(;ytE6A@{_|#D&U-(rKk&(x!+2a4k3N+6}boGQBk00rPN4`)5`1; z3%Wx>QT4%m_d;~wECsFV-uR(lCiWhcTYy?Yq2J$G!)Ra^FQ)iV1By4A=D-4d?T52@ z4-GE>f1XnsNU=KbdhhZ@Z3M59GyiJ-Q8gog*%#|n1D6hp5ZcODde88ZDtxBC@ZssF zv_7GDx*I08Wuy?^uxpkAU-iSqS3X7V^Ooe-;i=0PesA8r;du68=t)`=w6yg>xnyMo zUeb72zic+%)fGchpzWO~71ishSTwNqo^Xgsi+Bo+uj*d^ zr8aHHa5a^?cLKQh%I1qtUTutByr}&VGGiY>x_i)TPRCp1y6{Sv(D|?YzW2p6`yb#> z4(}SaH6&Uf>hDFzKS?k90tYFrE}p4hmG?X!x_NhJp+6R*4y!_c`I?uImnquMaNWhe zMcpJ%0vq&9GaiTu7uwy&0klq3wr7$ z9CfoFF^nVeYpDW88+aDED1T=^#Q!mafe5ee zscg7-)L(k3r}vU`8keA7gV4HeOLnRu>lS~L0oHEZWyUWm(PPW7I%o_n+>Z!?oyy*ta2HRMc!1nR*D#EyGL9fC3-43PR~8A!a zI&7U2+adZ}r#=vHEIiZ$S>LGa;>1iK1=K7Vdd~y2-x;~CV+-ih_o{8EYZZd@6I%r( z(lWErUs*PRDwYzwe<9O}3#H+ZV#MZ)N3ShJ(Ym&|E6&HE$waob$6WN9F1TVD!ahPG zfT3q{rF(nJ2jIBl^7OwZ2){(1=SuIUjF%}CwCL%E1GtFE5Zg5p(b_4TVAGX5f%_`T z;fC(q$fi4x1h7vQ$y+|AFcgn$UON66?G3Paj~&7_1_#$*))RIr%Zfbr)iRiWWfx;3 zO;tk@e1s?aN!%iEaT|eC6X|72>s9{5OE89Iptvj6INM#2CN5LqErJGoWV)`}n@e40gNJC~@)hp* zmXprBIzkjSGBrFd>2FgG8q22ibm94(<7m4^`wg(qI=tV3YU$QxAeb%^gT3aEGZcyP zCD|&%q69E=rROX|&d57|Eilo?hQV`Sk1#|YQ|FH>dIM@i1t6?z3o7S*fe7}wAmAKt zmc`vk`Wq5oB>{$o=kt0C&-1qn4L(K5DL16{mc#rw_3DlK(Ii4u(I#{15x{=87W&*ELBE3yjq2e_{EEV|= z1UUYo^Tcj_+aln^vChWAK)onLME7?K8)eHr+}os7)dwX*#Aq+SkzFpy8L>G>CMtEI z6>`>a`9fuj^aQ8mX#nl1()U$2WVp$v`dMY(L8zL3V6x7dwshw?gatda=Z++Y;W9OA zy4^@(s$IVwhwFC=`=zAyale!4WN^v_9Q8@rK#ow(hUT(Z3cdy$_-DTGOrj^QbS~SC zMXmDsld8H~0ABpY_`Aln(mC&6s4v@DB$s7IIaWO%JP z(rUgoz!-OLW7@%*1#c6&%>~Q>6U0j0;0ot4w+x;Fkazw7|3(po`eWLDo*=COb#^x- zpKSva$p^CWpyRTkrah(yR)n-l@Yu^aG~rX}jsNopGsoOH@ImC4W8k||N8(e!j_w*u zY!fNb<+4So_#s<|cA=L>p-+%~O*t*w#hs5};a!bl+-~7H&T^N`AY@wuW?U24F_eX; z=$DfF+~O}sKQqQ##+JM_AHrnT_6gi)<#S(}PE?lTF?9~(3ZvVk%OBHIq=G7QUAZ)b z{RNtV7~?}%K%Qi{gUIuw*e9*CPg4tTd~lFSCBcS>9)xQ9yk@_H_8{HeJvh&zv;JSeCpQE>po%`FH7DTYiTDZwm#EPH>1f`z0j7<_J*D#spL`vK1qnqM``@w3xgk! za>&k?Oqy%+LsgBED4`d4A0JTBr`*by#{Yr!>$njXNG#wG2rQX!kbnpk76;&^oU*NPzp|LLV+Q^Uoi z{ot4ixx-u(8gnKbINz_5F<-O*_l2iDoiBXALi01x6jT3}q7TYD+UcznKaG82AqP*6 zx%@1bnG6~fiY6FE928Xs->JF!i6M}maF+Pu1B}RNG5!JZKr>G`U|4U%(f<52|5DNr z5c{a~h+}tFcr3T`URE-$S_i7fP!>G9|CSux?c9;wtxoJkdcSmClI+veQ64*Ek?{Pc zr?n^pPi%7ET=&SmHn%Ba&K~R?YT+$Nt6?u8*|)kT5}g^3K0Jhr^E79Yc}2l{;Jv0m z2)xOsz+NLEfH?@7d$XXW@-5h_BH-3G2&)O5InQ@`7S0qds+zPcyr>nss55K}9?ADX zTk(Z^@&Y|QPSm(#C3;bYnP;gxo2~n%ohBJ9a6eH>Z))rRF;abEod4l+KV~fBi~aS9 zFZ=+$cOmxU?b+`_W}-0L@6s#-+G@5e4oC~yZQfrUSTZ*YB2UO!4SB5(3LxeV^aXz- z`1Q14-`5Y{!JU(%YyhN+^bb{GEQAn$^V0M0Mk>E^)2v%fn05QO8OF7Lo*HR0JlGhX~PdKh* z>r^=J9d z?eW{0fzXCl`-;~K@qqnRFvfK>0PImJyNy8Urm_A@^VZ1Rp615czEcVs{WYMx10K)& zTB+0l;f{3UOV{2J%YF2K$gxK!pb+Qf*D{W5G@%@n@2Y}w_)_v4I%3T?LZmxRU5`6n zfsA4X@{RDO@TV~4I@;}1!m>HB{N~LfNpwNqBQoPGJa~GOIjd*rFVcrDk=K94ysBg-v0>2$&-9-hKB8M;O#YVh z797&;A(iB#(A-iN6|7y zl${Xn3aUoL>b?+@M#P}zIhKj-Fy-iR{GDEXR3*2IooBriBC>sM6p5c<`6eU?`^I6q@0BC%g#`+0YkH zpqWJMUTc?i>t5cOY{0(h9Xx4sqS}h_EVoVQ(ahyx>q}7XSHCJS{AYYhNpq|{J5nQj zIC_W2{zrUMlI z9K|3l=38)f^Bt$-{4eA@BToTT+>{>tPu#sIx_W-ay_fdoS0xtGE}9UU5ETtoK#%Qa z@itCkhure4(yyO{A3p@7v$iqnX~Gy-oXk$9vetdPfF9s=F|Tw=ShIcoLF|e2CAw3L zZK~_i^d^ahbxV63ym5|o3?lXGfNQDYxSfP}*%s^**lxLQi`S_B^=M#a0I_;PJg1F* zaxnMtaU8QRbT0x;=X^OpJ%pZvGoOyt0fy$Q-<{9GSlINtUwC54MWOm!SfA9E8u~nl?`#6w z^nF}^RVaTO!GeSC6ce!OpFROJ6OAyzazNp45fv1O&OCj`{aQ>OT$OGAPMJlp{aSd!-1926o5#lm5F z_=9ky5#iuA8;FOl3_79VHV{D}^Qam7%mt?d3|rind~E7x{$6&o z7>~36_GhsF$H@HZpl(PqS;CbMMKL_d% z#kX%Ik;LxyzMS#xjumk>%w28BiI|sgMH%NJp4GgJ$(Im zJpF3u@79Nn*;|$0*plgMMHbDt78BbyDt1uj_r#>j0?=&4I8LaBI^z`Jak4YA>FKE~ zv=|FcXfU7|Dbh1T?r_u&+yil}xtNPlQZ3+0WZoS0o+vCE1}V(>E@$iPWf|k-F%$ zsLjSfnf_%BQ#V(vZ;@%nvu?RDe3lZfDihm`TX%Clb3%^sKB3c?`B%?PoCp(093 zlrz;bixvTgxy-N)scCHbBYT9&3cRm^wG!)-y=sJfC;w}sgjQgiL}BWbOt&!C9K$YT z+0ouzl~$soGO}D?qy_q>OQ}4*8DgcYVA|S4@lWti$8hlGZzh0X9^SKEICp)DI!zA0 z(4s$45SPr1{`drXEfqI>ah1L*#R{Dm3;z0NMq!HJ1r+weT;)&oK@bL1IbgjKY-74E znSlpplv4K&M>n;5@Py!yHs}Bvhg|3h-dNusP_`a)fm|lrtVLVW+FKIzx0VK+eS8%0 zyOyBZ1Ab^q$K0@7X~{!;Xw18?pim}&AqwJrYcE?@Q0~4iH1qEza91U%O{?-eEEL}v z{@y+Ysq~~E{W}}9-jrM17NBpW8#vy-zsa*q^5HMpLA!^1$iTR`;iez@t{*{R0@B}m z8Fc#$FO@;PhPr~SgEg{D%9hP(^K`{yOFQPFiXYjQpCWxZ6sAOZt@Yg2)+t(QEnQc* zi`PoT73XTs$rbDsR_L1%9WE>b^#XZK<89#;K{$3&FO;Ra#%*V(#Xz}iJ9GQwTVnPy zjjj?Ywuxg0W@&Ov)##K%OftJuM-GcSy@0ubcX&lyCoWIa)IoeX zRxC;`nGV?@QDr?v3?Q6ppa03OlL(^aW!Ax0uJ6%PMAW^^6l%V4XKAms2&|*JgI9(C z`;accLLH_-Y#+2f(o&vV<905fKB}{UBgN8__s(p(yPmn%>TINWf;guwJjMMlh4&3lrUK9A z2P;9|9g!BY7^Dy|TCLy@JFg#$pD|O^o(9~Kuq%!+!Bi;}5~BlYPT7FI2obKr3Q|@K zBBd3Q!W##Y7Vtp5nk|T9u0ZT#7>@|dPpX(8Clm1T#4oBG42o%uMPNTC^26>x56#o6!@DynX6jd+ zOs^1!tim2WDBsCkWT)Z90|Y)zfH9L|i5pJ|o+sdA_7oP0Gq zY)f-^{{4MNh^Rj2_ED8-4Cl2a>5_}PEfmTW=DMj@v1Z$)$c`18ij2B~-h?>brB`^sahh+&-0 zO@PJs0Oc&0o`WRHPYCMiLyJ$s|8JG@+Xfc|oW30Rw!wKr|Mc>amdCFq1B5yKOz`K>gGAD)CU(=XSau zdo=wm0fE_gRQ+GkM*Y_x3V5=jW<;)U^_%bMmJ{%FC-d`tSK#aCElCe-9;zZZD##KM zP9N6JFGg%X1sr1#DtBf19bm#nQh+5m3yc|hYFqK3(up*kP;vL zK?K_5@A$TWO5ZNrJ}-Cu2*jc`ih05nW3-F_bpMl=-`>RBKDKtgt}!Is$eqH6OBt>r zu%&D)*fBgUh7_cr@P{esF06~1OAB1Oc~1d`I5TN}luM0Nd-$ztmOwsU)3i5PJ7cj{ z%%n|-vkKK}-2ke%R_p^>3D>A(XlXOt;YY~0?b$|%U>zJT3kz529*JyS zT}pxgJ8pOS97~L0I`F|`D z@vLl=<}AR6a~*+uPye>$MpRG#q8LhN?_VJm?jWV$8BZ(eOTY%|nqrdhq`rA8H0UP2 z{AuRwd?WZvng!;&c$!ZPi``03esk`Tke=Cfwf15eF4FFbO;BCM&6cZ~=_EVX5`b-T z&rElStDZTakcQnr+OT|Vk5n_RngmutNPZaJrlKu8DFWb4H}`(^9B59f{TGhrMRd6I zMRxeKt@r@e8(4lo>s@_->rFeS;o<55I)Ou-_lNS9NzQIac%p?p(#?y3>g25DM1!ty zg^IwJA5ML}eS(yf5LPOtubyx9E0YSjM|5LiLS6jNI+^RY7Ln``j}e^*xx5dP;cW5N zca$d0y+|0+U-Ut(+@JymVE5VV&2Z2`+S>asW)6+|5V$e?5{=?fZF)Oe#4IjlxsLrw zF|W6XKT%1?ClsB`_P60~y(Rl9VgI(LN#!u!wnFaGObK+Y8H>S(y)^+a(i&u>3Vlar zdT0I>dZuJb;Ht6bjsC(y-ggi6S08?_J>NIN7}K21;#6TwJ>V}Kz%VADu=bf?=!U*1 zvtfk|0*G9o0{i13FVz_TZB79#a9IBq1^S~UGUM3mR`&5^{}Z{Vr?c~R{ufU-tZ91s zC(9?8$I>0Fr$)E=-vzRi$G}yDlkuQ)y!flR(k)0Q{v8tUf_ViC)FYEc(;Y%398L;pPRqHK)f7K;m2S4kS*po^_-?LEVJJHikoTM)ZfSdGl(5%hNl`H&~yKp&lV& z!g!20#`i<^k}(r$=$SKCUFu7+9ssT%v;qF?HU1At4n~}isad@rOBI|ycoGJ@me22B zLcm*0XqmFZ9ic3*LCNZNioQ{Zqk8AZ|Ge%n{ZlnDzKwLhp#JML-kXC=jG99QMknbi ze_N|VW`!*`P|n<5(U8$L@RI52?^#MBelCI+Pv1y(I32WClN+%h*&4O;L%&K)(QT zt5XE-Fx0do$;b{<+Gq&>_)7dYuVzt6L7gBpcw-fw;rWwjnQlWWHsldQ;UFkc zG0BCK;eQ{^#23>Jh!v+7DN->lIyLeAbhx+g!gll0A zS@~5Ra}9cEKYx-8Lu~FP8hx=t&2aBk1u8i+Erjgf#7qLB68A>aeh}s$3;%=SE_HCj z@iDI>>Bw=wHDf|8%DJCOWLn&adjK1J-(6EL<+AHf8IF)(^bKk)J2LMg9AAQ&c?Z0-C+ z)QF-d0Y5e4_~^$(_$A}OJ)$!>d;~{$<0Lry^y2nw;l?=lF-_13p8aH9e1_;HvDuRO zi5?IG3A#=!R{qy<+p3Y}vH3kKRH6U)LG|BxVQ&r{n5^z$fOd@jPp%e)o zy8Gt6=jOen`NoIkYQ_#i=HJ?D%yZ9f=Qrb;_|N0P@dxdlJvKx9-2#$cNgfPCs$*>c z5du{l@D^srqc}=E_|^)$R?z`duQCq<5`C&41iMz55fjoX{GR`-D@P#oW$*LD159}r zYar9zo8_h}*xVj|-i-$-=v~%eJ+;ySch9z(_{C z<%AzTQ=BdTpy!k|(3_EzEWlsaOpBC4aTaShp;q^GjS7 zXuHkW^|zujR5@@P<>W^43BDA<^PPtlnJ-DYEoa96y8Dv@0gNlp0vJ7@D2`I!v>S&&qrRHg&Jpomp$WlR1k{_U9thJJsgU&oP0*+AvE< zHMZ-DtKCq`#+N4bUuyorCGQ@YR0iV zQ^_`>jw$5026UD=KoR3nCQCu$*yB>b9Mgt zh)d83O^;%*EwtPy%1yakS)-o@Hn_+PQRitMn%EY`!YK_n5Ro_WXA45#i+kVBDq{3h z{PM$VsXifF=MCLDg$T4dY&f$yPI*1A>_G3Vl`u|P=0Bamv{WHngh_9dt6qnsZl{y7 zl<&2kk(ol!=OUKrEf&-@NXm1Sg!*IV!OSlqC824r<=PrQi)uZNEiGLHY*Q|~r3 z@TDc&xW%OR;+d2v8Xgut7RJh?CaWwZ9=cVuXv<2ZHM&W+MpV49^$jici)Wm3ii;1@ z&(!Cm3DCRGl$rWFtgsY;cWmC-K~bI;?u99v>UV$?m67?y38`Teg7V=1BY@o^= z<%i~ozRCwWQ2Fi~JQ)#C{eU$mvpHiTEubOsg7YG2kl8&glHe~bjb;)djKP515!paR|SW(_C>YdsmZq)h1=; zWk^~2X?13lvt;vcwzeX~;#GHCCmJ0Sr<6L`dr4izcqg_U zB>>fvy|%G4FQ8R}Q*&%H3#j2>!F8LI)thub~(16qK#!(vU-R6NV`R{9QLdr&)+skg>R^IdE)?gRg9{UW< zkcom@uTf55c4ANa>aPtMGh3gm;GnbSw9*>m+(MXywzMyT>3o3@7_B<&?4}LjN*d?6 zH|(58Z!P=BD$IHAb4`88OI+Sd@}{2o#-5}V-5eJ*!yXR{f|E&!C};e64F%wh5*E>n zke015{Ip*RwxkG48BRoSWhru+kb?yd+hSZSOq(t6!38VTh{s3u6e)*1&zec)CtfI> zMfe(;@UwA0oK@(6^d8d`c129FykNHY_P2wJHdPT|va|>_1WoF%R&_fj-DY-$)TKlV z@BGXoT#SbgH8)ef#(DwmP7k8*fCpbcyy3TXhjDAxu*OE~ zijh|;mJp?p0XPo>9;f9d3@>q1zj_Qma{}1 z?&}w(j4!<>3~T%KkjvXCf^vtP*s_(|eap^IEA_q*1!tsrjkV%<1^eWs z-4Z^>$;Z}z?GIBg3@uqx;RT0nvz(s?k8+*M*}B7QMtWgaX)Xk#{Uv+PDJv?=rZH)* zNv!aV;-lwjvjZEd4tSe+zm?x;KjTo){4MBtn?6-tq8r!mT)3iUpqu`f>N?nntzGgBj%Xc5Q;1_M{n}^ z2sQFqx~NQ<6=;&U}C%eStS$0_jDO_E8J|k704E%`b-{r_CSxxsap5_ks?^M9SsYCbPK5yMP|Zb z)xcRVG1KY>`Ytm2FQ8~0G?TBI0e6Z_vPaSfGnfiqC%!flgMwF3pMe znRwq~LopkSNjD`3KMcRtMTswZXvf5#_G7hEApadyDsIc;aZ3EKCR-+c+cKS~Q-H4q zJT71E1$YtK)HI5TH!4TVE&~1(;Jq<>p29*m;JcbEnfQEHSw}IfgdcgWeTSfJb(VAlvP`gxw+;XGI%lIUMNR^w?x(r4oq8>C%b@eYz1e+tMvB*C0^2C z1D&zeo!J?S4kM{I2N`=9Yt{C^*&GBRz{-(Z2qZrG>S3ToQf;K|-$#p)M8z~|s=fBU z+QEGT+u4Z8cy$tF2+*_JdQgzg+qC29$&_WYy@S1@upj?mBF(^Bk_0?bxqR zFjC%iAUSCfuthhF&{C(g%JHs%*+K)e)`MH9=Z+Gun#blcIoL!Uren_ie$EIBJ$Mt) P?*eZ^Xb!_d3;o}}{R#tI delta 48052 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 88874d4d..761b8f08 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Nov 24 18:26:41 PST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip diff --git a/gradlew b/gradlew index cccdd3d5..79a61d42 100755 --- a/gradlew +++ b/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..6689b85b --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/library/src/main/java/com/instacart/truetime/TrueTimeEventListener.kt b/library/src/main/java/com/instacart/truetime/TrueTimeEventListener.kt index 81bb1dfc..e667638f 100644 --- a/library/src/main/java/com/instacart/truetime/TrueTimeEventListener.kt +++ b/library/src/main/java/com/instacart/truetime/TrueTimeEventListener.kt @@ -4,6 +4,7 @@ import com.instacart.truetime.sntp.SntpResult import com.instacart.truetime.time.TrueTimeParameters import java.net.InetAddress import java.util.* +import kotlin.time.Duration interface TrueTimeEventListener : SntpEventListener, TimeKeeperListener { /** [com.instacart.truetime.time.TrueTime] initialize call performed */ @@ -14,8 +15,8 @@ interface TrueTimeEventListener : SntpEventListener, TimeKeeperListener { /** initialization call failed with a generic exception [e] */ fun initializeFailed(e: Exception) - /** next initialization call will be made in [delayInMillis] */ - fun nextInitializeIn(delayInMillis: Long) + /** next initialization call will be made in [delay] */ + fun nextInitializeIn(delay: Duration) /** resolved NTP pool host address [ntpHost] to the list of IP addresses [ipList] */ fun resolvedNtpHostToIPs(ntpHost: String, ipList: List) @@ -52,7 +53,7 @@ object NoOpEventListener : TrueTimeEventListener { override fun initialize(params: TrueTimeParameters) {} override fun initializeSuccess(ntpResult: SntpResult) {} override fun initializeFailed(e: Exception) {} - override fun nextInitializeIn(delayInMillis: Long) {} + override fun nextInitializeIn(delay: Duration) {} override fun resolvedNtpHostToIPs(ntpHost: String, ipList: List) {} override fun lastSntpRequestAttempt(ipHost: InetAddress) {} override fun sntpRequestFailed(e: Exception) {} diff --git a/library/src/main/java/com/instacart/truetime/time/TrueTimeImpl.kt b/library/src/main/java/com/instacart/truetime/time/TrueTimeImpl.kt index cddc57da..85351356 100644 --- a/library/src/main/java/com/instacart/truetime/time/TrueTimeImpl.kt +++ b/library/src/main/java/com/instacart/truetime/time/TrueTimeImpl.kt @@ -42,8 +42,8 @@ class TrueTimeImpl( listener.initializeFailed(e) } - listener.nextInitializeIn(delayInMillis = params.syncIntervalInMillis) - delay(params.syncIntervalInMillis) + listener.nextInitializeIn(delay = params.syncInterval) + delay(params.syncInterval) } } } @@ -136,8 +136,8 @@ class TrueTimeImpl( ntpHostAddress = ipHostAddress, rootDelayMax = with.rootDelayMax, rootDispersionMax = with.rootDispersionMax, - serverResponseDelayMax = with.serverResponseDelayMaxInMillis, - timeoutInMillis = with.connectionTimeoutInMillis, + serverResponseDelayMax = with.serverResponseDelayMax.inWholeMilliseconds.toInt(), + timeoutInMillis = with.connectionTimeout.inWholeMilliseconds.toInt(), listener = listener, ) diff --git a/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt b/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt index 27074d61..7a861d4c 100644 --- a/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt +++ b/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt @@ -1,25 +1,29 @@ package com.instacart.truetime.time +import kotlin.time.Duration +import kotlin.time.Duration.Companion.hours +import kotlin.time.Duration.Companion.milliseconds + class TrueTimeParameters private constructor( - val connectionTimeoutInMillis: Int, - val ntpHostPool: ArrayList, - val retryCountAgainstSingleIp: Int, - val rootDelayMax: Float, - val rootDispersionMax: Float, - val serverResponseDelayMaxInMillis: Int, - val syncIntervalInMillis: Long, - val returnSafelyWhenUninitialized: Boolean, - val filterIpv6Addresses: Boolean, - val strictNtpMode: Boolean, + val connectionTimeout: Duration, + val ntpHostPool: ArrayList, + val retryCountAgainstSingleIp: Int, + val rootDelayMax: Float, + val rootDispersionMax: Float, + val serverResponseDelayMax: Duration, + val syncInterval: Duration, + val returnSafelyWhenUninitialized: Boolean, + val filterIpv6Addresses: Boolean, + val strictNtpMode: Boolean, ) { class Builder { - private var connectionTimeoutInMillis: Int = 30_000 + private var connectionTimeout: Duration = 30_000.milliseconds - fun connectionTimeoutInMillis(value: Int): Builder { - connectionTimeoutInMillis = value + fun connectionTimeout(value: Duration): Builder { + connectionTimeout = value return this } @@ -54,18 +58,18 @@ private constructor( return this } - private var serverResponseDelayMaxInMillis: Int = 750 + private var serverResponseDelayMax: Duration = 750.milliseconds - fun serverResponseDelayMaxInMillis(value: Int): Builder { - serverResponseDelayMaxInMillis = value + fun serverResponseDelayMax(value: Duration): Builder { + serverResponseDelayMax = value return this } // re-sync every 1 hour by default - private var syncIntervalInMillis: Long = 3600_000 + private var syncInterval: Duration = 1.hours - fun syncIntervalInMillis(value: Long): Builder { - syncIntervalInMillis = value + fun syncInterval(value: Duration): Builder { + syncInterval = value return this } @@ -114,13 +118,13 @@ private constructor( fun buildParams() = TrueTimeParameters( - connectionTimeoutInMillis, + connectionTimeout, ntpHostPool, retryCountAgainstSingleIp, rootDelayMax, rootDispersionMax, - serverResponseDelayMaxInMillis, - syncIntervalInMillis, + serverResponseDelayMax, + syncInterval, returnSafelyWhenUninitialized, filterIpv6Addresses, strictNtpMode, From 95b53dc2c18f6ebebe5657800a715065826373f2 Mon Sep 17 00:00:00 2001 From: kaush <1042037+kaushikgopal@users.noreply.github.com> Date: Wed, 29 Mar 2023 11:20:35 -0700 Subject: [PATCH 2/2] gradlew spotlessApply --- .../com/instacart/sample/SampleActivity.kt | 5 +++-- .../truetime/time/TrueTimeParameters.kt | 20 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/instacart/sample/SampleActivity.kt b/app/src/main/java/com/instacart/sample/SampleActivity.kt index cfe7f36e..742315b7 100644 --- a/app/src/main/java/com/instacart/sample/SampleActivity.kt +++ b/app/src/main/java/com/instacart/sample/SampleActivity.kt @@ -20,8 +20,8 @@ import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.* import kotlin.concurrent.schedule -import kotlinx.coroutines.* import kotlin.time.Duration.Companion.milliseconds +import kotlinx.coroutines.* @SuppressLint("SetTextI18n") @RequiresApi(Build.VERSION_CODES.O) @@ -73,7 +73,8 @@ class SampleActivity : AppCompatActivity() { .syncInterval(5_000.milliseconds) .retryCountAgainstSingleIp(3) .returnSafelyWhenUninitialized(false) - .serverResponseDelayMax(900.milliseconds) // this value is pretty high (coding on a plane) + .serverResponseDelayMax( + 900.milliseconds) // this value is pretty high (coding on a plane) .buildParams() sampleTrueTime = TrueTimeImpl(params, listener = TrueTimeLogEventListener()) diff --git a/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt b/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt index 7a861d4c..15a42408 100644 --- a/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt +++ b/library/src/main/java/com/instacart/truetime/time/TrueTimeParameters.kt @@ -6,16 +6,16 @@ import kotlin.time.Duration.Companion.milliseconds class TrueTimeParameters private constructor( - val connectionTimeout: Duration, - val ntpHostPool: ArrayList, - val retryCountAgainstSingleIp: Int, - val rootDelayMax: Float, - val rootDispersionMax: Float, - val serverResponseDelayMax: Duration, - val syncInterval: Duration, - val returnSafelyWhenUninitialized: Boolean, - val filterIpv6Addresses: Boolean, - val strictNtpMode: Boolean, + val connectionTimeout: Duration, + val ntpHostPool: ArrayList, + val retryCountAgainstSingleIp: Int, + val rootDelayMax: Float, + val rootDispersionMax: Float, + val serverResponseDelayMax: Duration, + val syncInterval: Duration, + val returnSafelyWhenUninitialized: Boolean, + val filterIpv6Addresses: Boolean, + val strictNtpMode: Boolean, ) { class Builder {