From 496a8b691bf13a3bc8c8ca745136337fd9276ee1 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 15 Sep 2010 15:10:47 +0200 Subject: [PATCH 01/24] Added support for throughput deadlines --- .../src/main/scala/dispatch/Dispatchers.scala | 40 +++++++---- .../ExecutorBasedEventDrivenDispatcher.scala | 43 +++++++----- ...rBasedEventDrivenDispatcherActorSpec.scala | 69 ++++++++++++++++++- 3 files changed, 120 insertions(+), 32 deletions(-) diff --git a/akka-actor/src/main/scala/dispatch/Dispatchers.scala b/akka-actor/src/main/scala/dispatch/Dispatchers.scala index 2ebba03928..7e7904ec29 100644 --- a/akka-actor/src/main/scala/dispatch/Dispatchers.scala +++ b/akka-actor/src/main/scala/dispatch/Dispatchers.scala @@ -44,9 +44,10 @@ import se.scalablesolutions.akka.util.{Duration, Logging, UUID} * @author Jonas Bonér */ object Dispatchers extends Logging { - val THROUGHPUT = config.getInt("akka.actor.throughput", 5) - val MAILBOX_CAPACITY = config.getInt("akka.actor.default-dispatcher.mailbox-capacity", -1) - val MAILBOX_CONFIG = MailboxConfig( + val THROUGHPUT = config.getInt("akka.actor.throughput", 5) + val THROUGHPUT_DEADLINE_MS = config.getInt("akka.actor.throughput-deadline-ms",-1) + val MAILBOX_CAPACITY = config.getInt("akka.actor.default-dispatcher.mailbox-capacity", -1) + val MAILBOX_CONFIG = MailboxConfig( capacity = Dispatchers.MAILBOX_CAPACITY, pushTimeOut = config.getInt("akka.actor.default-dispatcher.mailbox-push-timeout-ms").map(Duration(_,TimeUnit.MILLISECONDS)), blockingDequeue = false @@ -58,7 +59,7 @@ object Dispatchers extends Logging { object globalHawtDispatcher extends HawtDispatcher - object globalExecutorBasedEventDrivenDispatcher extends ExecutorBasedEventDrivenDispatcher("global",THROUGHPUT,MAILBOX_CONFIG) { + object globalExecutorBasedEventDrivenDispatcher extends ExecutorBasedEventDrivenDispatcher("global",THROUGHPUT,THROUGHPUT_DEADLINE_MS,MAILBOX_CONFIG) { override def register(actor: ActorRef) = { if (isShutdown) init super.register(actor) @@ -116,14 +117,14 @@ object Dispatchers extends Logging { *

* Has a fluent builder interface for configuring its semantics. */ - def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, mailboxCapacity: Int) = new ExecutorBasedEventDrivenDispatcher(name, throughput, mailboxCapacity) + def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, throughputDeadlineMs: Int, mailboxCapacity: Int) = new ExecutorBasedEventDrivenDispatcher(name, throughput, throughputDeadlineMs, mailboxCapacity) /** * Creates a executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. *

* Has a fluent builder interface for configuring its semantics. */ - def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, mailboxCapacity: Int, pushTimeOut: Duration) = new ExecutorBasedEventDrivenDispatcher(name, throughput, MailboxConfig(mailboxCapacity,Some(pushTimeOut),false)) + def newExecutorBasedEventDrivenDispatcher(name: String, throughput: Int, throughputDeadlineMs: Int, mailboxCapacity: Int, pushTimeOut: Duration) = new ExecutorBasedEventDrivenDispatcher(name, throughput, throughputDeadlineMs, MailboxConfig(mailboxCapacity,Some(pushTimeOut),false)) /** @@ -198,13 +199,28 @@ object Dispatchers extends Logging { } val dispatcher: Option[MessageDispatcher] = cfg.getString("type") map { - case "ExecutorBasedEventDrivenWorkStealing" => new ExecutorBasedEventDrivenWorkStealingDispatcher(name,MAILBOX_CAPACITY,threadPoolConfig) - case "ExecutorBasedEventDriven" => new ExecutorBasedEventDrivenDispatcher(name, cfg.getInt("throughput",THROUGHPUT),mailboxBounds,threadPoolConfig) - case "Hawt" => new HawtDispatcher(cfg.getBool("aggregate").getOrElse(true)) - case "GlobalExecutorBasedEventDriven" => globalExecutorBasedEventDrivenDispatcher - case "GlobalHawt" => globalHawtDispatcher + case "ExecutorBasedEventDrivenWorkStealing" => + new ExecutorBasedEventDrivenWorkStealingDispatcher(name,MAILBOX_CAPACITY,threadPoolConfig) + + case "ExecutorBasedEventDriven" => + new ExecutorBasedEventDrivenDispatcher( + name, + cfg.getInt("throughput",THROUGHPUT), + cfg.getInt("throughput-deadline-ms",THROUGHPUT_DEADLINE_MS), + mailboxBounds, + threadPoolConfig) - case unknown => throw new IllegalArgumentException("Unknown dispatcher type [%s]" format unknown) + case "Hawt" => + new HawtDispatcher(cfg.getBool("aggregate").getOrElse(true)) + + case "GlobalExecutorBasedEventDriven" => + globalExecutorBasedEventDrivenDispatcher + + case "GlobalHawt" => + globalHawtDispatcher + + case unknown => + throw new IllegalArgumentException("Unknown dispatcher type [%s]" format unknown) } dispatcher diff --git a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala index 6cabdec5e5..63ce310848 100644 --- a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala +++ b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala @@ -65,12 +65,13 @@ import java.util.concurrent.{RejectedExecutionException, ConcurrentLinkedQueue, class ExecutorBasedEventDrivenDispatcher( _name: String, val throughput: Int = Dispatchers.THROUGHPUT, + val throughputDeadlineMs: Int = Dispatchers.THROUGHPUT_DEADLINE_MS, mailboxConfig: MailboxConfig = Dispatchers.MAILBOX_CONFIG, config: (ThreadPoolBuilder) => Unit = _ => ()) extends MessageDispatcher with ThreadPoolBuilder { - def this(_name: String, throughput: Int, capacity: Int) = this(_name,throughput,MailboxConfig(capacity,None,false)) - def this(_name: String, throughput: Int) = this(_name, throughput, Dispatchers.MAILBOX_CAPACITY) // Needed for Java API usage - def this(_name: String) = this(_name,Dispatchers.THROUGHPUT,Dispatchers.MAILBOX_CAPACITY) // Needed for Java API usage + def this(_name: String, throughput: Int, throughputDeadlineMs: Int, capacity: Int) = this(_name,throughput,throughputDeadlineMs,MailboxConfig(capacity,None,false)) + def this(_name: String, throughput: Int) = this(_name, throughput, Dispatchers.THROUGHPUT_DEADLINE_MS, Dispatchers.MAILBOX_CAPACITY) // Needed for Java API usage + def this(_name: String) = this(_name,Dispatchers.THROUGHPUT, Dispatchers.THROUGHPUT_DEADLINE_MS,Dispatchers.MAILBOX_CAPACITY) // Needed for Java API usage //FIXME remove this from ThreadPoolBuilder mailboxCapacity = mailboxConfig.capacity @@ -102,24 +103,28 @@ class ExecutorBasedEventDrivenDispatcher( * @return true if the processing finished before the mailbox was empty, due to the throughput constraint */ final def processMailbox(): Boolean = { - val throttle = throughput > 0 - var processedMessages = 0 - var nextMessage = self.dequeue - if (nextMessage ne null) { - do { - nextMessage.invoke + var nextMessage = self.dequeue + if (nextMessage ne null) { + val throttle = throughput > 0 + var processedMessages = 0 + val isDeadlineEnabled = throttle && throughputDeadlineMs > 0 + val started = if (isDeadlineEnabled) System.currentTimeMillis else 0 - if(throttle) { //Will be elided when false - processedMessages += 1 - if (processedMessages >= throughput) //If we're throttled, break out - return !self.isEmpty - } - nextMessage = self.dequeue - } - while (nextMessage ne null) - } + do { + nextMessage.invoke - false + if(throttle) { //Will be elided when false + processedMessages += 1 + if ((processedMessages >= throughput) + || (isDeadlineEnabled && (System.currentTimeMillis - started) >= throughputDeadlineMs)) //If we're throttled, break out + return !self.isEmpty + } + nextMessage = self.dequeue + } + while (nextMessage ne null) + } + + false } } diff --git a/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala index 9cdf43682e..56d98071d7 100644 --- a/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala +++ b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala @@ -3,9 +3,10 @@ package se.scalablesolutions.akka.actor.dispatch import java.util.concurrent.{CountDownLatch, TimeUnit} import org.scalatest.junit.JUnitSuite import org.junit.Test -import se.scalablesolutions.akka.dispatch.Dispatchers +import se.scalablesolutions.akka.dispatch.{Dispatchers,ExecutorBasedEventDrivenDispatcher} import se.scalablesolutions.akka.actor.Actor import Actor._ +import java.util.concurrent.atomic.{AtomicBoolean, AtomicInteger} object ExecutorBasedEventDrivenDispatcherActorSpec { class TestActor extends Actor { @@ -65,4 +66,70 @@ class ExecutorBasedEventDrivenDispatcherActorSpec extends JUnitSuite { } actor.stop } + + @Test def shouldRespectThroughput { + val throughputDispatcher = new ExecutorBasedEventDrivenDispatcher("THROUGHPUT",101,0,Dispatchers.MAILBOX_CONFIG, (e) => { + e.setCorePoolSize(1) + }) + + val works = new AtomicBoolean(true) + val latch = new CountDownLatch(100) + val start = new CountDownLatch(1) + val fastOne = actorOf( + new Actor { + self.dispatcher = throughputDispatcher + def receive = { case "sabotage" => works.set(false) } + }).start + + val slowOne = actorOf( + new Actor { + self.dispatcher = throughputDispatcher + def receive = { + case "hogexecutor" => start.await + case "ping" => if (works.get) latch.countDown + } + }).start + + slowOne ! "hogexecutor" + (1 to 100) foreach { _ => slowOne ! "ping"} + fastOne ! "sabotage" + start.countDown + val result = latch.await(3,TimeUnit.SECONDS) + fastOne.stop + slowOne.stop + throughputDispatcher.shutdown + assert(result === true) + } + + @Test def shouldRespectThroughputDeadline { + val deadlineMs = 100 + val throughputDispatcher = new ExecutorBasedEventDrivenDispatcher("THROUGHPUT",2,deadlineMs,Dispatchers.MAILBOX_CONFIG, (e) => { + e.setCorePoolSize(1) + }) + + val works = new AtomicBoolean(true) + val latch = new CountDownLatch(1) + val start = new CountDownLatch(1) + val fastOne = actorOf( + new Actor { + self.dispatcher = throughputDispatcher + def receive = { case "ping" => if(works.get) latch.countDown; self.stop } + }).start + + val slowOne = actorOf( + new Actor { + self.dispatcher = throughputDispatcher + def receive = { + case "hogexecutor" => start.await + case "ping" => works.set(false); self.stop + } + }).start + + slowOne ! "hogexecutor" + slowOne ! "ping" + fastOne ! "ping" + Thread.sleep(deadlineMs) + start.countDown + assert(latch.await(10,TimeUnit.SECONDS) === true) + } } From 42d9d6a5ab9b56c7a5a485bd33aae4dc16e62c10 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 15 Sep 2010 15:15:56 +0200 Subject: [PATCH 02/24] Updated akka-reference.conf with deadline --- config/akka-reference.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/akka-reference.conf b/config/akka-reference.conf index a66e12be0a..10a9c84118 100644 --- a/config/akka-reference.conf +++ b/config/akka-reference.conf @@ -25,6 +25,7 @@ akka { # - TypedActor: methods with non-void return type serialize-messages = off # Does a deep clone of (non-primitive) messages to ensure immutability throughput = 5 # Default throughput for all ExecutorBasedEventDrivenDispatcher, set to 1 for complete fairness + throughput-deadline-ms = -1 # Default throughput deadline for all ExecutorBasedEventDrivenDispatcher, set to 0 or negative for no deadline default-dispatcher { type = "GlobalExecutorBasedEventDriven" # Must be one of the following, all "Global*" are non-configurable @@ -44,6 +45,7 @@ akka { allow-core-timeout = on # Allow core threads to time out rejection-policy = "caller-runs" # abort, caller-runs, discard-oldest, discard throughput = 5 # Throughput for ExecutorBasedEventDrivenDispatcher, set to 1 for complete fairness + throughput-deadline-ms = -1 # Throughput deadline for ExecutorBasedEventDrivenDispatcher, set to 0 or negative for no deadline aggregate = off # Aggregate on/off for HawtDispatchers mailbox-capacity = -1 # If negative (or zero) then an unbounded mailbox is used (default) # If positive then a bounded mailbox is used and the capacity is set using the property From 6fb46d40c7fa0ced876eb388a2d8b062ec3f97f5 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Wed, 15 Sep 2010 16:49:05 +0200 Subject: [PATCH 03/24] Closing #264, addign JavaAPI to DataFlowVariable --- .../scala/dataflow/DataFlowVariable.scala | 29 +++++++++++++++++++ akka-actor/src/main/scala/util/JavaAPI.scala | 9 +++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala b/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala index 787793dc5f..6608f6075b 100644 --- a/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala +++ b/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala @@ -11,6 +11,7 @@ import se.scalablesolutions.akka.actor.{Actor, ActorRef} import se.scalablesolutions.akka.actor.Actor._ import se.scalablesolutions.akka.dispatch.CompletableFuture import se.scalablesolutions.akka.AkkaException +import se.scalablesolutions.akka.util.{ Function, SideEffect } /** * Implements Oz-style dataflow (single assignment) variables. @@ -27,9 +28,22 @@ object DataFlow { */ def thread(body: => Unit): Unit = spawn(body) + /** Executes the supplied SideEffect in another thread + * JavaAPI + */ + def thread(body: SideEffect): Unit = spawn(body.apply) + + /** Executes the supplied function in another thread + */ def thread[A <: AnyRef, R <: AnyRef](body: A => R) = actorOf(new ReactiveEventBasedThread(body)).start + /** Executes the supplied Function in another thread + * JavaAPI + */ + def thread[A <: AnyRef, R <: AnyRef](body: Function[A,R]) = + actorOf(new ReactiveEventBasedThread(body.apply)).start + private class ReactiveEventBasedThread[A <: AnyRef, T <: AnyRef](body: A => T) extends Actor { def receive = { @@ -91,6 +105,11 @@ object DataFlow { "Attempt to change data flow variable (from [" + this.value.get + "] to [" + ref() + "])") } + /** Sets the value of this variable (if unset) with the value of the supplied variable + * JavaAPI + */ + def set(ref: DataFlowVariable[T]) { this << ref } + /** Sets the value of this variable (if unset) */ def <<(value: T) { @@ -99,6 +118,16 @@ object DataFlow { "Attempt to change data flow variable (from [" + this.value.get + "] to [" + value + "])") } + /** Sets the value of this variable (if unset) with the value of the supplied variable + * JavaAPI + */ + def set(value: T) { this << value } + + /** Retrieves the value of variable + * throws a DataFlowVariableException if it times out + */ + def get(): T = this() + /** Retrieves the value of variable * throws a DataFlowVariableException if it times out */ diff --git a/akka-actor/src/main/scala/util/JavaAPI.scala b/akka-actor/src/main/scala/util/JavaAPI.scala index 1d39a0864b..099082595d 100644 --- a/akka-actor/src/main/scala/util/JavaAPI.scala +++ b/akka-actor/src/main/scala/util/JavaAPI.scala @@ -13,4 +13,11 @@ trait Function[T,R] { */ trait Procedure[T] { def apply(param: T): Unit -} \ No newline at end of file +} + +/** + * An executable piece of code that takes no parameters and doesn't return any value + */ +trait SideEffect { + def apply: Unit +} From 0952281e11a721b894c72cebca1218a278085d4e Mon Sep 17 00:00:00 2001 From: Peter Vlugter Date: Thu, 16 Sep 2010 13:58:25 +1200 Subject: [PATCH 04/24] Resolve casbah time dependency from casbah snapshots repo --- .../time-2.8.0-0.2-SNAPSHOT.jar | Bin 88160 -> 0 bytes .../time-2.8.0-0.2-SNAPSHOT.pom | 8 -------- project/build/AkkaProject.scala | 8 ++++---- 3 files changed, 4 insertions(+), 12 deletions(-) delete mode 100644 embedded-repo/org/scala-tools/time/2.8.0-0.2-SNAPSHOT/time-2.8.0-0.2-SNAPSHOT.jar delete mode 100644 embedded-repo/org/scala-tools/time/2.8.0-0.2-SNAPSHOT/time-2.8.0-0.2-SNAPSHOT.pom diff --git a/embedded-repo/org/scala-tools/time/2.8.0-0.2-SNAPSHOT/time-2.8.0-0.2-SNAPSHOT.jar b/embedded-repo/org/scala-tools/time/2.8.0-0.2-SNAPSHOT/time-2.8.0-0.2-SNAPSHOT.jar deleted file mode 100644 index 038768fe144bc03b784deb9c4bc3a323c8dc74e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88160 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

    CAS01}t&Y*Ov9J^~Xhl^;yLUu=cL%-gpT#Mta z;q2;jLG%hlyW8Oo1~Lw z^v+xRUR6IimSk}GgRb?5w#YNF&sAg)f#6*gGlnW=RXfH2wru7FV6TUG^3no)_Sv)nOJA;rY@){Aw=m)&0$+RV;)(V1oEsl%(Y1UtjZWG-vpblaO3 z^rbhp_?E?*i7%g~UcTr$L5$^kYK(nb=7WztA6owX{Udl`bNEVq$DUgjz1JEq_NR%9 z)wAb55O) z7NmHIHwtmgj5o6hXj;&2-Mo^)E>cOQOqBXAx zSMhDKVX`-^&vSD(3^`I_W;QwH@kvpQ24)JbId+XnL@>43@edNsF5d5| z7j0OsDW+*%$8b;OigDyEt=I$8HL}{yZHrgA=@6NCK3L-R$1}>Gdk<;FZ;S}w4w=QD z6TejH=iK!tf2c~HzLfndWMgP_$+q9VOy5Jc`F}t8y8F<+yU80DoH&rB?Z_LPbgQBL zKho_@pw{dYcfLIaEDQ|OI2mwX7X%-UL~6-~MS~8u`1kF`CRN2|MrOt{cN-d6*o&S9 z3F$4IVA065bo%tZ158IGW^a62R*`J=Q}Hk7TOaTAUl$%)+ON87JIUaf^@9Twm{l2zp?skr~(ck_BZrhRnto)5|_NFuXYR+1%b3#we zzuD^Sl)f#(>WqwdaoVv&pJiS1lwF>^ZF;LCFzKbkl^c4Bdt%NMZdtY_c7t7r-?ufF z`gW>6=J(P!f93DDafW{NIdd1+g_0bKYaHE~73*^T<)nQ|duXtEV|mV7>%b!%3%}f0 z$H?kyB_;U0;oQVnwI!Rre=e5NeV24y=Vs7Uec!)F%lfYE2s7IKb))sF3xWw1-JIpV%k@AkF2 zjT0WTtP_`JpSQYk%5#%5eyQ@)z1W{kyrm=RzjjjbG0sf)>s7}mOw)PH^7u*Hvi5lo z1s86N5x0CiQ%-owmCSvIq&LpkSF0YTrFwZ|ck9xwxzCl&%fn{|#~%_n8hohv{G~fv zyvhvC)%hWBtbU-JGb|;6ZL^X8HL<&&4+*>N(+RvcCD@!{ z;rBeo9-ot^HisSkYqH_V(b#9syL6dzZ`b(ueswyirThGB(aofs|Fyqmj$VILzg5X( z_bg+*hgZ*5bu*rjcC9%6U-y$#k#y#Ra#q1Qx5}*y2kRT`>^_S3eB6KW5BqwSkUB4( z3vDd+w{1l>Z(({jJLU1`^WVzmzt*1bE&X5E?K|tP`t^&Y)-AlWDnx41i^7#v%q!Vm ztqfueX|}r>pm5d0_G$pb)fN6zU2ZLZRerreYo(rn;>;ConGN%s9bcTR+OnmeZQ=4) z7i<5_IVLRs_m=;u2`@Ui_v|@PQyXV%S}A#T50Bo7Ch2Uc&D*DDJQ7>=u0d#TlH#PS zk9vvPUvuVu=ZNMJ`6d~9eC{D9J-47e5BphJ?cG9zL&Ph&2-Y*tjd_qMzH+BXT+k}Tz; zPcON+JDFU$;~)C=$ol8|=eF-&k(PAawLHFOlFo8>@x6j-&(s!l{#$ZkRa9uIfV`p0 zzdwE*S3F{PJ}Zc>x@1|<+GK&)$E%DCt2*1CeAngs>>)ha^J2y3_{w?x zH8QEVDJ0(PDpx>=WM0hKz;D-^DNC3+kVRO+C%UwWtF8;6?{FlPs6FNNc9dC{P8 zxMR?9xbs!{@2c|7e);pcX08>_B(pimmp7l+ea@1&@KKd|Yw-6Q8b6lkmZa%!T`nr9 z^m5qE+hVVCr<60_Oy`KwZ*JPRTBYT#nd>g$%kL|$JaA;F=uil+{1Ku%Yt2;I<6peC z1+Jeh5<8i>Orn){*0p^hx7KkSXnL?E`J3Sx=KjzY^)L3PnCI9fPJJchvZ5y_TUg?6 zV1C}y@(V@v2TrWNlB5uP(v(4Xg22)M!BifHD;B+aEXOi+65a;Hdu*s<&Q1Nwlve*T z`L58Kk_E34RTWi_h0bV}HfavNtozFC^g^W-;u|jT$G$UMQL?~``&3|e_`)>(gq`wR zO&Cfi&nXUJ+oT&3wS_UIZ&yR8-yyk6OjEO)uWbK)wdT(`g|B<-zRFCUA3uBUl28A( z-ZT!WGxYeoBHq^3yz>!{q{z$V3J1#tC2zK;ZRX^X-fzUYN=M|F0e|{bPeGYio^!R_ z3|$1}n>GrpSZpPIDS5?89kJsE=k>Jsl4m@ZYVFO?5n|bO?wDHAjDSKJ)q_DdQkr}%Z5G^ms(D}+aWN=&b0OH@_?5=!fregn!Nkn^WaS- z!gdFAbM}UEPCNNh$2*^8^3s=2y=P2Z8Y;9V@%v-><9p6cVr{+aw^1)@+B>dT|6>!D zRxf&OZ|OSi9s3?XyGcvg7cHNABIV`84EB?O)2^-D+IVpHq=cWok+-zs4khylY0BOd zZngE@5ODJ&^GD+#+v!W+UQ(^;e58Bf=DE`r(%RZ@T$z-2&#TPY7aH+YTa2@4kJsOW zcdmB^)P2vM^`}ei^d;$EE0bQIy>Jt{HuJ7xy}8J@w|3nu{p@SD3tbXXU8Gy_18q6b zpNEp-+Dr@#iP5czk`_max?m$UxexwiJL+4G#$I)3s~ z_iEVnEPCLU=s&4!q4!In7e@2D-|&C*4+vo6dbGKIN=4o@r;CaY=T)D#y#KSP?(eU^ zZ`m7|?2ZzUOj3sW9|>@-uf4M&n9e?6-hWetH%hnqd9Y=)P>t%;PS>irCocjY{)ojR=mX|kQO25XU zGmVS+NGW}iQBd5-I&D!ciI#jYjQ1!Y*hTooK7VR=fQH)@inlzFhTYqQR7 zrT1bdCNA3Gv@1%^)AiC-t(%LUbll1P9}~Dze1+CZH@8!%-B(wg&@a8Q>DtG{e}(JJ zJCxe;ZzOHjDw*1ox}~7kEHyh`G}?OIjb~3qrft0Ur?V~fjnM-;-CXD1Z!sSqBsN;b zc!hVx^-X^C^7f-Z_XzGOsc(uGxO-?Y81oSNzl^~%f)42#$Z zEIkWAKKreAO0NIq0FmSWpXc4ZwXWIMY@*>j_IHdcA8gjpQdlo$>QIr*wK~EmEZ9o; zzV0#pNA4F~3=J=SxW%7pvt8F>W=H0wuixfg+ecH_}QM;dAersEO++WGJW2$yEo5+{fFPz&>|J0w$d?@9wjg|ZZr@K!ZbWayA zS>!P-sOoBt@k7U-?>nw;OaIw-J1WoG_n%kyRO9{rFY7-|mQab&`W}#TzEHaR(;sIm zy@d`Z{%`dYaF=pev(7)~Fh3i5db@e$-ZGifKFQa=`Cns8 z3!HpJo2As*>wdwF!#5v@qaBE% ztNJJEo=k0!a%HM~@}thMC+QS}fQ_fr$EnZvPWWn&Bze`}Agf)%?#Pk$;4K^VW)(Ua z8+5MhFcZ7@&fP?J(bolTy8>=;dO34mX3TmPe@JV2=HcfYvn_)o__JQfB!*s5x>B)$ zEu_=x$Q+eGaZe+S1>7_CeDysT<)r#?9cWMg%5`biL3{c$Rbw?cy-IgREmt{uBiE4U z$b$G29U*GIZF-k#MW!EiTVB_7`r_iwHHtzDYmJf~B+V+adg{p;F-zi1XUOz}A*CGo z*6*!9GL`mT?var54xae5=S7mq!Gvu))Q)v4Nos~p_1tq<#PzVLx|gw};n~T4D^6WF zBFMEW=vf2T-@F+%p~j2MrZ0<(jnNEJx^tn$QhSrF>|(9YbM`p|YCm&%IBQkR{;C#f zk*|i?dscQvyI%aB{=aQzxy9pkt90(!9kR8O6I=6PpW3vR7xt#IAx{;b+bk+rQS{14 zy!yb=L%pGOpJya$^ZaH-vwLc`oqHxV)oKSS@A8TaJKEiKE|66fL_`3Gb9vU3|F9{IC1mcN3o+ zarV9SF~ZJ0{rk=DZ*Fe>_xb(({|p7v-#M=3Eti+s(Qk8K^^E;@zPNW5jxQ|#`CWLq z%dsNpy{yGP<+i`y7E1q6kNe#bkXPEY_*mid3z;qVw6{-839~Ubucok=8ppSd zpKoRU@cX^uW6u8@wj9PM1h;sV>T}Bmi>W1g-}tcfy7HB%|K?q9a+X~cJZ!7}Vag$w zW$#LM|Km*De5p#j!kkAXR{G=Yx)(otPh7pbqR+qc!1R0bSM%rz8rhoPc~|1UX~yw6 zt*13s_3pUe?sa?rqSJvt0W}Ufv~_w8WPmuqry7GR>7Ylr>6OV)v_xGF#34Ih*g6HRs-c`8CFJ@6C-%c%&Yg z_{bz$S>1DUkqkQ`tK%HX^l)8GddSZcM=zwVQPw@*b7tFtPmF7B-CBR*THWC<=Z%sj zK82Vakm0&$yh+GQuEVWMP5StnHAmMR|K!&lv0q{Lwz{s?`R6uz39goj?%g1k+PdhX z(7KNHMbm^|r7gP9vts#iyCik+CzQWE*iLvU_k@U(xIKI-HO?3d(WGqALO_9=4BQjMj2H=50}n2WyrewsHOVW$oAa`a93x z=G*B%COlfLHv89!C;i-OOm8RV{8<^1EAi{E|G5pGfy*~kzCNh(+}`--XQrj)Oy4j3 zJ@=&j_MATJ2G#e;_w~7>{$31!^rzKA`d9ML%%DqwIsbmmma*NqLp3ri_UM!4{uZ*^ z#jY$aQnh>${V6{9FFR_UUBB%~;!YL@hI3pD4667>qXSZlGV@a)4Y8?VxuD}U>e428 zrcGy6Qqky85;9cGYKdCi^uuXG(?i#$i2J)$wAb)P`fs}O*xaw*eu@18`8CV8F8_Ps z@biBw=H0t_cS?z`S9Oum%-!dU=U1n{dv@;6$LIO`nP;>dT`+yl-Kv|rlEY7WthxF0 zZRqMe>#5wmn<7m)@2?GAQ}uOi?Cm584Xdwf|7b5ydKO!K{M7F&nQb?EVmIH7Y&+;v z?N!#SX!Sfq!z2IVy2#VJt!IbT-n|o&=su-e{C(?di>qz#D<^o%%xdIVBvn!pIBorz z{IfMz*W^A8H;a!kBJd2MyAJP21Z;|tlw#e&+ba@nMmI0KnkCVxa(k_H-(r>bR!b*LYjos!VbP{|Yq#&~rNPTP zf*vX}IVx^1IOViuy;=;?N+0Ol{lk{5THK*$KS?dD7?Ycs5XJt>Hy`@Cvxx^!H?N;`q zKTQr-{65t-Cxcgf!u0||UMWLd9r9}U3{oeEN$$oD^ZjroPo_P!3*zTF^KjcD zk&aKtHtoy&@xa;C^utpAdrNI|B2t%!DMqO8cp}aA?q`eA(L04%@5~-bJ@meJ=Rg<# z`bqmwo!H9sU-iC0z$ebvr|z!{d%JAEx%r0+?fVx!*|zdI%gMW;!OZ?OA2jzmhDkX z$^1fi=ln#UKTXQ^la4B8hR7(is`N73b%*?7%wKjzqBf}IXVh{V=?TL22Y+-texG?R zYKq=PiymRd-&F#Ur++Q|HAoIgP>HHIS zwcdWa+Ty=+25;8!cO^;sEjN=*^vaU-TW>Bl(JN27&%fC{Bj)vyI)Sv+(^D4<{|=l{ zJLlN(xi`)qdgCZHzdUJn;Z&t4hVv1+%6KesN#$U9}>7(QHYp_wNz|OGPh4>UXc|Zamg6Ve{;J3(I@?7ipez zm(KXG#iY*U5 zk;%Qp9@g*kRQ&tZe@O0XE6`+f|8A(_+Qt$2taP);>;*nWQufoIOl+N{eUz2|%kKpu z;9;BF2F7}q(4G;b~zi@WC&N=mwpkn_` z_3#ZM)lP!*v;NHNlCb&1jav3usZ0!QWM*K!RX(Yh?de&kzs^6H zD;PLi9x#49BU~?-RA!#rE6Z$EX;S=o=FOX5-`tU}|NBe2A^L{u4fe$Kw?EALncE*w z@zC5at|ITUZC15)-jlswtnVF*Je<4R=UdaV>$&rPA2dv?)PEy)-S6-*WjCG(8CBOksJ-`Ert$gGy9 z3T-=Br8S+tUHN-z?bf>wc7)kmeU%Cn%5+*2V_A}*ketjE8E0i^Y}_ikT_ zJMm=U?XOE8FS_8fT%5P4C1|J7mal*7mF8r9ynkM;GxAW12p_A}jKe-$;Q ztEYPQOy6nN6(M|fSN>VgdD0?1?Sa7u$?UIU$$WO#{#D;8leK^0I`7``eV1PAdRkR1 zSm@h!ZjYOUNvSTo*Yl+!ZyroMCinTI+=)7i4?7>Khh|^7(!KremR_M0alx`5=Bm;C z>qEOrnK`FfLbyCq(^#{9_ojeE@c*7tl`t+V>^59!4< zollQh{JW;H|H!9r7XKCp#?3o(xA2ep;y*U0e?R`wzW9&K>9vJ_CI{9{`(GOLSK-5y z*m|iSCW(_OF2Dbt*m)=Q@o}+@7DttrN^*Mfp3#{-N#yZw`NJhV-$KHcY|1RknK*C3 zjycU{sTz9A7pbbrPP|Y%NA$9B=Bb-g)SaJhI+EkJgw5)%$@34s|8LjrabT8jTr(ry zD|q7R$PGu6nuI@J*m$HUFs0qwtXFi;L9N&tp`u5xwyueIoT=lJyzYxN*RsI01y17M zjr>E`W!)9JUaa)Zro$)MdH2`5X1%jdg)BZ`lBex_j`#A8#j-^gW*m!6eQ_{F>iZV& zbJCZ0tnb;r_`HeP%{q_wYMJx4RaE!ueB7aN=KJo7Q&-G*&;PV}Yp^G~Gu?Hf*HEH-WbQk)4kmr}#!s@-LLJP7{(9I&EoDsC?XV zTLbe_#zzMnii0l*DPCT1blM`WFMb-I6lxp3Epp)Z)bEPK^{oOMEyr+`i(e6>s|e^7*As>YtjfMeTm~gHPLf zZJYG3`_*gJ5_gKVoIRCzp+IY5`I9iWxvN^POuPPRQSPCvhry2?$tnIc$td8MY`Xqw z-A&6|<%h2aIcs=5kK>7VcYLrt`PdAP&=+b#9A%j~GXESGA%~SC%h?!ha275 z<7Nk}n``N(cdkS?;psf#sv@OxA#2&)?^`I^Kjq$f@xkh&vWG6cYz-;===1cRVIkvm z9=*#&`gQ7)1m{LfTyR`)FQ3ni2%luma1Jj4*&T}EFHU@}ooRjji)Huhyf2H=4FjD5 zyH2xIZ>f50H2I74rg_;dTki72suwxm{`;+7>*KSW8|G@)3cZu^g-vdk-_A{&b>oHf zd#~g@(>l-Y`)KU9ez{5D+vsf^)#?wAhu{Ada&o)9)tgfv_y2lVb#|I?=@awoRlzw5 zDSZb+ZPa|`7KDEk(Vnn7;sNKpM*D?#{@l4?Wv}h=amAsUUfhtr;cNq+<{9w)E+;IXFMuVHq-Rd;RzeQ@9_IE^L|E$ z>FLF`Cmz@BsaO?K*M2I~a|zq)Wo({nK7X`qD}KIbPVdJ#)z6>i^gX|0ufN=C-scB3 zb6otD|H^;+xBX*>{n2nPvtX&t?RWFUcb(|9mgb%45fo%LQE`gM(ssU(<`A!f`Kl9q z56#$@(z#`-;$?xEoL;BynPg0wv?;jMFtsaWzwa8CvNSzs%jQo@zGUp0ahB6GPtW^I z{Fw_(`qc*ox;4K&SG#ufQqu-E=glrc8x6Xjkx`9>e*zbn7{q@~m@1=FWo_a12- zEl==^(T-Yl;ClasDWSiapP4K@)AU+IeqrUVgI`QzLyD9lxm6yhoxi`RKitXh&c4%K z*1K+;=se=5eQ8Sd>oW`gMgBn=76y$WybUrIn#01tu!)Pn7y_(LM%gVoby~E)w7bah z|LJeQm%nT{dz8_sWAYEDf|E-<8zwMtavp4C;mCdAymiJ@L!*1w;*^&9uQbYtT(4 zo;B0BtXEIlnVUCt?NP6@hT7*U)+S8z6}z)OC;IBA)j>-=ET(T?ee}+{y}8fkT$(pE zJJQ&d!)LmdYI>W&EGtK|y^bHw-@d(Ozjpkph||BTqr*yLy99!Y)@C2v-j_Q)TW-tFH1fhPg$m-(6*ybqv~c}`tlIvluz@s)!dh<=Wl+{7O8u(@cj9N zgZF-)TT`Sz@6`5Nc2nb2cxsKh9C>Q}R*3V?IchmK+2oN_zSX69X0e@aqpb5V+!YH^+NwMW-}SWOL`LL zEVyy5FErJC&xiH5+2p$&U!Dl%yTD)8TAs2)m+8Cj@u=tL)Xtwy5Y=@ruA*U@miQ^7u-5`RqV#oWgkToH~5~dNuD;fWoCg%!UMT? zUZ->vZ_ZjgSIFa+ss83~c8XJU!gR|P&f2o?|NNHQe{9|?Yh<;V6mc%VG;&*(X_{2T zD*k6r7c4)0ps2Q>_3%3{sfsZ9NL8EscKPdewTJedlR35ip*7v76+qWCu zoFIPoQ#r@}EhqR3tPi`DJvqPi^Y0yVGjc93c^;!Mxwf5s{;kChhu1qK_ltelApHDe zrlt2>OMk!9k?+n_Rz;oLd~VLx%Y`-TdSd?H`5S+nE&r%JR~WNa=XG{=_6sgs4*y-n zJ%9e6O-?VII0II^^t-0%VW+2L=koVL^*L7;4IwpW@rTAwrnkB;*ZXwZXh~F0WzE6al?02b$q&BIppHwb;^rh78!dPMRq(k$!FI_d;roQ{mYCXU0GYwaEu52-w z_1+?MXY+MsVB^}B`g-d?6A7~oUn?M!M--$9Sg+wAWunvX3*Q_u?2r;VqjR$ zN@U-|Gp{7Is0?;5O>aoFzi^XWRx-9s-MN>;wPrgPtN>s_nFMUQ@d z{nQw4e7dnVW2(ONTEV2(+p^iETVDRzf1owispRtNLXN$nx3|X0$iIvH*LOsK>yky! z!_Wtn=K{MIdoL->U{mVIx-d~;3Evsv&2MJp?fp~q{=h1>LKV)5HHp_7n&M<_JvQD? zxNoO4MeG0Dw&K_8D|+sj)<$bZH6G*3Jw7q!%_GUgH}5@<8y+c_s_5^lHQr!5J>Ncl zM@eAr-C2!^DZ)G21P>*Y`^YS2S)0dt{;&p5PjbL<2{n$aw|Cl$L}t`oxH?@j!g|kx zHz8>^r&%y>o-r}+xrOHGwS|3as@`1V5t-Gc^gQ71ciZd5dwyvumbaFFjyZkC(`>(m z!G;djlR;_oZ-08VJ@?((eH*x*epnE@L)6Dftf!#)e_dqiy9W~Mrv@CW+|GDVeu236 z`~;Ex3*IxoXSpIKbVA{5(T2{XX^aXno@S5q5ARaDu9LjPb<+>QW8qIY<{SR(<6qI7 z*Ys3mlkVh|6P$MC&)&1YMLyZGcjmhvufsno>wK<1G=1Hp_Q-R|3$5#3YSpcnx@6C` z)UdsQ9}JdFvdA`(y5O=a`txfgp`|O3x5FcaBU zfX+KW1~GeseETm2h}eGL+WIZ9?UUu90}md!Hv~#wpLNscQP&E|GdaGEY+hEmL0u=` zbj*~0xg;^>_u`)Itg=mRzL&3;|2}8^{Z93}?eFLBXQ=2fbL2amYEm}8VxRYl z`IV1v&V21NXX1Oi@d+OrbZ+rK2|kGs$4@Cb8- zFbi2WnU=>{ZhOxX{QG9cyS~RdpIDaOwl-h5P+=o`_vK^8`HnC6|Cw`(he@^Y*pw^j z|J*-O^Y~^B9w+-baYD21-t#-Te81n!1z)e1rEK&+;eYqXuf9&JEXz9%%?tR2r#koB zYAkDd`{np~sb~wQAnAt_?gw2GFpK&S=iGK($6Z~9``@X5AK7R8?bq1nZD_TglWoPK zL)p2#Nz;rbyc05ewER?h_BuZ)^_cgGb%z)q>bh?^8tT1S`RvUni?_A?mYjR!YSz{! z#Z&ben?$<2vM$MJZsB>lt!LsC)z;t37p!rZrZaK#rxdS=_mxczqk|f+9I0{^@tqjC z{ix8>sCinGRxMc?({^Kh$DOdpC42j>uQu1->KL7z*V$Y)ZPw1!{eWwGhVd8C!r$vu-+eg38M|7(*46p?E}j<`ugwWrd7iV6w{X4YldU)H84xK9 z)EX^j;$jkEVqloU%)p?FZ*&~i8bux@?+x%^<$HB<&)KPHRCm zRVeIQkhLmi;^c^xi%r(eVOhDI<7@i|VFxBf3x#ukG>)th&hT2w6?yOO&C1_t&(1=M z=jAt)Pvq_BVEcDE;gRsR{^o-(H@@fH`|pVTr^N~~b~AbRbROSvwB&{RqGtu5(IW|GdZ{cKzfj&o};l@@P(P)aI}Ld)@2z`ULFu?N&L}^5w+* zc-xJEj+(8xA)IO9PjB!>{L7iMPCEY2$_;&NA*pv{{uO)iXAQj zot3Vp^R8FBRX1((SQAp{vTw?=rX@;}hSOC~u}-{o;jD>v#rB&0S5|K^e9(8}rgw1f z<(1wWXD1}(%~XAN<;bWkR$;(dCwLyZ3fgzR^PXQKOl30?N3>tcbT~nX}DZr*qzUU|HDAM*{ zbIQ`!VGbgUtRm4j#a=|Y2Ci7J@s+Q(cxX>}+AY6R*WTuBk`1}%^_bO7SpGn}(Y%|H z`aHtH<&!OE*6%C+H}mFZ`}*47j0?Js^OR{@^;tifDbLaNbJ~+j@2~6>@!c=|Yp-&o zWLd=l$xXVlYo9s(4Sk&1xbRNLqj}SH_D>BI;jw+m-%`HKC2@MGz*)=BgpEr-?)B8P6l}{2}S6{yryI1Vd+~!c- zdkSA%c$RkT{&U1JaJBi%$J$%gnS^Jndhs7U{v?3!+SVP8FTH%`YDIkw3b78|S~1&2 zl6R3spPj{xOOIlWf>M&Utlj$iiuuB%vM+P;GIEdn-uPicq8j7gC7u6Ej@rF-GIe9C zu3%|ny(<4D{>j9{EIL7InP%RBw%5vUEI(22rzUx|Q8Qr4iU~D8MU0>7&(N(u+H^?b z++~Z2I_EC#=+MqQ6*Oy-YRS*ZjIoA`uKT`NC8#^&!Xm*~ zaTQ@$(ir%LGDt#OI^|`Mu%p27|ICeNH*zUuJ>g(sQi%!N!|H!1lSxEFZ2lV6nM%zk z^|s#Z*faGPBlp@*j5Qjk=lOC4pA^{a8e|=8efRI{d3N8v&zIlNaObF)bHQ<~+mZWp zxaKJCc`VU)Vi`|+y308c_R92aQ%t$ooYQ?~9O^XmIevLs?Sztkdy8qI8mh8^PfogB z{&_^NIsf7*!JXQ=KKlao-WC5|yHUTk^vIk&8ip!S#|*zL(Y7X1E__mn9sZoRkvTPYiUQS^Xl ziLuWXi6w1vZDp6O(mIaJW?QpZ+}vqL-)tUbuU}S@^V%0Hp1H7Bchk=(uERllW=`hT z3hiH*@auy7p{DvF)u>m2X+7HAy(nNnEq^cjk;Kj{`)~X5K1aXqS5X&WV%9)_nROye;z#i(zYI zTSLy{o>Z&KS-p$yl+Fq;-?B4n^8V+4l<&TnVJ6G3wW&R&@{l**_TpolrQB<+=7psA zYi_)xr>a^vxqe-rr~8`~0eUYh;tKyY2?RxyzS9be`6;_PxQ ze!;ORS6aP;+^1eizqjh^rg>7KLGhKV!S2?XyT3haI@Nvt-NiXKjTb+@Utjl+slj?fV?z1j^M(F0tjdiWZu_*5m?yGal zr|!-(aJUgTEok%m$r@6<#_7-5Pc?Tx;QOn;&-~Nj#_z8V2YgY9c8l<0ZzMHq_Ly z%`Re-%5s=Jqx0OU8)nZ8)x#$;PtRH2k@AV@?6S+oT9@jrLV1>NDLlAzYnEW_>}#hp zR;;}d;pqJK#G+Z=Y1?>iZkSj0+wd>n?5Qz(Ra(XM#WyBCR!v#S*}YBb$(o!Ao3+16 z#<*^lY;nA_=8@^joq2(q9gj($G}sqA{oAq)&VNc}YK01o3Nx>32fhvyyj^rj+U%~$ zQt6py-QR9SM10M^_$@bj)113g&);zt?UuS%zVhpVMeVu2me1Jio_W#6b&jpy`|gIq zZSw^`e<&=QAapvV=vztTqNLL|H?LXgXOiANGi74gxjv(lf5IQUsSMln!{4HMqt3}) za@NK#7VKPqtt`M5`EF}ai}K{!$mlF428M%d3=CR?i(}Bzd1!UtJ2}_?ii1e&c^&=K z>y8crtga$rcVee>Ez;0$+NAJ;>6Owk|79iW5iz%xM2GyFdW>Jf_YdPgjmL9mIwkE< zyRA0&%**0u^D^K6`Stg&dV^*NYthvg2H&n`1%xxzUOnQ?wEvB2mbFE|WZwI$tC?~` zt*xY^pN3DJy5~TJYS;Ie&%bhoT)(!>7I^odF@D`sePdTQ@p853G3a!qCH^ojYG zg%1(R&U2|_lYQIwRTGXu3x42)3J8Vf=kxAwzy~wwLueL=_ zUmLM3U|GPd(yOQZgMO;K-Zgc8(Db%lK1a`)v$)OvVa>OVrHbdtti?r_n)P2Ozc4%V zz%tG$!J%Av?w+`mi+t@<_>6@wO#jThGr6SBaB|PP?;;Y51C{44P5v@v-=ghbc$uYy zExgZ{ecm*GUh|GAQEfrq(hI}wj9(aZ$34CvD0a5^g+zDU^9xMf(=1AwT=R=wsC3_Z zbU{;W@8N})b*lQE(<8nxwx8Sd!lqqs!waQ$y^SxD`C`*9it@##UNq&4O~05f6P0-J zZ2iR^N#m03FAjf1S|J2#K$uSxR7qfFU})pUGg5^pCc!BdrSb4P=(2;zvHeG#ZV9;x z3hFmFG){@$d*8uv4Of(2ke-rOTM2tp?x7_sPere+f3U#Vu7Uq)g;{6BZC&SMWs}Z6 zoAdd0vERPC^Y`!j%TT~NM{(X(@4kcbvnyw9Nr}B{+Pmf5C)dpf+`HQ5U6+&+T9&$t zlg;<^jdN+Is`tLTRkm+N(MkQU`8P6(W-5NVa87WeW^z=`wvZbS&Mn%fcx{FMj_9t>?%6g^S!MZxnGa{A)+bo3zv>g>%6-n{kx7)~ zuBBI&i%&iYRD+8ZCoN}NtCgX@@%o4Q|)d@ROUzZ15XKA<> z)L>S7Lh6ar5APRQF6z4^_2izdY}n_Na{c$O+|a+Xp7&)w@3_|f&!TGKRj+M(%vhP7 zp0QrmnrMohT0SAQilp;nk5oDI6KeXn6}$>mVQUzQrYKAOH2hma6Ny& zViLc}iX9Jc=LJ2{)8BRHleVwMA^`}&sbVCUHMS*<=ObL#bF4^)?0s`2gr{Y7)jlTBUW6|%>r?gg|({x9*7 zOKex?Sv6-H%g*_CuHApVa!+3FvS()7b~+ZBDaGD!;CpnvN1{)W>Cxq!33_Vl&X=rq zX1*)EM?Cil+lqaHT#HPO3AiT3Kp^oIU#Ru^8bfOj^kCc?Go*kv!?vg zU@7%-dOJO6xpRQAP}ck@R>FSkKTo~VGUb=eoVe91Y=d4oS?mo9+`aTljzwx{;O-?? zj{aW~Hz{cPp_ipgC*9Iqx{qV|b*-%SDZ8Zn)`wmx)7<*Bp=#=$R^4B+*{kC>#!1#M z)UlH~@>{U`k42>*!uBJrItdRChY;df<6)xw?ek=2vyi2lgL}dyIE)j{UGS z{o9i}#r9S2=kMQN$9zC`hI4`SN6$;5vlIOlOstJ2B$g{rNHVt(TKzZg0=Gbg{)^ML zf+`%Fy-(jREP5b+?02L7)MMw5`U}Xctrm3uw7IiV{fM~h{H}c>C+iBj0wMInU^N(+3w%O-v`j6+fJ-zo! z`MaL0RY!SA|J)A@iE-xBw*3h_R=9rt*YZM@)EQ16_?p)@-sfJ#{Qv55=ZjNQXSl6c zzOe4q^vj#goVe2%7OrKB+a40OfkDKmdE3EFj(HahUr4QykTH%hjWD*zyI>q)Zjrbl zal=YMkI*IcoNA&n#yDDu#OReuH*0#@ znh#2bzOeG8Hv`f5B!^r_rG?fwA`rUM^d^DzN(Pg;!jk_LQ}Y-I!ymt@Pzm@wSOV zM_miHMS6VMS+H%Ys$O5`=I5+auWy>$`gHk;o2S=^6)&ChHf5%p_?erpl~lCT%qREc z&ELGeRYm(*Z7N4~#`>4`>3ciRAzhOLs%H+>nkcEbp8!9bQM$3`Wu$_q|k=L$P%Bwjk^8Jzwn%wk`|MM?Vx z`BR1O^|n~t>khj;)8@^;Z}rvHv;Y2leVd=bxZ=Ekeue4%P1j|wr%C9sq&w&`FJ? z(0ujOw||AAvcfygPxcRDXFKjUHEOq(@%!MXBBiY%cdH}kN&gJK_(k?!dE)1zr@t)> z);`T-H)ZLp#2s2^dvBfdy8gJTMd#fd6Z@t9$G&Q*p49Vrtkit2mv`ct5*zMJ&5b&} z=TBCI6vuk5^LVV~S&;0kq%QkfQCHP$$wyK1Yv;{YTih1Awf#%|^V?3&`AOaB`+b+H zW`%!S(HEOp=bWtbCb});vS#LuYvokgS~ ztzNF3|L)K7TK7LZvGGT|TlzN&%vfOUzUxx@3*UOz`d>26GK=pm%nq?&e`(b-JMn~v z#3jcUZ-ZH_R=K=iaiLIkR=`5x9pZ~Dw_KcWHg(<{EB99+IWLWJE|mHxd33M(u-wy! zbAKEAjAa~d_dBz`y05yLKJ|sLsMT_p=b zX7*VHKe@`OI>jLKvC2y0I_=uznh(rB7RtPT)+Tnnv@Of}K#`QBtN`BfIazkOF1ru=5VHgQi}zMV}eQ)7^LBhzBh{yFW_ z-k+Fap(Q-0s!pSp>HY3m2~TW4_vxC=b=mZDxAvCWT?OyB&YAEuK0P!wnDPc?o$IdxaqX1~(=nb(q+ zidwCc{CZ>AyFZCSH#GhzXC*LAF8UO_LJ1A#;{NMlA)_3pSvo`Xup4nS5xzji87haq6TK2s&vwvir z+JwIEYPuy;@5?`%`d%l#c&&oR67yN&%Kedjn|+2`NnbW6Xy+#UN{Psi2e#+ z_FN&4iR5ji0wXT)Vpb#&G8T7t-7&ElXJ^lj>m=HOx3ks zmV7*P+lo~60^_vrC+;fWT{^YcXLX6FKp}&DGNKDmuQ`4p6PSpMzq!OKCbgFA1tJA&0cGMFGsRU`$f{c)rObrJ8$+T z2~AXYyl<-~Tm9|LyZ8I;>zEG6_$X$W)^86kpB8)GQR5nub;0ZYHwPliqt9)+pLz3O&i1@& zv!+{rpOiD5R6a9BTf1&~=Gz~)w~2C`%4&&vy(05L$tsSjj2pi%7pr{dxOslzD%~$z zAFS?4T)1aba{Wf#^LgfLqb?NQKAUyq4cof(wLg@kmPc7?3YBMC-hP*-ZKW!l`|EgC zEmLE4-EPT`%0)M)f4mo_BfWc`c=wYchby;FJxzSk?d<@s zR2W${NlcXpKHwbkc&}Kp)v<{ZUnPtU(~?b+&K$Mi`YGVs>7c~)Q&mFvL%XB#(FuGW zuEjTWO}$hMH773+3^uTxAjKOzL*S)XgJV>bd(aP#x9{J|PVjTCeLDH&nIB6WBZJ+Y z7vIrPOMPZ?COPO?;8MfpDH@4~QWd{^uYE7=^F+9{$3SP^rHxA-ifl6And&!P!*)XI zxpN}l9_naa&b!UK%-2Re=iF+O*hNp;5-fIW{EI)-c-(xYO?tr5ONDNWPlpF&epy!= zx;WC6MQxSm(rn`?)`4zwV)uXGer728eX65*UiylP;HA;3A=j+VZMz(h`H)XDur{md z`5G;!h$Dx+#2D{9&Uv}6t=~eoJF08y_2A%m6fvbhjaW-f7r~< z^_gsX*CX!9o2QolpMQ@zH}CWH`}_ZMK9I^{IyfbAbJ49;c^ORNLEExk@0^j9ow;|7 zt(o?%9Mk1es~qB2*?GN|-sqF0sFI{>1 zTwhw0XEW_Roi@*=?QfQcgusjV0+W$s7T6L3Or`Z2|_Ot^oJ5-H+M}GP6 z)@J$Fb@leLQ&W5rx&-wCSH6+m>oxOUZbDDl4DAA|#7Vz>uU@j;nb+2?(YGY(+P~hX zo7{EIiuu`mzppw^%vADnM}bdQLyYAiqslWWQR+wJFLPy`-EeY`=-#CbOxgcu?_MjO zW_bL<^%Vl=Ur26s*|<~n*x`wNS0mmo`fSB_i+jyP=VwpYL4TDIBJ zZlxOnU-=yPOhVhzpucyvhd-3zi zf<-CUKABXPk>t4($=i_G%wbJ=m zsldQ(R@E`3kF}&F>XAT(&Dk3!e2ENyCphd@y*qc|#QIC}9QzKPe16WifnR^!!FH2P zCq18vx=j(cSTB<>=d4Ejm;3Mc$SnNN>9Z?1Z?Z$feNAKb9e?f!=4|`h@$dXq-4Bh2 zPlPL8ziM(Q&dRv1blrnhi;cTiOg~q;-%37sTf}oVyTa0AcSF7ea^=0NUh+U}XO{Wj zJEuzo<11#|`)CyFcINPxb<~UzC@{#cVms$?jZ{N$f|I77u(ZzWWR)(+IR99Mb!rJO^ zualip)wW$L|Fk*1_qW}zuqa3Mp2<5m5v|+jyr+mfzj$6h@Q3Jb{`7m7ax?3nz0JNP zc|>Mwbao>1xf4_7$p1kbeyG1wzc-1Qf#EARQIn0Ju|jaM1FnuCmGaVQH-n@cMcV$m ziA?W|zGHqsH#x>YP0cVZxU=igqz1KDu31L}k4w!E;febZ;<;``%oD~>0W0Uo2`rR6 z&>3*%+VlUv-d|q6{O9NI*Yg?t3l3e7F*I5^W7oQuTF&uDLVR?^LVQeDsa{D|UU_b5 za@RTolb&qPvoh&3CLVUvlG`9xZ_4ZJ&+gO3JH>nYaz4pB*~cU&-aZr+boZ=^-_?*1 z%cr$h`)7+s%}RWA&Z6zy2FJp7FR#ZvHY-%u&ibwS*vmRNm`A#Ndpc{JRJxbmp*?(e z5_Fz3FFkuSh+m~maHp1olX2ASj|{myz4y8Pv90dV@HLqhtGe)BU;1ym$C_@D$x>TC z>aciLbmYC;-R|f$t>WV~fnd{#{})uPODUP0_<8@@>7f(Dzv#MnNE{F_xAhS%_dPGs zwn}qF)}y1Lo8K*1vD)v!hM2XnP4dZi)YdNEw!`9T^mil0GcEVed3g4;c%Ha(M&xYt zo{W1kI*J?l6;CRss(CS~_#{uWo^g6<@>8#iCHq!5J60L)DN1@Av@?iFGWasH;MFDb ztW!SDY^l`waBkkEC-bFON*f;TY_{5)de4-ddsFhn7S}xw!s3leZm!gfHEG)Wxi~7% zde*wn-&ZtW6eo3YZs<}d|K4aellxus!O1%|UW&>JbkZ=NqRX{xS-^ycCo*kccp3Sv)zp<-AIkfA zlXGW_LD|lOwrtbOj(tC1#Nd3_vBcMjWuIDC&!qsRow3#5`j{pAUwT=+J(%A1E&9*B zmrJFLZ7qs^e`G!WV1Ag%LcY8J`4V$q`(yR?FCI8C%Sx|d-z&oAvD2;Mg2!{UTY}M_ z4yju0ei36o*LAnXye&s;cQ)*q5nsAs@~zn!&962c{L(d}lWT_Em*^RcJhu|uT+T$W z_K4eYKR%uzXY8K7t{~m;W9)(+G1Vin9w$`fre@1`N9|u*CT0BeR>O*~H?y9M-Fn*TP7E2S&uJoCZ^lC?5fkt=f zMB|jgnw=d?%NeD`+T(LCP3>OfwC&h7*9Q))$Uh8&p=ld$YLm3yh*KVJ( zy*B;s-D0_`+2_uto&1*5QgQj?b*Znl+uxW7sBPkZ-J6xSJ#JgEop$j*$9EN9&%IGQ z#Be(NjqP)hnfn+zwVci*=)4bkGwr$Zo=g5Nzqy`%%-XW@_jGsMx)(pzZ2DEqUEDqAT6f;o zwBKvl?7J$K-m_TOU0^MJaeh>Rr+!S*)}Tc1>9OaFXE!cx^`0?N_!;AQ*W#ONx7M_u zJel**$fQ)vRbY(=aL)IR7 zH`4ZHiOx`SSTI{XahXel%zkKbKGap)DfwSs9b7_nKm@+XpS4v*XnZPcK;iLy_%!vtR!yRRaV)2X=|ir-J=}l-}$lJH$DG9SJ}pMYrgX*{*qryT{~B}bup*a zAAa#S@1gLsy6Z3d#ZC$*u3=vDM!{{L%rv9Bir-$G*Gq|9z{b@0H-3r3(vL-J7MCpS z?2Ib;AK}ig!Mu3>-iD6PL5q}ke_(mqzx-9moU6<$bXhL%%UJkN9<@gy{%%&^dqxHZ zUlzg>*U*i1Dv&~=chX(ZQi;~{OYCn;wEq*o#nh^nn=78hRldc^gQaEFl(?2>V!1i1 zOP}1B^j6_xn1WtZ;}PZ$0UbBD1~-bRq>HY%t$t>`dH3hn-@ngi;QKfyp=5I4E7ttO z8VYMlif6XRRZsaePFU2-n*k;c!zqf^B_gs~|1z$fMxA9zb=Ir6b2mfZ@ zvr;-ETOBCT{?q%=l+^DWm)8r=pBokWiS<>>&E&cHkHlISnbi{a2_HN7`{D-qCGsip zqWcUc%wHmX^2Z_D*ZfTS;xo)QFkC)jlJ;uOHkS>nE2<`*F=`Yw%hOE0wfCN@@yp?rQrV}&VZO5^{Ho8teuIsT)u;a0$rsg0 zZd!ce*u4^`h*v5+?@yY9q=(7f@twIm(dJb18JEoqKI}WXp+itA`KooE*tIvJQr*#y zgIqbDMO>UVKXOAnhg`9y9XrQauGzu`oZV4RUiC@GKUL%}oo#A!)L7u!)ulzu=NFx; zKRD6yU(~b6zeo5b!ZT{F%9~y_Tbj_Gu9|5P9#OI{@#fBByCwb=1PPeVnn83)u(96t#`yOX#^#V&aNUg!%i5IR;>*`e zw9l?NV-(OdO>gn+1swvbxewo#D4#ABS)NeNQ?+_mw_a6)oR-z*)d7nh=oxPYU6Ukv zuI7JD9ixS7v*PWkiw~5oZ+&i*Qz9CEXrC187LWfbTXr6oyu|yE+qGcx&4~vmi?+&7 zof4O!X;`xMf9mtKa?Y=UtWwUDx4ggC+g58{@t}6^@gQg0?gp8cqh}o?CA+@o1KqHSx>bvrp;+-OpP+WGHGhzL&=MtYggAU_+Sc8l{?q(;f$!+xfH^ zIw|WcQhHf-Oj$2-*WB{Oi7f%AyEWdrE{>BZ-@IkI@)k3@9J$oRbp|J@0s~Zz7aFL) z)q7yC_HsvuDZQPD0 z!D}Bbe1GAVrHIwk=28)>#lFvLjnWe%)Z7Nt<+jP}Y1(9xaCxiP zPVRb#ldsQe-f`GGcZui4ya&F|*4)05H}S_AVb%Q4->r9)XzZ5sN-ArwmQKCH%)r1Xz`$UHe?ZDDzo6l&ii~{D+}V!$199 z+GN+`XN5kwKYQ~o|DEyf^0aq*s{g-_W(fbV+G*2^H@i}^FRqK?sy%JJ-*R2}`KzbX zu7#n?6D<0QV!91n5U-ZqauLt=neVv0QF+ble%>rGLWeW=;on;wZm z!Ja+}%L``5^iEiPaNRNWBi^N_7nf*A_6liAUVG2=(&KNM>Bc1*reiH8=RN_*=#C*f_rh?w8BRjy;$wUHa4B<~I%(Za#kJ@LJ^ohu%Z(z6YA$SNfdEOkTr#Q^wfn z;)8h)leE~R?HC@fk>wG5nPFyQy~Xjc^5GQeFU^{Y;{5r&tZ$t-YkMRXwy-yJ*3LQ1 znWHIly&&%V*@F!UmzSJ1b`p2_;@kntOW6z}2CHlYF z9^c$Q@#Mc|n`9G}%k}+r7B2s%zqGBHE*Q0-dw!~V+~ZY8>RPjfs-2VaA7yvWopwXA zMtkFCp=#-Jl`_Ai=NlC^dJFxQou>M2-x0A5N*h-T?QUxqik@<#)MnZZb)nz3brWu+ z3*GL2&ik!KS$Egw^#x!38D$UjGgUb|v45Q0;OG6qa|%mIm{a?Q%?;-~Ul{l>#!k9m zd_&~IZ=ou_RL0n;7X(9CwrDIAPvm?d%(=HEp5@EU;~CSp?fKchP?z;ck^s3tpyFUZXP{lo%K+6$|*gQ11-r1 zZW!EnzlwjYY3&R4FN>qz7PCpjt~TvC(4J_V{l5JD^EYQLpP#=Uzn{@((V+`7uV}l4 z^=7k9U0A)hVu^H`Wz;z>*4Bm2*SuzF8vC#a@0!@(c|9}uI``8VD@CtHTnh2gmA>Aa z-!(C~H|s}^#?cGgmOS^^q`q+Km9t)ki=}pZwW)LN($Ljjwrk;2uc&_qru_Y2{KI_P zwC_UNAD(|LPm&=&fG1QY!Oj3S(yE z-%|pGv70Zmwg)kOS+Jd3ykMeZp1}6g+@Br`9rjo(awv4oaZ%3cg;Nt3X4BR?(ceR^rRj=^Tc) zG9t3qG37fs@l5vR&kj9(dBe5OMQeV~coxBbXX7>RDbFG_1+E=tizp3m{2Fmc*(OtL z^|Gg|r%#^VIPa0<@v3tMZ-gdacxjt&T6osDXV**XeM~ulhnS{Gh|OkN-F-79F?^Ho zOv_tbk7RPEiXHI|D19BXy!c?SQ2PHG&4;W)JRh$K%=I;S#e4atr}@UCf!l3MHg^3y z}oJW?X(3-=MC=5OwdggX1&{) z6=^xC&AIPO>%v$w{w+qblIgpIjJ|ZvTQ1`K`1^rZsT*uF@0+NfU!a=K?KSgV7R!a| z6*Afzn}SXq-)7XFb?wXIJ7x^bYCqa97R_~*uHAll{rnFTS)UxT7uay&IkV(-oiE&v z=dnggC~^xX`b5qUJhrCQGEpZwLiku)t8C&Doj2Udxr*97%-pQ<`-0`4A@AHh%w=;m7O9lXsQ6WIWZ^$XL=z7* zku>qbv)>*p3=F?{7#Ivm%Zrev-qPuJi!O%=9527Vt)x#z+b`*;LjzmDWQ%yVpj$yv z3L;LI4++e=BxW@?#6oJZ$;OT~4w=g@SEz}{d=sqbi~F)@x{b)?;y#_*Uct8?->Eph z`tJSu^RH@NzTLh5A6tX>2gRn1@7}YDmLI)cCRnuE`utyoHTu`I&uwd7u-?+~h2?FI z%f?Hq>jHFFvr8|0pMU-I!tIZzU3XUhqIK5dw^Y-%XKeHKcN$z(c5OY$Q+Hlm@qULp z$I^G6YdvO85B{HLy-@n8-j|8e?%PY3F1L@B)ckxSOShz1e3P#6-OG<0rj}Og3)t|U7hsqOBZCh2XvwX@%5Z=1Hy zb%)`MS+n*|yiroV@tMu^sO@Z*vV4DeJMIM_nl`SJ-2(b@R*8H=GlnIhCJ1BBxaPUe4S6 zmbcQ=qWDuE-xc@BsV~dxms3xB`@puZd_!IJoqHdb=tWPT_&QEBah><0he9PgIwssN zinDl{yF5(SzGBzYFeh0({4C9^_&9hIzHFi^iF6pY1klnVanA;&C>@1 z%($ITJv$ImCh_T1-+>jIk^=&+H5I0I7dYLVT;O$+(_-x#NsHBQsts1Yv9wtKhIPZ# zTKQ#D=C(_--LCCxluOAU3cGXmTW z=eWo7UNKayn%iU}c~fT6v9=cp_5V$uzNpVge!0f7&dC38tIRWADaoT-a&|W+&zPp) zIC-kN?yGGLVxk|<|7Dva;VtSrvEr2vpE{3CuVg64^3B3i-d4Ek7)RPP6tB1$cb5At z(>!rYaf_S6Q|eS~eCBKY+g#6Zd4@%j?i|CFB{!Gc^j13?Ym&Kd&SBPOG0Cj?Z2RQn zp06mr$e?%YU}k5*m;J&MGsC;`zg;$-@%oFO(O+fNpN8AsF^R>A7R@i%<(8oqE_m5) z@`TkVlKUC%1T@U9cwv?FaMOW1kG@zYK3t*OkXf#hBiTN=u5r)m3GoS!>QWxAVyHX$ za`h30$H#qk>ld!R$dJ6g!8TxnX-@1#of-{?_~NL1{tZ7nGW%7YER;yNtjus<^T78T zyCkE2L@>-N__dI=L*DSMJ7-0Y%{Pt%ZA^b!-fFLG?NhLM8los;S8~Vj>{Jf+-f7+j ztGYh&OunAPZF}(Mqc6q}ZwR)VUM^EP?QHx|%qIThyyV|ic@Nhmu+DjPa+cD$c~9P$ zWoH@1X&uwQ@ke9Bhp7yIPQ5fgwD8<(!OL~iZ>|sM|L1S?t=%h^;h4OlnCS(dsZvLR zdqooU3a2NpnK-e9O(}as*R@{Jzc4r>B^M_e?Sz-k`1!$iuI_ZqDZ#%>|1kEGItKW0|-{#`0gl z)zTVw2j_`y*&7Wu&zkScDRH8G>fJf}_6WBwj6dsoukp;^*m+Xo7fc@hihJPN&vIp{ zaW>Pd<%f;Rysif2JH|LXZdteeAx{LSM}zJH)%UDLFF!0$(bo3!WX-=@-Zy8?dzRfh zoigKhO=Q*O%wWCUR+Z6_eAAL~W>nR#eZgy^E;RNAuQI%sV-0jva6eOmv6=K2bUM{J)G3APik5(Ybs-I z)Tx)YHM=bDJ-i+GTbWI$%+X=`Ewvw>9!@e+2c0gpq`$RTHUF!ukotu`k@JsSaWiqU z@AJw$H_svZ8~2v<{Z7*_vCKJ|ym;S@&f_XEMyhw0En&Q>JzrvLd+7SYEdABXEVj-M zU0<9vD|GW5s}rltElWE>^9x@YtiJc~ieT8@<0}`h`PC47JfgHISbozhmF0dLUkUro zO}iTDH#hlerC)5q)#r0&rC(L`)7|jO+b=fls;FOV>eW)ey9rmr=j=MVD&L}XcIf@0 zRfku-+n?prZ}{i>O8t}hhzt=i^Rm_Zx29hdSr{1X_z8})!7~JMTX|}3xU{Rt@&C*x z%o4Y5y%zL>nU#t6(xf2y+fmw+E-iCf*%EY7E6xBjt&v*Oa7n^b=&-3@Ae%(FPN z_{c)VKQ4Uv4|Cfd@<_5(N&f0)e}2DMSigUt+#DzS!=AN0jmBFRT0bn}SD(c7y*9u3 zcT)R==LQpwN6tx?xU{We`liRM#s)5zq6*#|3(*zWm)gymclD`T_#KCcbu$VpHt%y! zuZXg_aB$U^>6=vCjef-2M|NM%VD0&mAhDRooUhd=KtOrQW4q7T)>J z{~_>8i`|ny8#}XC`Bq)pwaxi3ujp4!-_3`ar8ebV+$LqTIOpw*89|)$4NI;)t&Kc- zziUPLiz7yb(X4kBvy@Hlga*#PJX37l#K(DDc}adp?=DVWBRccl>J$2lPH1hn-JZ8- zm6EuoQHPJW)+fc#vY(Sb95LLu=Fz@I-Ty5y%U5KTTYTWL_a`*=Ond(Oo*A#! z--ipf6Z|Qn&Dg~G zfivFpmHAd=Jzcs|r@qziCR-?H@u5c-d$l|>L%(iM2#cBi`|_3+M*c;~CQl;_J}8S; ze3j@=wb;hJZHaWnv4Whtw>EkCo{rT%d;Qu@U7kO;OgrK~NIzN4Z&|X4`-{=N^OhXqh1(3dBf!28<-8hMQMF|EKzODSsmH^*F@A> zHaUIL236g%R~v3{>V7NJ+9s5oK6%6REjMzgjK3`g-vdz5TiCuP@qmdTPj;t8weax7>)*nzmj1+6u93c`@rnN7pS&l79O& z>O#`okT;LNRmomUn!Pe&``)+4pA&ShDeb?r>cQ0+a;MB-e)Xk(7 zn%ooU)T7A48<({Act`fl14%c1Z!tdQ6_%^`@;&1b{|9%;=SADN_kFQ0uG*Ks&$c-2 z-=Dufr5W-L*)-kv;@|x?L;0Nx$JS{)sdwt8oLEsUQWjSAc7w1|hu@9K?-y<8HrTjh z%ha;+*}q@<-I(&x@yeO5_sSK!-g(YCVf$!L=OTTrTA8mQXZzbza8f77~IX)5kzYgi%-4?c|+hBcl>aHESm$zKrth@WhQzaio zmfsHpZ@g(anfLkT^S>)}y9+oIPXx?%)Av5Vi{r8ZGe_|&p5rntOco4WmJ7WjR76_j z7Wzjh$tdUuhjFlTG9OYrlz2!hvA3Y5V9EwR3pWct3&$H5IDBe5|D_tNd?4QL@7njK zr!r#a4fXk=G9@L)EiR(#2mMKe6r!<^I~GbCL9W$=tlp_5?{D)L;F7{eztoB@Z5L(2do9yy@4m)pom| zY3XNuvDvoijLWl_57L$w`Q|;??z75%TGM^A&YUFH{mIwLCb90HJ^i(y_@8;6Pd@Aa z$ckH}-~J%G?E0Tq9RC#jQ{CjEqRKw9#BX-{s5*G?zDURr;i_5LaE zHPe@uJ^s@v@TYR#sXco(Y)-nQE%*Ge-SX(H%6#u%`m-L$e-g@m zmi$s=+r`+c&-a8mzek(-WW0Xl`*tP5F zQtj0)`AKJIKc6#s@|-8f&#%AF=#wy6G4d0C)24_r+k+RPxhh{w>#mzw%_`UR(dutO z+p|gU)?WR3D6CNPs6p75=2&;%{k*mJS6eTP7CmSA`wEZq>ztd#*?B)Y78*{zo0bvv zMO#E$_H<(_i}UFD`+FtC9_{+Sm|wbiht6R>W0jN}q5H+&-ITca>S~7J`qqm4qpe5cK7ZP%b&DUWU(uaysaDQ* z!6D1*1$NE*+~1pYqhsgIkF~dE92efX!&U2j!TF`CrlA>4t3K@!ZqrNMewI00EH7kl ztkF`}cb!qK?8`GP(=S`i{ga&){eONG&wjJ84^GR%mn7@B+c@{1v-mqaj)Z^(Za`WU$$}1HCR;c`(laU-h8L!JujSvt#Vz`eP7HGtj%$HzENP|+f@iJdWwX6J&S9sm-)Y~SU-!_mFZ7!2<|AJx zK>PQ zOxx_UX-{{rwRT;cbzkc7j41}ORmn41FKefZtl&BI=FX9zx=CCYwflcuuMatzw`KVT z?rI66vrCpI$UAqx-IHvw#?&v=m7Q-(qP>;muO)XRgRTk%UO2iT`=HL6s{%a9QO-4C z`!?h!=Ca$#9Hhm&55ecwGZ8E5&!6X)89UI;s4 z{zvV_s?|4Z-_7!ynDJM_NkJ>m75DD%NPBdb?s9ho2dAzZQV=mJV@=|?V8+N)jUtj zZPhmIkf4RL1*R=Id!IdBabjh1=qasr;m!SmP7=)z_9dH!Tq^eJd)-wQd}Iy3S4E%v ztAyrI%^8ax#fWY{SnB0*T5t7^=9eaU$!&?>y{~I>Zr7X~?Yin-&181t{ds##zjUQX z{j%rJ^2@##?JD=(rKmXM)}s5rst;xDigUU3xb5iMMGyaZ)@oM0su!?cwm$o!h?dw! zm1z#b z>Vt}dUTw|TU8?MJ)@!Bt;%8?f2k&n9cSNjq)3Wy&QTNraJ~xzp;hxcRamI<-qklL2*rES!jTKAMN3(v` zP0L?&RVy5{;YqHNN{~xDI^FQTecSP*U*?FuA1H&SEv(4j%*4QOlkn0Ucm)M%j@3e& zW6w*{LA!nz>awmn=G`1KMf9k4hxmkymIav{ipM4_jV&yEIqU7BPhp_;*wy`ynjhYj zPn~mfZmwr?#Y^+gUu*7L7MGp-^Yiy>bA~gHq6gQowfJ}2lDc1gSFX!JYtr&%XbS51EHa(wXv1&+fHR!{IWo3>G-qt{6Hq_|zn!NxQD zUhS;g+-qRGbKCox!Z(Lce15xQ&1WvTX`fP$mq+`m`{=&eEcSB#^IIQw<%Hb5?Y!dT ziXHjZfdW6?s_a<5F;YW0qEP65=G&XnyMN~?pK@YN)VOwQW1?68OAciNE{?~Kc8i)6 zR$O3UF>2j)XpPgl3jrBgXEbF3W`susSgg3vv{0gbp@z|<6FT*rUQBgH87Y#NI3+D^ zlp9PolFIsYLd{UNI9)0+Nz8bWrR0VaXP!+_Z;WbmG_sec*>=mEXF(SQ^rga zlb%^`CU?4CNx9CW6}?3Ltzh2N8?W4-Tla_=Pi+$Di$9Zm^$7QgM_fF+LYCf{Ij^W} zXAw_$!1_vE{Z&&xthx|mydq3BH`t)ZKg1>&zU`{Ef=w@o-OclMp0OQ=RKa{Z8y0mGM~E{mb5Bu z{^qwXmukf=s;7Hga&O-J-P7Z{>%*Mo;*)k*?M%MmS{qn*c&U&S@-eEQj>v`CcjY;l z85m4B2@ZR}lRjwGIkbH?cgoG6D-I%U|I@mA9H)d99%L;^6Hv<2cyMab3x-!4R&~tu z={`6iB(>>ObY|tkrJ;5W{Hc|@tb<#xY0A#&KKJGR{hO1De}P+PJcor(h%A14WAf!X z1=cx1y?JMn!(o?@Wixipnj4WJmLYZBFXv7BR7bXL4%r9!pWgWv z=6Q@e&+}?w!R6Z5R*lkm7N3{;zEl;9GPdBj?ZzxM`{WwmgcZ*Y#61Yp60_2%n&0KO zl|L<8uTE!s%3|)jk|mD}_OcgETjOOe_TucbEz{4gcq8@sJ}+z9H=$?i_vL(fFvIKN z4u{QNiDq1rubWl%RvG!`M4mD?^OOF_v(S3eq!T;dyu0zj{8i*D##TQq-RvzfS#|Sg zojleccs{uNrAOV4xgOHaZe>9`HTG)g+`iHlwa-J(>1W)2De39G6|F`ANweN`1g>AY z!n5p3$Eu@~GPJuMznI%A?Y1Osv&hQgy}4VgS8hF7dZ=Ualqq~uo>}ESsa_d#w)EHu z{uS-cqRSG#ZDwMRJ9=?i)$Pmscut8jsz+al-7)t^<6^#l9~)W1zJJ*G{n_nfHgc<7 z=3ls>y1v$H{X(C16U}-np^VGhyz}0yPV`b=EyN{oFlK~1(+FzmhP^k3nzx}_DJLNB;N&3R(i z&CPHV)(QG{aoyZ`uhMIspBYElz4D#A>u}J5`SZ9kPu3q>_(y%q^ZgGx4z1Xnk$b8A z?v`&4GO~(nOfyx!9ARgBn|d)=rfQb!Z;LJSUC$S0OmqD#V|8Frvy9b|MdB7EGhFox zU!;odJ+)9-r)sXVdt}KR=ll&Xbout4T~uya(&W0_qGXoq`{EZo-F8ndFm<0Rd|@NE z^o7P*x4BlQ`D+|MHqV=S_l?oo*tP>ra^_$21--3~aD`dgpU?ifxlOzzZn4t&#d^v*OYFI^0&;|G3C&U zkCi;>Pmin;-NiI%0@u8&UDtMq8tJ5*^xKuk)+hRV$#toqNn*32=Vk8>T)oCI{esx^ zRsGqUugpmNdg}i#|JN3s!LEB+FY_ELynLl#+QSz4Jy?wW!<6&YJ1(>{#w>ZaV)kQq_DhmW%DA}B1~qKF zkg8au_~*C8yTbx{#xZZ6t!#|*uZ!k-Qsd4q|M3E^%%a{0QJmq420b$C9e5WfC7ZjnkzSK!~3nV z=N~FAtrVZn`QSOv=Jq#ROU_(uy)WE){z9e-_wq8gC5P@U+jG%Se0_!e#_Ky}fAHOm z{^WMN`Nlt0(Py9KCpRxxzUS%IXe+s6v9XKpaU@>~eJSyMg8=JU1)ih-E*;6aqgbeJ zrNUrjZFSO1XhMp*{I{T;7nVBk-Va!}{pice>2Y0wkyk(J&YSu{|XHTxR>w3~e~=S7O$m8+-p@$OhO$G7TWnb6@2>y;)py!zOl|7b_)l-wZoxk-$ro# z?;A|NX1>!`{lfR3i8+cbKfW&R5I)f?ws5)OFXNB@XX;sgxwJLhk7t7Pg5z!(8W$p5 zIBPv0*f_T2eh{A{dH3jUp4~g9Fxx&YFH~)p4Jk|bH)WBZ>;k@b!TBi*{4`fg_IkxG zxk6rhh56Jg{zd`IMXyMEy?SfDWR};fxja|&%L06Z)u&v!$#bQWwKT>v_JqS)%@xBcc@vOp5g z%5rV7Q&+!qosw3w`S9ZY$&&y)6&bIeV;#nKSP3)o4}f= z4f5BHPI}JW@-OO%TU@Q`irxPfNq26)H*ZGP$=>b*wcAB=xy)U5*w}3pYPo&R??S;` zk6#wgB|=$(E!VT1eKA=rk7J|uS@uPuof{s?DLk1{8Mrp7J#}W=8MSAXXa9P<@b$gY zoaSt0demI@UdZW?n6<)%a;(*k5^V8Hw{23pm9=zha@4A|W-H5I2K-ZM}OUB`O1BZ>q7pQzsXbG_~6%~n+1nM(w?pH`Sp2!(4J+d;y!N^JT^7G zhC4b?;K$mQf`g$?6BrKmHUG>jz8(2{gYv6DzBYkfN&AGmmp${2Y;lxet6ccWbP7)- zhXI3%QEz0gWpB*ll@~9~xPD{d#swQ!Yz$t!cB6Ol_G6QdZ8|3RqIV-xt&#C0$yNG} z_72BVHcU_UIG&R9vPmgois6NhN1~^b{`oxAIg{unX3T6B`I9MVTKR>G4<8zezED~@ zX`=qOZ?~^R>Mh6(3^$irwN7l>g@91AmB*Lm1o^Fu=zLlyQ`f#PXj#ydBaIK4_@XRY zbj}@G;@v#OzLmSv#^X z?e(-e|Lo1dFPt_mao2ff%h~EBTwP=t$@z7T@2vGg{;ZbOT8nKC*GqZ2Rh+wdXtHpG z%VNc|LC;z}y+e(r2&bQ(^i?QS_}c@W^!1P4&SZO!y zTqX3fYwV#s~&0L4X6?>6pgb;W@cbu z;UaF-5tM~st=iCR&}kmF-4{H1_lSf{X_r{SuV@#@7`TAr%Cs)s2hEadOBfHeq~tXB z*Dqb%*K_U%^Pj-Ja`Tl&8%h@aoN)G@ZS}jG)$i~9`SbNHdxLaDa)r8`|@;5JBDbeG#Z$jj`vspaOmg_ey?S5K%|MQ$x?}X#*x5P`Q zTUaJqZOi^WnMYmdq-fhQ$@M<_*pvk|GSWJHIhaJ3FE}FD?zN_J_nTYMx9twIDyAOS zmS#LU|LmR0I>pU949w$`GS1#yw{^$%-HD-I$Jp$1Z})vXc0u;=-Amlk*3({Uzvy_( z6C&E1k)`H7muIDik?-*pVWM-C*GgUY67*72YR$0Ox#$touE!Sr-6}IW{#1H#9zN=_ z>Di!RBZUbu+8_D-&SC}a8T?RRbO2N?>?Sl{w&QEF9Q2YHMcMRbh@jc?;0XJ zH~1(|+Rh!vMQ$1;zHE}a=R5K7rgWa;MW@}Cs>RxC?A;a-{_oTN)BOilD|O4*JI#C7 zA^Ax1+^GnOV;yeR3mhKj+WPuZ*AMYE^>Y4Mw!)3=2OJBeEJvqr(8dA z|C6|oEvzP2wrtgS81!Mz!q^2RACIrtdUblq<;wKj1KfKKalR_QlJJuM%E8vIjlMl^ zGu(K%G-^z&ot5jSyzi(#`m#Ui(t&y=#e@lNe3o;6b!}eh|HA9-W1;qmTvf-9JgThv zzQFv>CE>hGr58{6gtU9@%Iq1a%o>>!|f{ikwxMZg}x-Yr#+UNzZ=9g(aRnp~7 zFLai!oT#pF)qGEXwY-{`vFVMzRLio^w%my+uZ_LjH(&J=cV~;W<;oRM{(k0hKhhaIpaB@2HU1A?F*7jm z@(?#d3eKzG>JC!r&7E3ZE$k|C>^|q&t*2erF>O`daA4WemPLzVSZ=drWL@IOT&*Fs zeRi%<>E`a;(o^%7{%O>;>z6;k|Mc<9lV!T6^X47-ck#^AJ^L%4pP6}c|NqL*;ti}8 zJgv(vm-BuW-0ssB>>K}mXJ9eU-KgibpLetX8 z+cbfSa7VdTo1z&h0q%xVjwZHQi>#FE2ytB^)fo~!@8$1hw}Za-ZVCCU-lnO0(Kj>r zV4%$GBZ7O(|7q>X{p@#Le6@y!;ek0R9;@r7SM!9sd0QMVym|9VtllP>C06M#=k0e= zKeNH&)kW2JlM~gZ1-#w6VaLH*|Fe&5oVVRuk#j{ZXsgKM@IU(V_&zcFJU48WY;)fB znfq|1?#+fKCB3dcF-bcly5m$sJI+5cI{a|?ofmB!ZS2nH4DY>*X82SfdP`;90+-+2 z_vgKp-(cX*DaazF+88FgiKA7ZPVTyTA#bYI&cun4Iu}G=pIUr%3rp70_m>`8eG8f& zoqJjJSNo3@4YPk(Xg22Onsxghx%<9w_j^_GfRc%c&&#FDxqgU*c(De~ELHklqA_z` zj>ZoA4c`@Jjc1#H&XVSG;((%6QjW#Ic1fy7Dt3t8@>~9_PJc-m$X! z%p~_fe<(>H_Y=1Ln2iCr9uoHhJ{ln-&cuHl^motC#W(9r?UAfP}Fezn$ z*xJ&Z6F+&(K8l{@dUT!fqnV&fO;wuseYeKxsvoxKd@SMcVLxEA*Xn+&gjvU|+ei5W z&n#u>>C^2rywG>BWYLTyre)lEsXoV+Z%}Ugk91)=sNATV5+vcm%)nqv_%L8_QyEll zKuV0MA+g1m!vyZezCIOhv~B8*~yz$lC_xEhy*j>=fS{C%bOvd%#fiSD; zXUsR>Hi{pQ+n<{*mwUT<;k&={pRcv~_5WUGkaGUbphMH{J8!tE7;LwAb6U-(0=9!* zSwcG!&)=-v^t|+u%^c?$-dp^VX0%Q(Y1tgW-17O(;?&;VOePF&6Bo@(vU8oeXyT%o zNsN9=BYZZnJY~_H;ay<&RCh^4<53oWZI(woS0*punqbVb=LGkX>nRD9&zjVpnp}C5 zqFSQkBYNbB&9faImK#p!h)gW0?CNVfd_81Ig1@5W;Tp(}z{ny8ZuBFRewB^MLr>?I&xrD#uT-)ta z3r?@j=$UN(;*scNXQTgtU*A6zj6Gbat^a72tG2v!N$pfMrj_+Uf0I|NUpVpOwA6pc zB4(FuzLKB1#$=Pu(cFDU(|_pO$G2XyoBpWVzyG24l({9R7k%CBnlq!MoqJWCSMxhl zk2Eh$vzvL`>28eCwW_Ygk0rJRzAl=P`%ZexWd+}fOMc7>z5n3Nilj*IuDk5VKL~vN zt8&h?F6F}Zn8#@%-`ozp*WS5RzAoiaxzChG>TUA_->Vq+W`Di0;G5RW$&%`=r&ndK zc(zz%Zi=m`#nKOI3oj;2T{OMrSaLX5{gIhGshV{&Ta0f0^O(k4qq*pippEU}bJja9i<`g3gk+idOhcT0^yZQ1`u;~y>0E<9A6c7Tb6gY#{K*w3pqvz}e; z^>}+_ZfAu^OlQ&=_m?W?O`NSA*b_Ufr1l*Q!X(yG0-zKi-5R0fQ>P%PvFP1YqL-k)mGo8$3o7Np|3xdAGBPkMVPs&?ASz@bWnAcl-F}A+MB2_;m}y5 zsgQA`Pa<;V6m|zSm#M3_IIeU|I(=cG@*X~B{sYd6bEY)TJ2+QrSB>vPZ(k0UC{5}>6%QFa1(sU`wKf84A zfurkuZ!LNlomq2mQK$R?{#2XoYujc_`q~>^lwbYs|DSU^pU=AuKDRsIIGc0bdFzk5 zAA_u#5{vYoEZkDos&BhnEaJ{X9_H$gYxdr{S#$lCmXS#Gy!s5c)9;Htb+>10JDEEvacQ~B>4%OB9vZdkuG+BWZ0h3g zcG6F`^-0E@OqL2?8MeIXH{;X1XkyzI$qMQ%^a+%0>axBo=Sk!40FtuEPe zvff;^F*o$&lE)rKSCb}t{!z}7-E<}Sw5-)UW=)yuU^y9%_#I+TFPQzid0hHn?$mpF z-10Jf4z$3utba7G{vgfiz5GSd4FPl;ur5P zlY+yw1gB(#O}cnWQcWw~F!W_o*hvY!ixv{PewQuUe;#>i$XJxM*69Ax-t&SV_LOxV zn;FsAs-gbXr2VKyh~nJfGp96F<^)-#t7cG2!{TbmxwUKNWF1<$v^X#Q z=@lVA+quQ&+RNt^Tr1Fjn6t3|-xcqvud>AXFFST`e4_7hSlO$=)xTFm^cTyr<=f_& zZcUpKrFTiAUQ}>D+HlAnmh3!zCI$v!HiF00KrBqJQwN^!Gg;T7E&KV7@s6XCpJr`Yy53Nx z{8wM~;`UGK_X~CWzd!YP@xLvuyq#y~_CC)oz5BKt{rxjX-9{w+Ky%j=fvZJ%4k@e{(rZ`CDCo~G)VrLofU z59eQ#C0nL`nxSSj?U0fFlM0=fL}`=0qgu%ww&%7!NHaL2{qEPK=+mcG8q1XZMRl~RP7?IRL^eM@m%!7l*Hmw`wQ+q z`quj|(L}T@{=ny$+5hzQ1@?GpD0Rzp_}xGEBI)4Qxp|ULUe4ohmEFXc8tTIMx!IS+?k&ZhGuB!xo7%L}Wk!}#ntEU6vV>KF z%cgbQ>`s=_oDtQsQay?9(TrvhAKODFLWXNC((G9;cNn~NIg=<8?0;~Ja!=c0j$+4o zITNg3-(4j9{7vheX+?JmKfQQlvgUc_Wk1cpC2#$*-q`T1S!!~PTl#d%Jf6K@9sZ%6 zY4#xD&)#e%28Qp<3=HZ7sxNRE3aPzXgJb=#1PIKXS(kG=^=50VON{BF72H~)`&p0Z zy9A1)u=dWHarzyr-ZZnDx>ENH9yYqy_w%=<*H0;|y6qb#^w`_K`rMhBGjHz%r#S{; zgN6rJ7talIKDW|A>C5$G!PUnm<*Zy`c`vWSK_Oyy(3V>q&Rc(8Y+bSSVZN*H!{b@e zzcL?)9Iu)B$@ut_Tbl%1ed{)FUuC-xHeC2yJtE}n2RlkrPF)e9nQ(IPzB-f1Cv9~W&z#fj&8)iVa^uac zfZsLuf3qDweJnv=eV#?=fmQA57cV`HwTfL@b6wN&+RTHs5^mKlty*#`A4HzBe16Ge z>KV~Anb%CO#RLDZlW!rt{$l~9jhFRN}$-Msd)p^HZ*<*W5-qc@TdeTr!E>iXQtZRvFJUfr^{Jwj< zB!A~x_A_@Luj>2S(RzGFu9@~`AKNRZWVHP^ZvLxdoBXbG+PuwQm^MovI>i+HIjZvL zDW$SJL2vIfd#_wF@-Fq!m*UQ!QMtA?RP0_-m3L&t@iSdw_nv=$$b9Sa$-wg=7ycrp zS5R~7a7gi0P(yYuBcAjcQdy9Sdb~pG1YiF{4gziWH7_jP%F*$oaPkR9iyIZwDn2S3 zt}J5MJ1h6@gh|`HZzVlCZzSho@)30M|8DJhHxK)zJ+HktbME{3{rU{)779Crcb-u$ z6jpD#u)|l}NWc5C(j!jwD{A!<@Aj^jYkF<>&|<>RGv-g12c25-;k1S5zb~bV*K+>P z36OX7oOARk>%tx{;s-(ZQ5Jf-@nM zo8$L47IVJbIK%Kv{$#M^5hF>K-|_v2;?j&yGo=~Le#tH=lAod)bxZAc%IpU569?xO zaq37WJP~G@CAK5DnDs`$A|2IdiwkTWPR~5}`Qr~J+c{w&Jlkv5zJ0tjlE0>L`uc{6 z$AtnImHAJ8T-85~&vRMU!k>2k4z3H|5M?%ZrAB}UyL zPHzm4mnKQivUOZOGbOP~D>=#EGEd<4l^pJ$(XR0}(}io!6;6Jztxf;JZ+`XTHy-Zr zW!=4Nf#J(}2f}5_In7LKdc&-Jl&`9PYD=E%;XT=Q%Wb2xispZw>f4yFD6tlJp6d($L#aQk2wo9e@t4URiRg;R&O1n z5!xrH^`UD6$8?L>2_4;*yLRt&Q@^MoB^!12!e1xe2WElXLH1{30@~{iLJ75!Uk_|5`a#?o~hL z*kdE9ah7%cscxN%c}g=M$+UNUjybmCCWESu$lQk^FPAQ2?VPCGP}};^|ddg$XHALEOQLe~H1cE4C?v3KSj-~T&mJ1(ATjPA5q895_( z>xy}crif>(yePcRu-5u-OOA;5oaq`mulaKL@n0-o)c z4U(_S4NzP>=XKsW$8hoV=jN9`Uy!(-D0REXOZ7!?>H^N7BHnAFkqsvtZ|J3*J=FCi z=J*|!%UrjNGp0%0Q+D37%;>Z7-j=fuuH{utbmXgj+@ta^v*(uU=GECv&(^&@Up(P} z>+utL*FM<#oV(PfaCuRfk7e?%6^aGAGOv#q+UqYBQ0U&`)g!|$Yj&#dmA8&T;+m-q7 zi{OdtZ?CM_&8We0{lf0P=HJ&YzcYIA!?mDF!^3ZbU-WW@q$iJyuH_n}#=Yb#-7g!I z{=NEw-5xCvE82P$C?seT!w=UzR5`&h8aI@WRq}f7oJwCg+%c#R*f&zm~0^ zdwbPaMqb63SNEdT|1em%XEWRg{BrtqL> zF6FG>->6r-P}TG4huElI$5nlc{qqk?v?N}hb2o(LVzBGyH7|Yl2xf|9gBO|oswbpR+sSUfkSg65Yku0+eQ~bUTb;D8YfszdJ)B#uwz9JK zsoRULSj`0wEvD~VGfnMRszxTCE92@o(FG54w$GaS(;RF<^6t9 zbMq$mp4{tv-IeMQ0;&ry?eCP*4|lC#vE+2(-;$p(?_F+&@9{hD-@QJ0+V5`ZwKr2) zRL*8Wo zu}*5|Rj2cjUf-vdt&_cAP#zzjxaG=*qL_^(3+=NPo&Np#_~zTQ+fN=n`*ZKPjk&kQ z=jOBS{b*-9JI43h_xs!b-xA6QD=Tu#%{F76cP`58zk=^)>+)IKCp->(RGS(5x@PX= zCWEUs**w#W4qkn|+*9JG(H^Pm%u34Vr}pehUUY2Tm&AJ|-Ls6B{&!t*d_uj}B>{uW zXXW-u*(A#5*k}A_zSJ-Bs&ZNUw6d0M-sab;W_(SOS#(Y#r#|+LW32c6*DGJo+@Y&# zJKvJI7dCnw#O`o&~J>9l0WI@{!^n z?oXc^pR)UegwDV6mL0DT#a(2~@o;{TtgG-|+Gk@@LB}1ImLjX*>`z-<_i;ZHwY;HM zay^T^=g9-4(^n&BUbZryx^a0K0|P@H0|WS2EMg1Xf};F_)S{Bi)Z*YW|Fhn@UOJw> zfgYjJO&1a76t|e z5s*qKUeXBaX~DJmI{JCKxdw;m`MM!YU|;~X%Agv+6bqOH5g?0?L)&QhbO?YHgE2_Q zOQ;TT4I2-uVG$k$Ez1Bah7zJsnt=hNTbz-BA-^bHA6YlJfw;3`-ila2erLnwbMR5G^M&ITL;)8oJ4Urv&=WXJlYF$;<#gtOaKHlEw?1 zI2?yzGSaXKy74WicEz1$WMKHt1Zf>0jNivir16kOF}lI>5iEucj0_B`F$})Mi^E`- z(xSwY%=|p4`&BRv2BnT|X?0qwSs563_#nqbAY43~pE!fDn|pM3a*iDb1B0(N1A{8e zPzF#G_KD&!*E6>OXWW6D+S?=kL57Ke0n~VdnYyHrUyhKGn2rRcvjlIIgYUQ) z80sw<7?fegfgL$Z9=D14h!gkFqsdq~)!UzufkBLkfk6qyz>`||4aDxiq@p+T_AoLq zoM48GPQ#2`(iowG%e=f2LIJr&W!{BiMg|66X2?h(!qg}|Vob%80gA2V(&sQTFjO-^ zy4DDzB@Bo#8Z#6?5wB-ov`USgfnlK#-cEjJAZ@kFJ!oX0*i5?u$zC;-AnO9trm{)>nHYlhU z?PGfW2f7IbblD2R;VS}(FdI6Zh-o$`bu3Sx`fC*{1A`nt1A{ZnU~ne>5K4sEL8*x; ziAg!BQ1`oKrskvsK-vzKm==OO!@;{)JC>P&;U08rKg`Z0jlZMuSm>Nll%JQMlb?>m z*hdR$ZR?mB7%Di>>yG*Hc#H)_s&8gWUS@g*mcR!E(5;sds`YFP490@!c`_}TfWg>P z3n&l{eJfc1oP~km04HQY7a|a}vWPGga=}_jY7u4-gPc5@amuwH%nS^n9Owx>KA#BF z@yB1n3C&(PCI*HgW(M$Xb%fKG6cb@M;%tBP(m!7KvCu;%28La%=mE`LhR|zp~)H3Oi<*lU3J@NHZubQsDwhTretgInu#NYO<|hy z)0~xoVKxtXY4@WZk9pt~JD~K7=}J%{kbSuN={IHuhBOZJBv#r=jH$R&0m$@K3BK%R zYzz$L0_bhbot?y(jyr3_DcQ{h6?UsQAe(~_F=jb|Sd;O){fRr@9s?EzhH0GW;oUxk zkPX<~4GIzF6$)3sVh!)VGl(%2znlL&loZ!yVqjRzjNaCAn2Xo+ymZXu0ZPO*)f?)S znHd-sv7u*-HS_Tph_fyMnd$quer5(U149`bdL1adn6R0+0{~?9`fX1Vcd{@roZ~`o z5g%WM&upX_GxP$-N@ZebBQpa-HamJTd3ZG*BVkn@DC=QQ4j}j1FVxnTOXQ>7<{B4l2&>R*9hD}`P0Uf@X2*YufZlHABHjgbB)B#)1iXJNVJBTv7B(P`Y^%XO5F^MoSFigQ{mp|Q0jM;cnik+lug9H-; zLo9U55u!|TIe^1x=#>MBC8@CH1&%Icjot30ppyo-b3m@NLYTec5bM zVqn;c5iW<05^Vuybb`|1$+eNuSxgKJ2chdr5pFj>LC|PW-oX(j=F`gj&Ss}b3_@A85W?VeF*J(X@s$X7l|?!(x}4{BA}2)zl9fJddC$~ zOve!}AP=Blc8ai~jDJV1#N{aOx$;ViF- zG8{83K*pk9;eaq!|1Dl)aa`ztT;GGji1EG(e`Op`E6KFuj|LIMXqM z0~E^WN0lJVZQ~`*TpTqr$Z+%{8xV%y79hcJ9Kiyz0exFH!UjoE;%&elH0XO>5oRYy z5H=e}uz=zcePbTNU>+GF4aN~9Ak)#e?;uQfQ6SEA?7@M)6#-%H1!cVELfhXsvJLt= ze1x%Ds>B$J-LdFP%n_z8Rl{#8xIvG_t)SF~zT6jKYQ82hrs9Y-kkRPtIT1#`)F#4c z%uoO&1@uLC2t#M;;V=|wsTh_(02zwD;tXNvM}5MEqB|6Gfe~mm62wf<{H3N5Bj(y9 z#N;RXEH7wv5<+trre^fTLWt@f( - - 4.0.0 - org.scala-tools - time - 2.8.0-0.2-SNAPSHOT - jar - \ No newline at end of file diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 6a97dbccfd..247252b6e1 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -41,6 +41,8 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { object Repositories { lazy val AkkaRepo = MavenRepository("Akka Repository", "http://scalablesolutions.se/akka/repository") + lazy val CasbahRepo = MavenRepository("Casbah Repo", "http://repo.bumnetworks.com/releases") + lazy val CasbahSnapshotRepo = MavenRepository("Casbah Snapshots", "http://repo.bumnetworks.com/snapshots") lazy val CodehausRepo = MavenRepository("Codehaus Repo", "http://repository.codehaus.org") lazy val EmbeddedRepo = MavenRepository("Embedded Repo", (info.projectPath / "embedded-repo").asURL.toString) lazy val FusesourceSnapshotRepo = MavenRepository("Fusesource Snapshots", "http://repo.fusesource.com/nexus/content/repositories/snapshots") @@ -49,7 +51,6 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val JavaNetRepo = MavenRepository("java.net Repo", "http://download.java.net/maven/2") lazy val SonatypeSnapshotRepo = MavenRepository("Sonatype OSS Repo", "http://oss.sonatype.org/content/repositories/releases") lazy val SunJDMKRepo = MavenRepository("Sun JDMK Repo", "http://wp5.e-taxonomy.eu/cdmlib/mavenrepo") - lazy val CasbahRepoReleases = MavenRepository("Casbah Release Repo", "http://repo.bumnetworks.com/releases") } // ------------------------------------------------------------------------------------------------------------------- @@ -76,7 +77,8 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val scalaTestModuleConfig = ModuleConfiguration("org.scalatest", ScalaToolsSnapshots) lazy val logbackModuleConfig = ModuleConfiguration("ch.qos.logback",sbt.DefaultMavenRepository) lazy val atomikosModuleConfig = ModuleConfiguration("com.atomikos",sbt.DefaultMavenRepository) - lazy val casbahRelease = ModuleConfiguration("com.novus",CasbahRepoReleases) + lazy val casbahModuleConfig = ModuleConfiguration("com.novus", CasbahRepo) + lazy val timeModuleConfig = ModuleConfiguration("org.scala-tools", "time", CasbahSnapshotRepo) lazy val embeddedRepo = EmbeddedRepo // This is the only exception, because the embedded repo is fast! // ------------------------------------------------------------------------------------------------------------------- @@ -170,8 +172,6 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val casbah = "com.novus" % "casbah_2.8.0" % "1.0.8.5" % "compile" - lazy val time = "org.scala-tools" % "time" % "2.8.0-SNAPSHOT-0.2-SNAPSHOT" % "compile" - lazy val multiverse = "org.multiverse" % "multiverse-alpha" % MULTIVERSE_VERSION % "compile" intransitive lazy val netty = "org.jboss.netty" % "netty" % "3.2.2.Final" % "compile" From 0b3566668954f839437aa64bf34e1da73a4b569b Mon Sep 17 00:00:00 2001 From: Debasish Ghosh Date: Thu, 16 Sep 2010 16:09:53 +0530 Subject: [PATCH 05/24] fix for issue #436, new version of sjson jar --- .../scala/serialization/Ticket436Spec.scala | 49 ++++++++++++++++++ .../sjson/json/sjson/0.4/sjson-0.4.jar | Bin 45649 -> 0 bytes .../sjson-0.5-SNAPSHOT-2.8.Beta1.jar | Bin 45808 -> 0 bytes .../sjson-0.5-SNAPSHOT-2.8.Beta1.pom | 8 --- .../sjson-0.5-SNAPSHOT-2.8.RC2.jar | Bin 48254 -> 0 bytes .../sjson-0.5-SNAPSHOT-2.8.RC2.pom | 9 ---- .../sjson-0.6-SNAPSHOT-2.8.RC3.jar | Bin 47315 -> 0 bytes .../sjson-0.6-SNAPSHOT-2.8.RC3.pom | 9 ---- .../json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.pom | 9 ---- .../sjson-0.7-SNAPSHOT-2.8.0.jar | Bin 96631 -> 0 bytes .../sjson-0.7-SNAPSHOT-2.8.0.pom | 9 ---- .../sjson-0.7-SNAPSHOT-2.8.RC7.jar | Bin 82656 -> 0 bytes .../sjson-0.7-SNAPSHOT-2.8.RC7.pom | 9 ---- .../sjson-0.8-2.8.0.jar} | Bin 179472 -> 183795 bytes .../sjson-0.8-2.8.0.pom} | 2 +- project/build/AkkaProject.scala | 2 +- 16 files changed, 51 insertions(+), 55 deletions(-) create mode 100644 akka-remote/src/test/scala/serialization/Ticket436Spec.scala delete mode 100644 embedded-repo/sjson/json/sjson/0.4/sjson-0.4.jar delete mode 100644 embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.Beta1/sjson-0.5-SNAPSHOT-2.8.Beta1.jar delete mode 100755 embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.Beta1/sjson-0.5-SNAPSHOT-2.8.Beta1.pom delete mode 100644 embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.jar delete mode 100644 embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.pom delete mode 100644 embedded-repo/sjson/json/sjson/0.6-SNAPSHOT-2.8.RC3/sjson-0.6-SNAPSHOT-2.8.RC3.jar delete mode 100644 embedded-repo/sjson/json/sjson/0.6-SNAPSHOT-2.8.RC3/sjson-0.6-SNAPSHOT-2.8.RC3.pom delete mode 100644 embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.pom delete mode 100644 embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.0/sjson-0.7-SNAPSHOT-2.8.0.jar delete mode 100644 embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.0/sjson-0.7-SNAPSHOT-2.8.0.pom delete mode 100644 embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.RC7/sjson-0.7-SNAPSHOT-2.8.RC7.jar delete mode 100644 embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.RC7/sjson-0.7-SNAPSHOT-2.8.RC7.pom rename embedded-repo/sjson/json/sjson/{0.7-2.8.0/sjson-0.7-2.8.0.jar => 0.8-2.8.0/sjson-0.8-2.8.0.jar} (54%) rename embedded-repo/sjson/json/sjson/{0.4/sjson-0.4.pom => 0.8-2.8.0/sjson-0.8-2.8.0.pom} (92%) mode change 100755 => 100644 diff --git a/akka-remote/src/test/scala/serialization/Ticket436Spec.scala b/akka-remote/src/test/scala/serialization/Ticket436Spec.scala new file mode 100644 index 0000000000..042f3f07be --- /dev/null +++ b/akka-remote/src/test/scala/serialization/Ticket436Spec.scala @@ -0,0 +1,49 @@ +package se.scalablesolutions.akka.actor.serialization + + +import org.scalatest.Spec +import org.scalatest.matchers.ShouldMatchers +import org.scalatest.BeforeAndAfterAll +import org.scalatest.junit.JUnitRunner +import org.junit.runner.RunWith + +import se.scalablesolutions.akka.serialization.Serializer +import se.scalablesolutions.akka.serialization.Serializable.ScalaJSON +import scala.reflect._ +import scala.annotation.target._ +import sjson.json.JSONTypeHint + +@BeanInfo class MyJsonObject(val key: String, + @(JSONTypeHint @field)(value = classOf[Int]) + val map: Map[String, Int], + val standAloneInt: Int) extends ScalaJSON { + private def this() = this(null, null, -1) + override def toString(): String = try { + val mapValue: Int = map.getOrElse(key, -1) + println("Map value: %s".format(mapValue.asInstanceOf[AnyRef].getClass)) + "Key: %s, Map value: %d, Stand Alone Int: %d".format(key, mapValue, standAloneInt) + } catch { + case e: ClassCastException => e.getMessage + case _ => "Unknown error" + } +} + +@RunWith(classOf[JUnitRunner]) +class Ticket436Spec extends + Spec with + ShouldMatchers with + BeforeAndAfterAll { + + describe("Serialization of Maps containing Int") { + it("should be able to serialize and de-serialize preserving the data types of the Map") { + val key: String = "myKey" + val value: Int = 123 + val standAloneInt: Int = 35 + val message = new MyJsonObject(key, Map(key -> value), standAloneInt) + + val json = message.toJSON + val copy = Serializer.ScalaJSON.fromJSON[MyJsonObject](json) + copy.asInstanceOf[MyJsonObject].map.get("myKey").get.isInstanceOf[Int] should equal(true) + } + } +} diff --git a/embedded-repo/sjson/json/sjson/0.4/sjson-0.4.jar b/embedded-repo/sjson/json/sjson/0.4/sjson-0.4.jar deleted file mode 100644 index dcab322c813551008401b7c11276053e3265a8eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45649 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 s1@$S>yUYkf*Db;bC$PI9UIjDJI?w^$tl&#Q*>R diff --git a/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.Beta1/sjson-0.5-SNAPSHOT-2.8.Beta1.jar b/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.Beta1/sjson-0.5-SNAPSHOT-2.8.Beta1.jar deleted file mode 100644 index 4543815742cf38a8cf8a9fcc862e4d2340195c5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45808 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 - - 4.0.0 - sjson.json - sjson - 0.5-SNAPSHOT-2.8.Beta1 - jar - diff --git a/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.jar b/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.jar deleted file mode 100644 index 11d149aeee2371928ce763e97bddf4b19e929bae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48254 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%0Ad8Pl9d{mFr?*+BF{<>EeY-D0!n8?h) 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 diff --git a/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.pom b/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.pom deleted file mode 100644 index fa80e90e01..0000000000 --- a/embedded-repo/sjson/json/sjson/0.5-SNAPSHOT-2.8.RC2/sjson-0.5-SNAPSHOT-2.8.RC2.pom +++ /dev/null @@ -1,9 +0,0 @@ - - - 4.0.0 - sjson.json - sjson - 0.5-SNAPSHOT-2.8.RC2 - POM was created from install:install-file - diff --git a/embedded-repo/sjson/json/sjson/0.6-SNAPSHOT-2.8.RC3/sjson-0.6-SNAPSHOT-2.8.RC3.jar b/embedded-repo/sjson/json/sjson/0.6-SNAPSHOT-2.8.RC3/sjson-0.6-SNAPSHOT-2.8.RC3.jar deleted file mode 100644 index 5cf971df15cdcec728299dc0033d2232522a188d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47315 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 - - 4.0.0 - sjson.json - sjson - 0.6-SNAPSHOT-2.8.RC3 - POM was created from install:install-file - diff --git a/embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.pom b/embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.pom deleted file mode 100644 index dfc9017dcf..0000000000 --- a/embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.pom +++ /dev/null @@ -1,9 +0,0 @@ - - - 4.0.0 - sjson.json - sjson - 0.7-2.8.0 - POM was created from install:install-file - diff --git a/embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.0/sjson-0.7-SNAPSHOT-2.8.0.jar b/embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.0/sjson-0.7-SNAPSHOT-2.8.0.jar deleted file mode 100644 index f0d321a9e33c9bfbaccb0242e63ad85722632779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96631 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 - - 4.0.0 - sjson.json - sjson - 0.7-SNAPSHOT-2.8.0 - POM was created from install:install-file - diff --git a/embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.RC7/sjson-0.7-SNAPSHOT-2.8.RC7.jar b/embedded-repo/sjson/json/sjson/0.7-SNAPSHOT-2.8.RC7/sjson-0.7-SNAPSHOT-2.8.RC7.jar deleted file mode 100644 index 6c77d359b40c9298190ec6d5a2cf2a76dc45e4a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82656 zcmWIWW@h1H0D(8FUfY0Z80KVPVDNPfan$wnbJK?@<6wBb>a`8yhUkmM3=9nY3=9k+ z$jW>j{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__6b?$_Yx2_Wh`;#SM zQ^d3ns8sBn(;X!29TZ$LS8J_^47bo^;~>!*;nP8%D|XKDGA{Ny@JMr|XXnwGM~W+(eGGBAWQF)+xYD)b8W_X{Y>FGwvasnko(Nh~gI4fOVBG8FiC zDqA$rG4RNdA6^_WD)TI7HV7*BA9%&+&w4s4XjjU1??dsQAMk&0mrOV1Qp>j4GPkaO z=E*a+f1lQF@Ro_vh_KiYkm7M}Cl`zJzL=e}KUl8US~oZAenpVAY1^Ht*Va9B+qFyY zm`y+%Bai0GjO)tLdtxMyXlf?T)L&zn$L?jgR8HUhX8m^E^K&ifV&aLi zZAtnU-29FPaq(?fcH`k%{fRsFYN4XzmeV9!{0RrLFezVvN}l|Jm3)gg1QTRw!;e zBw@DE^}VI)4K*vp39fwBEN?HJY`>s9MxY@HLmPbbMM*sW67bj7Y=YgUrd5tl%Y zC5%2(kMv(IJ)(GfW}3Xq-%ugfMQXn;9SuR~-`n1fuisb4 ze&K*^TaNefM)hk;^d;V${jl*tmgbio=Ox|3ZQ`{gZBsl#SMBCGy!w~u!A}c0RKAzH z3V5xJ%dtsJn9WoCux`cF*)4Jt9~UgW`Z~gL;=P>Qe9K-Fx7-Mi^a+mB4i=TjbT%X| zvMi{WnHcj5w(C*m(vd%j% z-FeP_=j+Z}#oKTHZi!#_Z+ez%V@P$0!u2U$IY;Mij<8>PXJ?lG#pK6a>-ruVd6~R>(aR(Gj6L1hA|k8hVpdnPmQT>+39)|O zi!XUjetv%W{7nDA9`_X50FR@?DA zJAT&Y;pt8^ny9e#w$~b+`_iqMcTSqGxaw+f$F*J0mUUduD(`OiHc7;sb zCu+d*S?XlXksFCc(FV@1|L^e%U_NoxE^(7z;w$cTOFuLQIco%M;o$glOy}rIIg#sz za|NCnG)pJ^On0f+?Ej;|fGzdvtN9P-98I44A!3HP%@@7LVe`{x8))vD_R8My8}HTW z$5;GcakbwdGTP!$$Xf~T_VfwU{Z4qFtaxFsbWox&Z_<9>`8rRHo;+jYs%L~1Ly!b} zXvuw#YYYqwj*JWpYN!d;B{eOvG^Zq>D8D2>IX_1QTzEiIYpvfwufq-kwU?K9uDvDJ zue4%9vyz0(_lS=os{&ruZd$i1@vKwXVMK1x~YZf%f1W9IjJXTG0*F5V!0 zhGX*9*HKH~_grmx>HNAW_*`7|(P^BSc~ZhfhhDnA%zi&h>CoD`XXn~G6FVu`D7YM$j^4eZ3tF1j=- z{+yi7dM7=?=cQuaxi=0^*Q9M0m6&aIo^yj!RDQ(2KEWCN$`fw?+w@%0Uf65V6SIy- zGxvQK>NA{kNw45KHrxZH1rb?OSCSBcU=eETB*-|HONBs{g)Bv4`C2TW!tDD(&);}DPk+*@Yy2^XEZZ(F+jw|^{Iv~t ziVoeVNj%Y$S$q42Y0_ zzlA&xN$pt{6__irN#DI==L|*DH93IDoMt;k-%IuW0USHha=!J?u zj_LZi&@SQd)WsDQM_VMVXNTrnmYkiEbNKtw*G2zMD0%Gg@4wsaH9=tSy3`pRw#+7C z$+{1-4ey-xIJCXf@=}GY@(;HAjY%zUzFg=FoZsdCSmmrO*>?(mFynYSGEe)E56irbpA)H;!hQwx4pr{z`)4Hz+g{8xqzto zi&7I)ieVLhZ%DTP|d#roiQtDqi3y?*7MNQafWB4wx`Z~-L~)Ti%ly(=z9BcznCD(K~X`vZ|w}8 z&YIOzB-_g3)@Q$$nDp__w5+Q;V{h7;orzRkXX%xu6aTc@W@%xq`qsF0LgJCU^LHz{ zFM80rY~S;DuA3SRnm;7fW*YC;G46S?-X&ed<)W@qlU!Rs+|{Y3%frIXDCuW+v2b3$ z!|+?;(b_iEgoeaB&Zp=7@Q+*V+V<|VpV=nmhgNMaJV`TF?aGxh4L@m6AGzvW@SdXV zD>{`zZUx337w;`Px1l_=Tk&$yLA@^wSDS9~)K0HBB5+pv$~09!$>k+gmZ=iEw%jVM_x)*Ox33Lc@5_fXcddSk8um5(}l_NF=*JsS^ta$zQwcqt# z<4vaSm(6%Wmup7UMF+lGH?x6V$ak%MN2bk^xG!xcsaCtzUYl|y>E zy($zi)+<_7YX3|ln|q$|+t$aj3Tt2ON=h@$i|qRPeMd}+kb%GT)1JPtqx)0SUVJP zeX*s}7U(H_5!`$72;(pQg2w{e?JrE^H=M-yi1FS7xsx{xMamVbT@>#e)p&W_ro`sY zqz>WU>gO+yxOR6w;qQ@8`lRLcaY~R2*LTnJD{6vy<%@Y&MSN1X+Mo36tDs!1zl!~0 z`@)u+f3+);m+vvuw^Uzew{XSG?@yhNT|R$Ndg*>god+xL-?eS7XgeW~TA5}DX_cL1 zVqmz;%D~`AFw-~|6(v?eYEwk6DKE+_Ni9|}g4C~5LG9&00o(0U^mMgr8$>6x_ly1( z$a1W?5Twc~G>dBn)3N^Tsja!w?xx9W{L>0-aS{HT@u=VET%6W55p9!~Dc{e{EKWan z=1u?n`TLnpJd$)?k+dt!H}+b|)P?zXjbt~cy$UYteLZKPdi-Tm=VC6N*v=oQxa6$=EQFIRaW-7c%^jfvkAY=S8hs({F88V%eNhiHSQSn zUSGFx&qfpXty42OZH<^FG;t^$5eV?P9;n+^^7GIV%eK6G886sHrfOXOX?Om`of{|D zguWJ;;yrD<>F$GbZ@truJbCZYuGK+TGER%C8i@wZ{nl4)t|_F%bLsQeqh~)&I%E*{ zuH)Rvj)nFe8f+4WQqKm2-`%?^EBC{yb*Cm29$o!G%K6iwQcsDb86pL)GyZ2r-%ogv z@4IX-C3DoJ?Ub5LC3BsX&>IE zd#? z4mRcvy}hyGY-Aa4p?BD!W`Q)@CudZJPENLCo#W)*142c$pd(Z{xcn%h~ENtz{1D;ou(zPjW2;IxDLk<}29$+;t)->x-Cb z%lFrObuRB0R`gV@U66b}R%Hb{NBx1TC9gP|-6gD#t^Ho|#Cc9mLq$XE9aU-j)<kC=e(qvnep!#D{e|m=;~(_sH+UX&H*WMXJ{UAvecr#md-^B# zSsgsHJ>-`#Td;aX#f?Vux?|Gfr~aJ#EI9Sdk;(l1t^YayCVw&Ok@-~jKG>+I(gnRa zzSO(6gq4|r;SwtYgEneD@j~lArWNJqBKIIc6$z*Z$vmah`|7mmN}mM8HFbAgW4DV6 zbTF8}HH(Q;zCE?!=v$qe?ScP0|8d=S@%^&6)BaRN`ihP%ZnH|#zMtFqeV%1{TK%6t ze?%P^H}jnAl4tLmQEGc|!YuyfEYqhuwO7x17;*Ar%u6?6p0hVEindM5te>0kGJr+z zdzg#Bu6;4{cAr1+OtS6p+Y8gT$$jIB6q~;9PRG)%fY2zlh(%5}~^<5?`#o{aPk-iN*B0>W3Wkn>RjWZ?cZ&nR|1V$>xn$ z9yG1H*8b0I&QXS)V!1mN51$Y`d2wbzszl*S4%M1!+epzbE1z;LPj*oCl^~RcrYO^>*d3O;Md!~$KJfi_HOxvLxoTM`yM(e`@eS9Tr$x!=#*<)aP=yd zjXif(ZCL&%J*jqPk5R&8wbR_i-aNKX>l;=CF^2oZ91Cq*wtUIq3g+VO|JGBydjHw$ zh$o$|ezJR#neFE@g4SAx5AdeedJCBsb|*f_cbc4?C{mz)>-#ka!_G-gYFgFXO-$97 zaxAlzYir6mcV(kVLI1jN=G8CNg(s=Ipi+fxXl1RJIBUjqo zSh9PQ$N7?}FD6e?@G*|!n7Uv)&#VP?oS$WH-FtDo$Ef2_)=$P>t_u^Z`_JjWh&%hV zyzrSY+w27gd^47BoSMbB-oPjMyPV8(gC*Ui4{UUz_-VStx7$veiu5 zNvoD>?lM~$wR;n%YdFi2#)Zs>FV1T?@GQe@s%h_r;+bMRM}8$cH#c@T)K)uP=Q;aM zUg~{HRdUGCc z+i82Yxd)$;R9&NetYSxXl=>ydqJ1;W@-)iMDT#e8JnN@D^FSWsMfV?VRol*=xYadr z!O_}-K~p+*yXK$sxG^hpi(6D$2hY*qtV7FWr@5Ot%br>KcvWdg=Vt!x=Qez6uv+${ zWcTeQy=!6)nXPR|p4PIJ>F~h}*NZ1|11D|ddi^(|o%c!o?YT4!N3J1e2hNjuoyVvau zirSHPOUpoN&6M(q|6QHjjJN$1JP+&vgN*AkP;Z+@RwQvIwn%hbZ>jicH(fzTnQtWqqq^xT9~MPK$#%vj(tqiyXx<@tKEdA-kV zKf5QE{kdJV(6Vz={kal#=bpP+W6-)d%9C3|?EA@AP6gHvj6_s!JX7%%Hc6i`t?Gu6 zaZ1hSJq0N>8&aS7C?~5*)tLOsFq)PmX+KviEzh!JYl(3@nz{W!FhMj z{Yq>wD*3H*TZ=bCyK7RO(1x$eD_Cl(#IDxNP>K2QSZUgc6-SlIE^eM;%xGr+V9x%h z6Vu|(KW6Q_)Xn5O^>%sOkJNW()^p^{%(pq+z5m$eYp<_dS;jl>Vrz-m;O1CIo zysfqC^ZXL-eVQk(&k^U63){_P%MyN?X`!rj{-eIte7B@_U9+4eX>xI^rhZfJxpRNE zaQ2?t)pB;nWRn%P3Ek>XzGW#kXA~+r-+1Wo?#Nxe6zRR!4V*HL`@Z?+7BhRghSIg2 z9ZfMij!(X|_iE7X_TOGBwmz!!KjE=;!rO`kJev*+Z`xdSg6Xs#Q~HTKnGY>*R*P-g zf1*f}&vHT_Plc1*I+O?(myJ==Et_n6?Mez>btU4Y0Z63_qJarTeA7u zKNKJTqkkZGRa?~c>pzyAYk&WNxvu30KWfM1^WF8uStJeELpva?pbiM;fPDsdz@7)! zfc^YO{RX%O>|@(yzvFfB*5`TKzjN*n`m2Ani)rPz7Y^$*r{3tY&K0yVcQMQ9k**as(^E)) zr)MO>_GM{dr_>A6V;{auDSE!j*0sM^dxurqX^o3J7MmNT%#fdR_Cdl*LATYKe5(vR zeVxiIb$h+kedpQFuRG-?*Q#?ip)c`8Ls`PwZ@Pu+i%y+8mp?Pd{QZ{BxP+mJP|1IxQ zmkrN88;F?fKXhP&gqkpC(C)QIPJP-NIOAB+KF76sO%M5kws00{P0*KeR|)^bY-@42 z#WQe8*O#>oiZiZzJX1c#H~DsxWYquXrcF`~>%MVLF69c2FVJn}pCaWnagnRT1M@UZ zzpo2+^u27+XqUXhaN1t^(CpenzgrA7R)_uPd9EY(y5;zxJr5U_OK$&VbGya!;?|J= zog4F4?6YzE>%O+G<>akHg3GdwM_Ac3?m$tN>T3WP!%L>=1E|)zE zB3v4q#G(r{j2?FzXI5(@URp9)Ez16A{RhWdjh=HAm0uUjlwS(6+G}9*Wy$lD_gk;U zRnPzP_xoS<2Guu)9hrBHHq}H2S~}m)b~gXIW}V)&O`EigOX>|oCQp}8JJji6w0ug} zrkS?W{JeIly`93Bdi9ZE+d5xc_nXSO_uE-Yj5${B{W1GVSV!U-TOW;Q&is4gI0Phr zP3}5YzSgNtn!V`QG_!{qlX$$1r!q}9`(mX3Hu@H0E=x@Ehtw~h8s}Z`nfIJ6bK}=} zC*G%ePTjgE#9F6nwPly}4?ggJ6>@rEjz(GL)?YSk(~J8q%C1oE zG~)}`6%tUeR9z=$*we0ja#iS&DxF-7pBCq}SR+;68t+h4>X^-QIM9;A zorfNW+HcPgHtaUY-2EYQ|E>15MbpH6U9Yp83FcpMM>0-tQnStVX4YBrLtTT>gqF-%9}su^ti~L zHdCuWu`~A9or(iF$1}cOcqch`_lujqdG}6E{}68Qsdby)kBqm=6awPaGG$k`C5j|B ze9o5<{xa`o?drz8$_eJS%ond5l4r4BnE%kcN%YPtg-<`(7v=vg_uKeob>Dk+$pvp1 zSzb8#CwJr>Wes0&PV|879d_vm^>yr~>z127y!SJMwcoRH^P7`w8u_xPqT7pvW4W(L zhG|Fa*1BSGGu?Va$8*yaqE)v7=lu-Msol$REV%t+g0%jec?RnDTBo1;*|*vI4?Ai$ z+Ig0BODhut!y^`qd9Tot%pAn9Q(fUr_L8zPeZ(CjM7Eb9i&5rd``z1^MJos@_{%OVLw+5Gt{3f5gd;R6j;`8_3zPGop zW72q_*&Oy!Y5&3PvePdwkg|GLbYVm6?1lTU6v#eok>=@)*>~(ha^-K9Q!IDNbG9G* zd*Gu>X?l0#-h>(4eN6r{jE2CRG_sJn@Yy*0=lo-$hg3i=8xxC}XLYmA$@mzc_Q!&D>uh zJVq|RoHeg|-rCA*wajpFBA5A#4~Lx96Hb(++^q9S zkz0KE{jU&?xaH@&WWT&nH=VtzIYIaK_5Z#J+v{9nj-H!Y^IYU`N^qlm=LO4W&z6-R zYu-Nb#^S~8HA~+!0qM9G}D|tJ#~CKhx1t_ejzD8^M;b zir>B0?wY@M&4Wl=j@sRVdG1bDn-)FV*BAOFBjPZ#)=RI?&t6zN72Gd+tMK5-&xF}e zwd8^=xBWh6p!C&ZUgSjaGe0G)S3L4u=CJDefenuLU20laNL6R(IZiBFdQm{+h=2Yk zZ8p2p?*iuJXYcemu%qR2cf5g-txZ*5XYrZ3MUt$UU9~ODCTD`@WGk)Qt66#J#G`33 z{)Z3bYRoi0QnUQ%pGg-C?Y3_C!5!>R*)`U^V>)G{wU9?RXaVyi|+(AKq=g#X@XW9e2=Yo8JF zyEc0JlUb?eJ9lUOh)hrl6s~WuKV`8!ck&|5N2=Rr-<@mze(&6y^Y`!j%dnyMIm`M~ zw!rXr?OsA+_ubSCV;5%?hHE$$@bP`W$G+aHMcnaDfA6=q7fifP<_SsJvP~&l>@jDL ziJRxb@4h8ElY-_N+<&nup#3CY;rT2y*zdjHBE z?vB{nOJZ3)$v3RtRr1_c2w4{}VPO(GKgZTjOAbGDtnJ!YwREo7nkR|E{J|?Fr+a^& zVQ^i_Eb_J1TGJ;PEVUm4e|Wu6u20#r&sc5SOFrw`w&K@2*M9KmP7x^deiEOpyLg#U zp-%FlTT5&BwsGv_3_A2Fo`rAT$KQoFh0KlrAH5>Jf2HKT+0N6-W#ZO;m{WJIe8=+> z^KY>(y=%?&L2_D~$g1=m|3tTQrbqm4`u)5jYU;M~jdW`@7tfgAKX>NbyZitDd}D9W{xQ+<+>BK1++C9UpM0uGvYb65C*cZRrFEf)EVlOU{`zy8LyeR5w5XUzuY;#8eP^hmEY~G>u0Q6! z;%lYz*4JDfTB)(NN{eVudd*_-YGMn|{`ak#Od^LwmK}ARktmU~C-u9=nZVeoJNEg# z@@;l`G5!XpEDvA#Z_BV%*ggE(X~S1s6CQrj+^qU=wt$=9^pCnB$2;9k ztAFz5s*Alp z)jnGGy>oTdnZxrr9xZ9VyyW)j6RS)g+v(PMo%6r)Ug@>s>^0(*78bc>>iv0&?e4l2 z3um+4bur!*rPX=;_|Z1YsT;iSZl4yxb@ycRi3_3My%Zv4b25XST4 zgKXV`jowRo2)@bre2scR$vy&K?o@cHicH{eNo& zU#n&vaAx_)(QM+LId5qtUw{8Z-|Huq6^h4SJ5hJl(lurOvV6y~CKV@Z1DVwcZ=XE- z-uI9-tAbIyzkumPXyLl>!luK9UCFF_1Vc8ki5{^sdttwK^~T8F`%Gt*>SPaZOur!| zSIIWFsrY}m|AD&jt!y_KyNk}x3GEEq_iEkSRUsR6tY@vOk+$}8`5WR{UE%ONX5m%m zRSU~z$uE2zk6H#ki2cx=#>~L5f(>KQo(p6RlyiPwaY<2Wa!Gy>@-nF2(E9MpX(Dxb zD_L$?)U7BsnAsH=oN+SX_?%F4mYJokMs+I}%n`n{T|(?$iRY;)`HSW|{aq}5`{L&P z<=XdbHJ!{{LLR-fR@7uPw=pJ`E z{w>ETs_Qk}Z;Qw?~xBB=to9Mi#;CZrb zKa<`ZpS99cy{Oi5-gy}V&D38PJQ*rBO>Ao@gZ6k9(*w8}rTA6Op zinZJQi`EGLusM3iPw31xNpqg)Uz>s^A8To2bb4MIzU!jz(HF`~Ppx_JLuh%B#1Vmq zKEf-O9=IpyxS~PyZhTAIwbR=I#f-&kuIcX<4PT*EK4WH6pUknK z6Ni*|%&IH0*Cx)n@U-poR^Ica5>p~ita-JgM_V)Ika^3#@~EPxX*!0}ja52b z>ULDl`ED07;oD!21+q@{s|zp1f4TXSYr5OY@_MBbsa3`m6J#QDdd&7JEagZFY4YUV z`gF-dM*dUZ&$?M$-={zK*pU}9i6&C0;wK(N7rSeA$A(Lomy zKo{PEr%llo5_of8S@dJU)+{a+6Hx=*Q2Tq+M7Kqj&8~g$IJ{FyW!4LK;rc0s--6_p zMeIK5SN48R^}91OXa0Wu{rY-MhKHNPrb^t{;B$P<>|b+YpIfEBIDNJB z?1ect&i+ZePCd|{5zW$bW7X2ay{n?OrAdL7;H){ZA;Uc9vIlptL22w->nC=Kp6dfCTgrc<_0d$wZRq=^^Ql^HZU6r6Y%kCw<@P4bww>**PzFQ3wa>(5W{ znj%%xzq~XrXZiJP-dmIB>g8sZO}73zH+kKn*r&TzUt0IESY71g6xY04?C)fkcyt(e zoWDNZ%=uqIdfPN8m-U+fK`TyG;b z0lvV_AfA1Dc|50PfBm1c=(pb&wbVyF)n~7M;ca*1BwGi2 zMeFU9$HxQiv?z5P+R>`{$)CGK=~Gk3s_?H>}N`ggfD z+<4Tvyl&BdX`}W11>fC`zOo)ZseI@D`vcPUPkXsj{T|ggXc~Wfdf544y-R-2Kevgl z=ibLEEw1Q!fwtae&SA5z7mN%HcbFL%%n0TZaIerMzceW)71F$i4j4`ijs-7D7x$We zcU?_Kl%r$Is=HmWPqy-MW~v%S9*KDSyJYU9+_t+Z_CAPCVMX~hHPvMuzc);tx%2tF z;&*#Lf4;t5o*^!&KjG^loo`PQ7pNpY%#~R>QGR9GBW_iWV;2j*H-BH{cH{G;K%v%k z|4NmXE}733Xu)=c?@`2@(#1Ioo+OIQ@7i)r>CE<8(H6&D{xjBE*E+2fu1%SD_y5_{ zgn0pZuVc(~rs&RCAt1I_VM_j{%Z)wvyB+fqAOE_-CdM)Q|A$MP47*i@yCc-r_#P>H z8jzwT%Ptk6cw@2?r*-M^*?lWw*G}l&y(9dfYzSv)Y?1l2!!do;Du)s@Cg1s`m3Vb_ z(dwmk1{>SjV-_e`OP_I#VU%e}uU&Y|z%BQ|#G@;Gn~Iy$M4EVW1ZREqtUv0S-L+@h z<@38kH*e@w-+5`$$=YhS8Lve@e|@JG99pnt@5CP}F{+1zw|}^KOaAk#oa4=ciz{E9 zi7OE5GU?ta^zF65ltTATm5H2*f1|9J^*N?;`hog{Y-K;6&Un*N@$}l0Z9h!Uez+-f zswU|}UhDNg#`_NMX{lXjKE?mte1_?Xl^$CQ8*j%K&M#>Es$WslxxDxMiutcUME}u$ zymbUpn3kr+b^v0~byjQAz ziob_Spnc|}exq}DuSMmkZuLwre|~PRW%09*kDo6;&kz)m$RV2RAM#~Q;wzr^=`C+> ziQeAxC}hV;Nxl@VWr>pSRGh<2!qQ&M+jjlrhWi&=51!qmCv$jP*t0Z=h`xu@Hov?P zc1is5w#-+e)BEbJuX62~we_f2xoL0owy#$Mk8#;NYr1MWKnq@JrUV=dYR+ zr@g!F9qwEIuaS6+H@ z&8?^~ck(5r)xs8%P7=!{`qoMNP2D{;eSht=oiAT zS=n*j!sCzlqfK4fra7Kj^L+LuyDwV%G0N0%*PKH$c&zlKZ@+J8@<|Wlh}PKQ_cY`2 z%Ch%q9Oebx4?o^pc6v)eP)TcI?vnopuRe*7ouzqpxp!)iF-!NcwxhBB0rTUs+84{N zY`-YJNNwhV#?twce23@yv9C-u;dFXn`88*UXhhG1GMlYMOL_i& z-2GtYvq`xTCcii9YgL8b3o_8|e8;EQ&2ExyI;$mp=do$?=0p|89MsOcw)u~QCTp?c zlO<2L_9dF!m{w5Lwe{-qbCJ{ZmifN3*tNM_am%lu4IWdoESA{)n(Zc4W$%C3&ukm> z#-$5x%wOd7^gw`9Ll{G@;{tn~=X1(R%;%O)REhaw>LB*%x^PW@bN=7!jFH(vryn0L z+1Wj>{Bi3M^Pcxgdw%g97rt%rSJZj2e8D?rz1-w2%XZ(n5UYBZZ{6OTM|-ax;mfO6 z6raL)GOmhg{X{j%19Shmi|7O&H*%EfRI`x!-}S*v?fwt9v)7k-x@EcT=&rWAr?9MG z{yE93CCmD(!^=fG>yICdO$jgm@ZogEALVm`>wa$k{iE09k6X>52-&Q86$$^M8Cd_< zH2zEcC3Q?luJkmoRZl9AW`oQGbCOXin(I$5;JD zdpy10PMP*lare!$cZ<(ke$V^&=kGV>14?C*OL`J#Tkcz$H7D`G)XWICa~H%;S-J*G zRNb4s>gZ{n;E5q7bHh)o9z7*{@_4HA^x&t=uA3{H7FHiVarx!OZTAl|RY|nGz5C?# zm$Vs)i)?)?9y;s02r{X(9o(|&v+V8}PoM3ZRJy`8x+SW1Z4JwY+PMW|d=^8E36P9VfFy(g&@jlfE@7ie+})IxF{i&eRu6 zF1082cpS-_@+Hb$t5V2w`dxu?k5A4=udOj=KJ0f%_ppvu*bJE@He1a$hg%Ag>|HCZ zR=v8kM=ku*y5q7%?!mcd*6vhR@TfTzW1TXi$K|r=bdA>&_pB3}WV2jMwD-jM2eVoP z)*1I~;}vvRDrluZPHj|~iwPCVN^8) zZ#$pIt6EfT5?*Znx=c+f_qt5VNh3MST$g!O7v9dPc{61zZ|4QqzmC5o|EyikvS#PG z-S=`lBHSnC@JMev>f83R`@@P}qpjAnt^Ak$Oz{2f_4;pw@0IG~u9+PI##xTxI=7ch zldx)6da!i!-73EWW`AR*b<~Mpy0I|6SNzPzZa4k4^DgXef3|P^3+}l}0Y`77N0l9P zPv&Q3ER0!L*z-+;=kW}NJKH^dE|xzFS*t#Zy9#64_o-Q`fL_{I@kK(v+3Lkdw3=Ew|zLX zmb3Wr?hkkF`tMvVj=rql?lyPk5+())9n5|O`pU~<&<;!$FaeV)D9TSxEiU#=EPzcF z%?*wQwVnR4RV_@NI&F5CposRCfEBv;GPvCWg**<V;&G3ltw=-uf@6S11e(ukouTQlbWW*#FiQXP zT~_9n&i|)!0#becL846Is>C zcQ&ofz3-(J9MowXe0XE&!(G{XCZ1`%xLC2JfJM+nvT4sngZsuk%T8%cebaW|z;)k@ zeHAG$w56v-eE*(x=;i~{&_k6j6163?|vuSMDOf8Dq*=c$#uYSpPsjZC(vW`j9d z{NYoaZLTdj@KN{t4dI*Vrq_#iywm+X?cGI-%R0|gE;ed>nz8tuTJC*ezQYde^(L#P zK8wB>rsHkltyUiExb@iW4T)!rm*_?7`>xTtvSG96*Bd?jo7Nb3ZIqcfi~TUuU(TNy zFErUbuKP~^tIq z=Ik7$Kn^vgS0+VGH`0`TNGglyIf!kwKK8a*xF7w#J#l!Mw5?w{criF@lr`+LC24L)M{jVw@<<%76yjNybKH~sMUxw z=7u+D>n`kX`0W&tx_gH>coPrY5Sht$Vbj*uwTEBMIWU7K?C93y&9YX@&jm2CTuxc0 zX|?~^_v7`C`@WsoS^Vc}@t?&u_hvgx-=fcWJo4Rb^Yg{;Yu{g=UH|XzXMKj?AFd9% zmZjU1p7@>?u&B9PYP0-NM0%F!-Ak-f9({Ur_R!QR2Qn6J3oU*#=YK?j&gm5u%aY#< z1sOBl-7I=~i*LT)0_C}pf-hnUu6exftXS5R*SIcn{z^yJ>0K&SEWf7b=)d0)de=L2 z?pCYc;6Cf z+hLXrfgzGMLbvE;JZgJG=iz|~kec`Q`tZ<>#B9U*4pX^MFR!REXVc_AqX{IEX zqm>!QM44}*KDT#-tzRdV7rA_L=8K~bRYZ?-HhyH*3^dR(5SqSi<{7T*cRp(!`_Saz zzk*96=;JvzEjMTRUpIFKhb&`P(LAx@#HQGW@5msZoPa6QVpZFMVmXoAtbf-S2|Wex}DR8G6~ae)qN zv6kM(m-jqsx##q4zk7*SYThvc>G%asb_Tu&MMW$BKX`cV#`gyo%`Sc5X}kGt_DA;q z4I&~TB7b9|)6QyJe_prxzOY7+_lJh_p|c)aq=&68?Z2%PuJGav-vQHWk`uIFZQGf5 zp>ElRrTMQdy|s(*29od;Qf% zIT;!Y?=){On7mFj|MD766`iV{x77k!ddatAj8Al5nR4Jl9Q)##u>~)#cD@gfEoR=#+uB_RPoK#ZGLiFs*0#2~bov_E?rAO)+z#=)pIgW(pH;!^ zZF^zkszkZzm0Oo3N*V8ox?aGi|1m50u!`U3Ebqe>exFWVDv&w<>C`gm?O*3`y<7D| z!dA-a!pWoIk7M4))`c&g zc_(ahe!=ur^ski4$^TQ1d)T#nJMiD|z|Omjb5xUgBv1Y8o4Eht^xB?{(Kp*YObrf2 z@4sZ-rEj~t<__1!m2N6;N)DVes$SG+l7I3>NVZU!UV^{j@1tx*dsLHy&wAZ>&isuv zZU3zUmG>rXT=`A)O*i9jq0RBx50vsx-nil{^eySYIpg17*~BWnk1dOvvSB^j8>P+b zO$(-Ozjc%8^bSAOLvL(O@=dxcJh^|vB!lUIq*4XgCe`X_d)5R50;uYrZlTBebE2pL80aj zEq3|oO|qOb4lOsc&aGj;shM2zY`p8 zCM4%D&N?LZ!1U^pmC2Wu^!RFhxyze3Rjb%#lG5AsTo0dyBm58C74u@cx&n@WXx6>` z{9bY2`>)^S8%I;aERdihajQL@Upum0JGuG~uby_)fPx7R>|GiQ` zLn5zSU_&C!9w)CKzP!%oen*~S-Q!n#z(XPh4{y&nI;qoDNBElBhTogi+Y0U2q#_h& z><<;XGfUd1-CCGG`LWr%kOJ;dr%?ON(@(`I9^U%&- zcX?Vo>tFd7wx!nuKU%aon|(O&XoByxs$Qm^D^fRm$<*l@Sq6Wo=HE2Q7gxQ-(@o-nHU&mvoJ6yqb3}$;`}_=c7nu`%=|p)=vgmx^z8Dq zckbF3!j9^*h-{TV(Y5d9E%B)?n>sdbwe#Q3?X&sKjJILJ^1b~3WIFj>eE%^1(|9~L z)6r@B5wq&_XYXvE-z(nq`Swnm6wK z{HFJJ&D6w`vR~MZN=j}ly6{Q)AoItG$DP_%m$Ges$f_h#I9V}vU5SK|e`>#n_<2?- z1IbOiyk`!(U2AKVS(>y`famO{+t1(c6#h_f{^rYXwfgJk&wHAyl2jkCeuu4L#qs3) z|2u-)*`4PkX&-4^9^I`dDZNZ_f34c#gh_rzJ! zCoQx%>9FlcZB?w-j5tP>$a@c;@Se4hD_MQ9&c^eK&i31!VkR25ZH}|AR{iEA$FHnp zR<2xW@ael}CD)^p_Um@vC6`A4{)kblK|nDva(Qf{+M-^*F+uI_sr#1)@8 z|B%elHEngrO1n-kmWsKidnJ!C{7dy@sd(ihi;mr0aK~3iwebGTC;yCEf9t*L-FbS& zoPzL|8~t0>URag2=9S>P@cjoZuN?X}v3^m}vPMmtfIaA2zTW!mG};C_w}lm>NP_h) zU`K`+BF5Mf3kq^7VVfaqL1S#7waA)F-)iMnb{_pyaMZ3rw1#o5#sU`)XJ0PgA3I{% zA~)U5{pNTi{-OUw4I!1l{WE_o?kQic;N@Muxjen>+&$~(_lloif4}}d!n3Q^T%bD2oQ_}U?v-al6oZ75d;{C!&qsKsrCw9}*op;haL~rjr zY0MIOc}luu+dt-M-qN$%OaDcg$2NX!Ht<=}{rgqpDv4D;!!$#`?|k;m`0RX%s;*rp z&G$r2y*)eY>H{H_J0G@RJ8f_$&sp({aSwNk&Y94b8pk#Eb2FDsn{Ln%Ey$D5Az-~L zI6OA@JyT#HZ-4uQB}Sc-G*VZ)eYO_LTXg*XU5>*KOd~lGdp;FBs7`p{`~P&+(E!#`YwO!hOU<19_|yI+7#~{QEZXPOufD>tFET)XURs@i8UJ?7lo92 znyr1MkjQm8(8oz}?au05hZk&_>O6VXiYYy>=4FIFcDcCdhv?KT-lAfuX%QaVuixIP z^!c}9sbuP5;~sM{-Gbj&t$Vq<6m7m5Uza>6^GwoB>PznVlCM(X(^mCmub#F0)y!G_ zYMM`#HGZ5(*m<$x(yYv)=qcU7dP>uOFH+m%HFu$Zj{Ej0n_l?;-Rp1I^7ICe=Te3? zQ5J(I=CT6bKe)v6FA2?MV?4xi!E=Se*+(xL>RAuZ7qAsNY?1WEWZL!SM1S$Fg8qz~6^elY(DJQm64^hk<7 zH~m@dFF&ilf2#g76f|yXp46<%ew%4#=M_QDDSm$PZbeF~qh=+34LfbHN94rUD;GSZ zS$(F|3x}s)=XqLPCsI+e+$8wu@3`e}{qC<=*kjvY*?2cEWsTJ3&0L}JmwOHOO%400 zCSnosVT!%eR_|#(G8^lk%0Iby{nTuu7bWv=t%`3qR!IWwPGIgw`3pkb(cqyU5@~BzrM}SgPvP|q)-qe^@9~uN@{{V*ZIO?+=@j3+uw5qBOmtu7Nnxg2Dl7^e z0)ioxdtEE%iB~Vo)GkutiYs_!{qCL$H-{mI{&g|)Pu@m{J^lrKS<}L?%cbSw*$XqnOH;3| zoGQBc#OYZ|j)!>755=|pnEF`g!g+&d2UGq3=x@EM9t40^w#QHUpQbca3^y ztxlP-TO%@EGj4Zk)-*d#wk*>hhRr#9c@*(<)|h`>qdE3;Mo zJeT)WWu{8(*>DeXfI&3m0E05Swq>ywFM|&-V7F=xIcmsuKkruQ%FarK%Mx=w-Y|{2 zF?Zub`<&H%%hpP-@>{&&%eF;VVyzh`3!PnO-=S%xsz$Ir-A?PyD$bP!Sb?)=VTmMeBP?Mj`Z{rQVKI7=$uR3Y|h3OWDF8}qeSiF2s zAm{*ta{*V*{Qi`9?Q;5y-V65`o_##?K5qe|jr$LC)b`)18GiO)ynPc?%!j)^Jtc0@~+_XLf^M3OMF`PA?MwV^@mpf z5G%KEzE-s3eR+(XfE?$SBK27YyCxqfOP#uKkIPl7_h#g7{=MQ+$HR)X4z7kd8x&j#gN#l4St(<*+XQm_2fb$&&k(3FHg{D$k`OS=k`$}(c6<4CcRzu zvYgYidspsCwPRoRz4Yrc4)@cQ0H?u<0;Eiv!z^U2yhX!ytVJMlrdTH^lO<+bKt4xNg8;Wp9QW;M(7 z3z0`_IbWoes!M$PqPfaH_}0bEyUI8^d@UW!SKa!5l5uIx_pi(3-R_jTr2h{o|Mf@o zI{TgXFTXXkC)TE4TDs5f)7%r>HH+8%Rgn}gRtkLfqHcMaXnn=fJAeI_|NG!|*6`Qt zH@nmd4E=Av{%Iq{>)PD;%_5i~X^VVl+q<6*C%$?=+a2=c;=9`?cp3M31jMk38iabz zD(snTK6$SCZuQfF)$11*D9p%wYF?enxqL<18~N*ce#QwF3_gabH>0{A?@^Pk;C(Ss zWbeJLiq22M62GsUxP(8dD>HO%b8AuYv`1^orfY8F{j3rn^LO`-OJ@yzxB9NUJY}9} z+?o58`{u4x3CU)YFx;$m?yJAJwseWC7gust>w{17KAE}m@5r9KZkr>eb~JzH9o_Cd zw=Q+n#Y8K-KPsU!UGdAtMJk&#C;3V3iTUk+XL7c~pTNiGm)?6@pZ)jVy|uk2ouQ0N zeD^V~-28Hn;i9O@!g}rFCtp==kXU!d&a~;-p-HEqw3*GYuo)tPOM$5+nPQ}#qaQ;IlfuC9onG>#P0;9 zr0)+nWf-^7_f}1uw)xk`R}Tc5%=0Mxp>WT-HffJ^r0a*M*2r54mE2ckG!HF`i?X{P zJH=PGd+Cq4Gp9b-+ZQ_RCf1YT+oNQoPC3BW> z*6*uvg;Q8n>bGAwVm1B49+iSA&JCX)eV-(u(3Hf{Iaeuj)A2y34W0*+j<9e~7Is^? zabA~!c9_=z8Rp0iv$^Zj@Gy1%}YRGeqApNy9Gao2r*;;p5^*{gFWW`DnP{+xz&-c4I+ z75~4E*YEOqocEW{-8u2{JIl46@ACcc&+~CVC+D%ma<)bCfp}4ca{P&BWH<50V#v~s-Ft`92G_h0%g z=57^JZ{$f2{T$$Wl1F-xvx4}kC&4$H4AQPf{JiyH(x-sO&$3?I{8}TSq>+^qe0$S_ z&K1EodfuBn&s>>V__Q=|XXjnroLUP`z3LL<7fWyO6>qtbyGG}JRo?;O3vG!@raK%n zjy1mScj@=z+?+P1J-;rfe-@IuW)U@W!ixRETMDxJCuVUy3Hf_8)9}gHg_~Y%F7+w+ z+El0;^0+|bHztEy8i)Q?Lieh99t{r!0lr+<=)o$|uhZ-2L) zT(!cdAbYx`@3zZtLh_c~tl0PVg{1P^jR#a!_f^i6Ulkp1b<9?)sPnWy=3~}=O!Fa*iIPR-~ZAZH4*?FHA2V^c5-f`;w4(*<)&jfrm zCPzFqvM=;ayRd;P+mhul(e;txe#TOn#Em;&|9PT6=bM#jSrgZ;y*pBzO%>m@p7hjpd@8?iT~y5b z&Psmf`_EK&b;?YLz1nn0!_#=Nj@x11qywJH@8{UqUafe{$~R?tSaIi}+?GSS+dk}W zFBhMcB_`3Z1h=|mb8`Z0e z7j25{H0}*f{kCRh?ee<6tjWBQA3p6AdvNA~%Q3r$YTj=*ZThHHvG%^X*6GzdU$1@n z`!Vxvy?rVjOMVF5U#@dGwl`bsfs5PqoS7Gky=E_0vd?{yuQ~+`cMCf&*MBsB zy3pfy6&KFicGdq#-dPu8zk0=_16_a88?=71B-^+(F8RxUtmyT^Nm{IqpZ=a!xUnj` zeoL|K?)xX_n(l6z7}CiZ^w~S{{)AOT ztF>j`2%UWZ7d~erZXQGK;!OiQ|yK-|QWVfzY>NvbHGy7C_ zY0H82%S2eFCzVN>q&IcepIdp8o;SAVNGGSBpCfkp(=!*BY#CVo4$@bsU1 zKRHuNoqpfCrgLO_o{jF6)F&?GJ}MvG>Tbkzx~0X5)ilMcoyfhF-m31RxA=FB?yqML zTAU-7sKhzm)8D+w;%H@j@U*F^&S$TFdURI+!^{ax3uo?de9edUf4FBvtB{P#O|Pc%8NyX0uvw?#8$HI_OQ zJ+?4cTlmaI{J4bv%7e|5e?R_STG+u=ukP^YudXcIkJSdu}JwzH_RvENbhCn84UF@7Ru{ zsW-0MB^Fn;uU_ZF+O?ITyrOH}60IYbJ>=+2+%RWpQ}%K1N6U|T+scTVEpeK$zNoOW z{Gj%g;zFI{rB4%Gm$EmVVfC1x6&;@L{ z&(x@x{KrN?@yy@QLy5bO-+JBX`b|+xf$Q7@hoTnFH79kr4BqpcSN~AU_P^az!SYt} zfqKR#k5xE)DxOL5`-RD{%zQ5UM>oxG8lNF|w7^falT)qhe>47MVqnl@!`L~6zUsy; zCqEH=D|T+MP@qWNx-M;P&3*e*5~1jhA9BmYlor z^^#GpaqcVQ)-9`6^SphpbM_f)+rXaE-Gl=ux)v*x_gul=ksNNJ;Qk$zQSC(qBcJE?ezprk2OKU%E~*_C?}{6+id< zo2MwXj`Ozv+>cvi^Os$2xBGJXNPdIJ?d4KCg*?SvIwFMrxRjRsp5Lk%7;3n7PFDK~ zm9$I#i7$L-EqM~L)g(N^b?)&;S#CG(EU9qGe2{-rfs;`wF1jl^MH$?k}x50-9kHF!;C2^6JD_TP46;pL4xNfNuc`rTe``19)BmB}l8b-LqMR(oH2 zG?h`vAXN08vu^f^ZOIoSzFaxzaieg({&UY8OZ(3#eav?hs{V5FW5dq6i?0@57T%S= zaPMbsD|NjK(T5(WTWvewo^8#__<4ut>jX<4X9>0=`vrS06+ip7mg!qtLv$v;OZoD8 z#UG5Zm+b|05*M|cIG*3J@7><|zMJx)f8rJ~>KyQA`JM6pc#!W}hpk}@{D$n$;+IE# zo*K1U^wGVQ8JztcKT~fNn+Dv|nzEhis@Kz33-mSw9lBMz(CviX^+rjXwGO(M-?>#T zJGb%cPc8|6(PPZ4=Ux0~bmSi_F5Iu{r~ePFgSPFnL^&%H1H)}*j02jWW8Z$6$*G{e zS~7IxFE=PKU&vA5pBNYW_06^iR!tFGIj_n=_hTprzuBw|j#&;Kzji!e>z`Bo?47~i z$XOAyGZyu${nL2-rYP#r*VMGUytIA!`{v%S-}jf{1B)zMv53y$nH3LzHXW=IwH1z; z=VJV>n62zwfSk?`_j@0A&MA-c7f%u^m)!K&@aCfvv%Tf?onM`?K4>JS=$tB`yU3wz zOJr~G(o3^DgXg;ohVD4Kb*7c4X!P=f(X%#Ne^?@+ci-RD;#u&~mkOrmB`<9d6=ycr zN!b{Bgs)8Ujqf@(FP_$&9i~04Tt337cT!d?i~MqHOW6D!7E+fksZ?`CoVTL$h}Qext=76zd2j=H{9QKWbb*Y#M%SQXMMImw3Bgg@3Ox< z@s`eHgX$IALju|QOP*@IU*vgjNxgN(V~ICtJD`1*>PtUoVPLT0VPMcl?aN?Uw}LdH z3F+U=4a*Fd4wb0WyKUlp;l1r4eQU+kX{IwDE}FWX$M%8EGaldIOWU$uR0lOmUY@f3QCsAMw+;&P zQzRzHw66GEV4lRI+p2R|^W;WJ)2TY060-4WS#S=Ox5)ztmcP(dp!~b&IRJQodUFb)V)jttmGMwLVxE>ZV>-s!um&M>atvqRjI}?990$p+|_zJ1ZK`Zn4>=LxQw&HjgULK z4=M#?J1#41xE^9>`_GyE0>fs{rTgdc?8}(&JN0JB&cml3NN}yY@FdHo=a#SQxgE-9 zHm}(G$$f8;MG|B8k+R7f=Jf4)c=&XLl9rC^>0gDyo9E0c$Hdnv`sy$ zl&Li{*&rk0n%_ay+aX_Lmh#^dTzGiNlg|y3er78i;*RuoO&0$ics@S-D8IbR#Ejc1 z3C9jHueg-P`%>}F+Kk6*_Mg8{ePLw-e`W&P-4}L3h0^lDhd-S@(b6vd-K+3Lt+LD9 z3;UkjtDh8n^5idr<*%pP*sQ&>tLRN=^v(Lv<(EqRgzKhCT5Vxrt#LgX7ToS~=-{{H z7ptv5XRhU&((wN0Cr1yax*TiwKlj|Y>kjyTdGmP6W!a7M#cd?|E|zn%L?zoy|8mz; zTWan03)M;Du`6?JT=siNE-y2j!S(*Z88f{cEddY_!A zEt&f9lwOd`vFzIwt9!0?{r34`zGmveyEj|sz0!Yo;MZoZqzMTPR_EJoD%klhRQKF_ z9I>8JY&BE&LARA$Ig88NO!6<*^W{tm+fm{^L*k~DM8>*faqd^+*zc7xrG}h*AIju& zVK(~>;l4XZ*&j~a9kF;B zg$t)0A&_%M!GqY45^`xI zcTG&_%>VVqlkc24>yYWZ@G=u`u12QZ65gc_T#c95eLXK<`eLfP-m_@3pY=@1G_@~{ z3QA22nierR$~7g41S&pSlBwbAs_De&+RC&^Z(aB94ZC*jes@^>-}#-Ny`DW|yd7VB ze(&>|_n-HkoB90zw*Q$7+)u@sHk;lO&fgx^c4*px?N)^oMSJE<%;0Zp{^O(ac%eu5 z-%SMu69v|+&GCEV;i6pnE3sKG^Pb=ywFq%Ow_UHIOiTXtxaIV*S+Dsq>F46-(>ZKT zFOp5MUTP__F{*0U?KMBz5@rjfoYIJ3ZaeUz=U8;p-59(5noE=v;8l|*avux#SJLBFPJvVW+ZRGNU znL8vuXdgbi#;Z?s%5yuJ1u7jt@1^R+dx`!-g(ws!3mT*OfcM3ZfP!hqEYO^hoz#qV%{*l$$q3 z%i`e4|2gJ)rW@s?H&rjQyl6F><+#~%|IF<-9vw|%3GsP3wdZ)|_gLYc7OS-`lTO@b zS#HwLzNjhkUmN6zAv8pc;Bj>G(Py#ooQXKs&N9F z73)E#TW6D#bR_Tl9}`R4Eu`k6y`5cI{A>_RdWm_kfWk0&|+?ju!rmJz8VSM>2Bj;0_k9pRgd3Nim_7`Pg z`JV1&9A5+Lwi-!2zcy)V!d>>Y8AY^G)rK0}UwNm0X2rf`T8Z~rI^9`! zHs=4Szmll@(bsYA=Vz9)ZE{cL&#d6NFE;00!kdj}{_p5?vpM+AZ|RlJ-Xts3(6s9N!-l^BPTg)O4*zC8SWBfiVIVwuSIRSV`uDQsv=zxk)^lKm7$mgiw+)9XCQ?>}U3Dc88k@wm>%^JTqqr$1gg-W6nFX@-%yxQcZ?3rC2#QJTca__;6jLjjMMoDF}&#rTs>hRU*vf{bj<;(aj8u?e{ z6l+W@vC^`txW}{n*_FJX|JEEb-*Wv@-t{Mk<3DZ>`osF(dfub0E802|;ufmTo};Ut z7aa5GVdO>!j?%5dJ;5TWyYsj%CVFhtsy(+vZ`!0F!z12-!eK%3r??l)lDWKXN|(Q9 zAy2SVMbo0?XT8MUKHS^F_o@Hx&JPaZb9!!NX1{)-$E=oOw10zO&~-1{hXtK;EFOJH zzF#l-NZxR^pS)4Gr>W#t&7O0wGk4ipM*0~(RhfBq&z$JJ8dAKg_vkENWisn>X0nmU zI)jvTyY@@iu9af4JgY5g)PMEut9cohq@MEemAgh7YNhV;yrOliH}0+C$z4wmE=l$9 z{gtP2CD;0K*8Dk&rOU3IViL9bmbpUR$$z89k38*-`_vaT@FpJmw#~IXzr)OZD(fk& z@aLbyCO_HZan9(ePo&S>qB)}fu4S~CoLgx0if6+eb>34U&%55;Fu5)&Xtt~H?xC<7 zq5kL0mj+6Hu2_D;=!w(QcgfE!Z%>}_^oi2JoAO#8N@q=ex=d%XD37GN;f`kU)n3nc zEZe^Er1t8Rt(vPtW~<%yO5tsvB@}u3;U}S;Q~Iv%HGUkiTJ~Fok#S$$1ubc>k1KNK zOqu(N_h!y1v869m7MwRpS*>|nq~xeYSdLeb_fIG7SU+~T^A92ea<^#jEozNPJtcZ8 z-N`PF0BV=d^g$lXqSChnCh#?CcEAc`4=7_DODjbkg?pT9;}Y5#?yH-1EK7C&o5;j@0vd9x>{Qw-L1sU-9(yCylM={>T|_F8X2`|E|qnZgT$2 zmgkC>J;I~&5*QC%Iw2=E&1TE-r<|?V;w!QzT)a6!{rL7rO3p#ccvb}O+o?U}&OW2J z1>SRH^3DYB?cJ&-#aY&JOY_EpH{p2}CU);P^H?UFx_s&)ckv?SOy@T5rxSK5$$ac~ zuws?`#Phm%OKyAC;(pFj*F}ZdvCHc55Y|HW~#sqWty+y2auDKVbF@11$(&-_)(#6;BFcUHAq3TYKvh&?_3 zEbr4yF7@hAqsj}d^MXHWTXMdN*W6QZn0eKi^}WAjKZI3heLHwP=(mM^jK;IePgcxh z3taYj?J2e+h8AJMpOU!xlqJ8KiC*T&{ji$n_~a$x>JN^Xba(H3bWJBKXvWk-D=o#2 zO4W9$#pf|UojBh)Xj1BvM;79unTvWw+`7$MDjQe5VhrhBW)&N3tGL#sZB=L1m4dq= z?9WZsF5j`N;`r*|74et*i-Ros{l7Ds@I5{xGHv;WDv7gm9{rcH-I~YonmLsD#*O~9 ze|Ho`Ev{k--oWwDvSD3=weiJSiW`+%Pbf^vyTQV?@pkK+Gncm%rU%a}n$r|4_-w{z zFB|Rp80m@=pLvHZ z(m1xWE~~9#D3@6ydt`2tUB#;6qBD-1^S5p(m9^A8pmXK1iO!;{Vi)4NEu&{Y=i%N| zr0a2d={-At%a}j&TJ<04c|AFPcZa&}!_`aH9IH6HrFv_^_ia224Gmg;Gnq116!<(| zzSMqa6$iiOVf#D%?m<7QZY}8lmM9i3#~pH&?}4@Q^eqe7FW5&NXZv+P=-2VeD=%y2 z^l}$yPE$Jap5uA3)wA3Gc2@+wmhgX_v55P=v)5~jhT3g?o8~Y+R=zSZOZCfUiwEDA zd;}rLb#dOa9bk@5|`h#)Ql_$T8e^lPej#JciUAy*|K-}x2X=;z$m)rFZ`S^>I`(VUE5~n7Z>YQKzB@YarQGk&iD%Y4{atc?!3;e; zIqSQRcV=x|{{HXwZ1>aEE&IMJsaADU%k2R-Gf8Hvbqj@*qc-h{R?@^`RZxbs{r?}03ee{;I(Pr_qQm<3L zW7vP1s{j7#@>Y?hx-e${oH*N_1g}-UW4;S7+9qCStG-n;a)9(1*SX7=75&W9mP-d0HO`AW|8nWx6_4*+Qj9z%D?efC-y%=1S;iaV)pS!gt@F9Y ze@c!2SIlP3i>-Sj(w2X^RiZUrSIT_Cxu;s${b#N&K5-&&Ql)qCv1sQ_zRB^|^sj8t zJ-*XHuZ@F?%YW}itjPc~Oho?EkQ z$#Q?Q@Qa2st_2n4IvbjP6n{UtpZAn*Q;*m7tc7{fQ*OsfOgnET!F9@Gy4=r27bZUE zJ$birjmX|5Z}qR`>`U1!IpH_ot+rDNd?%S#T|3phZRx2eihuuf#eP5aWcAEb;cD^0 zOZ6YToSwhziS^n>rQIH{*2i>)%)ftD^u#rXjmQ4ZJ7&5`)Fi-2s_4l#o|6pTO>d;9 zERT_xw0!F;cK5f-YUV%q)Z8Yt)Za5L{4p4ol>q|!e9qwiB$|0$S1>MyeXr!@cY{HJ<-{14Y(>bE~Rxgws=SaOfH>pI24 z-Fzo}uCHFQ)Tvt3TE8t-ZAll-NV7vGzgI$^iRPRHfTGWkz`7#(-}*}3PD;GV4zR3=G!H3=Ad&2arKW3I%867okq* zO%1y3ciTb0mRYe|wwQBEK+wA-s%)K8(%tv8D1{a=YEB5>V#p?=8+WqohyDxZMIJQ_ z@~u|)L`*|NGs17ho_#md*f{;!$CtmE8*+EB>|R>!De%r!OQlC%&FXSvSahbsRF#hP z?7NTud#?3x^8B)3+3RO7Uh!&m6npvO=E7I*nb&q*@Z7e1viHnT+d~=30f929)-4Zb z-BuHs^=r!FoWJsu4`?jBVc^4;Ba$1TA*l98gYSFw^tlF>ljhp|JvzOU^%&>r^;aHR zN*r6#$~lE|D&w2H3bksjYBnw(VK3%NA+zjt|I6E7<-fA1=$*#~42 zmzhZ{`Tua|+nAZ(&9r8m=hlc=b5SXA$<_CdAKI6!_rLmK_b0DwQ+v+8R!h!5{`suQ z72fNP%TMpS6T4b;?s22nsycfn`Yv}qX|qle&5!2w0x5P!}Qu_p4jxm zpFYexo&9K{?4#|1B0pU>n4T@)cf@v0w8iyf3u;{Im}1IKC_e3#_PP5|_MsTJ^!*Jb zxeduRV!RJpZl3(WpLp}a8mVm7?3&wu!Vj|7=tQ93*E(s|yR{RT7#RAQF}C$UCvlOE zeuIpL)duJKOF0VM+nL&EYxAbdW2M*T@S4?YS++VIn4$BdElEfJ)~#3V%>GSBRSU|a zlItVwzp#ICH;vt}%s2N}Vp{sV%Ct>4E5H5jUw>b~Dbs|}V}0q~y36$Q`461d$ zFK>&>y87FOyj!`d-y|>gHsg-Z&ef7W7dkq5vofPv{MHZ?=uZ=&e>V`NWb{q^};s^Mrm`F-Ot-wGu2S&$b2ThM0Td7 zlICK5E{krkO`g2LZ`};e)}wiAcSSyQRJf(<06lDzVO-h;-?ED zJA9khiwi29o!%v)asvqZfai3#xhCCw*t`V#hy^ zGWxqWtdmswbnnN8OI-nm`?Nni>#WyWeb3mKx#3Z$|E{;%zjwUdA}t&3akF&o!E3Th zk4~CWRd(++ibg%`6Wf?x9dX%t z;ldQVse$Y-Gh7&Vc^%3Ua(<(ZIA*}kByxtm1bo9_rI=tGi`?Nx5F*RnS?uM{a~=0^6_25 zWTD_AzGZ60#pi9GpMjqHRQ91O;p-zC&O>=B&W8>K3Z)kcoKBPC(BwFF@Zmr9|684J ze7qberR~o@H{z7RiA52;jOXGebzEN8<9e-kvhYMp-9t6j6DD?TianHb_pPwk+#kx9 zEB?~f#glV$nb zc%HQxS6|#H6gjUz`$qm0uE~8OnNrJIu4dol+4CUEFF)Ufi;0lsnutA?vYB`MyVt4`o)zZzya8AN%z3 zL$uAb(ui}=9gerFt{y0!r)ziHNjUE0AGD1j*B0$OE6EI5&qCbQ)zA~3T0mojpm$U#XFOwu344GTo%)xo+f$2$a((mx3`@5+q43WGC896e006Ed3yJ1 z?URPAx>Bs)UZSvtqRR>FKZ(UBAa{5|z+r1FpKZo?AYfQ{TZkUzv-ZeThE$)j%&?kw;?*&;qh~XBw7u36dZAe8zg}yH=h_c%vfP$SW-ZNl;X1!7+9NCDIP1*A z49+$xtC~bYgWj?ocG8-2dZ*C!-g$1zM4ctniZ0FX_HC+Fd=Z`E@TUI^TfnRHjdJ6O(9UQ*0| zmwLSW@(X7|YWrQgpCldrEW1c{#cEGk`y&G3E8F{5zPY>RjA2Wng#T4bljqy}&lR4p z-zIv0)3u!73z~DP!yl#YbUiqyt1|P0bg0>J@p(HBe^r-W_gq3X|DHHwdDy{4U8bay>cTor!3BUG&Pw<_eopfxz7@Uy}-YXUL}%afKyCuBzbVS>3T9`ks)(8fUqc z4}7;R^IkpCKu}6k>2LR9#!uHp{*CCvIl=)D&XIc7P>Tz+uJX78yt7x)G%=+Tr@!(Ug6giHRPdq=HWQALr{=c!Oa=4Q_qvqTo&U7{h7w9uPL?ZUFP zxovknC2q`(OfTD+nSC@$d+pM=fMn6^XxHq}1**5FL^X+Pgy!u1+FbX={zG?v{I4I@ zn`ci*QJ22^{HA64xytjE>-T@JeSVk!evPyPyPd!X{)kBHb>F2tV-zPT#<*;~ID z?<}UPcRwykl$v>#>8b9+S|-ukYgkTZ$=)^F^2F|L8PDlEyBE7Vyb+0bCsU$h{K)Q; zc&pQ_%$drO##a_Du0{qd<9qJ&7M4NoleoYuY^7v)iqu$f40SnB`ay2#l(Ll zZFhF8T#~E(_Qcv}hr;f7seRpXr%z&Kh}q(|{;wv+M$I}hHOgwPjoOAyOC79d_^N+B zx9-E6@W!Kthp+tJwDRvRTaELVrHnO2Ot_}lIxXYXeR#w1?FKQ=tY;ZZ>i;_yz2i#K zoc8k~OXvd4M2k#aVS9t6R~(L+oe5->pJ-mfwo%D{SI~k&y_a^nGp~x8T)x&fPiE$6 z-Fo4jYY#@*Pg7P&Kg|@;8@=*X#-iY;r`x6_{p@o&;!uSN*SDTG`Z}Sh zOsX=x{`|cg-zFSbbfd?1(>_^2`D>3Cmn4-dT8TY~h~RwBy-2v+OnD647+pO0rRtU|LZJcyno%zL4+m=HyyR{UAUUel!Irc<&M_pT(Q}rQY*2S%b zYRch$`s$(=SuVE!V<<~BpBem7&UW6F9NUZ8FHW``_%-d)^c%lAu2?;q^m&ti;(`9P z5+V^%J@+c^Rk74{@0Ki*55A!GS$3J{mVmi&r_V{dCzN-yFY;b#6|JJ*`~LU@`R@-I z&5yk2*eRi-H2LEn0XyBtKNA~8<(Q0fkCYx?xSdt*)0CpdoFJzcktbC;5;KAx{atrN z+DX#Ga{e*N_QglSj&(`;xh3R!@0b!Zse^}ChUWnTpXb@< zLhln6P2KWS!rySK%!REk0@KdOs9g$LQn_|&xMxB-XS3*)fA`NOAD;MZVcEYw=NhIi z%4nY{u=m09XT6K-WEh1jzjovC*n8bXmP{(@~SPJ=2aKXY0Q(cjF@8$!>Y`7VU{YG`Y^E zQD6Ac(o=8Fu8jVka`$i7fh_*#XDvcDe7IaU=ZJ9}qt$H%9f9*kfqEiSe@19V&w((=wqopjN^t1j@Z>s8>~mq$9>x1CjZs(Sx``QJTHzA#-l+5UZdB!7_5!;LGO z?$0)jy~W30Q(g3>XS!jHdBgh$KmT9;_eOf3zCi4Oe;X?ot$r{={zoC3{)v63r`AvB z`SEsJ?oF<^FOO9_ySmOW9!?C@J=>mn^h(gKGYh^REp0maYC{V@bCq1o#`D%zzcUWn z<>Wl_yta4Ig=ce>f1X-$Znm69@(HIywpG8_ktRtG{Kw z39H<6;hL@SZs9k2m$oMKRpxA{^s{-i^_Gl)>o6WqFd$D}i-oF_!`dcdA zd+>z(D3pEgm!55%oz^o&?&hZZCvQaA81ojf)_-{1wq%XWiTa}~clD0)y3ZB(c>f6V z*V)|HAF1BV-613umU7_lJHtNjpQ3-ZZfj24!`QfgA=9cqyBM=xr(S>6_a^f0#I@@C zx2^Jw_Os$Tw%uxq<3Fw1^@;`e=3etWUNH0aQ^864tf#bYmu-y~{huj+Tz7KBz2k*f zRl?l0uf>c0kFf76z38>oC~9e#i)iS~1G#5Ru4a{9xxVVxl~ppgj%|1%G^VuWu1NO!@MZlPT#=&ulm`d;*ZDvDerwOJo(0{$o?qPM%mN?@pp3%%qwzf zR@FGR(R`Q3y+v$SUGpCt%;=30j$NbIcWv9Mt(G=MZC2&x3gwT}k80&z-MXsOvZp68 zwJw|KjJ)uVo`f%^p1a;e{)y(Q=X7to;%X^V{!--o*0%M+6>DUI)c5F@R@LwcehM$yH#BA^V64>gMn>qcJq%$*|iI{ zxp}B;nD|)i#f`%s6W8%89}VqJy>m?a#HU@#J6e)=ocSm#bDX_Gr2hGz`4v3!k6I#{ zm6K#mE_NnvWc2T{z8Qa~f4NJOuQQi__v0LPze1bd;76`D>S`AIj_y6JbL_v;cA2G> zPHxqas&y^$pL6H#Xx#jRbEAOR^^d_`2l*}M{gjML{i9ycy4i|F`SD_;o`u#z0?OL*R z-Tn?aw%_vSrw8n*jQW^nesW{n4wIms?{~g_|GB?)wcWOB^@|ptFZh<;r*8R=we&yQ z`k+rix4)fYVqoxNCD>Sj?gMWPi3Xo{w@gwrAP46X!7Vpj z?rlpwqI!GoE^($mQuk{*s9dY&=oX9SZO`8zSa#o(!af1+! zq*tPek$WBquE`5qy)S)=?mBUw>!*#kNNk-|dca_g-W#dvwzy>+>+}?NJeJid-u`HY zslUa~Gh)u^2eqrm#I1m~HER>`$w$MtZ`B_-Xy8);*UHeec508XWYfqbu{w zgd)v{)prtKSg9*~E!k+7b!$~_ar#N4nCX*iJ{s@idUtulJTH&nAN7la%2{U4a?)pG z&XV(b#q})Na@7YD2|1+}Im2z>DU3L+%#caud0?I9_bRou7C2^Goab-`-q&U;poyw9|^7 zYm7&&50+di-v8~G-hx)~$qHOm2P@RyY&2vRk@jgi9VqdmVc(r?zvF)Nx$ZSTmUBF# zP5)-at660h@#lPRr~bX5b4&S~tnslk@>0jemA8w}Y*5jD@mXZ2^b0j}+44slH-2aC z-gDr7$V4U&TdQ^RZ=5${wB2CeWj0x(&A?5oOMPO;5{vJX8l-;TeU;0~{y+ME-S%v` z8LoMZ5Bto&M4HSkcJAs{;Mj^@+?!yjSl!|8qk__sNAHy~MbyTQ*KT zb^AH@Y{PCfqwFHf`O7`$>Ce9Ace?PV?(>;nH{^#-x^Hgm&({8S*I~ZY$Q_4x;%xY= z-mci^s5)myUVxK0>)Fcq59iC8h1dc^TWWrEy_m1Ip<;%#V25^0;Oq-(4~~VIrKOzN zx7pR9lY3*x>x;E-ugFZ8a(Uvq2gZSyxBr!y=25vRW^rcVxi`6z+0POpl*7B0FaoZt ze7?&rH`zBQ7Ky3z+5UXA=;EX2PS;m9usY2AcBOxh_xGjZRpQChf7J<`ovqF?)P~Z`^L7SjBgwo#@W_(r)#D@+IJxRkFl4H&flgj^PerKE`Gq&{wcbi zz2v7_Nh^EeJ5HI72^Q7Lhuxd|?TUF46x86?DF=bQtK3=F|c3=HB73=H67R`o&0 ztm?bv7v&~GcYve@)@NUKkf^)AJLb|B@6EvlAsZ&V`gdam_sSD@!q~!NPjAWdzMXqQ zqG;vDB}+PegAU5iKV$!gp^nYIyW+LTojs4|vCsSdu=f4CpC4b}E@$}gfX}INhTf*a z8@-PN7FJDK>T2cpcx{bNa%X^4+((013Uju*@BX{;kH*~yHR10TGuj>}<^Qi=Ip6=Y zN#XQ@d9JQAw!1Ih`&asx!j$*_PH-%HHUC7?#Ff%lexE*>C$_IY)cE`RKd*NgZGJHM zRmX?m<5Ah~6do=){)}nsz1!12&I-N0@}RGxUYUJN-mHDf8HH6}N+&7YOFrk?= z#lzV~KlEkt{e$9chI^-a7R9Uc&v=}3_13{y;b_?_etc%LZ-?EzaxFfeN6O>Wndf~k zOg=wcurt?q)3Yj#2~inA+X98fmews*V&c0WMp6{WMW_tLyh#H)Wj6%R?*U+_8A!GnjD>UWYZt$)@me}MnV;=+X= zkJ`_EbLP#Tw0h&2GvC|quVZe|ir~mJk2}-;Z?nP|!J_Cu^Oix1YtB#55QyJqjl7s~6}7M0(vDsm=i>ghaB3CS>C9Tn63 z4Oh3jaNk_{@x!%RuQj}Jb7jTl`)}_J3pX%1seMnh+4lX>*F~JYrQLJGX0vFPUwAg{ zZQ|78jfYRXU4CfO>GQrps|y0fLbmo^Y;Ze%%0>Q<{a61uV|mz3;Cb+zjF?iIY&KV(N-szpk19Q zXs~sePq%gk@4C#n7Y(kP&vkevjyid9RPCab77GJ|J_nY%)+seHPX#_iW(uimTSKeE zh22H|^Y-U#TH_@k>ay{ch_ln(CZ=4WT*iY=hfg2ba-;oj3*)rBvZ8Mf56=5{o&Uo6 zMaxaMJe@OX{~OD{5`PtJ_ipaC@wqT(@=R;v{X2{0_g8R8=n%p{(0H!i*x-Jhi#r`c*jGop}X$vqsccP{@M2N$_3rS_pWfy zOTIOm#csNJ?!G7Cr|)QbsXqDr(VOd>@fO>K)2k;Rf3H7%`^%qe+PHVDSR_7OVjbJ^ z)J?aqF5P?Qy^|gIJocd_V)MTzUm4p~)BNiUx7%RDRhdy1(o-DFNwan>oyW%&orytKA(D>oe zq-NUFy5Kg?^uyw^_rIOdy1x77bUp~30OT-35&;-77# z*3LiCJLjC8?{??S%7eU}v$6~8wiF+j^JZ_(Kao#qv+w3t?oVBLoa>4Y&-wBdC)%UZ zR=L)eE3XsUyl?5e=eaZW4kr}Px4L%s#msHXujp3IDn04zxKTs$im~Qj_P1$9Hy3@} zJA2}l7WV#m5ubFkU1yk;Ub;D#YyC-Wt{q*x0q6IXZ7Nz0Zh_~Y+s=Gte2_fQ&9Uuhr-l+XUX@{706Qn$DywXNN6#q$I03Rcu8oDizL zqpG&yeS5U{B`x!rV4@m3tk+3aC7nn5AJJTQhO_I9aGHnFq@Ra^*37%bbx2!q~^DZj}p_< z?^k}4E&KNR_haD$rd4LU%)aHk;Wl}0r021qys%RKZ>*im*es_jYUi7{R3$NYy+CI7Q zK&Gv&NAsd1tNYk1r)&;uy{gGsGHts0<_@N5ec6AfEq=|-VN$X7V>zey0jJ5E*`h+X zY&`eda<%lCh!!)mjYlt)Rn{~ryh#w3eSj3CJ6FB7ar^gqPci5WOAZDG1=N}xx|9NT z3k9U;?hVZjzwIV)w>>OL*M5@(GZS;ju` zx0)Q*@AV>*cYa#xPBq8;nvQBElue+f{cUjT9vPT!T&JdJbwN< zyJvhyI+i`QmpK-?Wb&5EFG}?vwRn7c6rQHecu=9yb2;^00&k%4jU4|K8Iub3CFNXS z^rbC2z*0{~FTZ7(rr*1rJ{(QYHJdf2?Jp>Qbp4^lQSZJltF=y@dR`s+`OduLH;r9Q zpC2X^F5MMSZzQGfmLt>N(;*U)rv0-yNoB!e-GisTIXArzpZQ?%?DTgfvjigoxKjGx z9^c-z{P$Wz`}~P>4LL-AaTJ}ZV4VJ9?T_t@n~oQo=`DCzR5ia?_Thw&d3L`qy(yd( zH}|l{&w895e0uAv%c;7FzOw@~-FMztQsr+af6w*Ty-yJ@ zD(&1Z*=uof*RqN(KCR0a*>Y5-`l9V!|GlM;e{QQ?q%vo3%P|SD9`04g7NzNKtGj3s z`C4}0tra`l?<}zpeXQ7ZkLR@2XZJbo%@O)HueS&P`|Tq#V@CH$Mvc!wO$)xJ9OBds z_`AoAXX2!)6q#koDPG}A`yPL{5?jh=r}g2_(bX^cD|OP&^=X+j-@9%utsj|bh>q0V1&-q`yGU3X{X^&y@AQoSzUpiyrzP>vXt`s)=-iw|YXIpP#I73>ws^^5Y<@zbA7yX~ef2`bQ z-tz91k9Nl?*(SI8dCAj{Yh8MA?vvAtr?yh3-r7%LXI*YN?vR26WYvX>?z>>V)yG0r>nPycg`_> zzJg_<=4mmf^x%>wLZ|!e9mxJz3)JCdW8(R6dB zW`=N=%yYq%DU-Nwp6vhp==B=A30CE7R`sci#BRR|`E>j2_hR|=h3Za*ehN7kx5U_r zJwNDKzqude@`SE~7Xk4ku(V@@i2eDSHD6+M#zz8HC!^v+3k_Hjs<^W|3T_dOr4 zyxs9BTj5sj`qw3~>+d!uJi32 ztg+tX-;8?qC#q`yca`un$BRn*^usT+7OA9 ziGA~Bv+Aa#zjZ@8Tt|8CvY&U48#zY2@pyV?KPAX9VZvP7>L^~N(8 z`X~QYS6cX~DL$e3_~l1M5pwr7SNhs)a{go1q_m%7o7&HF(|<6&7CSf9P(yy=eTM0> zMINc2rG(3Wxa>Ik=NYfqdY%u=^Ie%=7+FjHQ`C{1C7P_8JT-sz|5Xu(s}5GNpvJq^ z%{vp{ure_8@G>x{GoXyKAkKbM3HA#1_fr86XhQ1isbSIK!r>zS_*m397iNe|)LJ_& zLs4;ImOfXUR!5jelhi?_y}S2{o35Odut!ATs@6_!mhCF_*+|l zMO}Nf|K%$?V`rYkBTgq~8b5#YckbT(wU$3$-;b|j-N0>c@FO_N(f{*euW80>ybEI| zZa!slJ=rbl+$o-Yf#*Kojr3jm_TjW0hKU(jyG`#*;$2!5{P*O!A1yU;dFM}ME!$h4 z(zN{SxgD&R)_vZnvv-?%N~q-HwwpJ11x-14d2R0{#nM98rzf5AT3#=IDwue6S}5OC z1;dam*2#&%r@gLRd$^9F=EL;^-BN8_uBjbcdCJ!w+`y1kIQ_!<PWtqOMnOa^n`-enm&z_uR$8)#FB?p`ntMG7A zZl3bO-bmm*Cuj7XqbJ_$-gtHRZidqSr!{ugM+FKO-;izi^8Toq{mcCH6=qxGZf$0` zv(&rOf99@5X&ehA6&W`)^GI0Kn(VsX{ae%hG^^?sqYC3YZ)O?o44lT!H*G4r;Fh0) zZc`TSYdQCLXHA%=_A z(f-$E*4p_3N4~$gTs-oobi4y?#ZP=W)}H zL(!764l?X2ba7eM{&0c!hiegQj=OBMbF(x~dVcu-`>1UD{79=?*+P$|^eszkHq6N> z?DZA;Tc=Xc^kd`KJr=ITb?X$;Prj(y?qw}~Ad`n;=D9k{HPlCc#j;6{H!gAe8+f*5kHkW`$9pOb zy{>yq%9}95a_aNAo{MXfgXdf-iaE3+#2(u1RLMk(Btnt ziRY|Rc(dn^;`RHe^pjz|F!m2!FdzrWh>S(-Hj0rE9PF8 zGHv1WzO7G$_@>*e_T=_|Jj>=(X_wo^=N4jY2EET+9@+bcpK1NHM*G$ur8ps#7?oM4 zEVfKk-Q#3laC2JAbq$8(S@Wh8i!?CnNtSH0Q89~I9=+n;f!TF?`nI1?zs)*PYRaB` z<15F!!`5u6J>Gu0VtQhG_N`rw`}GglFZi@PFZuXi<%`jF-yTok*w;K!J8@Z9KvwHR<6Aoo{Cz zPGpr?(X#hWS??BYj%4G)+-QL<0Zv=)`DiQNx*3_|yC%c;%*JI+c`w}yZ){p77Tag4 zo+0w-;0NB8cBO;UDrHpT``3Rl4Qi6pS;T(Pd&Zerx<8}3?WE_*F1hGl-JM%(F|&s) zSa#k*dqIoKFMcwYpIxx;qH()%c%XH+dPnQ>^bg4<8s#B3jY9i;LT8>?nqhD^F!ywb zwb9j7BO9qFvXgX`EscU^o_UyIaQWfZ)IEJY+kKX4zVXR-kW`8@X{&s}Z4rO!d>%{2 zo5j=SIcVGNzUaT%E~P-|`HM;9vnjVGQe%{$84efp@7-tsvf zf1MXw793fVa(BGX0z_L7`0E&e{}Wr4wL3*k$bMch&-2k5*0bY&k3Ap3i6J84A-a`!0kk zMprwS;LL#AAq6ZZx{62Q~QtzG8CtD}px_?3bau;(G z^P@BUPCc^Ds!^_ouB}T?zh}3<*4nx?(~*4`*V{5-mUTwnp68ZitF#87A2vU znQIM#qL$unS#@7hAj|qAYj3IiFQvtW8e1OD-)h^OhZ+@-|&r zT=tIp+D=s+|04I7WGE#Z7D z_w%|++5QdgM;-TP$d}HVotV7$>Qk`@ro`ssd-tgCuv|T7^`c{v-Qjv#C*)Uul-w-t z`r^>R-c5VX-j}&>=SSnU@H4{aDnk$Y&U+ohd~Sxs4qL~>MrDzUvUi?ZZLH__S~p#F z`qqD}+Ty_(YxbLn$t6vFeU&Nr;rGCa^=B5JU9DchHJ{bo;?;q_Xe)~UUS9rX3nv4E z4Ijql3g`TsoYdr!%=|pmL4nrr+;AyRv3ILpWoblRU=oye)n(b*dn~g@(9~*W-oyoq zGLs%9ge(g*k#H33_?Tk!d-}IG?SD7Oe`9~se{1vA1)gbUv%k*SHfvS%_oq9*+r@re zU;qE{{7EX3mn>|q zncm!AKkwxIbXv2P!E@U>zt*c0pScESy!x|wUq)Sl>cfd53YDLBzh1xHm{XxQ_kTpq zQuj|@Ego_wuPZBhe(T&Wr!aNiTiyTL`Lq9$>6w%zy6M7*n+Oo=V`V}iNS)sxIv}x*W%NyN)Rxdnx zoPDL4@*O#MgQkIv-1Yg81uc4_miBuke$53It! zZ90{?(KOie9t<*09Ycu9A; z!p82v-A>Xq`ggafM{TbYydOL1R zW32St_`}7}rAT^q%sngnfX)5=&-Z5Ka^GpNv`ER({U)cre$_?)$;It$CszNfl72L) zp!Y)I5AC=YPZB?`_^@Pe@s@~n?=s5#H?~(D(s=S{!psH7)*MjWa_8i8L&vHznKPAF zZ*04;pTXVw*Yed%&mP(R>O;|8trLY|5g!6-X9pkaG`fAip_+T`tG?3RpH=VM{S192 zY4h;$o3)+?e<`{xHO{hr*!tSb@yOpK#=|~J9QRJ0`pFW{bbLYhY>B#yyQlBF^;fMg zwj=-j;~yQi7%VxpY;7j?(8mFdUXwa^om9Buy z1Y{~V{5F33NWylf=xcrpt&E8igj*9tf0;~al)80F^2|rq!W%DMEZ*pLVS;YMx5zn$ z{oBRYvpwW&(d0Sva{KAGC!PL3IQMY!x_yF5tG)J}(X}h-*Y=tG{>09*^PcavWN+6< zX1TuM{}P@*A1Z?un>=r?llyhF-k@G?k&C~T%CXb^r-vc{Xc)f$tfHO2d+Q0v}-n=TNAx>>*c?Zx__^( z_l$q{=AQo1qsghk4-6%a8s1vRuRkyH^jsUC-IX6YY(z{Zw%fD`s0;TUoh6$3dtYC= z&oiEb{gutP>iE~lGYUs2R-7%JkYM=3@kr*IUlY5WgNu)bzS>yp9Ve{6Xl->}Vp(#R ztDuY5M9alf3~W=rKa%?*K7U^7oP!*SRt;bGWCk35Ci&%Glc89+t%aDF&9ysS^WI(G zA}W7ybK-0#qa|CEtl2-W&8j)+xk00?!Zf*X-t4O#W@ptNELeHls{0Usj^_le&w^gpYory2Zs@;Mzo(b`>7&mAUC zkFn>wIPLXu8J_m}JZyZ=)^B3&oWOoMAZ${i);^;blUJ=iH2*o*)2|W-&Aw0c4itYa zoEN(!VNLhv@OeTttF1NtCDfGzZg8$zGK2lzy84ABzq8|yDSd0aJ$;qk%AKX+r@MBo z?%H)Z+v&e_`2No#o7VlatzP^8XrAKTn$;?Mn&v-nyt3?=;xU2Ll4F-%SQou4oP7Pl z`SS`!#~L5((LIBz2%QjOu6?ZUEY0nZP`@E59RasHyULy=l<+Eu=TU1;|}K5 zxwqWeXLW5joFjZ;-CUQoOKKke72%#0x8KiGCX%7AeP-i>@+WQFcP3suAgHl{X}){p zy$5lZy#>y4N(3luJMyNqQT(UQgBK5`h8_L>Ipaz8z2csVLr3J_Je&JUOnvU2`1bHw z>-T-CZ!~UNCimt}*_(jG&Qo~V6hz=1&*CjxM05I1pl9)XF45RPcrT` zJ)7Z{6Q^~VM$F58H;O?H&s@8=3@50Gk=b%)OM!UMEfzBT$K9yc4v)Rh5C|8-Uc()_c=TN3F)jl=aba` zKsLdyypr7`YGG`CX!ca|t7)NgPF3!$yIOQ-a+R=$?ar#bMai*NXO~$xc~7?AC-r3R z>)zF~XI=i}!R*lWH{gacZ9P*9er?SAzV5?<8jqOO`~I;_`uBM4+}l?V-xDl+ z`74ddqqctEmI@WMb$PQyrr)t|?5{pOaY4(`^&2YMlT_*_UwP?XKmAYrTaK??>|TtD zY*zUJuY{G0%D;5Gi(U?~Ik-$jNJ~Xi>xxUuqZK|&5)F?XvCukZIP(wMG*D@_)W&#b z28M3T`-RXu3*ZGlDxd{EDljRedz7K;N_#_J=Lv@k{PW96fBZEl$HVFFgbSBce~9^9 zl0KrA%fZP~!ziQkG<<8EU&7+Ek=goz4;d@k_px?(iztcyxa?KCVpVaUuXon+F4gll zi_^-U&CX9d_wVQR+xHpHBsV+eS5D0TY*pExg)YcqX)ZuIW3 zn_G`8F50~L?Ar}V2~3l%jupB^=}MgVwk_Vk$EKudo#?H8`$hTDc}Gm=sLCz<2=E0<5axN?bopnOaJ+=hi#H=Z7!C&Og8$vf53RKioPYD(zs zMVU*_z1v=HX`Zs8Z;p!PH{<`i@?6$cUsq=R9$vq3r`CqH=uKvYvac6pKZxn~v=>^q z`S9t}a}~bmTE}#^=&pTkdZpyb($qy)cc=H1D(+Z6YpSs9&d1OEj8{&ujN7?1Pv!Ya zpTNU^zt{-Iusd@bN_p;zZ1|#SnU=M5;iBLAerAS~SX#;?dmR1=ot*BmH=tiKQp;-E zt8@uv^9GG;-uo8^S2drPR#_(YxLDrcuXf(Ky~n>KDM^R#KFuz1|BTwVkE+fOMbD)_ zUSiv@({uLC+9?v>3M%FAAJ5qP>kq@!vzO#ny=RlxP?|dNiN@LkM$f& z|F6_sj}IrEKH46;pYU_1(XTICO(#vZRgO8{<)z;#9ieKw_|e@ryR# zp|+U6{GMpn`oetyRlPS4$w}$|JO1;E{ki2LH@`d#FcXRoo_l}ke!p~2sejcc(D#7G z{`O|w%E7=OAc(OVE3_mt2YRvP)bPxNm{8Gw_fjTBe)78QIa%-Ig(-Y*Qzn&pbnBXV zHmdM0@e!Z3C1A}dmCtIGZ_mswnHIHr(TW`nT#HsL&EghwW8JE2HZ6&WVY6~ zna10UuFChdnp&9UzPuxM>%rv*oJ-4=3xx&z?dV+Z+PrzIeOgpn)!sIv`ony@-}+oy z?4J2-Ej_Su;iAx+uL>3);uY62o$~&y%B4FS&dA@Ay(i9h?9erb4eE1E);3OSd#S~{ z*?C!N&bcGMds6au_&?ejJu~7=r)9~aCcba#NrsE^ zHy5Hy=5!x@v^4JUnm_Z_dMYQmL@xQPa!^V3?CA%^iJIq@S6Ubgn6D|hx3H~Lb+wr; zpK+Yb$!QBk?&`JQ_ubAb^}uCu+pC~+A?LJJZcUYXwS3+x{T$Ub8OJ`Y4E|zjUC=0f zwrJhHOvjRF!Q}mdFAcxtNqWsL{M;Z|m|&_Y;(J6%QF+$24P`|v(Z9-y)4dgEuj^TQ zXN^{p>p{2U-W!$)i6`maT`HV>b>?&Zg9@_xN3Bk_$7I>={&cpcC-+guo$brn&rV^} zRlUB1CDV2x%iMPy>b`{`58l><`p*A#GW@c_7lH7sKeDo_C*$n|GQXJ?i!^7Klsq)r z=|0_CLTA^u)1BJOmV|0t?Doo@{NwhT#K1a#qvVeVdJ?LW_D{SuZDW?Db{UrPE&{*IkNyntiRX)UJ2#BEGB*Z@H{C zdbh+X8LSNNdLXj!e5ajYiQpnX38fvb8|FxeBu?Y-RR7lTKuGaz%hCg3-f!R3h3-;( zBkIFuTdwpVPdk^#qgg>x`*P>$-oME)tDgPUcU@LnF;!afjrg1%VfGjQnf_URjN)Av zvP^#|Pic&L+0_bLYw!Io3rhtY?@DP-x^%()<^sk2IZjh{-|U*~W^pO|SkmldsixLs zQ{kRs4Q1a09LKj`Y+}{(oIY#iu5UgjS}*UuIOgj#qt)1|v!7^Tp6LGff?58`eks<``3n?olODUyWT}!;O>UoQaX~J3n&vH>cc8XN(f(|<%|;oo z6YU1i4{dnzperzh;Z^gFz~i2Cgk}V;)0EhFJ>cnm3rXiGEI)MKi8q`Vy}C$y8pmWd z{#_p`9ShuD=QX^z^wG7(Q$g<0qNV`rC4RA!4W~>~h(8w2@?_#7{;G7P!@sOPtl*9p zo^q-q$mc-Gs~>FpG!6O-Lk~Xre!}(roSwegvneXNP&`*XOreo@do zpEB{?zxP)@ul~dzx%c*_o+Vmc2hV?bqvcxuQ6ti0SkSjuTDGGbIiNn!J}ewrcW@6+HY4wA!!9=!H$2Be&REI_>o3 zDf(6`GPD9t{$x7#EVbqB6usuY-k8@5TzTJ0GU)|Mo_G^<%OJZX$=NPoc7L|a)~{P% z@0EKmxQ74AHQvR)6<(>VO3eAvQgkE8y6LS<(T#~$vyO?)>JtAj=X&wg8O_;gWew_S zMFqEBSKbs9d;K(0=6h9~;^pkkJ8r+`JiW!f+d0nPW!XiYypL6EDOqWS&DS?aFWacY zS7BQ?Q*Dz+#q}G^SHC4L;Y$*Je)XH+o~qcNhl=JMnANpWAkO*CE3V^nBW#vc#+JJB zYl5a};WDUo>kLqY7JVqgCvvHpwCAJ3Wp@P~;1ugtpc`A3s-EvIGVUO654 zUWvV;D>?n_&94=UH%!@VUYNF+UHsmenRD%4ac?$$(mm^9xUb`PlUoJMl|g_b+fzH|mRak@YuC)WW=Hgt=cskwzZ>>k(xPW)>9)fc!mr$&b+~%-3X8_u>w~J& z=e|9`?Z58C!wVr&`ir;Bd6K(8@4yo2o3cz-)*R7d3C(J>xnt3L{ZaD|f#!`LMKd_cct{{P)uHuXeH zma>Q+To6~Z>b$$zykHUgqvu0{JB^kv{_=(U>HFtb{!VhAr2luSjmXYR_X2G;Pd>Z& zg1z6P$lfDAllkhUj>W4ptqkD1t@f4ay~Tp*4R2VBZ9c`j9sGOA>7Z8j>%Iet>0zng zSM4)x$uaVsxl-UJJqt@HNZWei{Y{Jnenjqv4trEBi%J=BN_PmuV} zb*KHm%>1Oh@O1vC|176I_`E7Jd%||}+dt~jE^m3grXl1jBLf2y3j>20>Kr)c(6owU zQBh)La7j^SUOHqa0<0kvT<;IsiV!EE{Z`99REBF2Uo87Np1 z+iAYRXSZXSZ;mF~ess~`xb^SgJL~VMtsCB|{Z;A9xw`d{!I!-z9g7p4p0-YTv}Nuo zg;#Hneu`Kk+HP?7%OM4>OR|Sju39OHM18D&cJo)f4)5ibq~OGv1_34u7Q4(SZ9Y+N zYw_;Kr+^Y8&eh@0*)tT^{B`b5P7*4%N;CA2kn6nrb$61$vcnF%-7Ljl7POpQ^|bH& zia+lrbVl!pJ>;t+IBm+)ZC`fZEPPWd$Qo;Za>;bg)bcaytX{>+p5Ea;<8`-iV!P6- zo0k1;p-t~vl|1?U?KfCUhkg(D(T*-(V|bxwPa8X%vb{>g^&J~xrm*Qvt17+HTyt3R zc(QD&`L7!XtmdU;aarA8>pCOrx#^E@R#T@Jo7}aREhuZ-!}WH-<>xu;eD=zIQJTo7 zGCOHsmr}fz`Ja{zMXGbzW(P<;R5|nCbwT3n`03}mIL`mjPv7+8sPBhcB3*kHeaxA7 z{LSTkPWu}wm#Iw&{hsR3JbBZEqPH^K^9$Px`lh!2p8w$m)74w|9+jE!U;@57er2uQVc!{jcW>8)ILr~q@R;LkQFfz#iD;|SuD3T1ds>^k zvHB={H}+z{-%GRX?DFRF%LW7pxY$i$UhTtl3 zjh7ay{a++{Z+AZw+nnAz!@bkyzh2{`Q+)Tg75Eq3G5TiiwRl_EjBSFx$JlwdyUTyM zyCKHype@tva{-^Xom#bZSM!ZNS*>jgOFqV2-{HPpuX9*ej}|%45E}9oBtzB2YQ)SgH5H-KyTx4qbmeQ%tw6pXdCm)cZHu znJNSXtx}GBs5;mGc~x~-#qW-#>Oxa;4julKW@MyqcWeQtiEc}YXxlN<<(u8!8_Wug zyX%zlFK^O>L$+ymEY3P;C~V!n?$Y7~y~k#Drdg#Pnbwo3EU9XH?cNCs8TZ{?$rc-x zCfuEueM_0k>I7$I;WN9&Q%}7v1##~PS5W?>u`6WDBf&;p@89mF{VVSK*Bv?jWV^$Q z{~1$)u3T%5d&&OHIrG-swPi+mJ9aH8TH(KaQpj({ojXNrH5HRf?`%1F@^T8dZ|1h# zXP}*anAGDrWmb#+txi~ zstHkW_+BD)Z-w(~{`5f858DpLtE`BRTR zHs&~>#%Dje32LXQV@&QuPG>-NE0J7O!3R zdIQU!kfWc2GS``BZK}1~u~9Sm?3F_clTM$CZ0enQ@A9UCd+(PQ{b$PEn0oovlG{Ng zbCYgqoGw?peCqmn#hX5|N-r*3_8JPze5tyt=vd~f2)n5!Yq{SCh^5PYVqfC0{Y`P) zrKO*0BTvUo^AKMcky=x~?}q=KC2u!Ywnon>J{F+wy`jlmqV--zb^rUWH%?bf+HW)7 zIi&w$Yv-?${r4}#%;=S7+C437vFGWkBMbNQmPcCeT$~hV)_PZ4(3D@zCcM8g*Yoys z`^$f~YrXS2x#!)N9WpuFa}R&LnLi=&X!fraP4)q|@|P7=Zx!YGcV?q{x8{?NS-&<$ z{%D)wx8t__v9sJpzqtOzh4^p3-+I7)0<$mQHHW~?HEI85S02A;Ki$Z(Mu_jf)-kmc z^Y5hXn^rA+{8zD;RpnXXiDz%66?zq9=GXVtONY;2!XNbGj*8qlhkut+??nIAn&YnYVK*x+{mln6?CSjO!555QhM*f+2g9`kEmw-nE8Z%f7VLRf_J$KwrPqeXnjkbwS&nfx;^~I z(ofTxD@3oKJh%NuU+@e?@A&VzRcl|UXj;rpe37`$qmONM_OlJTt+OxxczU{f+w)+q zE#8lAOq>>d;NbfBk80QAzD1T~OM{PJi&W^rndi`Tb>D$tn)$)_=Do1%6LeIdcE^>-H|;l?&-CY)bQkjG6VSq2 zpM0a*)r<@buFS+VK0)V=I_2l*q$cK}Ha>%5{jWHP*ose+jXHIlYtfn}j@5adB^R&f zRTNA-vZO0<>i3&Q6Y|<-E_wTDe*^m>wSNrtA|K1dloD8SFU`C&v-ten>UTdY|Gi~z zxX!^@cb#vOOYYJr!DV)-+ctDwUH{1?%TqvpoB94D@1{8CnHvwY39R~OOO0q5`H5=UGDd(KpclWW?>;I=!4g6MYlMQE(50#fw z;ZMME}(Jsq1qRUzTMxY99I|yVr%$&G2!el&RBSuCm~_ryKS38ksh?oXpl& z-ILSy@qVzBxd~T+{Ab}Ahnbx|=Y_UqGI6*3e0J67aJR-C-K&*P7WW-b6&CF;jZ*3< zZU21dXS*if%3Fo;awn%vd$yqTAEj}j}DvUY56_oZmF`m zpJSf39F0EBxnbj<`=*>*?SHVwZ3wi@>tKCUzwk}hS?fdT$tyl}KFFB%{gd$hhjSGz z${44*?PO?~6X2AUt-j;CC_iUQz6^slF4$Q5#_F1vtD=)~D&DnCkM;Cf zl@V4kUzho1+6$GxAL<$TT|9p<{?mB;Hsp~MQ^w?TPtMJ$es`z%eEz*~LOy1k9rHYOGZ%C@Suhco!v-SJEBbqLsGs=#m9TihxrcLaG-yr#!}eoN zfMe9`Ve0#fk z#(+aM&2fPX)4N5Fi}D$*s!A>RKM3@*~z7o^qn&OVuQR~H58nV!5b{l1;#hDtv{->XW^Mz{P?m=QVBC{AxV@HbHetnL~?C<^~=g zg_X%%At|Rq5*2LP9)6qI88embV{fQt>-Hx__r*=-94yO|dS{Rltz&X$@#)eWw;D@Z zmq!tIRxe)TRkLu;^^0pvY)(w!c&BM_W+C(6i@J2Ru!wvVP`Y6>lUkUMFM!4(5xb>lAihwMLC_xxC3 z!>}~;*Rs&MDNpD6b*xkguvub#xAy(c=W}k`*8i*f&6pq~&9iSw;%rH|aMN=S?i=u) zJ|S@{!ftT}m-FB1;H?$&7Mkyn_DZ>0aNxME};Z6!v@K+95IRhxE~FYq+JEkM1fwY!kAEA@V5C zueU~9RCz9KUOHoy^7<7QlZ#Zf&+J=L(_v(-)gQFXpt51%YAxS6oaya*B#!8|P4ikS z^e$lj&*gJ^av;p1M0<61k?l*#7mCw`TG&!;Afql6pJlE_i;B{+Vbba|@8O<{wa?%6zl!&5JbdW*?@%PPJ3=}6Opms0u}(;gl17I9ELc5lh9 z<=WG7FPY}8WtudhV4L=5l{FXLGrB~sB#OTN;`yn;^4^6P3$Mz&y?*gdMboi;#ares z`pm8STH$hpzvBU+Um0(7S{8EOZTNA$InFBG&%7%^p7X}ci@pLpgg{`<-$;m>)@`O$P&?wK9y4|{L?@3kiE zAKFNh_p9w8Gnp9}=CBbw906KY)P}?c-*ywR?Y3`em3q^_xV+J%clNCoH&ew6H}pIk zE;tv^h*;SmG5HPF+&uC>$^siQzf;ILTu1gCL7PD~wNPa>{cb@MXOz z@PYI2iua7)=VeXkVb!*?^Po~UdRJXs&N zIrH%>KQZNxxA}f-zpS46)+g2b*6$RZQuW$d6}#>v|4msId;C(3XLbLS;1i^{apFhaMS9U(FfU$Vi&GIkvI2J-;-^hZMOw&XbN5U*8Iu5bk@LodSM?6 zw|l4-KGrX_dXsnetIXbqy1&DmHNqxr&{XL^b>mQNk^8l8w(kshzCKtS9nUE*mU?v4 zj?Edb)}217xKeLTi~ARoxjS0kRZZBMxO(b?w}y2>`zCzI-Q;lf2Gim4FXubN+v2uq zoONBXR5o*pll&3=X+M~m^_vY;UwK?k`YGR}b!GpKZDyq{%`2UGwi|5nt6kR0-yO)M z)@7KbzrA3o#PSDO+&dS!9Na2qr~NJX!_Vw9=hTcoDzBLNL-E;>0Ke0lnP0j*5l^|q zY_F_2%W>ncqk>CbtnYBE`^|myc<_3I|KBVY*!(K!yTw^3Aa+=7a$xG=6&nNJT)461 zpZhCuPGcdNH>`P&`M!qsJk}F4XsBj99aPkPZtESrL$b33Gg2o_@{@b?`uc@B`+K^6 z8YLUFa>E4ICeFPk`Et+2wB4?I9geESFZ}e0XVwiv-yWeFhu4CQoRe0ve&&Cve>sM! ze`D{JdPMCBI*XvR_~StxMg|5YCI$w1)FEX50?-n9jME7GnG6Nm?knwRir4TubnwSi zfv*Z5*BBZ$HM$%*@akxAqfX__3BSD?PCrzpsVXac0ljn8YnxS{=Z7XRF)#$M zFfiz$1~jyp;+&sXTvAk;T#{deXnvbP8s5Djv7iGEZJq6>ty`Td7r}x!JOHb2#bulep#OuX$e)cRywnBt>KM_Wh<6U<~hCSc(Q#|kWo+5joy#|z2cQA`qQ2sXLHj{ zNqjP)`Q(I$yLbO%JlwN)-`Vdw9vAO?%ChJ=w|Nnpgw#~uwm-YnkAALLuHD3Y@2czc zwkDn@l3meCRVSJEDJwO}zUi8fcxT-nS&RIW&l7KK2skpMlS$9`%)CIq&AVoVOv$c} zp5$KWu=NaYQe4S)&Pyxi@I`JYxVYrqdP5)8>2Fy!_Uw^;xaG<|j`-t6&2cYc&;g-FY9yj`hAM;M}i8<~Yq*?Vou=(oO&#x{fNZed)+%tDw2)n50jfYDt zV$1)Z+kAGPzQ^W;%T2cAF8iPVF>-p@PU*ErF7=*pC}sXEmNwBWak0~rRME+PE!NGm z*Ic$MT(wneDTfg6)@@4{S}^nd{1^ZGN$Zk)f6KQ=Zro$PyR?zL)haWk`Jtlid^F@70@O;f91)axq z&L)`pT&Q9R=UUHEv-SMnE&SV7ZJn$Wrytt=?H2jZfSOhrPuxlT z%f!H7$c8Je!ZyyRU>P0g4ap9^>>y(6o#}j;Y3V1i=qp;a3Zn8F+gux)x>#kp&ipt! zb4#q(43n2jI1FoA?Kzuf?|we7_}$&Vzu*7%XXw6> zDzJIh%I80qttn_*czst|Mx}4$iYKbBNd>hRQk%mimK}cSu}mTS)TD{_UGm{3ru#xI zCx}c|m-uykE7M!K_rL5_4jfg;dB5y_ikTD7;6JiBG_ah+YqFI8)<^T;xci(kfb z_(P|}A&%x?t?5(yc{Ub!-^qJ7<9V-({?fRZgDX6Ej(cn_RGF-Q(dQ`N#?DLzLn zj15ElcdvY@dXi(Jzt3Xzvk%T^s62DHlsQRGQ(<{8V)yiTpkSrbv3S!kX8VpEil3*Vjy zhZq;0a?e)Pp2S7zn~zrgx*X}z_96AO@`Huq#yixKIQu2oe7CM$xN8fi-^p7JogRg)55Jvr&Y-q#R*t?0KMTy#)JMYr==6mza;u>DzUYWiRbFYh7ok zzRtjXWZU!q3O_iVKkpY@^DvEf;(2?4>eu^=n~ui&*4STU2>OuN+E>oC*yXuR_=1_* z4b?mNpG7Z?;g{MOB$Dj9bMZzgIpNP`w>rf%%7steZ7B-aWvp>r@`~mp(={<-SzSM( z_;embGH1=a7dFMXs;PIq_yLRA27Wn@cE$>)9smBYb??5^^Kt*!Q8QA&Cav|L&5PHF z8f}Bj^kd%c1e)j%5U~|M=C%72f8g@~frYQEN<{y^b#iJ`QFAr9{P%yD^_!quPqrE( zP4w61>q#0q=Un>!=^iLA-P`;A`TBf&hBpsb557uqmULq;6cQA>cVf+nLpqty7J9H8 zw6M8VFTbaR!`jjA#O5oPovpnmY3MxCk!7A^t9dl@d9qq}v(LPaLmxRmuQlkryyJ%I znQM3T7G61LXVCk7{z{%R!l!iSo@#5|#40R$C`n-X#n%r#^(Vb|@t2I)Z?(CR_0Tc< zIX}$OHl`#Ao^H9?dE@U2{WecSK9dbjD|}w4+Xf5sFi~l-+; zsa?F{&X1m7Gx_!(Opa{#e5P>Lh&f#S_O;b)^FHN#yeT&8gV(cs)RdE8%cw-!I4!m% zB1oh3T05FJR@c1Lf{xR=3Qg9UC3-L2`(}yp8I|1W|6A<@Og^&zSj@9MxWk)cfv?qM z>*9Aii_hEc|NrL)Yl5`h!M8I5#nh`;dU0%?ZyY@1#)|SvovA7v{l9m!U;HhWXnm@E z=f%d@U2ZE?^nwmd*7}{wy!yK__ZgvU@-I}r7<3-zdv-y=35>%DwD?4LrK+pyh;UswJ$Y0 zA8Yb)QO?3=8@yJxtc)`~t^eQPVAm>P-lr>hrd(-WP*t=;*zKB7qw4MV{FXD--+Z~$ zIPIuL^4q=qQRi zyNQ18md5ZsyKAl=$=Db<0?f!8#TcY|o z_MN7>Oe#y%< zW;$(sTfy{W#jg(r&NI4$7vJMOU#0b1qdN6fcKKzlGeTzXRw{BCbhgVq3sAmtd_(oC z5WdnvZjlIuiv62ZTFx5$v)*I4%)3EV=X`=-KgZeMQzdqCt`V3v`>~>%d|*Y)s!vDU zW&KY-(UyC?*=@$FzF*%T%I`8;ly#iBQZG7cR$ce!(Auf4y93`mTk!M-Up4c$XXmQ! zZplwEJQMNl!2yY>rCZJvPZbV(&!c{z`N{u2&lP_U>TfvO{IbwdN8tU`O&E^29DQ|DAsoUtJ3{F2EfFG~9F+8Q=UcPZ%Y2=DX{`#9kf zuh-lKnx^|4rt*vZKVsgk<^AQ(J4KZgp({ml@9tE;vwS}9>F)b)#uh}xDW z$e@bQibIoWLy__B}yqrD&JCB5aA@?#ObAA#B%0J#g>T+Z7kRMXcfj9 zx;?gCS!nv!gw?s~wgZ9$sPEOpHzdp9n1wb&ODvN=R0ky%b? zqnz~0@;J>ZBfhUL2h!Sv&b|w9U!ia~?|++$P0xxB-HMdB+q!r77;k$tuR0JQs9oX1 zo3%4h_Hfks3#X*|%oZNIeOB}8yR%Y%w+LKt=nH-pvj1k@EUT$=7HXMoxsVv=C-=A_ z6yr#3qwAS`+xue#D zO#WHFc@CF|+zV}+%YFClbc=w9x}dHh392P2OWhe*bDqlI1;eQ|ZR^PV!uoBDLS zoL4@zciw`s%0=fUzFV`-J77=ml}C2(#2h+of6H5ct@qs1*WVFfcuMnp?|SdTOUdjy z-NxfYU{|_MUjdl}w3MPlbBD4El5~ihfY6b-vSVWY{e|FYVaxJN+zgP1qY6 z{15d`x#4P1)1`FcPcQ?=^v~u~>|FnBdA@j}-?GpalOOs4pG>{h@4U>R&)b=~Tf^nl zYKE}b>CU0ywQtQ=eEZw5)iUQ*o(Id*2j_1TNpf0RwCi#@iU}PpD&&jSUz{bj(a~=G z_xR&|l5b`mOVdj_eq)cqn^!Eg_pAgbFq?n4s`HKKl*!qJGx>9kZ%qGi`k&0L=K|hS zKHU7*a^gQ<-0_96OTRunDZ_VOapr`Smu%NgUMhc)zN68jZrb4q@4Y)j{uf^s_w)f-MU6ic%cOJodlT+P5e@$Ks;|7G&!R<|)uHt$T6+;d{~iLS(hZi3v7 zU(&v){9$bWQoHWV+>4WA`gPO-d$=w7ryID=-P>}#psP&N>Xvn{vBptRrOVSlay32` zi~6XQIpv|5*2_do=N%P?&wkJO!EyHf8Rr#KRb*ULx0V)boPW4>^=DVkNn9F^^Bkrw zFEMAFHCO$*OI}H+-jmp^6Z`uA9liA{KQPw1xqSWF2i|kOt3I;blQ<6&_h$jk8iyWbF#MVVoznDrBCns^~AL|7j0i@eHhH z5xeeZ3hkP!@z>gJ&UCc{zB%h2u;mF_g?Aek3*S)6DSMWD#%|J!8?TCvyGxhn{^IQy zy``wbn{F%f$N70$$lemA`==v3ZToT$ophYE%dtcDYJy2(_`5acI>(}}U7i%mKQDXk z^jg)`TI)G(Pd_Hau{LKvlTcLs2ktkYQ>tQkS0AoEJ?+TlT?g{LGd^`EWH;yUJ|bT6 zoa5Xa$1=M*CZ)0s6T-eTU$cK`_E6^b-Tocr&l;}($gw&Qou+<#e?zQ$@%_l^iUZrv z*XPHL3}|Z0Y>n`*g{fo|WfsN`{6@THTABbvU=};tV1Gbkp4{ ztY+4HI%3xQWLoWtS9<=2Th`BvJSCU&%SLNqv*WFs(e+dBbr|uOw|6dUdf}qLz-i>{ zA7%VwU9`ocYmHS;0;NTJCQZw>h-y?1KP$BTd+g%|KB091^6qIb4}^SL_SE1@b&mg) z?O8$Ly)i*|gzEU6jCNf-{UE&C^{=h7QkeL*@{&Wweyc*~JAPRhuU5x=W#i=Q9#boB zi76&UK0m%{we^3Mo~~81mxTt*)#yCp^GlQG;TF%iGOMONGYxxtF2B%JJ0&mBW}V5! z?Mf3`I0QHCtUF^Mr0nISv1*q8x~!e0^Dc6&@_VCR=zEN1oiUFI??i{o6Lb5wt~mLi z`{-1KyrigOyhl3j*024hU3^0$wc_GMALm0nH{G|`ob-0RG%?-U(3>yn63^MlWsANB zY4rO=+U~XHGeI+_` z!Axh5sjfDk_PFf&b>ZDoyKio{TaLNBVVXRFiD%*GNTINnA5L>kC09qND=uF4x}ZDp zkCM%%NkNsR+oexlQ4gCHpH<;KEjW~!b4HXnqw8tORga@my6>?`aNfT6^`{M|^_Pi} z3jcCFlBe5Q)*1NgNBu3Sa{8XTrM%Yh`VGlLsXTRylBJurlm!R~9F5prg&+4yyIPAjw8JttIkKtH+^T%Z2^GAGUbmSi{F5Iu`r;mPN!_I@w z+t)EOFkE71V6aEcLs-gA-^2oF4+*}orMxJ!B(+!t+K%oG{aq{!YDfQyDBJBMtf1xP z7@H9%6uinwnCZrrTa&i5F3Eh&oj+}9PWtZIH`%r7MHRL!o-0^)N%FtO@#6B!lhl@~ z7+cP^{eI{3k8_ss|Ng!|zn?*5fw4xZdO>OOy)8U#leO19w%(N-`>`aiuuWL?u2Jq~ zePf=bmwekEMm}eh?5l3eE?S+rW8TXftGPwlww)-rd;61&wR~6P@l8B;mp`su9@V@3 zxor9D-?NV89eW|sjukAdT2mT$G*TsX&cWS08-KI58LuoU?Y4hb*?oKV&!^YKrn-i`e>|s& z#ZIB2+Fy0f^0FU(cguaNH(z&NqRKB`5O|QqPD!MX-S3b(kNEwjycs`KC8hL?=e*vu zR)W7W;pgu*p`ez;DK1y|+G1V>ysyg3xO+^=kL{-6l8KA&{qEawFu?C?@|Cwmx^rZ+ z-ZNj$E{?C?(qBJ0y3x^Yy~28d7xN8Os(lxI5L)Kqye!1W{Y3pbr=!+M9Q#vd$P|20 ziAg`vb}UMxPyVlN)Z)u`OH0@yTm@AnjdwUoOtFeKuM}acomCQi)c1~%=pC`sl6=L! zSFE4!>eEh~_VA71yhYW;Tv{{IBdqtBFFiIlX>p{^_c#74`QM%Uuy-MEYLvy!yu4d? z_+z5Bo_2p)c*SVW5zSVq!gi12^(j?6M;&)Am>;Lnek1wTZkKw6g(WNYsV$$XYV^Xu zNzc^aGe_K46nZ97yK>P?UfyKq43qbth_=^OiY=03^aZgc}nBdxMoPO5j+MhL;%R6z&kr%ptVvmfK{vi?!PE^mMQiTsZ#iR`W6JEUIjKe6Y) zR&kBVdE)W5cb!v}w|B3PpTr-~c^I^~;u&)bC?H+DZe?encX=JcDS$2Se@ zCbQQ~R!mwm`PFt77Vi3^A7U&1+13hwF>97Dtd9`5%2Vg`2WbuyG__VI8d%%U#K5qU zmEd#*mO--KDbb+misS#iGcUJsEG^RKO1gSUN%Z}tCL<<(za2fHX*DsoSP!)R9rLJ2#KbpMM@=%(_v#YiLCQdKOdoyiS-%`olPcyf!yUF|R$~Ujy+cKxz zyAd5z?mBbf@2!#QcLHu#_&GH>M%|96Tfgp!gxjs;qEuGTB|#GujK8d$rFiXbb8h0^ z$G7KQv&c93a^Clp*|zVlXLp9oY|4HyweyC%)Lh$MF6|ZD=0D;;oz%X2SMf6^J&ls9 zTljWNUc76@$qAXJhoVhRZqUukoVUZcb=rfk2X=oeT6TM3ln=L(kekP5-7m6jjWx69 zavhs6)v&9uZR7uo+t)qJU{89wK~1VJO-d+l((HrtJPU6q>~^v3^n6w7YHX4|F>yoe z`t2e<54ZJj2Atkyo5^!{dR&9{R2j2w#rmsa9y7uWS`sB$MIF{r|qMk%`Vof4}ycDkIuO-5fYJE zS~u~Mjnm2JE~!ga-CB20_WGjkYxfUL-0(ox{Qcw)llJ{$61~vsx@S?ngUlJ@o?{k! zLo@bvKYL>SMWlbC-J<7u8YXHQ%n^qbdYv8leobWjv;4Kh0*lX4!jo3H^j@5!yYB3t zV=u(NoSBpKMZ&zVF5!{$vum91{&YRq#2=&n;Mq>*O&1v>?;N$=@I}b=(?iD33$M5| zwwyEJ4n1EeB&aS}nDm0zl3P(dRAXM!Hwk{Lg+YQ^uBPXIn)*LX?5J|wJY7_O&V!rR z`DRqKbUxm>U-#Mb3a@8>zjpl(`-e7xa8;|=;1MGOLnRZ&wM60I`U^5WTpJV!x}s*@ z&ByN|yuA6>E}J+@X02G%I`N8?tVx^ZOx-f+72{DeU-@aTMfv-8ACi?4s-MaKkD-3D zq2Bc$Ny6qgXWsm2cE4uk%=!EG|7U2>%HWt8XEERMUG({K!E1JB4q22q{Z}a3ab9rB zdSm@E<(9ue>1XyATz-D=M2)@7ZofMk<#~Hv^c_E^UM$nvSSiK3!@gXaqcv#%fB6~T z_5>by{L^QO&-ZClU6>YLd2?Mptn#lx>xVs)IZV>ut<^Vr7C)&v?4zTcp3vR>A|_eE zvYl?XK21q{b*Oe{vEj`imC(gKu~*-(`@UkWv8J8fZL$@1^cH`wjC zGu9FVs=u0Fz1=lafgM_%IX{d|1u`S;h#F1b!R7@BE(KI-g>>uY76iEJu7VN$(& ztOJ6VusjFCCAb`ta$3MPi>xJ84dGn-%H0NGWw$n4&6SsF|l+OO|9k;F-DzANg zTjWq$x!jR^M`SA|ntzEEV@W)dtk2_;y+uRPJIPKhIV@2$@$dbz)f0k`WF4^5;pYnD z3{og_-otUib59S)ibLL;488|QZ924`V@B8P&V;A@s2zwoj;{YdGBPmiW5&4dz&|M~ zH7~U|vl#jKWKjCJ6d>}?&rvJj=CNZXD`pqp)yY}&?kvmW=I-w3Sw9;N{&3N|dp0a6 zdP(ZBzgo2y7j)VmkWaPQt|0XyXY%cN)%)JpJg@ow@6Xq_>jwFqhs0Zw6zpZ#19h0DPwso_vR8xWO-kj}w-?_J0SF^S!fM-XvBW3l*2qpRoLJd8}oH?ygmxQ%yu=trX?|adN&6 zJIl%b{9DOu{cWQ2O?jULYCKZwYI*h5LUudH?Q3^9G-ahvBrI$Y65IK5CTHmsPIH(2 z@9S0GM0|d7rAm8+$i|+~WwSoEN@bbeO=R1#Z^terowKE07Y^<7Iy1{}fwz<8*k<#QwVC(&bJ`rw?$lf`y{5BoqmO#Uf$Fb@g5?{g ziL6`DwL2#4@7=?-X=0ICveIYHCJXbcPx7}2TM_iv+ADv5QhLj-w)4Sj=bXCK?Q&Q` zSzRhhDD%%dt%GRe3>&29b8lf{V7Sb}z#xsk@w|H#=q7>T(J>@f=*^9k5Vg zg@c=Q^PbBFvh(WKM)K(RuTs6cGVALPjaF}-x4**9Zu!xbdM&qYq06QRRzA~x4?jqC zUvB&*YwN=d)#l~gyWURNc!O2o)1{*Z6%&JO79VPtlf1jb$x`cu>AyXJx`nToHW;+n z{_8rbT{GEaF;mH_`Pv1s$4u`eyts4iUPh+#>fEK>eM_%zQ@NAEF@^W+Hs=n*lD%4g z+I6OHI~n43NTK=HwM(z`f25t;w56QqrVDpM_ntX-Qs>?%jVrwQM58a7%W{`*`sMm& zmUN-#Ctdel_WJCzE>vYgh=!wP+sp3k$+~mSI;Qo#QWal$V%FsiJ8pYcipsv2veNdF z)}b9LVaYtT^L}LcZke!7@>g|S8?iWb)VIb0I#D8=LCR1bC~Td#`@oMLJ!?N1=Mvt~ghfGny4GWfz(13R~y&-;)b9 z4)`+fM(TUJyb`C#1;;goyAvm71Ujk)xui5cn{$HuY~3Li0hK8(f#PQ$P3}{Wce-23 zJV`xjHn&9aLWdImz11&1|9AM`rf(GRr*|PUkNksk;?oPJy75aKu$8)9Fny7MTi^MU z6Qws=Px#dq_@Dj0dP}D1KE1Z{?lW$5_{b)F6X35meX4ixc^6xtxc)qqsmtD;Ox~IC zN}xYD{-cWM$@j@NPgm97IsPIq*iCWKj?xoT6V`1vJJVhL4{dPe>EhF}RxAt*S9lm0 zBv2DObW=2>&RiOnU3}S1#8!H;Mq!9TOWQUF?jr%WJqsVRXl(T6uDr0s%V)NG^sf*R z)rk|!V?Em@?E4oqvrfS|{TK7E#a4TFZ%bz7bQiWszB~2Xo14Y&?^Q3Y|6l!)zk&15 z!3lAKyyrJPm%W~LLHuv^wv+3BPkT9w=T=Z^+1VMV4d$5sS*2g$7&~i$Pv^q@IXn5v zo2+?O=H$(Nc%PwN&xN&0Q}oFRh)HZD#^MUHw;!&h6%z zn)Bs__xg=<`#x9b_m&rSK00)E)|qJ!GX|6uu_($S88KdzvuE~ zA@e04W{2p6#xHZR5#Fln{o%m9r4I9Le7x0#I+n$MPwrd5x~=8)tyTZH{MKIMNI5CW zbDW>=q?N~&_LJwHT0F5jwL`h~U(2u6H&z6NTHKDQ_{QviMU!QEze=jb-%Ucin={WO z2Do#nv#sE~zkEYVO8hcAd!gq(d9lZt#FkDtFS$a)TNrv3o0ndBqMMwoTr`U2VK_DR;EU_7jg?x=$*qrxhArOe#9x8|f1l z_jc2cyQxo#4jRZ9U!0q8n=eGwgGt}#!pwvj@0=DaGkSGt-m2AKXF58XNnS7k!}Zr%LK{MQTV1+V-QdG|jmH`t?lo1vEH+vU%3 zUoHywzH2*qYW_EKwt3F=%km^@FU`qeRB`oU`jq_mx5aOD-s*y`b(0w1h}~QGaj6l3!P&O8|ETFLwVc+j)SL4C3-raYNcBqP5? zWBJQ{?nY0JfBTqd^VmbU@W2iCK>bTLi_33>tl1LnxwN+Bwr=KS4b9Bd8X51OnL(#^ zd(D=)d${M5UhM>S%cW8hr|gf{{L`6|0(0C{E45YFr9kJFY;0R%le>WYXVlS zy}bKD_NMz2{!V*So>H&yTRC#_8@8Lio6HJxCf{B7TkEEKN_L9nO{<&pPyR|_-qe56 zPVx7YH*#(0P4pxK9T#3^1_lmR1_nvg@&-1F3n_4VLkfd$d5GNKep+angelWijdb-u z5u1sfx3a#To5_*1G)w!+wsQwd#Ply!m`oI~x}5p@=r4DB2m32$bsw(yb5U~E%)4*i zzkUDx+uQ2=Z@>4)?^kT`nZhQrzS8#pEj{a8=?hP|?{n|TUcdL^-egPZ0@1!5!$$4|(cH(p}2opLPeFH=_vbCeBlcjSk+v$xgCinLib8*%96 z*73a2OOR^)BPNlQD4=@IFs`&J#VPd-n>O1J+GFR=_`QQhm{&%>;?v1Z!5&{t`5%KUipQf-b` z98$i};`#D1kN!H#eC^Zk=X{wLy=L8chUAHNRF$3fPf3VclrnL;IQz-v!ADPU8Jsj! z>IJ<&5`W>=nVFbDVd%r{&iPZx1YKbd%|__DS6(Y^A8 zpEK;=*>7Z=B(~gLv^n|lySLANy@{N4EQhjdPO9$ zzm8nG@8~j(i>7;3v`+X|7QWxMv0{GswSIrqHoM6)7v1rZjXM3=rFrV1KiAIQ>{=Bj z6cM#n?fJRaw~hY3m1J8ITAlY`&-QrBSobZ9p6-e}z3QJUxZLf-mIJRi z<_Ru$+;K=l@n1_C}n#43askL^7^PH2)|Po#fDl-oWIWAoo+rMgtoQVVfCrxyv&0>@?S9T=do%z0 zZpXSWTrW2X1_&ti&lh<;HAqY`awp%7-op|rv|JRV*g2o9h&U>k@qCfh8-+Kz;ci`@ zWbJ-v#(#)%-Ttz4$Nt~?q1(>?{_DTUZK8Vbw%alsuL@^yaHM@|9R zaoP`>6ZOBWdj9Ei`n>nywJm?9y2hFBm)|4F*W#`BUWT*f_V1oor}kO+IBQLrDpt8q zw#<2U@&DY<&%^gK+3u-gPFy4QOxZ>8O#IVp#qqzLa{gUDxin_sT(dg49knX^HFxZI zZlJQtXnB;*-rIJO7kzXT)`r*ThUSJWnX*r2PHwq!hvb%*JC<}McLpd;<5rx6538)EPOfd@QyV?S9`WMNpnRm=*fLi-K!azFA`7}6%~2g>&)s)THj5)13l(R zrF}p0=7y!OwwB616FL3-IXdRAU*7!GqI=da^UA43e`0f&2h|x#Dhr=^5P9+#`;`ly z^tZRSyG!i~4BfOeqNTi_Kr*L-jh7);*TrbLX90ge_dVFmfCv3Lv5eRmz-+`hl<7C z#@;!5>EAD3ZuEJ$>;y;fnhj6S+kQXo+dWl` zdseb_NY|V!waeS?XKNmoHQuNbSbS#NCjX<)SIeJx;;?`9Cg#o%p(|VD=H~AIcuzj# zkK)v4epk0wq|KApu0DQ9JYDgX!QSNnJ(Z%1*JeL`KW=M_IeEdq&d&So7 z=OI!1CzkBkb~PjPDUaNG^?=P0sh8Y@7N;FmvVS*ykz~z5lc?{PSpSr@o!cwhcmBR$ zow%&c!YLOl((Ui)-gM7SmCmp9xf=c2wIq0zV5Gy#xznxZYesC3U9~af(bHv8-hUT$ zyl-A0&)eL1y>NbY?fQqi!vsp$YaWy~+d0+PbKJSN!sci^kNJA@i8}nd4!%yDAR8Kd zt;c~a@sX4k(;`OSxc06KU!(dDOv>o*-oW!vxmoU;s(`CX*=2_#TnTT=JJ!~;9BCJH zoqTf0@n&N$SE8j)%Ad57OWm8dFIxUIKW^TQLqdtK%qWcGb?}Y9JM`T$4H=^%o<90J&2z=|KLuv@X0Pk*j@}V_&^LrLH29T5_wOjL z0*#bQ{l&S}y&J^N?JzZZe=Fj+?Yh@{(-!SZo&v{n9_>497|rsZ%U9y` z)(;b^!)AXo+m~@p;QE){yZq-h=h|Gd@-{1f!9L z(KP!b+S^@cKN2@Np3bfDx%24m(73PZwXL;`-_PWD_`lJ2IFKk6w08dEW9fGk=OjNC zmWz2%_*XeAovp6-e=76onaw<>WojnBS$Xs7$DZ)^_uDQy1Z=8D+br+eHmQM^i-BRM zAjZHeq!$UPla_{OM@M-I+1;)E<xpZ~kvLnS3Al^h~aO);#5E?ALG6S3_%e{r`Kv{-1ZCNbpJJ zqgz9F@6(zpuKhf9Nr{g6noY5DGp4*LmcHWlc~y|@%ro%U|~A&boO= zw%-bVS*@JA`s%FOkbPd#^)mj-srhx*rTG<$E28vFFVEc1V6}hm+;a>@w^z*xdHd|E zXv+hu^;gfW)8C%2=QvaLXV>xTt8I^z{yx9+Uh)Uo8J`#HE|NWat7>V;zEg}=~nswIM^=uaZP2-+DbiH%+)A5?E7q_flnlEzy zZBY01tKXcS9iDmj|NpM{{4>^GWZ&~X==GhfNay_usSnP5UR864%jRF^vu%?POcTqW z^^~pXpS!b8lvAWj#I#p2tBxewNE+Uou~p&nQimsRR4&W#c{kn7zTFv>;pdud#gy&0 z_^XpdW}eh$%R`-y9v(0g=k9oyae1#{)9$7-YxG}lKJGm`DhiavApa0dEbUDE^9a1ls!5*X{O32v9_gUTh_Ne+jG14XifQnnNv+3rl0Ik-P-#5 zapLOz@+(^z4iz8Wem5)P8GFo@c~VoZy(q0*@$;hd74eSX#Qz<4e$R{-7G^#!nZBdOpe;9dTvc`R%TZZEDKv0s+yxY)4gIILe01-o!TZj&tAa4B>CDBPYbo z$y625KawWt6uBuosr~J_N&7kFT@5|6qvt;6EK4x+FO&RUQJ|UsQfZeB=U34gGs-LuoSUO4eG=zHwnH${emMU(eVvFfbqEI zl^=4|batF2@^RnG?y2WI^tU}>uzbwA)3SKa`{)(iySWYRlLMDrJw5Zny`za)w%M*- zho1fDn09s2(GN-@MYS_m9pSERKW=wp^5esOG9M?(iFcy)n%u(KX+bd5DSo3p7FYIzPgk1ZU5lpX##9= zw@h~KRNj74Zl;KKQMc>&ziA6X^Z9lk%?{bU;6V124Nix+e;rx-Z`POB^4FbTKK`|A zmu6AX{5fl99P0bIvd($0{n;2frmB+2yiax0-aABk+3kA$DB+rxe)*S@Os#Vn8|VFM z@H=UL$J0OizGu5&b8URYGuDH_y>B+&dQ^ObXIlSF;kCsbp7P7|Yt|{Ve~7rwXZqmd zynx#eH>9+_Ss4&-{KKPrUwf5}vi_`~8=HSDk33iD5$u^X%lprkk9xwD_LE#0_qT8C zl_|OvrD3?yzV=P~uCCjfht5oGDQ9@InK5RPW6eA54~P6eJ@~e#OW@n>1@|v{N@|v> zSo^fho|RYSBsuxw+_-;h?%JPRCnKlY+re>L|HGX3?_{2@E&jtfhkyS;%T|uI_la-w zyheA@r`1ovAXTz@*2I_;el_)WU~pUUIPb8F9*J`=TYdWW`LC=jPiv0l?3{XPU4}3F8u3NFT+=;T`RiZXH2v(i z+SW4tV*HO@ubE!i1-zLzC#DA9nsZ^#jmYZcx*PX-V%IbO|CE=pQq0RR|K|K~#s2kN zAFdWDxZdBh&P-eU>0PhIOxGPE*It`d_PUI9{er%ltx@~3;txD1TGFy_Uy=KpthH4& zvAt(3rU(T62p8i^WsuW~KO^TpvrOaBzMo$nKMUqlExKRxs_?UCyHU;knootrmlyWj zGdGtv`Tyxffrg>M{{Jr|Ygqn%yLX@Kq2-ges~^5EYHL^~S1|97UOGqqH^%f1qhB4L zm$QeSw(S)8&n(=}JZH*m`?#xm(z*>le>23ZO_)^0vcOg}^MB2(U3*qdJ=J?`R_#r% zliW*sYSw>^kK|(7u&-XTW7X?^f6?|y*|e_+sGf4}{4Vh?dad=>Y8U*TdLZ5Q#<9G=?Njq6v>fu6 z|Fc!0`oa3`3tyZPmat&GQMEO832 zlGf_EbKrmB*T#kjVGXz4fe)-tUMdaI@UZ`|-MVh!+DFF|H^_@-shzti(KgeOZJI;W zyZ6=ltXfNtt+ScXr~Y@F@Ty$@tx3-pc9l1+t=c(}p=e&|H(S$q@f|k`YPa6Ic{}8x z@y?YK`@bH~vx~ZZFhpX%Nnv2ZAD#1RMNHxyxhKCjM;trj_8`oDQmVh3Ambd5CmUB4 zCxvb|Z1NWSw8Ka2_r+Nf!UmE_vF`+*FAdtiK22s<-Rxt+Gp-zy=jPG>A~FAE`^Svp z=__70Px{o>yZXnGLl)~Mp7|EGHb8hsP}ZD-?tA|nI+ng8Z{lA~DH)ITi*rN_E9D}6 zHXr%eCv8~uxVh_O)ROJ7Pjfka=Ed4?W8a=l!1jIw=4e?Ro8IoecpD*w3k zNshI*cJx|{?PI&@?%gbN{p*z2*ULo9{@l15eC|@3Nc$$y^(B9%y)*T@ut;xL;zPZ6 zh7O7^j%bNUSRR#sefbUF=Dn|eYx(?&+<0IoW2~_DmqM?JH@AAGe>g>ld%+*MD1PotI1c zqPvMdf6e)S&8O>=|5Sbz2>(*u;vb(__pL8*ra@o857y*gW#9bIaLC+$et+|ixpD0u z1g~@Hth>I`Z{u-p8_}OWiF}u5Jb$V7{r8N6!hCI$Ur0*{dTFRv%nu4mwG!KRocGM7 z?1{f+{Mq&|v^w?truv!8ebYagPkFJ#c7yd`Jng@A*I>Z zKi@14eY;a?rP@ikB*m}VK95CvuH=h!+bwrp7cRLwyJGfkGoSFj4PSoMKU&`Zc)8~x zqxZp`eSN?b@%+PW-o;4{ko{9U72T-BES_m}^iHm*?w)^{R4QT>lvA zr&#RPs?y*)!(;sW+1cc8e;+^PJ)l^|*=Ijjz0rzW*;V7W7H6u6-Kr-FyeTT2kBUl) zY%SgjNHv#C@=HG75})wABj5#VphWxTWT&$H|7{aq`{&PGzput=fy0KXv_q}TryF~f z7MgG*o6fo4A6le(-0gykornIUk8{nX{6h?cBT56DF1m_Y&OWZyvgg0*RonjLsb7?5 zF4I!oGEM)x{-28h3*1)dvU22Pc=al6`Ty_*OV#89Y72iXcU&>!a;4kV{#UvCww*o1 zY5m4`?Yw%0!+ULX-f^tEW|1wteuH?ye4mLIzyD<0Vwv4>H+I3DTDMSV4s99T&k8f9 zp9yHYxn=F<@SUp`H!e$Ee6&(K9nqs^V0g3YHRyb51{mOHU|{fd4RO@<^mEhCO)N{z z(}%?preY~f#o)`E^gx$4;nAmnS0C62xNZ)HfcBR*es@wjOV}6~I^`jklcPBitOa5# zn5kcopQ~4qn{zZWI{&trNL^fAtJsr;Z?#T-+fYJJzmvU+G4gp^v?z)6Z86V-!B<&Pwp| z2z!$MXhL2_o9##8AF94*m=9gxa#@qYS<|c}VbPU6L19jdv;)(AxvrCQ?`1x+Ef;_9 zXQ%V8?!V!O@?-xbauRoL`ctnUt{Tbr({2KnnqR<&UDG!|_o;hbpt`uw>YzlUNXQ}M z_vP!BcVB)!=jJSd1vSD`6_#i;%?OkD8qj-c@kY}Uza>lO7@PjTVi`Hd@)p}Up9ojk zm~K%OUfy`4GcoU;&);h~cYpMmSWTTDq73&P0(ecrm_GL?O`90CT=Zq}R`V`r$GKIP z7Bk5o{g!!-^`<2|hqd_B68pO3wYU7!#h$2j$c0!L+3tuvWYM}kMCpg@vWJS# zTJ#jR2AwFBtBqvhN_N@z>nYp10~`5+UYhHj-ZW*GNb{U^#%{MQ#3#L7oKU$t20htZhAhodz-wu+8XCniBDUetYTRy zu~+5vBoQ|o;i|xGThC=V?2o>*+N&EJ1! zxt3<8=jtb!l8eu1%0Cc0U%5-+mgKC~fbOePQy!gN6SQ1%5zqR7Ac4p)*;PxA7QFf! zmUU)UT7$}jm6?C{$6b9Nvu(>gi?ba2d3-Pv{WT|noSeY@K<^*h3PzN}!qcW8yc zg%zdCx^jX-Z5k}friz^j&^W*G**$4B0q44e6+d@Kir#(ZYcwHf_Og}NJI)^a;Up;>oPSGH;d{wc z#?M-!{YGyx{_?tQFnE*6rD1w2^S!C#p9zie{ib$|!H1?Q9S1E^mIzE;E5%>ALWhk%E&6C={?fLyx>vwr! zc7w2oyLsW-g#V5fNAD)99IM_ov%w`hZlct*+e|%SHtWwAu3jIu?8;Zu9k)UgmD=2< zL~Q1rE)fwavzGChqt(s5Tlp-GC9SCa>1d%4mujQszU#o1**m;XH2fA=+PR!@@9x#z z-)%oNO{-avH%lZlUElY?e%AcBdqp*CujFjF`m6Gq;0d)YyTzZ_2=)B<|993W=Hit7 z`E!_ggm$#fFs(Vi=B{u4o%8bFzn!>f_j3E8G?`DLJ{RA5968N&{AIz_Ey1<@{U1CM z1%fm6L$~lYT|M>vcag%qf1ZL{4+Z%BTR9<4L%rwu()u$W`6lvs&)z>*_u0BVzxyBN zy$g8u%*H$Li{+o^FD}aW&zG~kbY=Sbx=KxretGt~=FJaZ)gG7NYI^tQ^8CgSzAg?C z^Xk+iWkN-#%o)D!Wh{&P`@1M~=Gs$7t*zglE4eCqp?tn;^`bxjCNE=dUup5p!bkP@ z+T|~IikWc7D|`Nojnw+^ReRx&{5_s#_6ecqCoty!RqRvjd*!!q+12+;Q<)x2U#i>w za?!WjEi(mtw)M@5d%osz8XL!-Yww&ZUj0r#b^DB?&n#YDPJ#2=nK$(G2Yqv2C$>#7 zL&8X(jYmf?U7`6xl8T)CkGl?g;$tLl^Eb??I3Im$x4gr`-8nlOC4#Q3^HQ^G&b~0~ z?6Dop=g+Tu{b#D+bLIR1K|h)6vg{#I{^4R9@UGCj~U%~`aSgHTRoc}Nb5mguX=4GWxVN13IhW} zHUne@JTVnlK~a7|YEemMYH@Ix|5ojdLF;Uwfk}vg z(H0}4ZAL~xA9(lz4U7y-9%y;%YMncCezWNX?(k0HRDkx7J^3)}!eZw+vQML~oB!&^rX4R=368wUf(ql_D( zFBUT}F!VDpFo=LuLh+JDb>!OK*U`_@%{4eg&({rM0t3T(v}On!R5t?y$l^2b)*!MT z&;|pzG6n_)Za4>|=L1|1v@rtnB?s6t(OL@{a+6RJ_gPN|7`h|Xn6KFDxb z*Am^>Lrd;^Tw`EhaAag)P(v{`m=(oX^o@zhIf=!^*qv(ftaJVuW(I}^PDpBm8M~x0 zmkq^CEHiMR<18RMwXmCgs_4A!4JHN#MmET{FNE2xT*RA=2%VzT#1weH8$EC`gtW>| zGBGe*W@TUir%R}9OB#3a60!_Dl?d?(!nShontc`M?V{+`E%mM~VP$4uxWoz>F@V~} zu%z*k0E%_!;|FQ*%U!Ss+J}`@j~}x#Fsu}W94mn^*gyouV5A;UFgVprbQh7Ptb_}@Q;asK@~b;f^a5_EQ+z{X%YSW6ZC-Hd6socD-#35BNp^T z?yZ1gFley}BDM-k^Gi~3Wt@9bAH!ZTGB7-1W?(Rfxs(BvwMCRs%*2w&!D$2AVZ`VT zul;-1YbOf>11Apy18Ac#%$_BU!K#ET@r7-9#2$waVn1}JF*7i%U_&oY!nIJ0h6XnB z>4bRl{<<4aYfmsSFq~#(U~qsr7aS}sdML(X2^K`&N5la%$3O?h(8FiWVY99mj0_BS zm?4)Lz${$SsAWjVHgF_hIld0v4s&iz=TK$_25xo+20NGqU>~I!6S4yy2M7;A3LNOJ zQ*^uRzTLR+n~8xzk&S^t2gNRNa}>Lvkpf#_sDiO(0mJ0m+?h+57#MUg;w8ok#bop> z3$CPa-jj?YUbc7pBrIZKV3^Fyz@UQSk2qTt+pwep?8((Pf8I7wOrL`ul>jqzNu!e! zArrwdO{k0r_+2(bl8J#~HVXrTGR$;vG*`QzSm0Hhp9d=^6H7Al^Pq!8=pp{rXQ$CN zP`%FzIc^_j=90#%ZfFLgR@fLfbYUqjK`oh6vtMu4Wn^HG16cwy9qi&eo~RZC`}>7d z7NmM)=9OR%-QcG7uA58@44iD}xz@!S#V9QC1rA;GiVl*>u{a#mlvy>y&%TV2fng~# z1A`)p!>j#JY=Z@JYLN=KI>PRFj(M^>9x*X6aIr8jfX0eoCN60-2tY9ozBLNFIeTvC zpHT$GJ}UzQXqODa9Is#$a}dtLZqQ%%>Vl0-3=9*Q(H*oT9K|5`<{RwhSl9n%L_Q`0 z;h^3q6m!r^1Gk*~MAQ?(&=cpj&l2UVObiUSnbBJW7h_S3h872YnaQc3;7i7lfP9wf zOFw5}V6ftW9Kw%qs#pSwdH53$_HeL$xVie000YA(4fIyDS1O9(P{-n_p57WW<*#I9 zV6cWR2Sd0sybQ%CEbatVPngGXpoi?FS?|_PU}9kCXGSkaf+|pKfJPcpy^7uUJEJ)A zpEEKrz|N3FI9a(G#Xu}hhU86xso~n9oo6MPA?J~x_AO#-QLKOlFnr<)+MdHvn~9(G zn3l`Iz)&fKp2+q#;58OUt@0`8_P0|^3=Dp(=;md0;x!LPIaEHot3ivIf#EOqJQ2l^ zAW+W*yBSB-E?Q}^FfizIpnL4WWE3;dsj|*}01F-rSieMnSU&tc8Q=Fi=e*KKJpYWmvPb-+UC)u;dL;b|zd< zTHU-e@eL~jLk}-xN&w+rw}mJ+ASwk&U4^{;7QKups!?+TW$Aj1#!UHg6hpnx`tle} z0~|T!@8#uRws0~q*zlnjLhDzeSb!NW*aNyWTWVuGGXq06Mgw8VW)uU_U5vl^h$Cah z{`O|w%E7=OAc&p^61St+2JWw6ckyeqOLh?v=XC(Z49p`LNN^LbEI|$A`L=s8$dUk5$!y9gxRm}U^5$5 zXk$Aa9^LE!v?H<+W}7@fF&j(D1~+dAH_6b?Qbt&j_lS@cpv;5i&=_=Ipr6@`up;vb zF;)=jouVHMi!eXs8H)MnNe@SPf`0NK!o1)&DCS`abx@EH9B&XoJK_#uf%iKU3!upn zo@59|=T5YfzYs?Ee?&1Fi`%gb$UsM!a0C?k*+K}*W_?Am48tFoH@2fE8uY_m5N4PD zKrtKns26lY(2oK^7}E0##Sl>U4dY-CbkjDVofLsEZTBA()8JiK9HSpk(RSe@3|jFY z#UN;c#a@Y{@2y3cBEiClJbwa9KG=;x-(H9?CWalw7*KlxyAkO7h!93><3=$8OQHi8 zQv`Di`i>KX4exkSY=DFqc4wk5Iz$*^Ac4gYM9Gi71Q9)9pf8(37<^nB#bBg%FuD^l zm-c|x0YOXxO{O`>GGeX@f=#GlYDSFpfHdb~Y6iDGA?tMz-oZ2nv`z@&h^2VV0UN20 zFb(^ - - 4.0.0 - sjson.json - sjson - 0.7-SNAPSHOT-2.8.RC7 - POM was created from install:install-file - diff --git a/embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.jar b/embedded-repo/sjson/json/sjson/0.8-2.8.0/sjson-0.8-2.8.0.jar similarity index 54% rename from embedded-repo/sjson/json/sjson/0.7-2.8.0/sjson-0.7-2.8.0.jar rename to embedded-repo/sjson/json/sjson/0.8-2.8.0/sjson-0.8-2.8.0.jar index e8700f11d316f255d679d25d4ff09f327e3fae4f..7dc4a9f66d8b626254ea90667fbbae171b55f0e0 100644 GIT binary patch delta 61517 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 N85kx^XJTMr003%~9bEtb diff --git a/embedded-repo/sjson/json/sjson/0.4/sjson-0.4.pom b/embedded-repo/sjson/json/sjson/0.8-2.8.0/sjson-0.8-2.8.0.pom old mode 100755 new mode 100644 similarity index 92% rename from embedded-repo/sjson/json/sjson/0.4/sjson-0.4.pom rename to embedded-repo/sjson/json/sjson/0.8-2.8.0/sjson-0.8-2.8.0.pom index 784adff55e..51167926f1 --- a/embedded-repo/sjson/json/sjson/0.4/sjson-0.4.pom +++ b/embedded-repo/sjson/json/sjson/0.8-2.8.0/sjson-0.8-2.8.0.pom @@ -3,6 +3,6 @@ 4.0.0 sjson.json sjson - 0.4 + 0.8-2.8.0 jar diff --git a/project/build/AkkaProject.scala b/project/build/AkkaProject.scala index 247252b6e1..90fc49afc2 100644 --- a/project/build/AkkaProject.scala +++ b/project/build/AkkaProject.scala @@ -186,7 +186,7 @@ class AkkaParentProject(info: ProjectInfo) extends DefaultProject(info) { lazy val sbinary = "sbinary" % "sbinary" % "2.8.0-0.3.1" % "compile" - lazy val sjson = "sjson.json" % "sjson" % "0.8-SNAPSHOT-2.8.0" % "compile" + lazy val sjson = "sjson.json" % "sjson" % "0.8-2.8.0" % "compile" lazy val slf4j = "org.slf4j" % "slf4j-api" % SLF4J_VERSION % "compile" From 7fb3e51bd2894d05991c134fd7a51b3ec7c06619 Mon Sep 17 00:00:00 2001 From: Michael Kober Date: Thu, 16 Sep 2010 13:50:57 +0200 Subject: [PATCH 06/24] closing ticket 434; added id to ActorInfoProtocol --- .../akka/remote/protocol/RemoteProtocol.java | 100 +- .../src/main/protocol/RemoteProtocol.proto | 1 + .../src/main/scala/remote/RemoteServer.scala | 10 +- .../serialization/SerializationProtocol.scala | 5 +- .../akka/remote/protocol/RemoteProtocol.java | 5190 ----------------- .../src/test/scala/ticket/Ticket434Spec.scala | 46 + 6 files changed, 125 insertions(+), 5227 deletions(-) delete mode 100644 akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java create mode 100644 akka-remote/src/test/scala/ticket/Ticket434Spec.scala diff --git a/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java index 61d79c7a3f..ab05937f61 100644 --- a/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java +++ b/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java @@ -2001,6 +2001,13 @@ public final class RemoteProtocol { public boolean hasTypedActorInfo() { return hasTypedActorInfo; } public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol getTypedActorInfo() { return typedActorInfo_; } + // optional string id = 6; + public static final int ID_FIELD_NUMBER = 6; + private boolean hasId; + private java.lang.String id_ = ""; + public boolean hasId() { return hasId; } + public java.lang.String getId() { return id_; } + private void initFields() { actorType_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType.SCALA_ACTOR; typedActorInfo_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance(); @@ -2034,6 +2041,9 @@ public final class RemoteProtocol { if (hasTypedActorInfo()) { output.writeMessage(5, getTypedActorInfo()); } + if (hasId()) { + output.writeString(6, getId()); + } getUnknownFields().writeTo(output); } @@ -2063,6 +2073,10 @@ public final class RemoteProtocol { size += com.google.protobuf.CodedOutputStream .computeMessageSize(5, getTypedActorInfo()); } + if (hasId()) { + size += com.google.protobuf.CodedOutputStream + .computeStringSize(6, getId()); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -2236,6 +2250,9 @@ public final class RemoteProtocol { if (other.hasTypedActorInfo()) { mergeTypedActorInfo(other.getTypedActorInfo()); } + if (other.hasId()) { + setId(other.getId()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -2292,6 +2309,10 @@ public final class RemoteProtocol { setTypedActorInfo(subBuilder.buildPartial()); break; } + case 50: { + setId(input.readString()); + break; + } } } } @@ -2415,6 +2436,27 @@ public final class RemoteProtocol { return this; } + // optional string id = 6; + public boolean hasId() { + return result.hasId(); + } + public java.lang.String getId() { + return result.getId(); + } + public Builder setId(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasId = true; + result.id_ = value; + return this; + } + public Builder clearId() { + result.hasId = false; + result.id_ = getDefaultInstance().getId(); + return this; + } + // @@protoc_insertion_point(builder_scope:ActorInfoProtocol) } @@ -5738,36 +5780,36 @@ public final class RemoteProtocol { "tProtocol\"r\n\017MessageProtocol\0225\n\023serializ" + "ationScheme\030\001 \002(\0162\030.SerializationSchemeT" + "ype\022\017\n\007message\030\002 \002(\014\022\027\n\017messageManifest\030" + - "\003 \001(\014\"\222\001\n\021ActorInfoProtocol\022\014\n\004uuid\030\001 \002(" + + "\003 \001(\014\"\236\001\n\021ActorInfoProtocol\022\014\n\004uuid\030\001 \002(" + "\t\022\016\n\006target\030\002 \002(\t\022\017\n\007timeout\030\003 \002(\004\022\035\n\tac" + "torType\030\004 \002(\0162\n.ActorType\022/\n\016typedActorI" + - "nfo\030\005 \001(\0132\027.TypedActorInfoProtocol\";\n\026Ty", - "pedActorInfoProtocol\022\021\n\tinterface\030\001 \002(\t\022" + - "\016\n\006method\030\002 \002(\t\"\352\001\n\025RemoteRequestProtoco" + - "l\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \002(\0132\020.Message" + - "Protocol\022%\n\tactorInfo\030\003 \002(\0132\022.ActorInfoP" + - "rotocol\022\020\n\010isOneWay\030\004 \002(\010\022\026\n\016supervisorU" + - "uid\030\005 \001(\t\022\'\n\006sender\030\006 \001(\0132\027.RemoteActorR" + - "efProtocol\022(\n\010metadata\030\007 \003(\0132\026.MetadataE" + - "ntryProtocol\"\324\001\n\023RemoteReplyProtocol\022\n\n\002" + - "id\030\001 \002(\004\022!\n\007message\030\002 \001(\0132\020.MessageProto" + - "col\022%\n\texception\030\003 \001(\0132\022.ExceptionProtoc", - "ol\022\026\n\016supervisorUuid\030\004 \001(\t\022\017\n\007isActor\030\005 " + - "\002(\010\022\024\n\014isSuccessful\030\006 \002(\010\022(\n\010metadata\030\007 " + - "\003(\0132\026.MetadataEntryProtocol\")\n\014UuidProto" + - "col\022\014\n\004high\030\001 \002(\004\022\013\n\003low\030\002 \002(\004\"3\n\025Metada" + - "taEntryProtocol\022\013\n\003key\030\001 \002(\t\022\r\n\005value\030\002 " + - "\002(\014\"6\n\021LifeCycleProtocol\022!\n\tlifeCycle\030\001 " + - "\002(\0162\016.LifeCycleType\"1\n\017AddressProtocol\022\020" + - "\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002 \002(\r\"7\n\021Except" + - "ionProtocol\022\021\n\tclassname\030\001 \002(\t\022\017\n\007messag" + - "e\030\002 \002(\t*=\n\tActorType\022\017\n\013SCALA_ACTOR\020\001\022\016\n", - "\nJAVA_ACTOR\020\002\022\017\n\013TYPED_ACTOR\020\003*]\n\027Serial" + - "izationSchemeType\022\010\n\004JAVA\020\001\022\013\n\007SBINARY\020\002" + - "\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_JSON\020\004\022\014\n\010PROTO" + - "BUF\020\005*-\n\rLifeCycleType\022\r\n\tPERMANENT\020\001\022\r\n" + - "\tTEMPORARY\020\002B-\n)se.scalablesolutions.akk" + - "a.remote.protocolH\001" + "nfo\030\005 \001(\0132\027.TypedActorInfoProtocol\022\n\n\002id", + "\030\006 \001(\t\";\n\026TypedActorInfoProtocol\022\021\n\tinte" + + "rface\030\001 \002(\t\022\016\n\006method\030\002 \002(\t\"\352\001\n\025RemoteRe" + + "questProtocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \002" + + "(\0132\020.MessageProtocol\022%\n\tactorInfo\030\003 \002(\0132" + + "\022.ActorInfoProtocol\022\020\n\010isOneWay\030\004 \002(\010\022\026\n" + + "\016supervisorUuid\030\005 \001(\t\022\'\n\006sender\030\006 \001(\0132\027." + + "RemoteActorRefProtocol\022(\n\010metadata\030\007 \003(\013" + + "2\026.MetadataEntryProtocol\"\324\001\n\023RemoteReply" + + "Protocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \001(\0132\020." + + "MessageProtocol\022%\n\texception\030\003 \001(\0132\022.Exc", + "eptionProtocol\022\026\n\016supervisorUuid\030\004 \001(\t\022\017" + + "\n\007isActor\030\005 \002(\010\022\024\n\014isSuccessful\030\006 \002(\010\022(\n" + + "\010metadata\030\007 \003(\0132\026.MetadataEntryProtocol\"" + + ")\n\014UuidProtocol\022\014\n\004high\030\001 \002(\004\022\013\n\003low\030\002 \002" + + "(\004\"3\n\025MetadataEntryProtocol\022\013\n\003key\030\001 \002(\t" + + "\022\r\n\005value\030\002 \002(\014\"6\n\021LifeCycleProtocol\022!\n\t" + + "lifeCycle\030\001 \002(\0162\016.LifeCycleType\"1\n\017Addre" + + "ssProtocol\022\020\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002 \002" + + "(\r\"7\n\021ExceptionProtocol\022\021\n\tclassname\030\001 \002" + + "(\t\022\017\n\007message\030\002 \002(\t*=\n\tActorType\022\017\n\013SCAL", + "A_ACTOR\020\001\022\016\n\nJAVA_ACTOR\020\002\022\017\n\013TYPED_ACTOR" + + "\020\003*]\n\027SerializationSchemeType\022\010\n\004JAVA\020\001\022" + + "\013\n\007SBINARY\020\002\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_JSO" + + "N\020\004\022\014\n\010PROTOBUF\020\005*-\n\rLifeCycleType\022\r\n\tPE" + + "RMANENT\020\001\022\r\n\tTEMPORARY\020\002B-\n)se.scalables" + + "olutions.akka.remote.protocolH\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -5803,7 +5845,7 @@ public final class RemoteProtocol { internal_static_ActorInfoProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ActorInfoProtocol_descriptor, - new java.lang.String[] { "Uuid", "Target", "Timeout", "ActorType", "TypedActorInfo", }, + new java.lang.String[] { "Uuid", "Target", "Timeout", "ActorType", "TypedActorInfo", "Id", }, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.Builder.class); internal_static_TypedActorInfoProtocol_descriptor = diff --git a/akka-remote/src/main/protocol/RemoteProtocol.proto b/akka-remote/src/main/protocol/RemoteProtocol.proto index 203b505d68..4343fecf7f 100644 --- a/akka-remote/src/main/protocol/RemoteProtocol.proto +++ b/akka-remote/src/main/protocol/RemoteProtocol.proto @@ -61,6 +61,7 @@ message ActorInfoProtocol { required uint64 timeout = 3; required ActorType actorType = 4; optional TypedActorInfoProtocol typedActorInfo = 5; + optional string id = 6; } /** diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala index 4bcd4861ff..4a95436cd0 100644 --- a/akka-remote/src/main/scala/remote/RemoteServer.scala +++ b/akka-remote/src/main/scala/remote/RemoteServer.scala @@ -589,9 +589,8 @@ class RemoteServerHandler( * Does not start the actor. */ private def createActor(actorInfo: ActorInfoProtocol): ActorRef = { - val ids = actorInfo.getUuid.split(':') - val uuid = ids(0) - val id = ids(1) + val uuid = actorInfo.getUuid + val id = actorInfo.getId val name = actorInfo.getTarget val timeout = actorInfo.getTimeout @@ -620,9 +619,8 @@ class RemoteServerHandler( } private def createTypedActor(actorInfo: ActorInfoProtocol): AnyRef = { - val ids = actorInfo.getUuid.split(':') - val uuid = ids(0) - val id = ids(1) + val uuid = actorInfo.getUuid + val id = actorInfo.getId val typedActorOrNull = findTypedActorByIdOrUUid(id, uuid) diff --git a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala index afebae8f3b..0ed0f557eb 100644 --- a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala +++ b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala @@ -230,7 +230,7 @@ object RemoteActorSerialization { } RemoteActorRefProtocol.newBuilder - .setUuid(uuid + ":" + id) + .setUuid(uuid) .setActorClassname(actorClass.getName) .setHomeAddress(AddressProtocol.newBuilder.setHostname(host).setPort(port).build) .setTimeout(timeout) @@ -248,7 +248,8 @@ object RemoteActorSerialization { import actorRef._ val actorInfoBuilder = ActorInfoProtocol.newBuilder - .setUuid(uuid + ":" + actorRef.id) + .setUuid(uuid) + .setId(actorRef.id) .setTarget(actorClassName) .setTimeout(timeout) diff --git a/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java deleted file mode 100644 index 3c8a60aecc..0000000000 --- a/akka-remote/src/test/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java +++ /dev/null @@ -1,5190 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: RemoteProtocol.proto - -package se.scalablesolutions.akka.remote.protocol; - -public final class RemoteProtocol { - private RemoteProtocol() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - } - public enum ActorType - implements com.google.protobuf.ProtocolMessageEnum { - SCALA_ACTOR(0, 1), - JAVA_ACTOR(1, 2), - TYPED_ACTOR(2, 3), - ; - - - public final int getNumber() { return value; } - - public static ActorType valueOf(int value) { - switch (value) { - case 1: return SCALA_ACTOR; - case 2: return JAVA_ACTOR; - case 3: return TYPED_ACTOR; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public ActorType findValueByNumber(int number) { - return ActorType.valueOf(number) - ; } - }; - - public final com.google.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(index); - } - public final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); - } - public static final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor().getEnumTypes().get(0); - } - - private static final ActorType[] VALUES = { - SCALA_ACTOR, JAVA_ACTOR, TYPED_ACTOR, - }; - public static ActorType valueOf( - com.google.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); - } - return VALUES[desc.getIndex()]; - } - private final int index; - private final int value; - private ActorType(int index, int value) { - this.index = index; - this.value = value; - } - - static { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor(); - } - - // @@protoc_insertion_point(enum_scope:ActorType) - } - - public enum SerializationSchemeType - implements com.google.protobuf.ProtocolMessageEnum { - JAVA(0, 1), - SBINARY(1, 2), - SCALA_JSON(2, 3), - JAVA_JSON(3, 4), - PROTOBUF(4, 5), - ; - - - public final int getNumber() { return value; } - - public static SerializationSchemeType valueOf(int value) { - switch (value) { - case 1: return JAVA; - case 2: return SBINARY; - case 3: return SCALA_JSON; - case 4: return JAVA_JSON; - case 5: return PROTOBUF; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public SerializationSchemeType findValueByNumber(int number) { - return SerializationSchemeType.valueOf(number) - ; } - }; - - public final com.google.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(index); - } - public final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); - } - public static final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor().getEnumTypes().get(1); - } - - private static final SerializationSchemeType[] VALUES = { - JAVA, SBINARY, SCALA_JSON, JAVA_JSON, PROTOBUF, - }; - public static SerializationSchemeType valueOf( - com.google.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); - } - return VALUES[desc.getIndex()]; - } - private final int index; - private final int value; - private SerializationSchemeType(int index, int value) { - this.index = index; - this.value = value; - } - - static { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor(); - } - - // @@protoc_insertion_point(enum_scope:SerializationSchemeType) - } - - public enum LifeCycleType - implements com.google.protobuf.ProtocolMessageEnum { - PERMANENT(0, 1), - TEMPORARY(1, 2), - ; - - - public final int getNumber() { return value; } - - public static LifeCycleType valueOf(int value) { - switch (value) { - case 1: return PERMANENT; - case 2: return TEMPORARY; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public LifeCycleType findValueByNumber(int number) { - return LifeCycleType.valueOf(number) - ; } - }; - - public final com.google.protobuf.Descriptors.EnumValueDescriptor - getValueDescriptor() { - return getDescriptor().getValues().get(index); - } - public final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptorForType() { - return getDescriptor(); - } - public static final com.google.protobuf.Descriptors.EnumDescriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor().getEnumTypes().get(2); - } - - private static final LifeCycleType[] VALUES = { - PERMANENT, TEMPORARY, - }; - public static LifeCycleType valueOf( - com.google.protobuf.Descriptors.EnumValueDescriptor desc) { - if (desc.getType() != getDescriptor()) { - throw new java.lang.IllegalArgumentException( - "EnumValueDescriptor is not for this type."); - } - return VALUES[desc.getIndex()]; - } - private final int index; - private final int value; - private LifeCycleType(int index, int value) { - this.index = index; - this.value = value; - } - - static { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.getDescriptor(); - } - - // @@protoc_insertion_point(enum_scope:LifeCycleType) - } - - public static final class RemoteActorRefProtocol extends - com.google.protobuf.GeneratedMessage { - // Use RemoteActorRefProtocol.newBuilder() to construct. - private RemoteActorRefProtocol() { - initFields(); - } - private RemoteActorRefProtocol(boolean noInit) {} - - private static final RemoteActorRefProtocol defaultInstance; - public static RemoteActorRefProtocol getDefaultInstance() { - return defaultInstance; - } - - public RemoteActorRefProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteActorRefProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteActorRefProtocol_fieldAccessorTable; - } - - // required string uuid = 1; - public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - - // required string actorClassname = 2; - public static final int ACTORCLASSNAME_FIELD_NUMBER = 2; - private boolean hasActorClassname; - private java.lang.String actorClassname_ = ""; - public boolean hasActorClassname() { return hasActorClassname; } - public java.lang.String getActorClassname() { return actorClassname_; } - - // required .AddressProtocol homeAddress = 3; - public static final int HOMEADDRESS_FIELD_NUMBER = 3; - private boolean hasHomeAddress; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol homeAddress_; - public boolean hasHomeAddress() { return hasHomeAddress; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol getHomeAddress() { return homeAddress_; } - - // optional uint64 timeout = 4; - public static final int TIMEOUT_FIELD_NUMBER = 4; - private boolean hasTimeout; - private long timeout_ = 0L; - public boolean hasTimeout() { return hasTimeout; } - public long getTimeout() { return timeout_; } - - private void initFields() { - homeAddress_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasUuid) return false; - if (!hasActorClassname) return false; - if (!hasHomeAddress) return false; - if (!getHomeAddress().isInitialized()) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); - } - if (hasActorClassname()) { - output.writeString(2, getActorClassname()); - } - if (hasHomeAddress()) { - output.writeMessage(3, getHomeAddress()); - } - if (hasTimeout()) { - output.writeUInt64(4, getTimeout()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasUuid()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); - } - if (hasActorClassname()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getActorClassname()); - } - if (hasHomeAddress()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getHomeAddress()); - } - if (hasTimeout()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(4, getTimeout()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance()) return this; - if (other.hasUuid()) { - setUuid(other.getUuid()); - } - if (other.hasActorClassname()) { - setActorClassname(other.getActorClassname()); - } - if (other.hasHomeAddress()) { - mergeHomeAddress(other.getHomeAddress()); - } - if (other.hasTimeout()) { - setTimeout(other.getTimeout()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } - case 18: { - setActorClassname(input.readString()); - break; - } - case 26: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.newBuilder(); - if (hasHomeAddress()) { - subBuilder.mergeFrom(getHomeAddress()); - } - input.readMessage(subBuilder, extensionRegistry); - setHomeAddress(subBuilder.buildPartial()); - break; - } - case 32: { - setTimeout(input.readUInt64()); - break; - } - } - } - } - - - // required string uuid = 1; - public boolean hasUuid() { - return result.hasUuid(); - } - public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasUuid = true; - result.uuid_ = value; - return this; - } - public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); - return this; - } - - // required string actorClassname = 2; - public boolean hasActorClassname() { - return result.hasActorClassname(); - } - public java.lang.String getActorClassname() { - return result.getActorClassname(); - } - public Builder setActorClassname(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasActorClassname = true; - result.actorClassname_ = value; - return this; - } - public Builder clearActorClassname() { - result.hasActorClassname = false; - result.actorClassname_ = getDefaultInstance().getActorClassname(); - return this; - } - - // required .AddressProtocol homeAddress = 3; - public boolean hasHomeAddress() { - return result.hasHomeAddress(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol getHomeAddress() { - return result.getHomeAddress(); - } - public Builder setHomeAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasHomeAddress = true; - result.homeAddress_ = value; - return this; - } - public Builder setHomeAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder builderForValue) { - result.hasHomeAddress = true; - result.homeAddress_ = builderForValue.build(); - return this; - } - public Builder mergeHomeAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol value) { - if (result.hasHomeAddress() && - result.homeAddress_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance()) { - result.homeAddress_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.newBuilder(result.homeAddress_).mergeFrom(value).buildPartial(); - } else { - result.homeAddress_ = value; - } - result.hasHomeAddress = true; - return this; - } - public Builder clearHomeAddress() { - result.hasHomeAddress = false; - result.homeAddress_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - return this; - } - - // optional uint64 timeout = 4; - public boolean hasTimeout() { - return result.hasTimeout(); - } - public long getTimeout() { - return result.getTimeout(); - } - public Builder setTimeout(long value) { - result.hasTimeout = true; - result.timeout_ = value; - return this; - } - public Builder clearTimeout() { - result.hasTimeout = false; - result.timeout_ = 0L; - return this; - } - - // @@protoc_insertion_point(builder_scope:RemoteActorRefProtocol) - } - - static { - defaultInstance = new RemoteActorRefProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:RemoteActorRefProtocol) - } - - public static final class SerializedActorRefProtocol extends - com.google.protobuf.GeneratedMessage { - // Use SerializedActorRefProtocol.newBuilder() to construct. - private SerializedActorRefProtocol() { - initFields(); - } - private SerializedActorRefProtocol(boolean noInit) {} - - private static final SerializedActorRefProtocol defaultInstance; - public static SerializedActorRefProtocol getDefaultInstance() { - return defaultInstance; - } - - public SerializedActorRefProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_SerializedActorRefProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_SerializedActorRefProtocol_fieldAccessorTable; - } - - // required string uuid = 1; - public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - - // required string id = 2; - public static final int ID_FIELD_NUMBER = 2; - private boolean hasId; - private java.lang.String id_ = ""; - public boolean hasId() { return hasId; } - public java.lang.String getId() { return id_; } - - // required string actorClassname = 3; - public static final int ACTORCLASSNAME_FIELD_NUMBER = 3; - private boolean hasActorClassname; - private java.lang.String actorClassname_ = ""; - public boolean hasActorClassname() { return hasActorClassname; } - public java.lang.String getActorClassname() { return actorClassname_; } - - // required .AddressProtocol originalAddress = 4; - public static final int ORIGINALADDRESS_FIELD_NUMBER = 4; - private boolean hasOriginalAddress; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol originalAddress_; - public boolean hasOriginalAddress() { return hasOriginalAddress; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol getOriginalAddress() { return originalAddress_; } - - // optional bytes actorInstance = 5; - public static final int ACTORINSTANCE_FIELD_NUMBER = 5; - private boolean hasActorInstance; - private com.google.protobuf.ByteString actorInstance_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasActorInstance() { return hasActorInstance; } - public com.google.protobuf.ByteString getActorInstance() { return actorInstance_; } - - // optional string serializerClassname = 6; - public static final int SERIALIZERCLASSNAME_FIELD_NUMBER = 6; - private boolean hasSerializerClassname; - private java.lang.String serializerClassname_ = ""; - public boolean hasSerializerClassname() { return hasSerializerClassname; } - public java.lang.String getSerializerClassname() { return serializerClassname_; } - - // optional bool isTransactor = 7; - public static final int ISTRANSACTOR_FIELD_NUMBER = 7; - private boolean hasIsTransactor; - private boolean isTransactor_ = false; - public boolean hasIsTransactor() { return hasIsTransactor; } - public boolean getIsTransactor() { return isTransactor_; } - - // optional uint64 timeout = 8; - public static final int TIMEOUT_FIELD_NUMBER = 8; - private boolean hasTimeout; - private long timeout_ = 0L; - public boolean hasTimeout() { return hasTimeout; } - public long getTimeout() { return timeout_; } - - // optional uint64 receiveTimeout = 9; - public static final int RECEIVETIMEOUT_FIELD_NUMBER = 9; - private boolean hasReceiveTimeout; - private long receiveTimeout_ = 0L; - public boolean hasReceiveTimeout() { return hasReceiveTimeout; } - public long getReceiveTimeout() { return receiveTimeout_; } - - // optional .LifeCycleProtocol lifeCycle = 10; - public static final int LIFECYCLE_FIELD_NUMBER = 10; - private boolean hasLifeCycle; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol lifeCycle_; - public boolean hasLifeCycle() { return hasLifeCycle; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol getLifeCycle() { return lifeCycle_; } - - // optional .RemoteActorRefProtocol supervisor = 11; - public static final int SUPERVISOR_FIELD_NUMBER = 11; - private boolean hasSupervisor; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol supervisor_; - public boolean hasSupervisor() { return hasSupervisor; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getSupervisor() { return supervisor_; } - - // optional bytes hotswapStack = 12; - public static final int HOTSWAPSTACK_FIELD_NUMBER = 12; - private boolean hasHotswapStack; - private com.google.protobuf.ByteString hotswapStack_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasHotswapStack() { return hasHotswapStack; } - public com.google.protobuf.ByteString getHotswapStack() { return hotswapStack_; } - - // repeated .RemoteRequestProtocol messages = 13; - public static final int MESSAGES_FIELD_NUMBER = 13; - private java.util.List messages_ = - java.util.Collections.emptyList(); - public java.util.List getMessagesList() { - return messages_; - } - public int getMessagesCount() { return messages_.size(); } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol getMessages(int index) { - return messages_.get(index); - } - - private void initFields() { - originalAddress_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); - supervisor_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasUuid) return false; - if (!hasId) return false; - if (!hasActorClassname) return false; - if (!hasOriginalAddress) return false; - if (!getOriginalAddress().isInitialized()) return false; - if (hasLifeCycle()) { - if (!getLifeCycle().isInitialized()) return false; - } - if (hasSupervisor()) { - if (!getSupervisor().isInitialized()) return false; - } - for (se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol element : getMessagesList()) { - if (!element.isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); - } - if (hasId()) { - output.writeString(2, getId()); - } - if (hasActorClassname()) { - output.writeString(3, getActorClassname()); - } - if (hasOriginalAddress()) { - output.writeMessage(4, getOriginalAddress()); - } - if (hasActorInstance()) { - output.writeBytes(5, getActorInstance()); - } - if (hasSerializerClassname()) { - output.writeString(6, getSerializerClassname()); - } - if (hasIsTransactor()) { - output.writeBool(7, getIsTransactor()); - } - if (hasTimeout()) { - output.writeUInt64(8, getTimeout()); - } - if (hasReceiveTimeout()) { - output.writeUInt64(9, getReceiveTimeout()); - } - if (hasLifeCycle()) { - output.writeMessage(10, getLifeCycle()); - } - if (hasSupervisor()) { - output.writeMessage(11, getSupervisor()); - } - if (hasHotswapStack()) { - output.writeBytes(12, getHotswapStack()); - } - for (se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol element : getMessagesList()) { - output.writeMessage(13, element); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasUuid()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); - } - if (hasId()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getId()); - } - if (hasActorClassname()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getActorClassname()); - } - if (hasOriginalAddress()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, getOriginalAddress()); - } - if (hasActorInstance()) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(5, getActorInstance()); - } - if (hasSerializerClassname()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(6, getSerializerClassname()); - } - if (hasIsTransactor()) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(7, getIsTransactor()); - } - if (hasTimeout()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(8, getTimeout()); - } - if (hasReceiveTimeout()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(9, getReceiveTimeout()); - } - if (hasLifeCycle()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(10, getLifeCycle()); - } - if (hasSupervisor()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(11, getSupervisor()); - } - if (hasHotswapStack()) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(12, getHotswapStack()); - } - for (se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol element : getMessagesList()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(13, element); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - if (result.messages_ != java.util.Collections.EMPTY_LIST) { - result.messages_ = - java.util.Collections.unmodifiableList(result.messages_); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDefaultInstance()) return this; - if (other.hasUuid()) { - setUuid(other.getUuid()); - } - if (other.hasId()) { - setId(other.getId()); - } - if (other.hasActorClassname()) { - setActorClassname(other.getActorClassname()); - } - if (other.hasOriginalAddress()) { - mergeOriginalAddress(other.getOriginalAddress()); - } - if (other.hasActorInstance()) { - setActorInstance(other.getActorInstance()); - } - if (other.hasSerializerClassname()) { - setSerializerClassname(other.getSerializerClassname()); - } - if (other.hasIsTransactor()) { - setIsTransactor(other.getIsTransactor()); - } - if (other.hasTimeout()) { - setTimeout(other.getTimeout()); - } - if (other.hasReceiveTimeout()) { - setReceiveTimeout(other.getReceiveTimeout()); - } - if (other.hasLifeCycle()) { - mergeLifeCycle(other.getLifeCycle()); - } - if (other.hasSupervisor()) { - mergeSupervisor(other.getSupervisor()); - } - if (other.hasHotswapStack()) { - setHotswapStack(other.getHotswapStack()); - } - if (!other.messages_.isEmpty()) { - if (result.messages_.isEmpty()) { - result.messages_ = new java.util.ArrayList(); - } - result.messages_.addAll(other.messages_); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } - case 18: { - setId(input.readString()); - break; - } - case 26: { - setActorClassname(input.readString()); - break; - } - case 34: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.newBuilder(); - if (hasOriginalAddress()) { - subBuilder.mergeFrom(getOriginalAddress()); - } - input.readMessage(subBuilder, extensionRegistry); - setOriginalAddress(subBuilder.buildPartial()); - break; - } - case 42: { - setActorInstance(input.readBytes()); - break; - } - case 50: { - setSerializerClassname(input.readString()); - break; - } - case 56: { - setIsTransactor(input.readBool()); - break; - } - case 64: { - setTimeout(input.readUInt64()); - break; - } - case 72: { - setReceiveTimeout(input.readUInt64()); - break; - } - case 82: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder(); - if (hasLifeCycle()) { - subBuilder.mergeFrom(getLifeCycle()); - } - input.readMessage(subBuilder, extensionRegistry); - setLifeCycle(subBuilder.buildPartial()); - break; - } - case 90: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(); - if (hasSupervisor()) { - subBuilder.mergeFrom(getSupervisor()); - } - input.readMessage(subBuilder, extensionRegistry); - setSupervisor(subBuilder.buildPartial()); - break; - } - case 98: { - setHotswapStack(input.readBytes()); - break; - } - case 106: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addMessages(subBuilder.buildPartial()); - break; - } - } - } - } - - - // required string uuid = 1; - public boolean hasUuid() { - return result.hasUuid(); - } - public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasUuid = true; - result.uuid_ = value; - return this; - } - public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); - return this; - } - - // required string id = 2; - public boolean hasId() { - return result.hasId(); - } - public java.lang.String getId() { - return result.getId(); - } - public Builder setId(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasId = true; - result.id_ = value; - return this; - } - public Builder clearId() { - result.hasId = false; - result.id_ = getDefaultInstance().getId(); - return this; - } - - // required string actorClassname = 3; - public boolean hasActorClassname() { - return result.hasActorClassname(); - } - public java.lang.String getActorClassname() { - return result.getActorClassname(); - } - public Builder setActorClassname(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasActorClassname = true; - result.actorClassname_ = value; - return this; - } - public Builder clearActorClassname() { - result.hasActorClassname = false; - result.actorClassname_ = getDefaultInstance().getActorClassname(); - return this; - } - - // required .AddressProtocol originalAddress = 4; - public boolean hasOriginalAddress() { - return result.hasOriginalAddress(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol getOriginalAddress() { - return result.getOriginalAddress(); - } - public Builder setOriginalAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasOriginalAddress = true; - result.originalAddress_ = value; - return this; - } - public Builder setOriginalAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder builderForValue) { - result.hasOriginalAddress = true; - result.originalAddress_ = builderForValue.build(); - return this; - } - public Builder mergeOriginalAddress(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol value) { - if (result.hasOriginalAddress() && - result.originalAddress_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance()) { - result.originalAddress_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.newBuilder(result.originalAddress_).mergeFrom(value).buildPartial(); - } else { - result.originalAddress_ = value; - } - result.hasOriginalAddress = true; - return this; - } - public Builder clearOriginalAddress() { - result.hasOriginalAddress = false; - result.originalAddress_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - return this; - } - - // optional bytes actorInstance = 5; - public boolean hasActorInstance() { - return result.hasActorInstance(); - } - public com.google.protobuf.ByteString getActorInstance() { - return result.getActorInstance(); - } - public Builder setActorInstance(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasActorInstance = true; - result.actorInstance_ = value; - return this; - } - public Builder clearActorInstance() { - result.hasActorInstance = false; - result.actorInstance_ = getDefaultInstance().getActorInstance(); - return this; - } - - // optional string serializerClassname = 6; - public boolean hasSerializerClassname() { - return result.hasSerializerClassname(); - } - public java.lang.String getSerializerClassname() { - return result.getSerializerClassname(); - } - public Builder setSerializerClassname(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSerializerClassname = true; - result.serializerClassname_ = value; - return this; - } - public Builder clearSerializerClassname() { - result.hasSerializerClassname = false; - result.serializerClassname_ = getDefaultInstance().getSerializerClassname(); - return this; - } - - // optional bool isTransactor = 7; - public boolean hasIsTransactor() { - return result.hasIsTransactor(); - } - public boolean getIsTransactor() { - return result.getIsTransactor(); - } - public Builder setIsTransactor(boolean value) { - result.hasIsTransactor = true; - result.isTransactor_ = value; - return this; - } - public Builder clearIsTransactor() { - result.hasIsTransactor = false; - result.isTransactor_ = false; - return this; - } - - // optional uint64 timeout = 8; - public boolean hasTimeout() { - return result.hasTimeout(); - } - public long getTimeout() { - return result.getTimeout(); - } - public Builder setTimeout(long value) { - result.hasTimeout = true; - result.timeout_ = value; - return this; - } - public Builder clearTimeout() { - result.hasTimeout = false; - result.timeout_ = 0L; - return this; - } - - // optional uint64 receiveTimeout = 9; - public boolean hasReceiveTimeout() { - return result.hasReceiveTimeout(); - } - public long getReceiveTimeout() { - return result.getReceiveTimeout(); - } - public Builder setReceiveTimeout(long value) { - result.hasReceiveTimeout = true; - result.receiveTimeout_ = value; - return this; - } - public Builder clearReceiveTimeout() { - result.hasReceiveTimeout = false; - result.receiveTimeout_ = 0L; - return this; - } - - // optional .LifeCycleProtocol lifeCycle = 10; - public boolean hasLifeCycle() { - return result.hasLifeCycle(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol getLifeCycle() { - return result.getLifeCycle(); - } - public Builder setLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasLifeCycle = true; - result.lifeCycle_ = value; - return this; - } - public Builder setLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder builderForValue) { - result.hasLifeCycle = true; - result.lifeCycle_ = builderForValue.build(); - return this; - } - public Builder mergeLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol value) { - if (result.hasLifeCycle() && - result.lifeCycle_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance()) { - result.lifeCycle_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder(result.lifeCycle_).mergeFrom(value).buildPartial(); - } else { - result.lifeCycle_ = value; - } - result.hasLifeCycle = true; - return this; - } - public Builder clearLifeCycle() { - result.hasLifeCycle = false; - result.lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); - return this; - } - - // optional .RemoteActorRefProtocol supervisor = 11; - public boolean hasSupervisor() { - return result.hasSupervisor(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getSupervisor() { - return result.getSupervisor(); - } - public Builder setSupervisor(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSupervisor = true; - result.supervisor_ = value; - return this; - } - public Builder setSupervisor(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder builderForValue) { - result.hasSupervisor = true; - result.supervisor_ = builderForValue.build(); - return this; - } - public Builder mergeSupervisor(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { - if (result.hasSupervisor() && - result.supervisor_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance()) { - result.supervisor_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(result.supervisor_).mergeFrom(value).buildPartial(); - } else { - result.supervisor_ = value; - } - result.hasSupervisor = true; - return this; - } - public Builder clearSupervisor() { - result.hasSupervisor = false; - result.supervisor_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); - return this; - } - - // optional bytes hotswapStack = 12; - public boolean hasHotswapStack() { - return result.hasHotswapStack(); - } - public com.google.protobuf.ByteString getHotswapStack() { - return result.getHotswapStack(); - } - public Builder setHotswapStack(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasHotswapStack = true; - result.hotswapStack_ = value; - return this; - } - public Builder clearHotswapStack() { - result.hasHotswapStack = false; - result.hotswapStack_ = getDefaultInstance().getHotswapStack(); - return this; - } - - // repeated .RemoteRequestProtocol messages = 13; - public java.util.List getMessagesList() { - return java.util.Collections.unmodifiableList(result.messages_); - } - public int getMessagesCount() { - return result.getMessagesCount(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol getMessages(int index) { - return result.getMessages(index); - } - public Builder setMessages(int index, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.messages_.set(index, value); - return this; - } - public Builder setMessages(int index, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder builderForValue) { - result.messages_.set(index, builderForValue.build()); - return this; - } - public Builder addMessages(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - if (result.messages_.isEmpty()) { - result.messages_ = new java.util.ArrayList(); - } - result.messages_.add(value); - return this; - } - public Builder addMessages(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder builderForValue) { - if (result.messages_.isEmpty()) { - result.messages_ = new java.util.ArrayList(); - } - result.messages_.add(builderForValue.build()); - return this; - } - public Builder addAllMessages( - java.lang.Iterable values) { - if (result.messages_.isEmpty()) { - result.messages_ = new java.util.ArrayList(); - } - super.addAll(values, result.messages_); - return this; - } - public Builder clearMessages() { - result.messages_ = java.util.Collections.emptyList(); - return this; - } - - // @@protoc_insertion_point(builder_scope:SerializedActorRefProtocol) - } - - static { - defaultInstance = new SerializedActorRefProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:SerializedActorRefProtocol) - } - - public static final class MessageProtocol extends - com.google.protobuf.GeneratedMessage { - // Use MessageProtocol.newBuilder() to construct. - private MessageProtocol() { - initFields(); - } - private MessageProtocol(boolean noInit) {} - - private static final MessageProtocol defaultInstance; - public static MessageProtocol getDefaultInstance() { - return defaultInstance; - } - - public MessageProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_MessageProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_MessageProtocol_fieldAccessorTable; - } - - // required .SerializationSchemeType serializationScheme = 1; - public static final int SERIALIZATIONSCHEME_FIELD_NUMBER = 1; - private boolean hasSerializationScheme; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType serializationScheme_; - public boolean hasSerializationScheme() { return hasSerializationScheme; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { return serializationScheme_; } - - // required bytes message = 2; - public static final int MESSAGE_FIELD_NUMBER = 2; - private boolean hasMessage; - private com.google.protobuf.ByteString message_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasMessage() { return hasMessage; } - public com.google.protobuf.ByteString getMessage() { return message_; } - - // optional bytes messageManifest = 3; - public static final int MESSAGEMANIFEST_FIELD_NUMBER = 3; - private boolean hasMessageManifest; - private com.google.protobuf.ByteString messageManifest_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasMessageManifest() { return hasMessageManifest; } - public com.google.protobuf.ByteString getMessageManifest() { return messageManifest_; } - - private void initFields() { - serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; - } - public final boolean isInitialized() { - if (!hasSerializationScheme) return false; - if (!hasMessage) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasSerializationScheme()) { - output.writeEnum(1, getSerializationScheme().getNumber()); - } - if (hasMessage()) { - output.writeBytes(2, getMessage()); - } - if (hasMessageManifest()) { - output.writeBytes(3, getMessageManifest()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasSerializationScheme()) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getSerializationScheme().getNumber()); - } - if (hasMessage()) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getMessage()); - } - if (hasMessageManifest()) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, getMessageManifest()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance()) return this; - if (other.hasSerializationScheme()) { - setSerializationScheme(other.getSerializationScheme()); - } - if (other.hasMessage()) { - setMessage(other.getMessage()); - } - if (other.hasMessageManifest()) { - setMessageManifest(other.getMessageManifest()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setSerializationScheme(value); - } - break; - } - case 18: { - setMessage(input.readBytes()); - break; - } - case 26: { - setMessageManifest(input.readBytes()); - break; - } - } - } - } - - - // required .SerializationSchemeType serializationScheme = 1; - public boolean hasSerializationScheme() { - return result.hasSerializationScheme(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType getSerializationScheme() { - return result.getSerializationScheme(); - } - public Builder setSerializationScheme(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSerializationScheme = true; - result.serializationScheme_ = value; - return this; - } - public Builder clearSerializationScheme() { - result.hasSerializationScheme = false; - result.serializationScheme_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializationSchemeType.JAVA; - return this; - } - - // required bytes message = 2; - public boolean hasMessage() { - return result.hasMessage(); - } - public com.google.protobuf.ByteString getMessage() { - return result.getMessage(); - } - public Builder setMessage(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMessage = true; - result.message_ = value; - return this; - } - public Builder clearMessage() { - result.hasMessage = false; - result.message_ = getDefaultInstance().getMessage(); - return this; - } - - // optional bytes messageManifest = 3; - public boolean hasMessageManifest() { - return result.hasMessageManifest(); - } - public com.google.protobuf.ByteString getMessageManifest() { - return result.getMessageManifest(); - } - public Builder setMessageManifest(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMessageManifest = true; - result.messageManifest_ = value; - return this; - } - public Builder clearMessageManifest() { - result.hasMessageManifest = false; - result.messageManifest_ = getDefaultInstance().getMessageManifest(); - return this; - } - - // @@protoc_insertion_point(builder_scope:MessageProtocol) - } - - static { - defaultInstance = new MessageProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:MessageProtocol) - } - - public static final class ActorInfoProtocol extends - com.google.protobuf.GeneratedMessage { - // Use ActorInfoProtocol.newBuilder() to construct. - private ActorInfoProtocol() { - initFields(); - } - private ActorInfoProtocol(boolean noInit) {} - - private static final ActorInfoProtocol defaultInstance; - public static ActorInfoProtocol getDefaultInstance() { - return defaultInstance; - } - - public ActorInfoProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_ActorInfoProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_ActorInfoProtocol_fieldAccessorTable; - } - - // required string uuid = 1; - public static final int UUID_FIELD_NUMBER = 1; - private boolean hasUuid; - private java.lang.String uuid_ = ""; - public boolean hasUuid() { return hasUuid; } - public java.lang.String getUuid() { return uuid_; } - - // required string target = 2; - public static final int TARGET_FIELD_NUMBER = 2; - private boolean hasTarget; - private java.lang.String target_ = ""; - public boolean hasTarget() { return hasTarget; } - public java.lang.String getTarget() { return target_; } - - // required uint64 timeout = 3; - public static final int TIMEOUT_FIELD_NUMBER = 3; - private boolean hasTimeout; - private long timeout_ = 0L; - public boolean hasTimeout() { return hasTimeout; } - public long getTimeout() { return timeout_; } - - // required .ActorType actorType = 4; - public static final int ACTORTYPE_FIELD_NUMBER = 4; - private boolean hasActorType; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType actorType_; - public boolean hasActorType() { return hasActorType; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType getActorType() { return actorType_; } - - // optional .TypedActorInfoProtocol typedActorInfo = 5; - public static final int TYPEDACTORINFO_FIELD_NUMBER = 5; - private boolean hasTypedActorInfo; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol typedActorInfo_; - public boolean hasTypedActorInfo() { return hasTypedActorInfo; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol getTypedActorInfo() { return typedActorInfo_; } - - private void initFields() { - actorType_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType.SCALA_ACTOR; - typedActorInfo_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasUuid) return false; - if (!hasTarget) return false; - if (!hasTimeout) return false; - if (!hasActorType) return false; - if (hasTypedActorInfo()) { - if (!getTypedActorInfo().isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasUuid()) { - output.writeString(1, getUuid()); - } - if (hasTarget()) { - output.writeString(2, getTarget()); - } - if (hasTimeout()) { - output.writeUInt64(3, getTimeout()); - } - if (hasActorType()) { - output.writeEnum(4, getActorType().getNumber()); - } - if (hasTypedActorInfo()) { - output.writeMessage(5, getTypedActorInfo()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasUuid()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getUuid()); - } - if (hasTarget()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getTarget()); - } - if (hasTimeout()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(3, getTimeout()); - } - if (hasActorType()) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(4, getActorType().getNumber()); - } - if (hasTypedActorInfo()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, getTypedActorInfo()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDefaultInstance()) return this; - if (other.hasUuid()) { - setUuid(other.getUuid()); - } - if (other.hasTarget()) { - setTarget(other.getTarget()); - } - if (other.hasTimeout()) { - setTimeout(other.getTimeout()); - } - if (other.hasActorType()) { - setActorType(other.getActorType()); - } - if (other.hasTypedActorInfo()) { - mergeTypedActorInfo(other.getTypedActorInfo()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setUuid(input.readString()); - break; - } - case 18: { - setTarget(input.readString()); - break; - } - case 24: { - setTimeout(input.readUInt64()); - break; - } - case 32: { - int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(4, rawValue); - } else { - setActorType(value); - } - break; - } - case 42: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.newBuilder(); - if (hasTypedActorInfo()) { - subBuilder.mergeFrom(getTypedActorInfo()); - } - input.readMessage(subBuilder, extensionRegistry); - setTypedActorInfo(subBuilder.buildPartial()); - break; - } - } - } - } - - - // required string uuid = 1; - public boolean hasUuid() { - return result.hasUuid(); - } - public java.lang.String getUuid() { - return result.getUuid(); - } - public Builder setUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasUuid = true; - result.uuid_ = value; - return this; - } - public Builder clearUuid() { - result.hasUuid = false; - result.uuid_ = getDefaultInstance().getUuid(); - return this; - } - - // required string target = 2; - public boolean hasTarget() { - return result.hasTarget(); - } - public java.lang.String getTarget() { - return result.getTarget(); - } - public Builder setTarget(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasTarget = true; - result.target_ = value; - return this; - } - public Builder clearTarget() { - result.hasTarget = false; - result.target_ = getDefaultInstance().getTarget(); - return this; - } - - // required uint64 timeout = 3; - public boolean hasTimeout() { - return result.hasTimeout(); - } - public long getTimeout() { - return result.getTimeout(); - } - public Builder setTimeout(long value) { - result.hasTimeout = true; - result.timeout_ = value; - return this; - } - public Builder clearTimeout() { - result.hasTimeout = false; - result.timeout_ = 0L; - return this; - } - - // required .ActorType actorType = 4; - public boolean hasActorType() { - return result.hasActorType(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType getActorType() { - return result.getActorType(); - } - public Builder setActorType(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasActorType = true; - result.actorType_ = value; - return this; - } - public Builder clearActorType() { - result.hasActorType = false; - result.actorType_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorType.SCALA_ACTOR; - return this; - } - - // optional .TypedActorInfoProtocol typedActorInfo = 5; - public boolean hasTypedActorInfo() { - return result.hasTypedActorInfo(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol getTypedActorInfo() { - return result.getTypedActorInfo(); - } - public Builder setTypedActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasTypedActorInfo = true; - result.typedActorInfo_ = value; - return this; - } - public Builder setTypedActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.Builder builderForValue) { - result.hasTypedActorInfo = true; - result.typedActorInfo_ = builderForValue.build(); - return this; - } - public Builder mergeTypedActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol value) { - if (result.hasTypedActorInfo() && - result.typedActorInfo_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance()) { - result.typedActorInfo_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.newBuilder(result.typedActorInfo_).mergeFrom(value).buildPartial(); - } else { - result.typedActorInfo_ = value; - } - result.hasTypedActorInfo = true; - return this; - } - public Builder clearTypedActorInfo() { - result.hasTypedActorInfo = false; - result.typedActorInfo_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance(); - return this; - } - - // @@protoc_insertion_point(builder_scope:ActorInfoProtocol) - } - - static { - defaultInstance = new ActorInfoProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:ActorInfoProtocol) - } - - public static final class TypedActorInfoProtocol extends - com.google.protobuf.GeneratedMessage { - // Use TypedActorInfoProtocol.newBuilder() to construct. - private TypedActorInfoProtocol() { - initFields(); - } - private TypedActorInfoProtocol(boolean noInit) {} - - private static final TypedActorInfoProtocol defaultInstance; - public static TypedActorInfoProtocol getDefaultInstance() { - return defaultInstance; - } - - public TypedActorInfoProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_TypedActorInfoProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_TypedActorInfoProtocol_fieldAccessorTable; - } - - // required string interface = 1; - public static final int INTERFACE_FIELD_NUMBER = 1; - private boolean hasInterface; - private java.lang.String interface_ = ""; - public boolean hasInterface() { return hasInterface; } - public java.lang.String getInterface() { return interface_; } - - // required string method = 2; - public static final int METHOD_FIELD_NUMBER = 2; - private boolean hasMethod; - private java.lang.String method_ = ""; - public boolean hasMethod() { return hasMethod; } - public java.lang.String getMethod() { return method_; } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasInterface) return false; - if (!hasMethod) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasInterface()) { - output.writeString(1, getInterface()); - } - if (hasMethod()) { - output.writeString(2, getMethod()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasInterface()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getInterface()); - } - if (hasMethod()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getMethod()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.getDefaultInstance()) return this; - if (other.hasInterface()) { - setInterface(other.getInterface()); - } - if (other.hasMethod()) { - setMethod(other.getMethod()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setInterface(input.readString()); - break; - } - case 18: { - setMethod(input.readString()); - break; - } - } - } - } - - - // required string interface = 1; - public boolean hasInterface() { - return result.hasInterface(); - } - public java.lang.String getInterface() { - return result.getInterface(); - } - public Builder setInterface(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasInterface = true; - result.interface_ = value; - return this; - } - public Builder clearInterface() { - result.hasInterface = false; - result.interface_ = getDefaultInstance().getInterface(); - return this; - } - - // required string method = 2; - public boolean hasMethod() { - return result.hasMethod(); - } - public java.lang.String getMethod() { - return result.getMethod(); - } - public Builder setMethod(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMethod = true; - result.method_ = value; - return this; - } - public Builder clearMethod() { - result.hasMethod = false; - result.method_ = getDefaultInstance().getMethod(); - return this; - } - - // @@protoc_insertion_point(builder_scope:TypedActorInfoProtocol) - } - - static { - defaultInstance = new TypedActorInfoProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:TypedActorInfoProtocol) - } - - public static final class RemoteRequestProtocol extends - com.google.protobuf.GeneratedMessage { - // Use RemoteRequestProtocol.newBuilder() to construct. - private RemoteRequestProtocol() { - initFields(); - } - private RemoteRequestProtocol(boolean noInit) {} - - private static final RemoteRequestProtocol defaultInstance; - public static RemoteRequestProtocol getDefaultInstance() { - return defaultInstance; - } - - public RemoteRequestProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteRequestProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteRequestProtocol_fieldAccessorTable; - } - - // required uint64 id = 1; - public static final int ID_FIELD_NUMBER = 1; - private boolean hasId; - private long id_ = 0L; - public boolean hasId() { return hasId; } - public long getId() { return id_; } - - // required .MessageProtocol message = 2; - public static final int MESSAGE_FIELD_NUMBER = 2; - private boolean hasMessage; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol message_; - public boolean hasMessage() { return hasMessage; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol getMessage() { return message_; } - - // required .ActorInfoProtocol actorInfo = 3; - public static final int ACTORINFO_FIELD_NUMBER = 3; - private boolean hasActorInfo; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol actorInfo_; - public boolean hasActorInfo() { return hasActorInfo; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol getActorInfo() { return actorInfo_; } - - // required bool isOneWay = 4; - public static final int ISONEWAY_FIELD_NUMBER = 4; - private boolean hasIsOneWay; - private boolean isOneWay_ = false; - public boolean hasIsOneWay() { return hasIsOneWay; } - public boolean getIsOneWay() { return isOneWay_; } - - // optional string supervisorUuid = 5; - public static final int SUPERVISORUUID_FIELD_NUMBER = 5; - private boolean hasSupervisorUuid; - private java.lang.String supervisorUuid_ = ""; - public boolean hasSupervisorUuid() { return hasSupervisorUuid; } - public java.lang.String getSupervisorUuid() { return supervisorUuid_; } - - // optional .RemoteActorRefProtocol sender = 6; - public static final int SENDER_FIELD_NUMBER = 6; - private boolean hasSender; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol sender_; - public boolean hasSender() { return hasSender; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getSender() { return sender_; } - - private void initFields() { - message_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance(); - actorInfo_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDefaultInstance(); - sender_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasId) return false; - if (!hasMessage) return false; - if (!hasActorInfo) return false; - if (!hasIsOneWay) return false; - if (!getMessage().isInitialized()) return false; - if (!getActorInfo().isInitialized()) return false; - if (hasSender()) { - if (!getSender().isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasId()) { - output.writeUInt64(1, getId()); - } - if (hasMessage()) { - output.writeMessage(2, getMessage()); - } - if (hasActorInfo()) { - output.writeMessage(3, getActorInfo()); - } - if (hasIsOneWay()) { - output.writeBool(4, getIsOneWay()); - } - if (hasSupervisorUuid()) { - output.writeString(5, getSupervisorUuid()); - } - if (hasSender()) { - output.writeMessage(6, getSender()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasId()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(1, getId()); - } - if (hasMessage()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getMessage()); - } - if (hasActorInfo()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getActorInfo()); - } - if (hasIsOneWay()) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(4, getIsOneWay()); - } - if (hasSupervisorUuid()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getSupervisorUuid()); - } - if (hasSender()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(6, getSender()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.getDefaultInstance()) return this; - if (other.hasId()) { - setId(other.getId()); - } - if (other.hasMessage()) { - mergeMessage(other.getMessage()); - } - if (other.hasActorInfo()) { - mergeActorInfo(other.getActorInfo()); - } - if (other.hasIsOneWay()) { - setIsOneWay(other.getIsOneWay()); - } - if (other.hasSupervisorUuid()) { - setSupervisorUuid(other.getSupervisorUuid()); - } - if (other.hasSender()) { - mergeSender(other.getSender()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - setId(input.readUInt64()); - break; - } - case 18: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.newBuilder(); - if (hasMessage()) { - subBuilder.mergeFrom(getMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setMessage(subBuilder.buildPartial()); - break; - } - case 26: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.newBuilder(); - if (hasActorInfo()) { - subBuilder.mergeFrom(getActorInfo()); - } - input.readMessage(subBuilder, extensionRegistry); - setActorInfo(subBuilder.buildPartial()); - break; - } - case 32: { - setIsOneWay(input.readBool()); - break; - } - case 42: { - setSupervisorUuid(input.readString()); - break; - } - case 50: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(); - if (hasSender()) { - subBuilder.mergeFrom(getSender()); - } - input.readMessage(subBuilder, extensionRegistry); - setSender(subBuilder.buildPartial()); - break; - } - } - } - } - - - // required uint64 id = 1; - public boolean hasId() { - return result.hasId(); - } - public long getId() { - return result.getId(); - } - public Builder setId(long value) { - result.hasId = true; - result.id_ = value; - return this; - } - public Builder clearId() { - result.hasId = false; - result.id_ = 0L; - return this; - } - - // required .MessageProtocol message = 2; - public boolean hasMessage() { - return result.hasMessage(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol getMessage() { - return result.getMessage(); - } - public Builder setMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMessage = true; - result.message_ = value; - return this; - } - public Builder setMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder builderForValue) { - result.hasMessage = true; - result.message_ = builderForValue.build(); - return this; - } - public Builder mergeMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol value) { - if (result.hasMessage() && - result.message_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance()) { - result.message_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.newBuilder(result.message_).mergeFrom(value).buildPartial(); - } else { - result.message_ = value; - } - result.hasMessage = true; - return this; - } - public Builder clearMessage() { - result.hasMessage = false; - result.message_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance(); - return this; - } - - // required .ActorInfoProtocol actorInfo = 3; - public boolean hasActorInfo() { - return result.hasActorInfo(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol getActorInfo() { - return result.getActorInfo(); - } - public Builder setActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasActorInfo = true; - result.actorInfo_ = value; - return this; - } - public Builder setActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.Builder builderForValue) { - result.hasActorInfo = true; - result.actorInfo_ = builderForValue.build(); - return this; - } - public Builder mergeActorInfo(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol value) { - if (result.hasActorInfo() && - result.actorInfo_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDefaultInstance()) { - result.actorInfo_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.newBuilder(result.actorInfo_).mergeFrom(value).buildPartial(); - } else { - result.actorInfo_ = value; - } - result.hasActorInfo = true; - return this; - } - public Builder clearActorInfo() { - result.hasActorInfo = false; - result.actorInfo_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.getDefaultInstance(); - return this; - } - - // required bool isOneWay = 4; - public boolean hasIsOneWay() { - return result.hasIsOneWay(); - } - public boolean getIsOneWay() { - return result.getIsOneWay(); - } - public Builder setIsOneWay(boolean value) { - result.hasIsOneWay = true; - result.isOneWay_ = value; - return this; - } - public Builder clearIsOneWay() { - result.hasIsOneWay = false; - result.isOneWay_ = false; - return this; - } - - // optional string supervisorUuid = 5; - public boolean hasSupervisorUuid() { - return result.hasSupervisorUuid(); - } - public java.lang.String getSupervisorUuid() { - return result.getSupervisorUuid(); - } - public Builder setSupervisorUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSupervisorUuid = true; - result.supervisorUuid_ = value; - return this; - } - public Builder clearSupervisorUuid() { - result.hasSupervisorUuid = false; - result.supervisorUuid_ = getDefaultInstance().getSupervisorUuid(); - return this; - } - - // optional .RemoteActorRefProtocol sender = 6; - public boolean hasSender() { - return result.hasSender(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getSender() { - return result.getSender(); - } - public Builder setSender(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSender = true; - result.sender_ = value; - return this; - } - public Builder setSender(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder builderForValue) { - result.hasSender = true; - result.sender_ = builderForValue.build(); - return this; - } - public Builder mergeSender(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { - if (result.hasSender() && - result.sender_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance()) { - result.sender_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(result.sender_).mergeFrom(value).buildPartial(); - } else { - result.sender_ = value; - } - result.hasSender = true; - return this; - } - public Builder clearSender() { - result.hasSender = false; - result.sender_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); - return this; - } - - // @@protoc_insertion_point(builder_scope:RemoteRequestProtocol) - } - - static { - defaultInstance = new RemoteRequestProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:RemoteRequestProtocol) - } - - public static final class RemoteReplyProtocol extends - com.google.protobuf.GeneratedMessage { - // Use RemoteReplyProtocol.newBuilder() to construct. - private RemoteReplyProtocol() { - initFields(); - } - private RemoteReplyProtocol(boolean noInit) {} - - private static final RemoteReplyProtocol defaultInstance; - public static RemoteReplyProtocol getDefaultInstance() { - return defaultInstance; - } - - public RemoteReplyProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteReplyProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteReplyProtocol_fieldAccessorTable; - } - - // required uint64 id = 1; - public static final int ID_FIELD_NUMBER = 1; - private boolean hasId; - private long id_ = 0L; - public boolean hasId() { return hasId; } - public long getId() { return id_; } - - // optional .MessageProtocol message = 2; - public static final int MESSAGE_FIELD_NUMBER = 2; - private boolean hasMessage; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol message_; - public boolean hasMessage() { return hasMessage; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol getMessage() { return message_; } - - // optional .ExceptionProtocol exception = 3; - public static final int EXCEPTION_FIELD_NUMBER = 3; - private boolean hasException; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol exception_; - public boolean hasException() { return hasException; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol getException() { return exception_; } - - // optional string supervisorUuid = 4; - public static final int SUPERVISORUUID_FIELD_NUMBER = 4; - private boolean hasSupervisorUuid; - private java.lang.String supervisorUuid_ = ""; - public boolean hasSupervisorUuid() { return hasSupervisorUuid; } - public java.lang.String getSupervisorUuid() { return supervisorUuid_; } - - // required bool isActor = 5; - public static final int ISACTOR_FIELD_NUMBER = 5; - private boolean hasIsActor; - private boolean isActor_ = false; - public boolean hasIsActor() { return hasIsActor; } - public boolean getIsActor() { return isActor_; } - - // required bool isSuccessful = 6; - public static final int ISSUCCESSFUL_FIELD_NUMBER = 6; - private boolean hasIsSuccessful; - private boolean isSuccessful_ = false; - public boolean hasIsSuccessful() { return hasIsSuccessful; } - public boolean getIsSuccessful() { return isSuccessful_; } - - private void initFields() { - message_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance(); - exception_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance(); - } - public final boolean isInitialized() { - if (!hasId) return false; - if (!hasIsActor) return false; - if (!hasIsSuccessful) return false; - if (hasMessage()) { - if (!getMessage().isInitialized()) return false; - } - if (hasException()) { - if (!getException().isInitialized()) return false; - } - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasId()) { - output.writeUInt64(1, getId()); - } - if (hasMessage()) { - output.writeMessage(2, getMessage()); - } - if (hasException()) { - output.writeMessage(3, getException()); - } - if (hasSupervisorUuid()) { - output.writeString(4, getSupervisorUuid()); - } - if (hasIsActor()) { - output.writeBool(5, getIsActor()); - } - if (hasIsSuccessful()) { - output.writeBool(6, getIsSuccessful()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasId()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt64Size(1, getId()); - } - if (hasMessage()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, getMessage()); - } - if (hasException()) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, getException()); - } - if (hasSupervisorUuid()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getSupervisorUuid()); - } - if (hasIsActor()) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(5, getIsActor()); - } - if (hasIsSuccessful()) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(6, getIsSuccessful()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.getDefaultInstance()) return this; - if (other.hasId()) { - setId(other.getId()); - } - if (other.hasMessage()) { - mergeMessage(other.getMessage()); - } - if (other.hasException()) { - mergeException(other.getException()); - } - if (other.hasSupervisorUuid()) { - setSupervisorUuid(other.getSupervisorUuid()); - } - if (other.hasIsActor()) { - setIsActor(other.getIsActor()); - } - if (other.hasIsSuccessful()) { - setIsSuccessful(other.getIsSuccessful()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - setId(input.readUInt64()); - break; - } - case 18: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.newBuilder(); - if (hasMessage()) { - subBuilder.mergeFrom(getMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setMessage(subBuilder.buildPartial()); - break; - } - case 26: { - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.newBuilder(); - if (hasException()) { - subBuilder.mergeFrom(getException()); - } - input.readMessage(subBuilder, extensionRegistry); - setException(subBuilder.buildPartial()); - break; - } - case 34: { - setSupervisorUuid(input.readString()); - break; - } - case 40: { - setIsActor(input.readBool()); - break; - } - case 48: { - setIsSuccessful(input.readBool()); - break; - } - } - } - } - - - // required uint64 id = 1; - public boolean hasId() { - return result.hasId(); - } - public long getId() { - return result.getId(); - } - public Builder setId(long value) { - result.hasId = true; - result.id_ = value; - return this; - } - public Builder clearId() { - result.hasId = false; - result.id_ = 0L; - return this; - } - - // optional .MessageProtocol message = 2; - public boolean hasMessage() { - return result.hasMessage(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol getMessage() { - return result.getMessage(); - } - public Builder setMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMessage = true; - result.message_ = value; - return this; - } - public Builder setMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder builderForValue) { - result.hasMessage = true; - result.message_ = builderForValue.build(); - return this; - } - public Builder mergeMessage(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol value) { - if (result.hasMessage() && - result.message_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance()) { - result.message_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.newBuilder(result.message_).mergeFrom(value).buildPartial(); - } else { - result.message_ = value; - } - result.hasMessage = true; - return this; - } - public Builder clearMessage() { - result.hasMessage = false; - result.message_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.getDefaultInstance(); - return this; - } - - // optional .ExceptionProtocol exception = 3; - public boolean hasException() { - return result.hasException(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol getException() { - return result.getException(); - } - public Builder setException(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasException = true; - result.exception_ = value; - return this; - } - public Builder setException(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.Builder builderForValue) { - result.hasException = true; - result.exception_ = builderForValue.build(); - return this; - } - public Builder mergeException(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol value) { - if (result.hasException() && - result.exception_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance()) { - result.exception_ = - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.newBuilder(result.exception_).mergeFrom(value).buildPartial(); - } else { - result.exception_ = value; - } - result.hasException = true; - return this; - } - public Builder clearException() { - result.hasException = false; - result.exception_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance(); - return this; - } - - // optional string supervisorUuid = 4; - public boolean hasSupervisorUuid() { - return result.hasSupervisorUuid(); - } - public java.lang.String getSupervisorUuid() { - return result.getSupervisorUuid(); - } - public Builder setSupervisorUuid(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasSupervisorUuid = true; - result.supervisorUuid_ = value; - return this; - } - public Builder clearSupervisorUuid() { - result.hasSupervisorUuid = false; - result.supervisorUuid_ = getDefaultInstance().getSupervisorUuid(); - return this; - } - - // required bool isActor = 5; - public boolean hasIsActor() { - return result.hasIsActor(); - } - public boolean getIsActor() { - return result.getIsActor(); - } - public Builder setIsActor(boolean value) { - result.hasIsActor = true; - result.isActor_ = value; - return this; - } - public Builder clearIsActor() { - result.hasIsActor = false; - result.isActor_ = false; - return this; - } - - // required bool isSuccessful = 6; - public boolean hasIsSuccessful() { - return result.hasIsSuccessful(); - } - public boolean getIsSuccessful() { - return result.getIsSuccessful(); - } - public Builder setIsSuccessful(boolean value) { - result.hasIsSuccessful = true; - result.isSuccessful_ = value; - return this; - } - public Builder clearIsSuccessful() { - result.hasIsSuccessful = false; - result.isSuccessful_ = false; - return this; - } - - // @@protoc_insertion_point(builder_scope:RemoteReplyProtocol) - } - - static { - defaultInstance = new RemoteReplyProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:RemoteReplyProtocol) - } - - public static final class LifeCycleProtocol extends - com.google.protobuf.GeneratedMessage { - // Use LifeCycleProtocol.newBuilder() to construct. - private LifeCycleProtocol() { - initFields(); - } - private LifeCycleProtocol(boolean noInit) {} - - private static final LifeCycleProtocol defaultInstance; - public static LifeCycleProtocol getDefaultInstance() { - return defaultInstance; - } - - public LifeCycleProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_LifeCycleProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_LifeCycleProtocol_fieldAccessorTable; - } - - // required .LifeCycleType lifeCycle = 1; - public static final int LIFECYCLE_FIELD_NUMBER = 1; - private boolean hasLifeCycle; - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType lifeCycle_; - public boolean hasLifeCycle() { return hasLifeCycle; } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType getLifeCycle() { return lifeCycle_; } - - // optional string preRestart = 2; - public static final int PRERESTART_FIELD_NUMBER = 2; - private boolean hasPreRestart; - private java.lang.String preRestart_ = ""; - public boolean hasPreRestart() { return hasPreRestart; } - public java.lang.String getPreRestart() { return preRestart_; } - - // optional string postRestart = 3; - public static final int POSTRESTART_FIELD_NUMBER = 3; - private boolean hasPostRestart; - private java.lang.String postRestart_ = ""; - public boolean hasPostRestart() { return hasPostRestart; } - public java.lang.String getPostRestart() { return postRestart_; } - - // optional string init = 4; - public static final int INIT_FIELD_NUMBER = 4; - private boolean hasInit; - private java.lang.String init_ = ""; - public boolean hasInit() { return hasInit; } - public java.lang.String getInit() { return init_; } - - // optional string postStop = 5; - public static final int SHUTDOWN_FIELD_NUMBER = 5; - private boolean hasShutdown; - private java.lang.String shutdown_ = ""; - public boolean hasShutdown() { return hasShutdown; } - public java.lang.String getShutdown() { return shutdown_; } - - private void initFields() { - lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.PERMANENT; - } - public final boolean isInitialized() { - if (!hasLifeCycle) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasLifeCycle()) { - output.writeEnum(1, getLifeCycle().getNumber()); - } - if (hasPreRestart()) { - output.writeString(2, getPreRestart()); - } - if (hasPostRestart()) { - output.writeString(3, getPostRestart()); - } - if (hasInit()) { - output.writeString(4, getInit()); - } - if (hasShutdown()) { - output.writeString(5, getShutdown()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasLifeCycle()) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, getLifeCycle().getNumber()); - } - if (hasPreRestart()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getPreRestart()); - } - if (hasPostRestart()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(3, getPostRestart()); - } - if (hasInit()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(4, getInit()); - } - if (hasShutdown()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(5, getShutdown()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.getDefaultInstance()) return this; - if (other.hasLifeCycle()) { - setLifeCycle(other.getLifeCycle()); - } - if (other.hasPreRestart()) { - setPreRestart(other.getPreRestart()); - } - if (other.hasPostRestart()) { - setPostRestart(other.getPostRestart()); - } - if (other.hasInit()) { - setInit(other.getInit()); - } - if (other.hasShutdown()) { - setShutdown(other.getShutdown()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType value = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.valueOf(rawValue); - if (value == null) { - unknownFields.mergeVarintField(1, rawValue); - } else { - setLifeCycle(value); - } - break; - } - case 18: { - setPreRestart(input.readString()); - break; - } - case 26: { - setPostRestart(input.readString()); - break; - } - case 34: { - setInit(input.readString()); - break; - } - case 42: { - setShutdown(input.readString()); - break; - } - } - } - } - - - // required .LifeCycleType lifeCycle = 1; - public boolean hasLifeCycle() { - return result.hasLifeCycle(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType getLifeCycle() { - return result.getLifeCycle(); - } - public Builder setLifeCycle(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasLifeCycle = true; - result.lifeCycle_ = value; - return this; - } - public Builder clearLifeCycle() { - result.hasLifeCycle = false; - result.lifeCycle_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleType.PERMANENT; - return this; - } - - // optional string preRestart = 2; - public boolean hasPreRestart() { - return result.hasPreRestart(); - } - public java.lang.String getPreRestart() { - return result.getPreRestart(); - } - public Builder setPreRestart(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasPreRestart = true; - result.preRestart_ = value; - return this; - } - public Builder clearPreRestart() { - result.hasPreRestart = false; - result.preRestart_ = getDefaultInstance().getPreRestart(); - return this; - } - - // optional string postRestart = 3; - public boolean hasPostRestart() { - return result.hasPostRestart(); - } - public java.lang.String getPostRestart() { - return result.getPostRestart(); - } - public Builder setPostRestart(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasPostRestart = true; - result.postRestart_ = value; - return this; - } - public Builder clearPostRestart() { - result.hasPostRestart = false; - result.postRestart_ = getDefaultInstance().getPostRestart(); - return this; - } - - // optional string init = 4; - public boolean hasInit() { - return result.hasInit(); - } - public java.lang.String getInit() { - return result.getInit(); - } - public Builder setInit(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasInit = true; - result.init_ = value; - return this; - } - public Builder clearInit() { - result.hasInit = false; - result.init_ = getDefaultInstance().getInit(); - return this; - } - - // optional string postStop = 5; - public boolean hasShutdown() { - return result.hasShutdown(); - } - public java.lang.String getShutdown() { - return result.getShutdown(); - } - public Builder setShutdown(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasShutdown = true; - result.shutdown_ = value; - return this; - } - public Builder clearShutdown() { - result.hasShutdown = false; - result.shutdown_ = getDefaultInstance().getShutdown(); - return this; - } - - // @@protoc_insertion_point(builder_scope:LifeCycleProtocol) - } - - static { - defaultInstance = new LifeCycleProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:LifeCycleProtocol) - } - - public static final class AddressProtocol extends - com.google.protobuf.GeneratedMessage { - // Use AddressProtocol.newBuilder() to construct. - private AddressProtocol() { - initFields(); - } - private AddressProtocol(boolean noInit) {} - - private static final AddressProtocol defaultInstance; - public static AddressProtocol getDefaultInstance() { - return defaultInstance; - } - - public AddressProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_AddressProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_AddressProtocol_fieldAccessorTable; - } - - // required string hostname = 1; - public static final int HOSTNAME_FIELD_NUMBER = 1; - private boolean hasHostname; - private java.lang.String hostname_ = ""; - public boolean hasHostname() { return hasHostname; } - public java.lang.String getHostname() { return hostname_; } - - // required uint32 port = 2; - public static final int PORT_FIELD_NUMBER = 2; - private boolean hasPort; - private int port_ = 0; - public boolean hasPort() { return hasPort; } - public int getPort() { return port_; } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasHostname) return false; - if (!hasPort) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasHostname()) { - output.writeString(1, getHostname()); - } - if (hasPort()) { - output.writeUInt32(2, getPort()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasHostname()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getHostname()); - } - if (hasPort()) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, getPort()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.getDefaultInstance()) return this; - if (other.hasHostname()) { - setHostname(other.getHostname()); - } - if (other.hasPort()) { - setPort(other.getPort()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setHostname(input.readString()); - break; - } - case 16: { - setPort(input.readUInt32()); - break; - } - } - } - } - - - // required string hostname = 1; - public boolean hasHostname() { - return result.hasHostname(); - } - public java.lang.String getHostname() { - return result.getHostname(); - } - public Builder setHostname(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasHostname = true; - result.hostname_ = value; - return this; - } - public Builder clearHostname() { - result.hasHostname = false; - result.hostname_ = getDefaultInstance().getHostname(); - return this; - } - - // required uint32 port = 2; - public boolean hasPort() { - return result.hasPort(); - } - public int getPort() { - return result.getPort(); - } - public Builder setPort(int value) { - result.hasPort = true; - result.port_ = value; - return this; - } - public Builder clearPort() { - result.hasPort = false; - result.port_ = 0; - return this; - } - - // @@protoc_insertion_point(builder_scope:AddressProtocol) - } - - static { - defaultInstance = new AddressProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:AddressProtocol) - } - - public static final class ExceptionProtocol extends - com.google.protobuf.GeneratedMessage { - // Use ExceptionProtocol.newBuilder() to construct. - private ExceptionProtocol() { - initFields(); - } - private ExceptionProtocol(boolean noInit) {} - - private static final ExceptionProtocol defaultInstance; - public static ExceptionProtocol getDefaultInstance() { - return defaultInstance; - } - - public ExceptionProtocol getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_ExceptionProtocol_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_ExceptionProtocol_fieldAccessorTable; - } - - // required string classname = 1; - public static final int CLASSNAME_FIELD_NUMBER = 1; - private boolean hasClassname; - private java.lang.String classname_ = ""; - public boolean hasClassname() { return hasClassname; } - public java.lang.String getClassname() { return classname_; } - - // required string message = 2; - public static final int MESSAGE_FIELD_NUMBER = 2; - private boolean hasMessage; - private java.lang.String message_ = ""; - public boolean hasMessage() { return hasMessage; } - public java.lang.String getMessage() { return message_; } - - private void initFields() { - } - public final boolean isInitialized() { - if (!hasClassname) return false; - if (!hasMessage) return false; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (hasClassname()) { - output.writeString(1, getClassname()); - } - if (hasMessage()) { - output.writeString(2, getMessage()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (hasClassname()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(1, getClassname()); - } - if (hasMessage()) { - size += com.google.protobuf.CodedOutputStream - .computeStringSize(2, getMessage()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder { - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol result; - - // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.newBuilder() - private Builder() {} - - private static Builder create() { - Builder builder = new Builder(); - builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol(); - return builder; - } - - protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol internalGetResult() { - return result; - } - - public Builder clear() { - if (result == null) { - throw new IllegalStateException( - "Cannot call clear() after build()."); - } - result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol(); - return this; - } - - public Builder clone() { - return create().mergeFrom(result); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDescriptor(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol getDefaultInstanceForType() { - return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance(); - } - - public boolean isInitialized() { - return result.isInitialized(); - } - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol build() { - if (result != null && !isInitialized()) { - throw newUninitializedMessageException(result); - } - return buildPartial(); - } - - private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - if (!isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return buildPartial(); - } - - public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol buildPartial() { - if (result == null) { - throw new IllegalStateException( - "build() has already been called on this Builder."); - } - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol returnMe = result; - result = null; - return returnMe; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol) { - return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol other) { - if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.getDefaultInstance()) return this; - if (other.hasClassname()) { - setClassname(other.getClassname()); - } - if (other.hasMessage()) { - setMessage(other.getMessage()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - return this; - } - break; - } - case 10: { - setClassname(input.readString()); - break; - } - case 18: { - setMessage(input.readString()); - break; - } - } - } - } - - - // required string classname = 1; - public boolean hasClassname() { - return result.hasClassname(); - } - public java.lang.String getClassname() { - return result.getClassname(); - } - public Builder setClassname(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasClassname = true; - result.classname_ = value; - return this; - } - public Builder clearClassname() { - result.hasClassname = false; - result.classname_ = getDefaultInstance().getClassname(); - return this; - } - - // required string message = 2; - public boolean hasMessage() { - return result.hasMessage(); - } - public java.lang.String getMessage() { - return result.getMessage(); - } - public Builder setMessage(java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - result.hasMessage = true; - result.message_ = value; - return this; - } - public Builder clearMessage() { - result.hasMessage = false; - result.message_ = getDefaultInstance().getMessage(); - return this; - } - - // @@protoc_insertion_point(builder_scope:ExceptionProtocol) - } - - static { - defaultInstance = new ExceptionProtocol(true); - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:ExceptionProtocol) - } - - private static com.google.protobuf.Descriptors.Descriptor - internal_static_RemoteActorRefProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_RemoteActorRefProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_SerializedActorRefProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_SerializedActorRefProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_MessageProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_MessageProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_ActorInfoProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_ActorInfoProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_TypedActorInfoProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_TypedActorInfoProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_RemoteRequestProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_RemoteRequestProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_RemoteReplyProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_RemoteReplyProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_LifeCycleProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_LifeCycleProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_AddressProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_AddressProtocol_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_ExceptionProtocol_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_ExceptionProtocol_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n\024RemoteProtocol.proto\"v\n\026RemoteActorRef" + - "Protocol\022\014\n\004uuid\030\001 \002(\t\022\026\n\016actorClassname" + - "\030\002 \002(\t\022%\n\013homeAddress\030\003 \002(\0132\020.AddressPro" + - "tocol\022\017\n\007timeout\030\004 \001(\004\"\200\003\n\032SerializedAct" + - "orRefProtocol\022\014\n\004uuid\030\001 \002(\t\022\n\n\002id\030\002 \002(\t\022" + - "\026\n\016actorClassname\030\003 \002(\t\022)\n\017originalAddre" + - "ss\030\004 \002(\0132\020.AddressProtocol\022\025\n\ractorInsta" + - "nce\030\005 \001(\014\022\033\n\023serializerClassname\030\006 \001(\t\022\024" + - "\n\014isTransactor\030\007 \001(\010\022\017\n\007timeout\030\010 \001(\004\022\026\n" + - "\016receiveTimeout\030\t \001(\004\022%\n\tlifeCycle\030\n \001(\013", - "2\022.LifeCycleProtocol\022+\n\nsupervisor\030\013 \001(\013" + - "2\027.RemoteActorRefProtocol\022\024\n\014hotswapStac" + - "k\030\014 \001(\014\022(\n\010messages\030\r \003(\0132\026.RemoteReques" + - "tProtocol\"r\n\017MessageProtocol\0225\n\023serializ" + - "ationScheme\030\001 \002(\0162\030.SerializationSchemeT" + - "ype\022\017\n\007message\030\002 \002(\014\022\027\n\017messageManifest\030" + - "\003 \001(\014\"\222\001\n\021ActorInfoProtocol\022\014\n\004uuid\030\001 \002(" + - "\t\022\016\n\006target\030\002 \002(\t\022\017\n\007timeout\030\003 \002(\004\022\035\n\tac" + - "torType\030\004 \002(\0162\n.ActorType\022/\n\016typedActorI" + - "nfo\030\005 \001(\0132\027.TypedActorInfoProtocol\";\n\026Ty", - "pedActorInfoProtocol\022\021\n\tinterface\030\001 \002(\t\022" + - "\016\n\006method\030\002 \002(\t\"\300\001\n\025RemoteRequestProtoco" + - "l\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \002(\0132\020.Message" + - "Protocol\022%\n\tactorInfo\030\003 \002(\0132\022.ActorInfoP" + - "rotocol\022\020\n\010isOneWay\030\004 \002(\010\022\026\n\016supervisorU" + - "uid\030\005 \001(\t\022\'\n\006sender\030\006 \001(\0132\027.RemoteActorR" + - "efProtocol\"\252\001\n\023RemoteReplyProtocol\022\n\n\002id" + - "\030\001 \002(\004\022!\n\007message\030\002 \001(\0132\020.MessageProtoco" + - "l\022%\n\texception\030\003 \001(\0132\022.ExceptionProtocol" + - "\022\026\n\016supervisorUuid\030\004 \001(\t\022\017\n\007isActor\030\005 \002(", - "\010\022\024\n\014isSuccessful\030\006 \002(\010\"\177\n\021LifeCycleProt" + - "ocol\022!\n\tlifeCycle\030\001 \002(\0162\016.LifeCycleType\022" + - "\022\n\npreRestart\030\002 \001(\t\022\023\n\013postRestart\030\003 \001(\t" + - "\022\014\n\004init\030\004 \001(\t\022\020\n\010shutdown\030\005 \001(\t\"1\n\017Addr" + - "essProtocol\022\020\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002 " + - "\002(\r\"7\n\021ExceptionProtocol\022\021\n\tclassname\030\001 " + - "\002(\t\022\017\n\007message\030\002 \002(\t*=\n\tActorType\022\017\n\013SCA" + - "LA_ACTOR\020\001\022\016\n\nJAVA_ACTOR\020\002\022\017\n\013TYPED_ACTO" + - "R\020\003*]\n\027SerializationSchemeType\022\010\n\004JAVA\020\001" + - "\022\013\n\007SBINARY\020\002\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_JS", - "ON\020\004\022\014\n\010PROTOBUF\020\005*-\n\rLifeCycleType\022\r\n\tP" + - "ERMANENT\020\001\022\r\n\tTEMPORARY\020\002B-\n)se.scalable" + - "solutions.akka.remote.protocolH\001" - }; - com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = - new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { - public com.google.protobuf.ExtensionRegistry assignDescriptors( - com.google.protobuf.Descriptors.FileDescriptor root) { - descriptor = root; - internal_static_RemoteActorRefProtocol_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_RemoteActorRefProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_RemoteActorRefProtocol_descriptor, - new java.lang.String[] { "Uuid", "ActorClassname", "HomeAddress", "Timeout", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder.class); - internal_static_SerializedActorRefProtocol_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_SerializedActorRefProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_SerializedActorRefProtocol_descriptor, - new java.lang.String[] { "Uuid", "Id", "ActorClassname", "OriginalAddress", "ActorInstance", "SerializerClassname", "IsTransactor", "Timeout", "ReceiveTimeout", "LifeCycle", "Supervisor", "HotswapStack", "Messages", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.Builder.class); - internal_static_MessageProtocol_descriptor = - getDescriptor().getMessageTypes().get(2); - internal_static_MessageProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_MessageProtocol_descriptor, - new java.lang.String[] { "SerializationScheme", "Message", "MessageManifest", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder.class); - internal_static_ActorInfoProtocol_descriptor = - getDescriptor().getMessageTypes().get(3); - internal_static_ActorInfoProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_ActorInfoProtocol_descriptor, - new java.lang.String[] { "Uuid", "Target", "Timeout", "ActorType", "TypedActorInfo", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.Builder.class); - internal_static_TypedActorInfoProtocol_descriptor = - getDescriptor().getMessageTypes().get(4); - internal_static_TypedActorInfoProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_TypedActorInfoProtocol_descriptor, - new java.lang.String[] { "Interface", "Method", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.Builder.class); - internal_static_RemoteRequestProtocol_descriptor = - getDescriptor().getMessageTypes().get(5); - internal_static_RemoteRequestProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_RemoteRequestProtocol_descriptor, - new java.lang.String[] { "Id", "Message", "ActorInfo", "IsOneWay", "SupervisorUuid", "Sender", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder.class); - internal_static_RemoteReplyProtocol_descriptor = - getDescriptor().getMessageTypes().get(6); - internal_static_RemoteReplyProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_RemoteReplyProtocol_descriptor, - new java.lang.String[] { "Id", "Message", "Exception", "SupervisorUuid", "IsActor", "IsSuccessful", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.Builder.class); - internal_static_LifeCycleProtocol_descriptor = - getDescriptor().getMessageTypes().get(7); - internal_static_LifeCycleProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_LifeCycleProtocol_descriptor, - new java.lang.String[] { "LifeCycle", "PreRestart", "PostRestart", "Init", "Shutdown", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder.class); - internal_static_AddressProtocol_descriptor = - getDescriptor().getMessageTypes().get(8); - internal_static_AddressProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_AddressProtocol_descriptor, - new java.lang.String[] { "Hostname", "Port", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder.class); - internal_static_ExceptionProtocol_descriptor = - getDescriptor().getMessageTypes().get(9); - internal_static_ExceptionProtocol_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_ExceptionProtocol_descriptor, - new java.lang.String[] { "Classname", "Message", }, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.class, - se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ExceptionProtocol.Builder.class); - return null; - } - }; - com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - }, assigner); - } - - public static void internalForceInit() {} - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/akka-remote/src/test/scala/ticket/Ticket434Spec.scala b/akka-remote/src/test/scala/ticket/Ticket434Spec.scala new file mode 100644 index 0000000000..b27c17cfe5 --- /dev/null +++ b/akka-remote/src/test/scala/ticket/Ticket434Spec.scala @@ -0,0 +1,46 @@ +/** + * Copyright (C) 2009-2010 Scalable Solutions AB + */ +package se.scalablesolutions.akka.actor.ticket + +import org.scalatest.Spec +import org.scalatest.matchers.ShouldMatchers +import se.scalablesolutions.akka.actor.Actor._ +import se.scalablesolutions.akka.actor.remote.ServerInitiatedRemoteActorSpec.RemoteActorSpecActorUnidirectional +import java.util.concurrent.TimeUnit +import se.scalablesolutions.akka.remote.{RemoteClient, RemoteServer} +import se.scalablesolutions.akka.remote.protocol.RemoteProtocol._ + + +class Ticket434Spec extends Spec with ShouldMatchers { + + describe("A server managed remote actor") { + it("should possible be use a custom service name containing ':'") { + val server = new RemoteServer().start("localhost", 9999) + server.register("my:service", actorOf[RemoteActorSpecActorUnidirectional]) + + val actor = RemoteClient.actorFor("my:service", 5000L, "localhost", 9999) + actor ! "OneWay" + + assert(RemoteActorSpecActorUnidirectional.latch.await(1, TimeUnit.SECONDS)) + actor.stop + + server.shutdown + RemoteClient.shutdownAll + } + } + + describe("The ActorInfoProtocol") { + it("should be possible to set the acor id and uuuid") { + val actorInfoBuilder = ActorInfoProtocol.newBuilder + .setUuid("unique-id") + .setId("some-id") + .setTarget("actorClassName") + .setTimeout(5000L) + .setActorType(ActorType.SCALA_ACTOR) + val actorInfo = actorInfoBuilder.build + assert(actorInfo.getUuid === "unique-id") + assert(actorInfo.getId === "some-id") + } + } +} From 3d897d3022a40db25f42c024ca11df29dfed2cc0 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 16 Sep 2010 14:28:06 +0200 Subject: [PATCH 07/24] Make ExecutorBasedEventDrivenDispatcherActorSpec deterministic --- .../ExecutorBasedEventDrivenDispatcherActorSpec.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala index 56d98071d7..3935bc9b0b 100644 --- a/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala +++ b/akka-actor/src/test/scala/dispatch/ExecutorBasedEventDrivenDispatcherActorSpec.scala @@ -110,6 +110,8 @@ class ExecutorBasedEventDrivenDispatcherActorSpec extends JUnitSuite { val works = new AtomicBoolean(true) val latch = new CountDownLatch(1) val start = new CountDownLatch(1) + val ready = new CountDownLatch(1) + val fastOne = actorOf( new Actor { self.dispatcher = throughputDispatcher @@ -120,7 +122,7 @@ class ExecutorBasedEventDrivenDispatcherActorSpec extends JUnitSuite { new Actor { self.dispatcher = throughputDispatcher def receive = { - case "hogexecutor" => start.await + case "hogexecutor" => ready.countDown; start.await case "ping" => works.set(false); self.stop } }).start @@ -128,6 +130,7 @@ class ExecutorBasedEventDrivenDispatcherActorSpec extends JUnitSuite { slowOne ! "hogexecutor" slowOne ! "ping" fastOne ! "ping" + assert(ready.await(5,TimeUnit.SECONDS) === true) Thread.sleep(deadlineMs) start.countDown assert(latch.await(10,TimeUnit.SECONDS) === true) From fec83b805861c8e759ec902aadcf4a7e1d2052b8 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 16 Sep 2010 14:31:10 +0200 Subject: [PATCH 08/24] Closing #427 and #424 --- .../src/main/scala/actor/ActorRef.scala | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/akka-actor/src/main/scala/actor/ActorRef.scala b/akka-actor/src/main/scala/actor/ActorRef.scala index 3472ec4696..a29be88a60 100644 --- a/akka-actor/src/main/scala/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/actor/ActorRef.scala @@ -864,11 +864,11 @@ class LocalActorRef private[akka]( *

    * To be invoked from within the actor itself. */ - def startLink(actorRef: ActorRef) = guard.withGuard { + def startLink(actorRef: ActorRef):Unit = guard.withGuard { try { - actorRef.start - } finally { link(actorRef) + } finally { + actorRef.start } } @@ -877,13 +877,13 @@ class LocalActorRef private[akka]( *

    * To be invoked from within the actor itself. */ - def startLinkRemote(actorRef: ActorRef, hostname: String, port: Int) = guard.withGuard { + def startLinkRemote(actorRef: ActorRef, hostname: String, port: Int): Unit = guard.withGuard { ensureRemotingEnabled try { actorRef.makeRemote(hostname, port) - actorRef.start - } finally { link(actorRef) + } finally { + actorRef.start } } @@ -893,9 +893,7 @@ class LocalActorRef private[akka]( * To be invoked from within the actor itself. */ def spawn(clazz: Class[_ <: Actor]): ActorRef = guard.withGuard { - val actorRef = spawnButDoNotStart(clazz) - actorRef.start - actorRef + spawnButDoNotStart(clazz).start } /** @@ -919,9 +917,9 @@ class LocalActorRef private[akka]( def spawnLink(clazz: Class[_ <: Actor]): ActorRef = guard.withGuard { val actor = spawnButDoNotStart(clazz) try { - actor.start - } finally { link(actor) + } finally { + actor.start } actor } @@ -936,10 +934,11 @@ class LocalActorRef private[akka]( val actor = spawnButDoNotStart(clazz) try { actor.makeRemote(hostname, port) - actor.start - } finally { link(actor) + } finally { + actor.start } + actor } /** @@ -1131,11 +1130,7 @@ class LocalActorRef private[akka]( freshActor.postRestart(reason) } - private def spawnButDoNotStart(clazz: Class[_ <: Actor]): ActorRef = guard.withGuard { - val actorRef = Actor.actorOf(clazz.newInstance) - if (!dispatcher.isInstanceOf[ThreadBasedDispatcher]) actorRef.dispatcher = dispatcher - actorRef - } + private def spawnButDoNotStart(clazz: Class[_ <: Actor]): ActorRef = Actor.actorOf(clazz.newInstance) private[this] def newActor: Actor = { Actor.actorRefInCreation.withValue(Some(this)){ From d8b827c64ee79c5273e6af034bbd0d0da108d3ba Mon Sep 17 00:00:00 2001 From: Martin Krasser Date: Thu, 16 Sep 2010 15:18:28 +0200 Subject: [PATCH 09/24] Extended akka-sample-camel to include server-managed remote typed consumer actors. Minor refactorings. --- .../camel/RemoteTypedConsumer1Impl.java | 5 +---- .../sample/camel/RemoteTypedConsumer2.java | 15 +++++++++++++ .../camel/RemoteTypedConsumer2Impl.java | 9 +++----- .../src/main/scala/ClientApplication.scala | 22 +++++++++---------- .../src/main/scala/ServerApplication.scala | 14 +++++++----- 5 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java index 71eda6c270..0e05d5036c 100644 --- a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer1Impl.java @@ -1,8 +1,5 @@ package sample.camel; -import org.apache.camel.Body; -import org.apache.camel.Header; - import se.scalablesolutions.akka.actor.TypedActor; /** @@ -10,7 +7,7 @@ import se.scalablesolutions.akka.actor.TypedActor; */ public class RemoteTypedConsumer1Impl extends TypedActor implements RemoteTypedConsumer1 { - public String foo(@Body String body, @Header("name") String header) { + public String foo(String body, String header) { return String.format("remote1: body=%s header=%s", body, header); } } diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java new file mode 100644 index 0000000000..3b2494ee4e --- /dev/null +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2.java @@ -0,0 +1,15 @@ +package sample.camel; + +import org.apache.camel.Body; +import org.apache.camel.Header; +import se.scalablesolutions.akka.camel.consume; + +/** + * @author Martin Krasser + */ +public interface RemoteTypedConsumer2 { + + @consume("jetty:http://localhost:6644/camel/remote-typed-actor-2") + public String foo(@Body String body, @Header("name") String header); + +} diff --git a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java index 68e208d834..5c76485aa7 100644 --- a/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java +++ b/akka-samples/akka-sample-camel/src/main/java/sample/camel/RemoteTypedConsumer2Impl.java @@ -1,16 +1,13 @@ package sample.camel; -import org.apache.camel.Body; -import org.apache.camel.Header; -import se.scalablesolutions.akka.camel.consume; +import se.scalablesolutions.akka.actor.TypedActor; /** * @author Martin Krasser */ -public class RemoteTypedConsumer2Impl { +public class RemoteTypedConsumer2Impl extends TypedActor implements RemoteTypedConsumer2 { - @consume("jetty:http://localhost:6644/camel/remote-typed-actor-2") - public String foo(@Body String body, @Header("name") String header) { + public String foo(String body, String header) { return String.format("remote2: body=%s header=%s", body, header); } diff --git a/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala b/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala index 7f671b0e45..9fab1b9649 100644 --- a/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala +++ b/akka-samples/akka-sample-camel/src/main/scala/ClientApplication.scala @@ -1,7 +1,7 @@ package sample.camel import se.scalablesolutions.akka.actor.Actor._ -import se.scalablesolutions.akka.actor.{TypedActor, Actor, ActorRef} +import se.scalablesolutions.akka.actor.TypedActor import se.scalablesolutions.akka.camel.Message import se.scalablesolutions.akka.remote.RemoteClient @@ -10,22 +10,20 @@ import se.scalablesolutions.akka.remote.RemoteClient */ object ClientApplication extends Application { - // - // TODO: completion of example - // - - val actor1 = actorOf[RemoteActor1] + val actor1 = actorOf[RemoteActor1].start val actor2 = RemoteClient.actorFor("remote2", "localhost", 7777) - val actobj1 = TypedActor.newRemoteInstance( - classOf[RemoteTypedConsumer1], classOf[RemoteTypedConsumer1Impl], "localhost", 7777) - //val actobj2 = TODO: create reference to server-managed typed actor (RemoteTypedConsumer2Impl) + val typedActor1 = TypedActor.newRemoteInstance( + classOf[RemoteTypedConsumer1], + classOf[RemoteTypedConsumer1Impl], "localhost", 7777) - actor1.start + val typedActor2 = RemoteClient.typedActorFor( + classOf[RemoteTypedConsumer2], "remote3", "localhost", 7777) println(actor1 !! Message("actor1")) // activates and publishes actor remotely println(actor2 !! Message("actor2")) // actor already activated and published remotely - println(actobj1.foo("x", "y")) // activates and publishes typed actor methods remotely - // ... + println(typedActor1.foo("x1", "y1")) // activates and publishes typed actor methods remotely + println(typedActor2.foo("x2", "y2")) // typed actor methods already activated and published remotely + } diff --git a/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala b/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala index 3eb40aaca9..b3ef404841 100644 --- a/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala +++ b/akka-samples/akka-sample-camel/src/main/scala/ServerApplication.scala @@ -3,6 +3,7 @@ package sample.camel import se.scalablesolutions.akka.actor.Actor._ import se.scalablesolutions.akka.remote.RemoteNode import se.scalablesolutions.akka.camel.CamelServiceManager +import se.scalablesolutions.akka.actor.TypedActor /** * @author Martin Krasser @@ -10,11 +11,14 @@ import se.scalablesolutions.akka.camel.CamelServiceManager object ServerApplication extends Application { import CamelServiceManager._ - // - // TODO: completion of example - // - startCamelService + + val ua = actorOf[RemoteActor2].start + val ta = TypedActor.newInstance( + classOf[RemoteTypedConsumer2], + classOf[RemoteTypedConsumer2Impl], 2000) + RemoteNode.start("localhost", 7777) - RemoteNode.register("remote2", actorOf[RemoteActor2].start) + RemoteNode.register("remote2", ua) + RemoteNode.registerTypedActor("remote3", ta) } From a37ef6c1e0b0081d00a3351fed472c1407fe5032 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 16 Sep 2010 15:58:46 +0200 Subject: [PATCH 10/24] Fixing #437 by adding "Remote" Future --- .../src/main/scala/dispatch/Future.scala | 4 ++ .../src/main/scala/remote/RemoteServer.scala | 44 ++++++++++++------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/akka-actor/src/main/scala/dispatch/Future.scala b/akka-actor/src/main/scala/dispatch/Future.scala index 17c63bcd57..0a3cd48aa5 100644 --- a/akka-actor/src/main/scala/dispatch/Future.scala +++ b/akka-actor/src/main/scala/dispatch/Future.scala @@ -160,6 +160,7 @@ class DefaultCompletableFuture[T](timeout: Long) extends CompletableFuture[T] { if (!_completed) { _completed = true _result = Some(result) + onComplete(result) } } finally { _signal.signalAll @@ -171,6 +172,7 @@ class DefaultCompletableFuture[T](timeout: Long) extends CompletableFuture[T] { if (!_completed) { _completed = true _exception = Some(exception) + onCompleteException(exception) } } finally { _signal.signalAll @@ -178,4 +180,6 @@ class DefaultCompletableFuture[T](timeout: Long) extends CompletableFuture[T] { } private def currentTimeInNanos: Long = TIME_UNIT.toNanos(System.currentTimeMillis) + protected def onComplete(result: T) {} + protected def onCompleteException(exception: Throwable) {} } diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala index 4a95436cd0..c1f25b6d4f 100644 --- a/akka-remote/src/main/scala/remote/RemoteServer.scala +++ b/akka-remote/src/main/scala/remote/RemoteServer.scala @@ -30,6 +30,7 @@ import org.jboss.netty.handler.ssl.SslHandler import scala.collection.mutable.Map import scala.reflect.BeanProperty +import se.scalablesolutions.akka.dispatch.{DefaultCompletableFuture, CompletableFuture} /** * Use this object if you need a single remote server on a specific node. @@ -498,27 +499,36 @@ class RemoteServerHandler( case RemoteActorSystemMessage.Stop => actorRef.stop case _ => // then match on user defined messages if (request.getIsOneWay) actorRef.!(message)(sender) - else { - try { - val resultOrNone = (actorRef.!!(message)(sender)).as[AnyRef] - val result = if (resultOrNone.isDefined) resultOrNone.get else null + else actorRef.postMessageToMailboxAndCreateFutureResultWithTimeout(message,request.getActorInfo.getTimeout,None,Some( + new DefaultCompletableFuture[AnyRef](request.getActorInfo.getTimeout){ + override def onComplete(result: AnyRef) { + log.debug("Returning result from actor invocation [%s]", result) + val replyBuilder = RemoteReplyProtocol.newBuilder + .setId(request.getId) + .setMessage(MessageSerializer.serialize(result)) + .setIsSuccessful(true) + .setIsActor(true) - log.debug("Returning result from actor invocation [%s]", result) - val replyBuilder = RemoteReplyProtocol.newBuilder - .setId(request.getId) - .setMessage(MessageSerializer.serialize(result)) - .setIsSuccessful(true) - .setIsActor(true) + if (request.hasSupervisorUuid) replyBuilder.setSupervisorUuid(request.getSupervisorUuid) - if (request.hasSupervisorUuid) replyBuilder.setSupervisorUuid(request.getSupervisorUuid) - channel.write(replyBuilder.build) + try { + channel.write(replyBuilder.build) + } catch { + case e: Throwable => + server.notifyListeners(RemoteServerError(e, server)) + } + } - } catch { - case e: Throwable => - channel.write(createErrorReplyMessage(e, request, true)) - server.notifyListeners(RemoteServerError(e, server)) - } + override def onCompleteException(exception: Throwable) { + try { + channel.write(createErrorReplyMessage(exception, request, true)) + } catch { + case e: Throwable => + server.notifyListeners(RemoteServerError(e, server)) + } + } } + )) } } From 00356a12639e42d440b09d7d3021fad3082ed20d Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 16 Sep 2010 17:09:16 +0200 Subject: [PATCH 11/24] Adding support for optional maxrestarts and withinTime, closing ticket #346 --- akka-actor/src/main/scala/actor/Actor.scala | 4 +-- .../src/main/scala/actor/ActorRef.scala | 24 ++++++++++------- .../main/scala/config/SupervisionConfig.scala | 15 +++++++++-- .../supervisor/RestartStrategySpec.scala | 27 +++++++++++++++++++ .../main/scala/component/ActorComponent.scala | 4 +-- .../typed-actor/TypedActorLifecycleSpec.scala | 2 +- 6 files changed, 60 insertions(+), 16 deletions(-) diff --git a/akka-actor/src/main/scala/actor/Actor.scala b/akka-actor/src/main/scala/actor/Actor.scala index 872997c760..d232ca2a77 100644 --- a/akka-actor/src/main/scala/actor/Actor.scala +++ b/akka-actor/src/main/scala/actor/Actor.scala @@ -60,8 +60,8 @@ case object ReceiveTimeout extends LifeCycleMessage case class MaximumNumberOfRestartsWithinTimeRangeReached( @BeanProperty val victim: ActorRef, - @BeanProperty val maxNrOfRetries: Int, - @BeanProperty val withinTimeRange: Int, + @BeanProperty val maxNrOfRetries: Option[Int], + @BeanProperty val withinTimeRange: Option[Int], @BeanProperty val lastExceptionCausingRestart: Throwable) extends LifeCycleMessage // Exceptions for Actors diff --git a/akka-actor/src/main/scala/actor/ActorRef.scala b/akka-actor/src/main/scala/actor/ActorRef.scala index a29be88a60..4905e62670 100644 --- a/akka-actor/src/main/scala/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/actor/ActorRef.scala @@ -601,9 +601,9 @@ trait ActorRef extends protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit - protected[akka] def restart(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit + protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit - protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit + protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit protected[akka] def registerSupervisorAsRemoteActor: Option[String] @@ -1037,12 +1037,18 @@ class LocalActorRef private[akka]( } } - protected[akka] def restart(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit = { + protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = { if (maxNrOfRetriesCount == 0) restartsWithinTimeRangeTimestamp = System.currentTimeMillis // first time around - maxNrOfRetriesCount += 1 + + val tooManyRestarts = if (maxNrOfRetries.isDefined) { + maxNrOfRetriesCount += 1 + maxNrOfRetriesCount > maxNrOfRetries.get + } else false + + val restartingHasExpired = if (withinTimeRange.isDefined) + (System.currentTimeMillis - restartsWithinTimeRangeTimestamp) > withinTimeRange.get + else false - val tooManyRestarts = maxNrOfRetriesCount > maxNrOfRetries - val restartingHasExpired = (System.currentTimeMillis - restartsWithinTimeRangeTimestamp) > withinTimeRange if (tooManyRestarts || restartingHasExpired) { val notification = MaximumNumberOfRestartsWithinTimeRangeReached(this, maxNrOfRetries, withinTimeRange, reason) Actor.log.warning( @@ -1080,7 +1086,7 @@ class LocalActorRef private[akka]( } } - protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int) = { + protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]) = { linkedActorsAsList.foreach { actorRef => actorRef.lifeCycle match { // either permanent or none where default is permanent @@ -1412,8 +1418,8 @@ private[akka] case class RemoteActorRef private[akka] ( protected[akka] def mailbox: AnyRef = unsupported protected[akka] def mailbox_=(value: AnyRef):AnyRef = unsupported protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit = unsupported - protected[akka] def restart(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit = unsupported - protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit = unsupported + protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported + protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported protected[akka] def linkedActors: JMap[String, ActorRef] = unsupported protected[akka] def linkedActorsAsList: List[ActorRef] = unsupported protected[akka] def invoke(messageHandle: MessageInvocation): Unit = unsupported diff --git a/akka-actor/src/main/scala/config/SupervisionConfig.scala b/akka-actor/src/main/scala/config/SupervisionConfig.scala index 2f25f4ed33..d85001b5ca 100644 --- a/akka-actor/src/main/scala/config/SupervisionConfig.scala +++ b/akka-actor/src/main/scala/config/SupervisionConfig.scala @@ -8,8 +8,19 @@ import se.scalablesolutions.akka.actor.{ActorRef} import se.scalablesolutions.akka.dispatch.MessageDispatcher sealed abstract class FaultHandlingStrategy -case class AllForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy -case class OneForOneStrategy(maxNrOfRetries: Int, withinTimeRange: Int) extends FaultHandlingStrategy +object AllForOneStrategy { + def apply(maxNrOfRetries: Int, withinTimeRange: Int): AllForOneStrategy = + AllForOneStrategy(if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), + if (withinTimeRange < 0) None else Some(withinTimeRange)) +} +case class AllForOneStrategy(maxNrOfRetries: Option[Int] = None, withinTimeRange: Option[Int] = None) extends FaultHandlingStrategy + +object OneForOneStrategy { + def apply(maxNrOfRetries: Int, withinTimeRange: Int): OneForOneStrategy = + this(if (maxNrOfRetries < 0) None else Some(maxNrOfRetries), + if (withinTimeRange < 0) None else Some(withinTimeRange)) +} +case class OneForOneStrategy(maxNrOfRetries: Option[Int] = None, withinTimeRange: Option[Int] = None) extends FaultHandlingStrategy /** * Configuration classes - not to be used as messages. diff --git a/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala b/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala index 234a0bd25d..b9fa238963 100644 --- a/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala +++ b/akka-actor/src/test/scala/actor/supervisor/RestartStrategySpec.scala @@ -70,5 +70,32 @@ class RestartStrategySpec extends JUnitSuite { } assert(exceptionLatch.tryAwait(1, TimeUnit.SECONDS)) } + + @Test + def slaveShouldBeImmortalWithoutMaxRestarts = { + + val boss = actorOf(new Actor{ + self.trapExit = List(classOf[Throwable]) + self.faultHandler = Some(OneForOneStrategy(None, None)) + protected def receive = { case _ => () } + }).start + + val countDownLatch = new CountDownLatch(100) + + val slave = actorOf(new Actor{ + + protected def receive = { + case Crash => throw new Exception("Crashing...") + } + + override def postRestart(reason: Throwable) = { + countDownLatch.countDown + } + }) + + boss.startLink(slave) + (1 to 100) foreach { _ => slave ! Crash } + assert(countDownLatch.await(120, TimeUnit.SECONDS)) + } } diff --git a/akka-camel/src/main/scala/component/ActorComponent.scala b/akka-camel/src/main/scala/component/ActorComponent.scala index a5d56dd9dc..6c1c5902fa 100644 --- a/akka-camel/src/main/scala/component/ActorComponent.scala +++ b/akka-camel/src/main/scala/component/ActorComponent.scala @@ -247,8 +247,8 @@ private[akka] class AsyncCallbackAdapter(exchange: Exchange, callback: AsyncCall protected[akka] def postMessageToMailboxAndCreateFutureResultWithTimeout[T](message: Any, timeout: Long, senderOption: Option[ActorRef], senderFuture: Option[CompletableFuture[T]]) = unsupported protected[akka] def mailbox: AnyRef = unsupported protected[akka] def mailbox_=(msg: AnyRef):AnyRef = unsupported - protected[akka] def restart(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit = unsupported - protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Int, withinTimeRange: Int): Unit = unsupported + protected[akka] def restart(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported + protected[akka] def restartLinkedActors(reason: Throwable, maxNrOfRetries: Option[Int], withinTimeRange: Option[Int]): Unit = unsupported protected[akka] def handleTrapExit(dead: ActorRef, reason: Throwable): Unit = unsupported protected[akka] def linkedActors: JavaMap[String, ActorRef] = unsupported protected[akka] def linkedActorsAsList: List[ActorRef] = unsupported diff --git a/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala index 9a21af06da..052f4cc7de 100644 --- a/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala +++ b/akka-typed-actor/src/test/scala/actor/typed-actor/TypedActorLifecycleSpec.scala @@ -87,7 +87,7 @@ class TypedActorLifecycleSpec extends Spec with ShouldMatchers with BeforeAndAft SamplePojoImpl.reset val pojo = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl]) val supervisor = TypedActor.newInstance(classOf[SimpleJavaPojo], classOf[SimpleJavaPojoImpl]) - link(supervisor, pojo, new OneForOneStrategy(3, 2000), Array(classOf[Throwable])) + link(supervisor, pojo, OneForOneStrategy(3, 2000), Array(classOf[Throwable])) pojo.throwException Thread.sleep(500) SimpleJavaPojoImpl._pre should be(true) From 025d76dc5e4ef45e7d736a8a0df35225693a2de6 Mon Sep 17 00:00:00 2001 From: Michael Kober Date: Fri, 17 Sep 2010 09:56:36 +0200 Subject: [PATCH 12/24] closing #364, serializiation for typed actor proxy ref --- .../akka/remote/protocol/RemoteProtocol.java | 847 ++++++++++++++++-- .../src/main/protocol/RemoteProtocol.proto | 19 + .../serialization/SerializationProtocol.scala | 217 +++-- .../TypedActorSerializationSpec.scala | 166 ++++ .../src/main/scala/actor/TypedActor.scala | 11 + 5 files changed, 1149 insertions(+), 111 deletions(-) create mode 100644 akka-remote/src/test/scala/serialization/TypedActorSerializationSpec.scala diff --git a/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java b/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java index ab05937f61..31ae9650d4 100644 --- a/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java +++ b/akka-remote/src/main/java/se/scalablesolutions/akka/remote/protocol/RemoteProtocol.java @@ -653,6 +653,360 @@ public final class RemoteProtocol { // @@protoc_insertion_point(class_scope:RemoteActorRefProtocol) } + public static final class RemoteTypedActorRefProtocol extends + com.google.protobuf.GeneratedMessage { + // Use RemoteTypedActorRefProtocol.newBuilder() to construct. + private RemoteTypedActorRefProtocol() { + initFields(); + } + private RemoteTypedActorRefProtocol(boolean noInit) {} + + private static final RemoteTypedActorRefProtocol defaultInstance; + public static RemoteTypedActorRefProtocol getDefaultInstance() { + return defaultInstance; + } + + public RemoteTypedActorRefProtocol getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteTypedActorRefProtocol_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_RemoteTypedActorRefProtocol_fieldAccessorTable; + } + + // required .RemoteActorRefProtocol actorRef = 1; + public static final int ACTORREF_FIELD_NUMBER = 1; + private boolean hasActorRef; + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol actorRef_; + public boolean hasActorRef() { return hasActorRef; } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getActorRef() { return actorRef_; } + + // required string interfaceName = 2; + public static final int INTERFACENAME_FIELD_NUMBER = 2; + private boolean hasInterfaceName; + private java.lang.String interfaceName_ = ""; + public boolean hasInterfaceName() { return hasInterfaceName; } + public java.lang.String getInterfaceName() { return interfaceName_; } + + private void initFields() { + actorRef_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); + } + public final boolean isInitialized() { + if (!hasActorRef) return false; + if (!hasInterfaceName) return false; + if (!getActorRef().isInitialized()) return false; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (hasActorRef()) { + output.writeMessage(1, getActorRef()); + } + if (hasInterfaceName()) { + output.writeString(2, getInterfaceName()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasActorRef()) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getActorRef()); + } + if (hasInterfaceName()) { + size += com.google.protobuf.CodedOutputStream + .computeStringSize(2, getInterfaceName()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder { + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol result; + + // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.newBuilder() + private Builder() {} + + private static Builder create() { + Builder builder = new Builder(); + builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol(); + return builder; + } + + protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol internalGetResult() { + return result; + } + + public Builder clear() { + if (result == null) { + throw new IllegalStateException( + "Cannot call clear() after build()."); + } + result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol(); + return this; + } + + public Builder clone() { + return create().mergeFrom(result); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.getDescriptor(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol getDefaultInstanceForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.getDefaultInstance(); + } + + public boolean isInitialized() { + return result.isInitialized(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol build() { + if (result != null && !isInitialized()) { + throw newUninitializedMessageException(result); + } + return buildPartial(); + } + + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + if (!isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return buildPartial(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol buildPartial() { + if (result == null) { + throw new IllegalStateException( + "build() has already been called on this Builder."); + } + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol returnMe = result; + result = null; + return returnMe; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol) { + return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol other) { + if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.getDefaultInstance()) return this; + if (other.hasActorRef()) { + mergeActorRef(other.getActorRef()); + } + if (other.hasInterfaceName()) { + setInterfaceName(other.getInterfaceName()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + return this; + } + break; + } + case 10: { + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(); + if (hasActorRef()) { + subBuilder.mergeFrom(getActorRef()); + } + input.readMessage(subBuilder, extensionRegistry); + setActorRef(subBuilder.buildPartial()); + break; + } + case 18: { + setInterfaceName(input.readString()); + break; + } + } + } + } + + + // required .RemoteActorRefProtocol actorRef = 1; + public boolean hasActorRef() { + return result.hasActorRef(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol getActorRef() { + return result.getActorRef(); + } + public Builder setActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasActorRef = true; + result.actorRef_ = value; + return this; + } + public Builder setActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder builderForValue) { + result.hasActorRef = true; + result.actorRef_ = builderForValue.build(); + return this; + } + public Builder mergeActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol value) { + if (result.hasActorRef() && + result.actorRef_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance()) { + result.actorRef_ = + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.newBuilder(result.actorRef_).mergeFrom(value).buildPartial(); + } else { + result.actorRef_ = value; + } + result.hasActorRef = true; + return this; + } + public Builder clearActorRef() { + result.hasActorRef = false; + result.actorRef_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.getDefaultInstance(); + return this; + } + + // required string interfaceName = 2; + public boolean hasInterfaceName() { + return result.hasInterfaceName(); + } + public java.lang.String getInterfaceName() { + return result.getInterfaceName(); + } + public Builder setInterfaceName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasInterfaceName = true; + result.interfaceName_ = value; + return this; + } + public Builder clearInterfaceName() { + result.hasInterfaceName = false; + result.interfaceName_ = getDefaultInstance().getInterfaceName(); + return this; + } + + // @@protoc_insertion_point(builder_scope:RemoteTypedActorRefProtocol) + } + + static { + defaultInstance = new RemoteTypedActorRefProtocol(true); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:RemoteTypedActorRefProtocol) + } + public static final class SerializedActorRefProtocol extends com.google.protobuf.GeneratedMessage { // Use SerializedActorRefProtocol.newBuilder() to construct. @@ -1559,6 +1913,360 @@ public final class RemoteProtocol { // @@protoc_insertion_point(class_scope:SerializedActorRefProtocol) } + public static final class SerializedTypedActorRefProtocol extends + com.google.protobuf.GeneratedMessage { + // Use SerializedTypedActorRefProtocol.newBuilder() to construct. + private SerializedTypedActorRefProtocol() { + initFields(); + } + private SerializedTypedActorRefProtocol(boolean noInit) {} + + private static final SerializedTypedActorRefProtocol defaultInstance; + public static SerializedTypedActorRefProtocol getDefaultInstance() { + return defaultInstance; + } + + public SerializedTypedActorRefProtocol getDefaultInstanceForType() { + return defaultInstance; + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_SerializedTypedActorRefProtocol_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internal_static_SerializedTypedActorRefProtocol_fieldAccessorTable; + } + + // required .SerializedActorRefProtocol actorRef = 1; + public static final int ACTORREF_FIELD_NUMBER = 1; + private boolean hasActorRef; + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol actorRef_; + public boolean hasActorRef() { return hasActorRef; } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol getActorRef() { return actorRef_; } + + // required string interfaceName = 2; + public static final int INTERFACENAME_FIELD_NUMBER = 2; + private boolean hasInterfaceName; + private java.lang.String interfaceName_ = ""; + public boolean hasInterfaceName() { return hasInterfaceName; } + public java.lang.String getInterfaceName() { return interfaceName_; } + + private void initFields() { + actorRef_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDefaultInstance(); + } + public final boolean isInitialized() { + if (!hasActorRef) return false; + if (!hasInterfaceName) return false; + if (!getActorRef().isInitialized()) return false; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (hasActorRef()) { + output.writeMessage(1, getActorRef()); + } + if (hasInterfaceName()) { + output.writeString(2, getInterfaceName()); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasActorRef()) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getActorRef()); + } + if (hasInterfaceName()) { + size += com.google.protobuf.CodedOutputStream + .computeStringSize(2, getInterfaceName()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSerializedSize = size; + return size; + } + + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder { + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol result; + + // Construct using se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.newBuilder() + private Builder() {} + + private static Builder create() { + Builder builder = new Builder(); + builder.result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol(); + return builder; + } + + protected se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol internalGetResult() { + return result; + } + + public Builder clear() { + if (result == null) { + throw new IllegalStateException( + "Cannot call clear() after build()."); + } + result = new se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol(); + return this; + } + + public Builder clone() { + return create().mergeFrom(result); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.getDescriptor(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol getDefaultInstanceForType() { + return se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.getDefaultInstance(); + } + + public boolean isInitialized() { + return result.isInitialized(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol build() { + if (result != null && !isInitialized()) { + throw newUninitializedMessageException(result); + } + return buildPartial(); + } + + private se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol buildParsed() + throws com.google.protobuf.InvalidProtocolBufferException { + if (!isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return buildPartial(); + } + + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol buildPartial() { + if (result == null) { + throw new IllegalStateException( + "build() has already been called on this Builder."); + } + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol returnMe = result; + result = null; + return returnMe; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol) { + return mergeFrom((se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol other) { + if (other == se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.getDefaultInstance()) return this; + if (other.hasActorRef()) { + mergeActorRef(other.getActorRef()); + } + if (other.hasInterfaceName()) { + setInterfaceName(other.getInterfaceName()); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder( + this.getUnknownFields()); + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + this.setUnknownFields(unknownFields.build()); + return this; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + this.setUnknownFields(unknownFields.build()); + return this; + } + break; + } + case 10: { + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.Builder subBuilder = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.newBuilder(); + if (hasActorRef()) { + subBuilder.mergeFrom(getActorRef()); + } + input.readMessage(subBuilder, extensionRegistry); + setActorRef(subBuilder.buildPartial()); + break; + } + case 18: { + setInterfaceName(input.readString()); + break; + } + } + } + } + + + // required .SerializedActorRefProtocol actorRef = 1; + public boolean hasActorRef() { + return result.hasActorRef(); + } + public se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol getActorRef() { + return result.getActorRef(); + } + public Builder setActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasActorRef = true; + result.actorRef_ = value; + return this; + } + public Builder setActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.Builder builderForValue) { + result.hasActorRef = true; + result.actorRef_ = builderForValue.build(); + return this; + } + public Builder mergeActorRef(se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol value) { + if (result.hasActorRef() && + result.actorRef_ != se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDefaultInstance()) { + result.actorRef_ = + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.newBuilder(result.actorRef_).mergeFrom(value).buildPartial(); + } else { + result.actorRef_ = value; + } + result.hasActorRef = true; + return this; + } + public Builder clearActorRef() { + result.hasActorRef = false; + result.actorRef_ = se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.getDefaultInstance(); + return this; + } + + // required string interfaceName = 2; + public boolean hasInterfaceName() { + return result.hasInterfaceName(); + } + public java.lang.String getInterfaceName() { + return result.getInterfaceName(); + } + public Builder setInterfaceName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + result.hasInterfaceName = true; + result.interfaceName_ = value; + return this; + } + public Builder clearInterfaceName() { + result.hasInterfaceName = false; + result.interfaceName_ = getDefaultInstance().getInterfaceName(); + return this; + } + + // @@protoc_insertion_point(builder_scope:SerializedTypedActorRefProtocol) + } + + static { + defaultInstance = new SerializedTypedActorRefProtocol(true); + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.internalForceInit(); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:SerializedTypedActorRefProtocol) + } + public static final class MessageProtocol extends com.google.protobuf.GeneratedMessage { // Use MessageProtocol.newBuilder() to construct. @@ -5700,11 +6408,21 @@ public final class RemoteProtocol { private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_RemoteActorRefProtocol_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_RemoteTypedActorRefProtocol_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_RemoteTypedActorRefProtocol_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor internal_static_SerializedActorRefProtocol_descriptor; private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_SerializedActorRefProtocol_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_SerializedTypedActorRefProtocol_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_SerializedTypedActorRefProtocol_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor internal_static_MessageProtocol_descriptor; private static @@ -5767,49 +6485,54 @@ public final class RemoteProtocol { "\n\024RemoteProtocol.proto\"v\n\026RemoteActorRef" + "Protocol\022\014\n\004uuid\030\001 \002(\t\022\026\n\016actorClassname" + "\030\002 \002(\t\022%\n\013homeAddress\030\003 \002(\0132\020.AddressPro" + - "tocol\022\017\n\007timeout\030\004 \001(\004\"\200\003\n\032SerializedAct" + - "orRefProtocol\022\014\n\004uuid\030\001 \002(\t\022\n\n\002id\030\002 \002(\t\022" + - "\026\n\016actorClassname\030\003 \002(\t\022)\n\017originalAddre" + - "ss\030\004 \002(\0132\020.AddressProtocol\022\025\n\ractorInsta" + - "nce\030\005 \001(\014\022\033\n\023serializerClassname\030\006 \001(\t\022\024" + - "\n\014isTransactor\030\007 \001(\010\022\017\n\007timeout\030\010 \001(\004\022\026\n" + - "\016receiveTimeout\030\t \001(\004\022%\n\tlifeCycle\030\n \001(\013", - "2\022.LifeCycleProtocol\022+\n\nsupervisor\030\013 \001(\013" + - "2\027.RemoteActorRefProtocol\022\024\n\014hotswapStac" + - "k\030\014 \001(\014\022(\n\010messages\030\r \003(\0132\026.RemoteReques" + - "tProtocol\"r\n\017MessageProtocol\0225\n\023serializ" + - "ationScheme\030\001 \002(\0162\030.SerializationSchemeT" + - "ype\022\017\n\007message\030\002 \002(\014\022\027\n\017messageManifest\030" + - "\003 \001(\014\"\236\001\n\021ActorInfoProtocol\022\014\n\004uuid\030\001 \002(" + - "\t\022\016\n\006target\030\002 \002(\t\022\017\n\007timeout\030\003 \002(\004\022\035\n\tac" + - "torType\030\004 \002(\0162\n.ActorType\022/\n\016typedActorI" + - "nfo\030\005 \001(\0132\027.TypedActorInfoProtocol\022\n\n\002id", - "\030\006 \001(\t\";\n\026TypedActorInfoProtocol\022\021\n\tinte" + - "rface\030\001 \002(\t\022\016\n\006method\030\002 \002(\t\"\352\001\n\025RemoteRe" + - "questProtocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \002" + - "(\0132\020.MessageProtocol\022%\n\tactorInfo\030\003 \002(\0132" + - "\022.ActorInfoProtocol\022\020\n\010isOneWay\030\004 \002(\010\022\026\n" + - "\016supervisorUuid\030\005 \001(\t\022\'\n\006sender\030\006 \001(\0132\027." + - "RemoteActorRefProtocol\022(\n\010metadata\030\007 \003(\013" + - "2\026.MetadataEntryProtocol\"\324\001\n\023RemoteReply" + - "Protocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \001(\0132\020." + - "MessageProtocol\022%\n\texception\030\003 \001(\0132\022.Exc", - "eptionProtocol\022\026\n\016supervisorUuid\030\004 \001(\t\022\017" + - "\n\007isActor\030\005 \002(\010\022\024\n\014isSuccessful\030\006 \002(\010\022(\n" + - "\010metadata\030\007 \003(\0132\026.MetadataEntryProtocol\"" + - ")\n\014UuidProtocol\022\014\n\004high\030\001 \002(\004\022\013\n\003low\030\002 \002" + - "(\004\"3\n\025MetadataEntryProtocol\022\013\n\003key\030\001 \002(\t" + - "\022\r\n\005value\030\002 \002(\014\"6\n\021LifeCycleProtocol\022!\n\t" + - "lifeCycle\030\001 \002(\0162\016.LifeCycleType\"1\n\017Addre" + - "ssProtocol\022\020\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002 \002" + - "(\r\"7\n\021ExceptionProtocol\022\021\n\tclassname\030\001 \002" + - "(\t\022\017\n\007message\030\002 \002(\t*=\n\tActorType\022\017\n\013SCAL", - "A_ACTOR\020\001\022\016\n\nJAVA_ACTOR\020\002\022\017\n\013TYPED_ACTOR" + - "\020\003*]\n\027SerializationSchemeType\022\010\n\004JAVA\020\001\022" + - "\013\n\007SBINARY\020\002\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_JSO" + - "N\020\004\022\014\n\010PROTOBUF\020\005*-\n\rLifeCycleType\022\r\n\tPE" + - "RMANENT\020\001\022\r\n\tTEMPORARY\020\002B-\n)se.scalables" + - "olutions.akka.remote.protocolH\001" + "tocol\022\017\n\007timeout\030\004 \001(\004\"_\n\033RemoteTypedAct" + + "orRefProtocol\022)\n\010actorRef\030\001 \002(\0132\027.Remote" + + "ActorRefProtocol\022\025\n\rinterfaceName\030\002 \002(\t\"" + + "\200\003\n\032SerializedActorRefProtocol\022\014\n\004uuid\030\001" + + " \002(\t\022\n\n\002id\030\002 \002(\t\022\026\n\016actorClassname\030\003 \002(\t" + + "\022)\n\017originalAddress\030\004 \002(\0132\020.AddressProto" + + "col\022\025\n\ractorInstance\030\005 \001(\014\022\033\n\023serializer", + "Classname\030\006 \001(\t\022\024\n\014isTransactor\030\007 \001(\010\022\017\n" + + "\007timeout\030\010 \001(\004\022\026\n\016receiveTimeout\030\t \001(\004\022%" + + "\n\tlifeCycle\030\n \001(\0132\022.LifeCycleProtocol\022+\n" + + "\nsupervisor\030\013 \001(\0132\027.RemoteActorRefProtoc" + + "ol\022\024\n\014hotswapStack\030\014 \001(\014\022(\n\010messages\030\r \003" + + "(\0132\026.RemoteRequestProtocol\"g\n\037Serialized" + + "TypedActorRefProtocol\022-\n\010actorRef\030\001 \002(\0132" + + "\033.SerializedActorRefProtocol\022\025\n\rinterfac" + + "eName\030\002 \002(\t\"r\n\017MessageProtocol\0225\n\023serial" + + "izationScheme\030\001 \002(\0162\030.SerializationSchem", + "eType\022\017\n\007message\030\002 \002(\014\022\027\n\017messageManifes" + + "t\030\003 \001(\014\"\236\001\n\021ActorInfoProtocol\022\014\n\004uuid\030\001 " + + "\002(\t\022\016\n\006target\030\002 \002(\t\022\017\n\007timeout\030\003 \002(\004\022\035\n\t" + + "actorType\030\004 \002(\0162\n.ActorType\022/\n\016typedActo" + + "rInfo\030\005 \001(\0132\027.TypedActorInfoProtocol\022\n\n\002" + + "id\030\006 \001(\t\";\n\026TypedActorInfoProtocol\022\021\n\tin" + + "terface\030\001 \002(\t\022\016\n\006method\030\002 \002(\t\"\352\001\n\025Remote" + + "RequestProtocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002" + + " \002(\0132\020.MessageProtocol\022%\n\tactorInfo\030\003 \002(" + + "\0132\022.ActorInfoProtocol\022\020\n\010isOneWay\030\004 \002(\010\022", + "\026\n\016supervisorUuid\030\005 \001(\t\022\'\n\006sender\030\006 \001(\0132" + + "\027.RemoteActorRefProtocol\022(\n\010metadata\030\007 \003" + + "(\0132\026.MetadataEntryProtocol\"\324\001\n\023RemoteRep" + + "lyProtocol\022\n\n\002id\030\001 \002(\004\022!\n\007message\030\002 \001(\0132" + + "\020.MessageProtocol\022%\n\texception\030\003 \001(\0132\022.E" + + "xceptionProtocol\022\026\n\016supervisorUuid\030\004 \001(\t" + + "\022\017\n\007isActor\030\005 \002(\010\022\024\n\014isSuccessful\030\006 \002(\010\022" + + "(\n\010metadata\030\007 \003(\0132\026.MetadataEntryProtoco" + + "l\")\n\014UuidProtocol\022\014\n\004high\030\001 \002(\004\022\013\n\003low\030\002" + + " \002(\004\"3\n\025MetadataEntryProtocol\022\013\n\003key\030\001 \002", + "(\t\022\r\n\005value\030\002 \002(\014\"6\n\021LifeCycleProtocol\022!" + + "\n\tlifeCycle\030\001 \002(\0162\016.LifeCycleType\"1\n\017Add" + + "ressProtocol\022\020\n\010hostname\030\001 \002(\t\022\014\n\004port\030\002" + + " \002(\r\"7\n\021ExceptionProtocol\022\021\n\tclassname\030\001" + + " \002(\t\022\017\n\007message\030\002 \002(\t*=\n\tActorType\022\017\n\013SC" + + "ALA_ACTOR\020\001\022\016\n\nJAVA_ACTOR\020\002\022\017\n\013TYPED_ACT" + + "OR\020\003*]\n\027SerializationSchemeType\022\010\n\004JAVA\020" + + "\001\022\013\n\007SBINARY\020\002\022\016\n\nSCALA_JSON\020\003\022\r\n\tJAVA_J" + + "SON\020\004\022\014\n\010PROTOBUF\020\005*-\n\rLifeCycleType\022\r\n\t" + + "PERMANENT\020\001\022\r\n\tTEMPORARY\020\002B-\n)se.scalabl", + "esolutions.akka.remote.protocolH\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -5824,16 +6547,32 @@ public final class RemoteProtocol { new java.lang.String[] { "Uuid", "ActorClassname", "HomeAddress", "Timeout", }, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteActorRefProtocol.Builder.class); - internal_static_SerializedActorRefProtocol_descriptor = + internal_static_RemoteTypedActorRefProtocol_descriptor = getDescriptor().getMessageTypes().get(1); + internal_static_RemoteTypedActorRefProtocol_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_RemoteTypedActorRefProtocol_descriptor, + new java.lang.String[] { "ActorRef", "InterfaceName", }, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.class, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteTypedActorRefProtocol.Builder.class); + internal_static_SerializedActorRefProtocol_descriptor = + getDescriptor().getMessageTypes().get(2); internal_static_SerializedActorRefProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_SerializedActorRefProtocol_descriptor, new java.lang.String[] { "Uuid", "Id", "ActorClassname", "OriginalAddress", "ActorInstance", "SerializerClassname", "IsTransactor", "Timeout", "ReceiveTimeout", "LifeCycle", "Supervisor", "HotswapStack", "Messages", }, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedActorRefProtocol.Builder.class); + internal_static_SerializedTypedActorRefProtocol_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_SerializedTypedActorRefProtocol_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_SerializedTypedActorRefProtocol_descriptor, + new java.lang.String[] { "ActorRef", "InterfaceName", }, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.class, + se.scalablesolutions.akka.remote.protocol.RemoteProtocol.SerializedTypedActorRefProtocol.Builder.class); internal_static_MessageProtocol_descriptor = - getDescriptor().getMessageTypes().get(2); + getDescriptor().getMessageTypes().get(4); internal_static_MessageProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_MessageProtocol_descriptor, @@ -5841,7 +6580,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MessageProtocol.Builder.class); internal_static_ActorInfoProtocol_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(5); internal_static_ActorInfoProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ActorInfoProtocol_descriptor, @@ -5849,7 +6588,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.ActorInfoProtocol.Builder.class); internal_static_TypedActorInfoProtocol_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(6); internal_static_TypedActorInfoProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_TypedActorInfoProtocol_descriptor, @@ -5857,7 +6596,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.TypedActorInfoProtocol.Builder.class); internal_static_RemoteRequestProtocol_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(7); internal_static_RemoteRequestProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RemoteRequestProtocol_descriptor, @@ -5865,7 +6604,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteRequestProtocol.Builder.class); internal_static_RemoteReplyProtocol_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(8); internal_static_RemoteReplyProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_RemoteReplyProtocol_descriptor, @@ -5873,7 +6612,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.RemoteReplyProtocol.Builder.class); internal_static_UuidProtocol_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(9); internal_static_UuidProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_UuidProtocol_descriptor, @@ -5881,7 +6620,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.UuidProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.UuidProtocol.Builder.class); internal_static_MetadataEntryProtocol_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(10); internal_static_MetadataEntryProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_MetadataEntryProtocol_descriptor, @@ -5889,7 +6628,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MetadataEntryProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.MetadataEntryProtocol.Builder.class); internal_static_LifeCycleProtocol_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(11); internal_static_LifeCycleProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_LifeCycleProtocol_descriptor, @@ -5897,7 +6636,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.LifeCycleProtocol.Builder.class); internal_static_AddressProtocol_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(12); internal_static_AddressProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_AddressProtocol_descriptor, @@ -5905,7 +6644,7 @@ public final class RemoteProtocol { se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.class, se.scalablesolutions.akka.remote.protocol.RemoteProtocol.AddressProtocol.Builder.class); internal_static_ExceptionProtocol_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(13); internal_static_ExceptionProtocol_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_ExceptionProtocol_descriptor, diff --git a/akka-remote/src/main/protocol/RemoteProtocol.proto b/akka-remote/src/main/protocol/RemoteProtocol.proto index 4343fecf7f..e84ae9f18e 100644 --- a/akka-remote/src/main/protocol/RemoteProtocol.proto +++ b/akka-remote/src/main/protocol/RemoteProtocol.proto @@ -22,6 +22,15 @@ message RemoteActorRefProtocol { optional uint64 timeout = 4; } +/** + * Defines a remote ActorRef that "remembers" and uses its original typed Actor instance + * on the original node. + */ +message RemoteTypedActorRefProtocol { + required RemoteActorRefProtocol actorRef = 1; + required string interfaceName = 2; +} + /** * Defines a fully serialized remote ActorRef (with serialized Actor instance) * that is about to be instantiated on the remote node. It is fully disconnected @@ -43,6 +52,16 @@ message SerializedActorRefProtocol { repeated RemoteRequestProtocol messages = 13; } +/** + * Defines a fully serialized remote ActorRef (with serialized typed actor instance) + * that is about to be instantiated on the remote node. It is fully disconnected + * from its original host. + */ +message SerializedTypedActorRefProtocol { + required SerializedActorRefProtocol actorRef = 1; + required string interfaceName = 2; +} + /** * Defines a message. */ diff --git a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala index 0ed0f557eb..5fbf9583b4 100644 --- a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala +++ b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala @@ -4,7 +4,6 @@ package se.scalablesolutions.akka.serialization -import se.scalablesolutions.akka.actor.{Actor, ActorRef, LocalActorRef, RemoteActorRef, IllegalActorStateException, ActorType} import se.scalablesolutions.akka.stm.global._ import se.scalablesolutions.akka.stm.TransactionManagement._ import se.scalablesolutions.akka.stm.TransactionManagement @@ -15,6 +14,7 @@ import se.scalablesolutions.akka.config.{AllForOneStrategy, OneForOneStrategy, F import se.scalablesolutions.akka.config.ScalaConfig._ import com.google.protobuf.ByteString +import se.scalablesolutions.akka.actor._ /** * Type class definition for Actor Serialization @@ -36,13 +36,14 @@ trait Format[T <: Actor] extends FromBinary[T] with ToBinary[T] * Create a Format object with the client actor as the implementation of the type class * *

    - * object BinaryFormatMyStatelessActor {
    + * object BinaryFormatMyStatelessActor  {
      *   implicit object MyStatelessActorFormat extends StatelessActorFormat[MyStatelessActor]
      * }
      * 
    */ trait StatelessActorFormat[T <: Actor] extends Format[T] { def fromBinary(bytes: Array[Byte], act: T) = act + def toBinary(ac: T) = Array.empty[Byte] } @@ -53,16 +54,18 @@ trait StatelessActorFormat[T <: Actor] extends Format[T] { * a serializer object * *
    - * object BinaryFormatMyJavaSerializableActor {
    - *   implicit object MyJavaSerializableActorFormat extends SerializerBasedActorFormat[MyJavaSerializableActor] {
    + * object BinaryFormatMyJavaSerializableActor  {
    + *   implicit object MyJavaSerializableActorFormat extends SerializerBasedActorFormat[MyJavaSerializableActor]  {
      *     val serializer = Serializer.Java
    - *   }
    + * }
      * }
      * 
    */ trait SerializerBasedActorFormat[T <: Actor] extends Format[T] { val serializer: Serializer + def fromBinary(bytes: Array[Byte], act: T) = serializer.fromBinary(bytes, Some(act.self.actorClass)).asInstanceOf[T] + def toBinary(ac: T) = serializer.toBinary(ac) } @@ -70,7 +73,6 @@ trait SerializerBasedActorFormat[T <: Actor] extends Format[T] { * Module for local actor serialization. */ object ActorSerialization { - def fromBinary[T <: Actor](bytes: Array[Byte])(implicit format: Format[T]): ActorRef = fromBinaryToLocalActorRef(bytes, format) @@ -85,8 +87,8 @@ object ActorSerialization { def toBinaryJ[T <: Actor](a: ActorRef, format: Format[T]): Array[Byte] = toBinary(a)(format) - private def toSerializedActorRefProtocol[T <: Actor]( - actorRef: ActorRef, format: Format[T]): SerializedActorRefProtocol = { + private[akka] def toSerializedActorRefProtocol[T <: Actor]( + actorRef: ActorRef, format: Format[T]): SerializedActorRefProtocol = { val lifeCycleProtocol: Option[LifeCycleProtocol] = { def setScope(builder: LifeCycleProtocol.Builder, scope: Scope) = scope match { case Permanent => builder.setLifeCycle(LifeCycleType.PERMANENT) @@ -102,17 +104,17 @@ object ActorSerialization { } val originalAddress = AddressProtocol.newBuilder - .setHostname(actorRef.homeAddress.getHostName) - .setPort(actorRef.homeAddress.getPort) - .build + .setHostname(actorRef.homeAddress.getHostName) + .setPort(actorRef.homeAddress.getPort) + .build val builder = SerializedActorRefProtocol.newBuilder - .setUuid(actorRef.uuid) - .setId(actorRef.id) - .setActorClassname(actorRef.actorClass.getName) - .setOriginalAddress(originalAddress) - .setIsTransactor(actorRef.isTransactor) - .setTimeout(actorRef.timeout) + .setUuid(actorRef.uuid) + .setId(actorRef.id) + .setActorClassname(actorRef.actorClass.getName) + .setOriginalAddress(originalAddress) + .setIsTransactor(actorRef.isTransactor) + .setTimeout(actorRef.timeout) actorRef.receiveTimeout.foreach(builder.setReceiveTimeout(_)) builder.setActorInstance(ByteString.copyFrom(format.toBinary(actorRef.actor.asInstanceOf[T]))) @@ -126,33 +128,33 @@ object ActorSerialization { private def fromBinaryToLocalActorRef[T <: Actor](bytes: Array[Byte], format: Format[T]): ActorRef = fromProtobufToLocalActorRef(SerializedActorRefProtocol.newBuilder.mergeFrom(bytes).build, format, None) - private def fromProtobufToLocalActorRef[T <: Actor]( - protocol: SerializedActorRefProtocol, format: Format[T], loader: Option[ClassLoader]): ActorRef = { + private[akka] def fromProtobufToLocalActorRef[T <: Actor]( + protocol: SerializedActorRefProtocol, format: Format[T], loader: Option[ClassLoader]): ActorRef = { Actor.log.debug("Deserializing SerializedActorRefProtocol to LocalActorRef:\n" + protocol) val serializer = - if (format.isInstanceOf[SerializerBasedActorFormat[_]]) - Some(format.asInstanceOf[SerializerBasedActorFormat[_]].serializer) - else None + if (format.isInstanceOf[SerializerBasedActorFormat[_]]) + Some(format.asInstanceOf[SerializerBasedActorFormat[_]].serializer) + else None val lifeCycle = - if (protocol.hasLifeCycle) { - val lifeCycleProtocol = protocol.getLifeCycle - Some(if (lifeCycleProtocol.getLifeCycle == LifeCycleType.PERMANENT) LifeCycle(Permanent) - else if (lifeCycleProtocol.getLifeCycle == LifeCycleType.TEMPORARY) LifeCycle(Temporary) - else throw new IllegalActorStateException("LifeCycle type is not valid: " + lifeCycleProtocol.getLifeCycle)) - } else None + if (protocol.hasLifeCycle) { + val lifeCycleProtocol = protocol.getLifeCycle + Some(if (lifeCycleProtocol.getLifeCycle == LifeCycleType.PERMANENT) LifeCycle(Permanent) + else if (lifeCycleProtocol.getLifeCycle == LifeCycleType.TEMPORARY) LifeCycle(Temporary) + else throw new IllegalActorStateException("LifeCycle type is not valid: " + lifeCycleProtocol.getLifeCycle)) + } else None val supervisor = - if (protocol.hasSupervisor) - Some(RemoteActorSerialization.fromProtobufToRemoteActorRef(protocol.getSupervisor, loader)) - else None + if (protocol.hasSupervisor) + Some(RemoteActorSerialization.fromProtobufToRemoteActorRef(protocol.getSupervisor, loader)) + else None val hotswap = - if (serializer.isDefined && protocol.hasHotswapStack) Some(serializer.get + if (serializer.isDefined && protocol.hasHotswapStack) Some(serializer.get .fromBinary(protocol.getHotswapStack.toByteArray, Some(classOf[PartialFunction[Any, Unit]])) .asInstanceOf[PartialFunction[Any, Unit]]) - else None + else None val classLoader = loader.getOrElse(getClass.getClassLoader) @@ -194,9 +196,9 @@ object RemoteActorSerialization { def fromBinaryToRemoteActorRef(bytes: Array[Byte]): ActorRef = fromProtobufToRemoteActorRef(RemoteActorRefProtocol.newBuilder.mergeFrom(bytes).build, None) - /** - * Deserializes a byte array (Array[Byte]) into an RemoteActorRef instance. - */ + /** + * Deserializes a byte array (Array[Byte]) into an RemoteActorRef instance. + */ def fromBinaryToRemoteActorRef(bytes: Array[Byte], loader: ClassLoader): ActorRef = fromProtobufToRemoteActorRef(RemoteActorRefProtocol.newBuilder.mergeFrom(bytes).build, Some(loader)) @@ -230,21 +232,21 @@ object RemoteActorSerialization { } RemoteActorRefProtocol.newBuilder - .setUuid(uuid) - .setActorClassname(actorClass.getName) - .setHomeAddress(AddressProtocol.newBuilder.setHostname(host).setPort(port).build) - .setTimeout(timeout) - .build + .setUuid(uuid) + .setActorClassname(actorClass.getName) + .setHomeAddress(AddressProtocol.newBuilder.setHostname(host).setPort(port).build) + .setTimeout(timeout) + .build } def createRemoteRequestProtocolBuilder( - actorRef: ActorRef, - message: Any, - isOneWay: Boolean, - senderOption: Option[ActorRef], - typedActorInfo: Option[Tuple2[String, String]], - actorType: ActorType): - RemoteRequestProtocol.Builder = { + actorRef: ActorRef, + message: Any, + isOneWay: Boolean, + senderOption: Option[ActorRef], + typedActorInfo: Option[Tuple2[String, String]], + actorType: ActorType): + RemoteRequestProtocol.Builder = { import actorRef._ val actorInfoBuilder = ActorInfoProtocol.newBuilder @@ -253,12 +255,13 @@ object RemoteActorSerialization { .setTarget(actorClassName) .setTimeout(timeout) - typedActorInfo.foreach { typedActor => - actorInfoBuilder.setTypedActorInfo( - TypedActorInfoProtocol.newBuilder - .setInterface(typedActor._1) - .setMethod(typedActor._2) - .build) + typedActorInfo.foreach { + typedActor => + actorInfoBuilder.setTypedActorInfo( + TypedActorInfoProtocol.newBuilder + .setInterface(typedActor._1) + .setMethod(typedActor._2) + .build) } actorType match { @@ -276,10 +279,110 @@ object RemoteActorSerialization { val id = registerSupervisorAsRemoteActor if (id.isDefined) requestBuilder.setSupervisorUuid(id.get) - senderOption.foreach { sender => - RemoteServer.getOrCreateServer(sender.homeAddress).register(sender.uuid, sender) - requestBuilder.setSender(toRemoteActorRefProtocol(sender)) + senderOption.foreach { + sender => + RemoteServer.getOrCreateServer(sender.homeAddress).register(sender.uuid, sender) + requestBuilder.setSender(toRemoteActorRefProtocol(sender)) } requestBuilder } + + +} + + +/** + * Module for local typed actor serialization. + */ +object TypedActorSerialization { + + def fromBinary[T <: Actor, U <: AnyRef](bytes: Array[Byte])(implicit format: Format[T]): U = + fromBinaryToLocalTypedActorRef(bytes, format) + + def toBinary[T <: Actor](proxy: AnyRef)(implicit format: Format[T]): Array[Byte] = { + toSerializedTypedActorRefProtocol(proxy, format).toByteArray + } + + // wrapper for implicits to be used by Java + def fromBinaryJ[T <: Actor, U <: AnyRef](bytes: Array[Byte], format: Format[T]): U = + fromBinary(bytes)(format) + + // wrapper for implicits to be used by Java + def toBinaryJ[T <: Actor](a: AnyRef, format: Format[T]): Array[Byte] = + toBinary(a)(format) + + private def toSerializedTypedActorRefProtocol[T <: Actor]( + proxy: AnyRef, format: Format[T]): SerializedTypedActorRefProtocol = { + + val init = AspectInitRegistry.initFor(proxy) + if (init == null) throw new IllegalArgumentException("Proxy for typed actor could not be found in AspectInitRegistry.") + + SerializedTypedActorRefProtocol.newBuilder + .setActorRef(ActorSerialization.toSerializedActorRefProtocol(init.actorRef, format)) + .setInterfaceName(init.interfaceClass.getName) + .build + } + + private def fromBinaryToLocalTypedActorRef[T <: Actor, U <: AnyRef](bytes: Array[Byte], format: Format[T]): U = + fromProtobufToLocalTypedActorRef(SerializedTypedActorRefProtocol.newBuilder.mergeFrom(bytes).build, format, None) + + private def fromProtobufToLocalTypedActorRef[T <: Actor, U <: AnyRef]( + protocol: SerializedTypedActorRefProtocol, format: Format[T], loader: Option[ClassLoader]): U = { + Actor.log.debug("Deserializing SerializedTypedActorRefProtocol to LocalActorRef:\n" + protocol) + val actorRef = ActorSerialization.fromProtobufToLocalActorRef(protocol.getActorRef, format, loader) + val intfClass = toClass(loader, protocol.getInterfaceName) + TypedActor.newInstance(intfClass, actorRef).asInstanceOf[U] + } + + private[akka] def toClass[U <: AnyRef](loader: Option[ClassLoader], name: String): Class[U] = { + val classLoader = loader.getOrElse(getClass.getClassLoader) + val clazz = classLoader.loadClass(name) + clazz.asInstanceOf[Class[U]] + } +} + +/** + * Module for remote typed actor serialization. + */ +object RemoteTypedActorSerialization { + /** + * Deserializes a byte array (Array[Byte]) into an RemoteActorRef instance. + */ + def fromBinaryToRemoteTypedActorRef[T <: AnyRef](bytes: Array[Byte]): T = + fromProtobufToRemoteTypedActorRef(RemoteTypedActorRefProtocol.newBuilder.mergeFrom(bytes).build, None) + + /** + * Deserializes a byte array (Array[Byte]) into a AW RemoteActorRef proxy. + */ + def fromBinaryToRemoteTypedActorRef[T <: AnyRef](bytes: Array[Byte], loader: ClassLoader): T = + fromProtobufToRemoteTypedActorRef(RemoteTypedActorRefProtocol.newBuilder.mergeFrom(bytes).build, Some(loader)) + + /** + * Serialize as AW RemoteActorRef proxy. + */ + def toBinary[T <: Actor](proxy: AnyRef): Array[Byte] = { + toRemoteTypedActorRefProtocol(proxy).toByteArray + } + + /** + * Deserializes a RemoteTypedActorRefProtocol Protocol Buffers (protobuf) Message into AW RemoteActorRef proxy. + */ + private[akka] def fromProtobufToRemoteTypedActorRef[T](protocol: RemoteTypedActorRefProtocol, loader: Option[ClassLoader]): T = { + Actor.log.debug("Deserializing RemoteTypedActorRefProtocol to AW RemoteActorRef proxy:\n" + protocol) + val actorRef = RemoteActorSerialization.fromProtobufToRemoteActorRef(protocol.getActorRef, loader) + val intfClass = TypedActorSerialization.toClass(loader, protocol.getInterfaceName) + TypedActor.createProxyForRemoteActorRef(intfClass, actorRef).asInstanceOf[T] + } + + /** + * Serializes the AW TypedActor proxy into a Protocol Buffers (protobuf) Message. + */ + def toRemoteTypedActorRefProtocol(proxy: AnyRef): RemoteTypedActorRefProtocol = { + val init = AspectInitRegistry.initFor(proxy) + RemoteTypedActorRefProtocol.newBuilder + .setActorRef(RemoteActorSerialization.toRemoteActorRefProtocol(init.actorRef)) + .setInterfaceName(init.interfaceClass.getName) + .build + } + } diff --git a/akka-remote/src/test/scala/serialization/TypedActorSerializationSpec.scala b/akka-remote/src/test/scala/serialization/TypedActorSerializationSpec.scala new file mode 100644 index 0000000000..ccf4d05f7f --- /dev/null +++ b/akka-remote/src/test/scala/serialization/TypedActorSerializationSpec.scala @@ -0,0 +1,166 @@ +/** + * Copyright (C) 2009-2010 Scalable Solutions AB + */ +package se.scalablesolutions.akka.actor.serialization + +import org.scalatest.Spec +import org.scalatest.matchers.ShouldMatchers +import org.scalatest.BeforeAndAfterAll +import org.scalatest.junit.JUnitRunner +import org.junit.runner.RunWith + +import se.scalablesolutions.akka.serialization._ +import se.scalablesolutions.akka.actor._ + +import TypedActorSerialization._ +import Actor._ +import se.scalablesolutions.akka.remote.{RemoteClient, RemoteServer} +import se.scalablesolutions.akka.actor.remote.ServerInitiatedRemoteActorSpec.RemoteActorSpecActorUnidirectional + +@RunWith(classOf[JUnitRunner]) +class TypedActorSerializationSpec extends + Spec with + ShouldMatchers with + BeforeAndAfterAll { + + var server1: RemoteServer = null + var typedActor: MyTypedActor = null + + override def beforeAll = { + server1 = new RemoteServer().start("localhost", 9991) + typedActor = TypedActor.newInstance(classOf[MyTypedActor], classOf[MyTypedActorImpl], 1000) + server1.registerTypedActor("typed-actor-service", typedActor) + Thread.sleep(1000) + } + + // make sure the servers shutdown cleanly after the test has finished + override def afterAll = { + try { + TypedActor.stop(typedActor) + server1.shutdown + RemoteClient.shutdownAll + Thread.sleep(1000) + } catch { + case e => () + } + } + + object MyTypedStatelessActorFormat extends StatelessActorFormat[MyStatelessTypedActorImpl] + + class MyTypedActorFormat extends Format[MyTypedActorImpl] { + def fromBinary(bytes: Array[Byte], act: MyTypedActorImpl) = { + val p = Serializer.Protobuf.fromBinary(bytes, Some(classOf[ProtobufProtocol.Counter])).asInstanceOf[ProtobufProtocol.Counter] + act.count = p.getCount + act + } + def toBinary(ac: MyTypedActorImpl) = + ProtobufProtocol.Counter.newBuilder.setCount(ac.count).build.toByteArray + } + + class MyTypedActorWithDualCounterFormat extends Format[MyTypedActorWithDualCounter] { + def fromBinary(bytes: Array[Byte], act: MyTypedActorWithDualCounter) = { + val p = Serializer.Protobuf.fromBinary(bytes, Some(classOf[ProtobufProtocol.DualCounter])).asInstanceOf[ProtobufProtocol.DualCounter] + act.count1 = p.getCount1 + act.count2 = p.getCount2 + act + } + def toBinary(ac: MyTypedActorWithDualCounter) = + ProtobufProtocol.DualCounter.newBuilder.setCount1(ac.count1).setCount2(ac.count2).build.toByteArray + } + + + describe("Serializable typed actor") { + + it("should be able to serialize and de-serialize a stateless typed actor") { + val typedActor1 = TypedActor.newInstance(classOf[MyTypedActor], classOf[MyStatelessTypedActorImpl], 1000) + typedActor1.requestReply("hello") should equal("world") + typedActor1.requestReply("hello") should equal("world") + + val bytes = toBinaryJ(typedActor1, MyTypedStatelessActorFormat) + val typedActor2: MyTypedActor = fromBinaryJ(bytes, MyTypedStatelessActorFormat) + typedActor2.requestReply("hello") should equal("world") + } + + it("should be able to serialize and de-serialize a stateful typed actor") { + val typedActor1 = TypedActor.newInstance(classOf[MyTypedActor], classOf[MyTypedActorImpl], 1000) + typedActor1.requestReply("hello") should equal("world 1") + typedActor1.requestReply("scala") should equal("hello scala 2") + + val f = new MyTypedActorFormat + val bytes = toBinaryJ(typedActor1, f) + val typedActor2: MyTypedActor = fromBinaryJ(bytes, f) + typedActor2.requestReply("hello") should equal("world 3") + } + + it("should be able to serialize and de-serialize a stateful typed actor with compound state") { + val typedActor1 = TypedActor.newInstance(classOf[MyTypedActor], classOf[MyTypedActorWithDualCounter], 1000) + typedActor1.requestReply("hello") should equal("world 1 1") + typedActor1.requestReply("hello") should equal("world 2 2") + + val f = new MyTypedActorWithDualCounterFormat + val bytes = toBinaryJ(typedActor1, f) + val typedActor2: MyTypedActor = fromBinaryJ(bytes, f) + typedActor2.requestReply("hello") should equal("world 3 3") + } + + it("should be able to serialize a local yped actor ref to a remote typed actor ref proxy") { + val typedActor1 = TypedActor.newInstance(classOf[MyTypedActor], classOf[MyStatelessTypedActorImpl], 1000) + typedActor1.requestReply("hello") should equal("world") + typedActor1.requestReply("hello") should equal("world") + + val bytes = RemoteTypedActorSerialization.toBinary(typedActor1) + val typedActor2: MyTypedActor = RemoteTypedActorSerialization.fromBinaryToRemoteTypedActorRef(bytes) + typedActor1.requestReply("hello") should equal("world") + } + } +} + + +trait MyTypedActor { + def requestReply(s: String) : String + def oneWay() : Unit +} + +class MyTypedActorImpl extends TypedActor with MyTypedActor { + var count = 0 + + override def oneWay() { + println("got oneWay message") + } + + override def requestReply(message: String) : String = { + count = count + 1 + if (message == "hello") { + "world " + count + } else ("hello " + message + " " + count) + } +} + +class MyTypedActorWithDualCounter extends TypedActor with MyTypedActor { + var count1 = 0 + var count2 = 0 + + override def oneWay() { + println("got oneWay message") + } + + override def requestReply(message: String) : String = { + count1 = count1 + 1 + count2 = count2 + 1 + + if (message == "hello") { + "world " + count1 + " " + count2 + } else ("hello " + message + " " + count1 + " " + count2) + } +} + +class MyStatelessTypedActorImpl extends TypedActor with MyTypedActor { + + override def oneWay() { + println("got oneWay message") + } + + override def requestReply(message: String) : String = { + if (message == "hello") "world" else ("hello " + message) + } +} diff --git a/akka-typed-actor/src/main/scala/actor/TypedActor.scala b/akka-typed-actor/src/main/scala/actor/TypedActor.scala index c3457cb43b..f6cf2e2337 100644 --- a/akka-typed-actor/src/main/scala/actor/TypedActor.scala +++ b/akka-typed-actor/src/main/scala/actor/TypedActor.scala @@ -390,11 +390,22 @@ object TypedActor extends Logging { if (config._messageDispatcher.isDefined) actorRef.dispatcher = config._messageDispatcher.get if (config._threadBasedDispatcher.isDefined) actorRef.dispatcher = Dispatchers.newThreadBasedDispatcher(actorRef) if (config._host.isDefined) actorRef.makeRemote(config._host.get) + actorRef.timeout = config.timeout AspectInitRegistry.register(proxy, AspectInit(intfClass, typedActor, actorRef, config._host, config.timeout)) actorRef.start proxy.asInstanceOf[T] } + private[akka] def newInstance[T](intfClass: Class[T], actorRef: ActorRef): T = { + if (!actorRef.actorInstance.get.isInstanceOf[TypedActor]) throw new IllegalArgumentException("ActorRef is not a ref to a typed actor") + val typedActor = actorRef.actorInstance.get.asInstanceOf[TypedActor] + val proxy = Proxy.newInstance(Array(intfClass), Array(typedActor), true, false) + typedActor.initialize(proxy) + AspectInitRegistry.register(proxy, AspectInit(intfClass, typedActor, actorRef, actorRef.remoteAddress, actorRef.timeout)) + actorRef.start + proxy.asInstanceOf[T] + } + private[akka] def newInstance[T](intfClass: Class[T], targetClass: Class[_], remoteAddress: Option[InetSocketAddress], timeout: Long): T = { val actorRef = actorOf(newTypedActor(targetClass)) From bc2f7a9e015066cf2730dfc4ad6fabd60bf0fcdd Mon Sep 17 00:00:00 2001 From: Debasish Ghosh Date: Fri, 17 Sep 2010 16:08:44 +0530 Subject: [PATCH 13/24] Ticket #343 implementation done except for pop of PersistentVector --- .../src/main/scala/Storage.scala | 55 ++++++++----------- .../src/main/scala/MongoStorageBackend.scala | 1 - .../src/test/scala/MongoTicket343Spec.scala | 2 +- .../src/main/scala/RedisStorageBackend.scala | 1 - .../src/test/scala/RedisTicket343Spec.scala | 51 ++++++++++++++++- 5 files changed, 72 insertions(+), 38 deletions(-) diff --git a/akka-persistence/akka-persistence-common/src/main/scala/Storage.scala b/akka-persistence/akka-persistence-common/src/main/scala/Storage.scala index 4d9ff48a60..088c0b8ff4 100644 --- a/akka-persistence/akka-persistence-common/src/main/scala/Storage.scala +++ b/akka-persistence/akka-persistence-common/src/main/scala/Storage.scala @@ -82,7 +82,6 @@ trait Storage { */ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] with Transactional with Committable with Abortable with Logging { - protected val shouldClearOnCommit = Ref[Boolean]() // operations on the Map trait Op @@ -90,11 +89,12 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] case object PUT extends Op case object REM extends Op case object UPD extends Op + case object CLR extends Op // append only log: records all mutating operations protected val appendOnlyTxLog = TransactionalVector[LogEntry]() - case class LogEntry(key: K, value: Option[V], op: Op) + case class LogEntry(key: Option[K], value: Option[V], op: Op) // need to override in subclasses e.g. "sameElements" for Array[Byte] def equal(k1: K, k2: K): Boolean = k1 == k2 @@ -114,7 +114,7 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] protected def clearDistinctKeys = keysInCurrentTx.clear protected def filterTxLogByKey(key: K): IndexedSeq[LogEntry] = - appendOnlyTxLog filter(e => equal(e.key, key)) + appendOnlyTxLog filter(e => e.key.map(equal(_, key)).getOrElse(true)) // need to get current value considering the underlying storage as well as the transaction log protected def getCurrentValue(key: K): Option[V] = { @@ -128,7 +128,10 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] } catch { case e: Exception => None } if (txEntries.isEmpty) underlying - else replay(txEntries, key, underlying) + else txEntries.last match { + case LogEntry(_, _, CLR) => None + case _ => replay(txEntries, key, underlying) + } } // replay all tx entries for key k with seed = initial @@ -140,9 +143,10 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] case Some(v) => Map((key, v)) } txEntries.foreach {case LogEntry(k, v, o) => o match { - case PUT => m.put(k, v.get) - case REM => m -= k - case UPD => m.update(k, v.get) + case PUT => m.put(k.get, v.get) + case REM => m -= k.get + case UPD => m.update(k.get, v.get) + case CLR => Map.empty[K, V] }} m get key } @@ -151,12 +155,11 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] val storage: MapStorageBackend[K, V] def commit = { - // if (shouldClearOnCommit.isDefined && shouldClearOnCommit.get) storage.removeMapStorageFor(uuid) - appendOnlyTxLog.foreach { case LogEntry(k, v, o) => o match { - case PUT => storage.insertMapStorageEntryFor(uuid, k, v.get) - case UPD => storage.insertMapStorageEntryFor(uuid, k, v.get) - case REM => storage.removeMapStorageFor(uuid, k) + case PUT => storage.insertMapStorageEntryFor(uuid, k.get, v.get) + case UPD => storage.insertMapStorageEntryFor(uuid, k.get, v.get) + case REM => storage.removeMapStorageFor(uuid, k.get) + case CLR => storage.removeMapStorageFor(uuid) }} appendOnlyTxLog.clear @@ -166,7 +169,6 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] def abort = { appendOnlyTxLog.clear clearDistinctKeys - shouldClearOnCommit.swap(false) } def -=(key: K) = { @@ -187,7 +189,7 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] override def put(key: K, value: V): Option[V] = { register val curr = getCurrentValue(key) - appendOnlyTxLog add LogEntry(key, Some(value), PUT) + appendOnlyTxLog add LogEntry(Some(key), Some(value), PUT) addToListOfKeysInTx(key) curr } @@ -195,7 +197,7 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] override def update(key: K, value: V) = { register val curr = getCurrentValue(key) - appendOnlyTxLog add LogEntry(key, Some(value), UPD) + appendOnlyTxLog add LogEntry(Some(key), Some(value), UPD) addToListOfKeysInTx(key) curr } @@ -203,7 +205,7 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] override def remove(key: K) = { register val curr = getCurrentValue(key) - appendOnlyTxLog add LogEntry(key, None, REM) + appendOnlyTxLog add LogEntry(Some(key), None, REM) addToListOfKeysInTx(key) curr } @@ -215,9 +217,8 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] override def clear = { register - appendOnlyTxLog.clear + appendOnlyTxLog add LogEntry(None, None, CLR) clearDistinctKeys - shouldClearOnCommit.swap(true) } override def contains(key: K): Boolean = try { @@ -225,7 +226,8 @@ trait PersistentMap[K, V] extends scala.collection.mutable.Map[K, V] case Seq() => // current tx doesn't use this storage.getMapStorageEntryFor(uuid, key).isDefined // check storage case txs => // present in log - txs.last.op != REM // last entry cannot be a REM + val lastOp = txs.last.op + lastOp != REM && lastOp != CLR // last entry cannot be a REM } } catch { case e: Exception => false } @@ -366,11 +368,6 @@ trait PersistentMapBinary extends PersistentMap[Array[Byte], Array[Byte]] { * @author
    Jonas Bonér */ trait PersistentVector[T] extends IndexedSeq[T] with Transactional with Committable with Abortable { - protected val newElems = TransactionalVector[T]() - protected val updatedElems = TransactionalMap[Int, T]() - protected val removedElems = TransactionalVector[T]() - protected val shouldClearOnCommit = Ref[Boolean]() - // operations on the Vector trait Op case object ADD extends Op @@ -400,7 +397,6 @@ trait PersistentVector[T] extends IndexedSeq[T] with Transactional with Committa def abort = { appendOnlyTxLog.clear - shouldClearOnCommit.swap(false) } private def replay: List[T] = { @@ -466,14 +462,7 @@ trait PersistentVector[T] extends IndexedSeq[T] with Transactional with Committa override def first: T = get(0) - override def last: T = { - if (newElems.length != 0) newElems.last - else { - val len = length - if (len == 0) throw new NoSuchElementException("Vector is empty") - get(len - 1) - } - } + override def last: T = replay.last def length: Int = replay.length diff --git a/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala b/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala index 01d8ababce..6573100422 100644 --- a/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala +++ b/akka-persistence/akka-persistence-mongo/src/main/scala/MongoStorageBackend.scala @@ -9,7 +9,6 @@ import se.scalablesolutions.akka.persistence.common._ import se.scalablesolutions.akka.util.Logging import se.scalablesolutions.akka.config.Config.config -import java.util.NoSuchElementException import com.novus.casbah.mongodb.Imports._ /** diff --git a/akka-persistence/akka-persistence-mongo/src/test/scala/MongoTicket343Spec.scala b/akka-persistence/akka-persistence-mongo/src/test/scala/MongoTicket343Spec.scala index 3b160c8c50..413be5d860 100644 --- a/akka-persistence/akka-persistence-mongo/src/test/scala/MongoTicket343Spec.scala +++ b/akka-persistence/akka-persistence-mongo/src/test/scala/MongoTicket343Spec.scala @@ -238,7 +238,7 @@ class MongoTicket343Spec extends val add = List(("a", "1"), ("b", "2"), ("c", "3")) (proc !! CLEAR_AFTER_PUT(add)).getOrElse("CLEAR_AFTER_PUT failed") should equal(true) - (proc !! MAP_SIZE).getOrElse("Size failed") should equal(1) + (proc !! MAP_SIZE).getOrElse("Size failed") should equal(0) proc.stop } } diff --git a/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala b/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala index 9fd3142019..6f2052f0bd 100644 --- a/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala +++ b/akka-persistence/akka-persistence-redis/src/main/scala/RedisStorageBackend.scala @@ -359,7 +359,6 @@ private [akka] object RedisStorageBackend extends case e: java.lang.NullPointerException => throw new StorageException("Could not connect to Redis server") case e => - e.printStackTrace throw new StorageException("Error in Redis: " + e.getMessage) } } diff --git a/akka-persistence/akka-persistence-redis/src/test/scala/RedisTicket343Spec.scala b/akka-persistence/akka-persistence-redis/src/test/scala/RedisTicket343Spec.scala index de236b9a5a..2b06b17270 100644 --- a/akka-persistence/akka-persistence-redis/src/test/scala/RedisTicket343Spec.scala +++ b/akka-persistence/akka-persistence-redis/src/test/scala/RedisTicket343Spec.scala @@ -32,6 +32,10 @@ case class VUPD(i: Int, v: String) case class VUPD_AND_ABORT(i: Int, v: String) case class VGET(i: Int) case object VSIZE +case object VLAST +case object VFIRST +case class VLAST_AFTER_ADD(vsToAdd: List[String]) +case class VFIRST_AFTER_ADD(vsToAdd: List[String]) case class VGET_AFTER_VADD(vsToAdd: List[String], isToFetch: List[Int]) case class VADD_WITH_SLICE(vsToAdd: List[String], start: Int, cnt: Int) @@ -175,6 +179,30 @@ object Storage { fooVector.slice(Some(s), None, c) } self.reply(l.map(new String(_))) + + case VLAST => + val l = atomic { fooVector last } + self.reply(l) + + case VFIRST => + val l = atomic { fooVector first } + self.reply(l) + + case VLAST_AFTER_ADD(vs) => + val l = + atomic { + vs.foreach(fooVector + _.getBytes) + fooVector last + } + self.reply(l) + + case VFIRST_AFTER_ADD(vs) => + val l = + atomic { + vs.foreach(fooVector + _.getBytes) + fooVector first + } + self.reply(l) } } } @@ -243,7 +271,7 @@ class RedisTicket343Spec extends val add = List(("a", "1"), ("b", "2"), ("c", "3")) (proc !! CLEAR_AFTER_PUT(add)).getOrElse("CLEAR_AFTER_PUT failed") should equal(true) - (proc !! MAP_SIZE).getOrElse("Size failed") should equal(1) + (proc !! MAP_SIZE).getOrElse("Size failed") should equal(0) proc.stop } } @@ -344,7 +372,26 @@ class RedisTicket343Spec extends (proc !! VADD_WITH_SLICE(List(), 2, 2)).getOrElse("VADD_WITH_SLICE failed") should equal(Vector("maulindu", "debasish")) // slice with new elements added in current transaction - (proc !! VADD_WITH_SLICE(List("a", "b", "c", "d"), 2, 2)).getOrElse("VADD_WITH_SLICE failed") should equal(Vector("b", "a")) + (proc !! VADD_WITH_SLICE(List("a", "b", "c", "d"), 2, 4)).getOrElse("VADD_WITH_SLICE failed") should equal(Vector("b", "a", "nilanjan", "ramanendu")) + proc.stop + } + } + + describe("Miscellaneous vector ops") { + it("vector slice() should not ignore elements added in current transaction") { + val proc = actorOf[RedisSampleVectorStorage] + proc.start + + // add 4 elements in separate transactions + (proc !! VADD("debasish")).getOrElse("VADD failed") should equal(1) + (proc !! VADD("maulindu")).getOrElse("VADD failed") should equal(2) + (proc !! VADD("ramanendu")).getOrElse("VADD failed") should equal(3) + (proc !! VADD("nilanjan")).getOrElse("VADD failed") should equal(4) + + new String((proc !! VLAST).getOrElse("VLAST failed").asInstanceOf[Array[Byte]]) should equal("debasish") + new String((proc !! VFIRST).getOrElse("VFIRST failed").asInstanceOf[Array[Byte]]) should equal("nilanjan") + new String((proc !! VLAST_AFTER_ADD(List("kausik", "tarun"))).getOrElse("VLAST_AFTER_ADD failed").asInstanceOf[Array[Byte]]) should equal("debasish") + new String((proc !! VFIRST_AFTER_ADD(List("kausik", "tarun"))).getOrElse("VFIRST_AFTER_ADD failed").asInstanceOf[Array[Byte]]) should equal("tarun") proc.stop } } From f2255307c838d9a917af6316c16f4f41943e22c6 Mon Sep 17 00:00:00 2001 From: Debasish Ghosh Date: Sat, 18 Sep 2010 17:21:12 +0530 Subject: [PATCH 14/24] fixed ticket #435. Also made serialization of mailbox optional - default true --- .../serialization/SerializationProtocol.scala | 34 ++++- .../SerializableTypeClassActorSpec.scala | 7 + .../scala/serialization/Ticket435Spec.scala | 126 ++++++++++++++++++ 3 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 akka-remote/src/test/scala/serialization/Ticket435Spec.scala diff --git a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala index 0ed0f557eb..1577b62e13 100644 --- a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala +++ b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala @@ -8,6 +8,7 @@ import se.scalablesolutions.akka.actor.{Actor, ActorRef, LocalActorRef, RemoteAc import se.scalablesolutions.akka.stm.global._ import se.scalablesolutions.akka.stm.TransactionManagement._ import se.scalablesolutions.akka.stm.TransactionManagement +import se.scalablesolutions.akka.dispatch.MessageInvocation import se.scalablesolutions.akka.remote.{RemoteServer, RemoteRequestProtocolIdFactory, MessageSerializer} import se.scalablesolutions.akka.remote.protocol.RemoteProtocol.{ActorType => ActorTypeProtocol, _} import ActorTypeProtocol._ @@ -74,19 +75,19 @@ object ActorSerialization { def fromBinary[T <: Actor](bytes: Array[Byte])(implicit format: Format[T]): ActorRef = fromBinaryToLocalActorRef(bytes, format) - def toBinary[T <: Actor](a: ActorRef)(implicit format: Format[T]): Array[Byte] = - toSerializedActorRefProtocol(a, format).toByteArray + def toBinary[T <: Actor](a: ActorRef, serializeMailBox: Boolean = true)(implicit format: Format[T]): Array[Byte] = + toSerializedActorRefProtocol(a, format, serializeMailBox).toByteArray // wrapper for implicits to be used by Java def fromBinaryJ[T <: Actor](bytes: Array[Byte], format: Format[T]): ActorRef = fromBinary(bytes)(format) // wrapper for implicits to be used by Java - def toBinaryJ[T <: Actor](a: ActorRef, format: Format[T]): Array[Byte] = - toBinary(a)(format) + def toBinaryJ[T <: Actor](a: ActorRef, format: Format[T], srlMailBox: Boolean = true): Array[Byte] = + toBinary(a, srlMailBox)(format) private def toSerializedActorRefProtocol[T <: Actor]( - actorRef: ActorRef, format: Format[T]): SerializedActorRefProtocol = { + actorRef: ActorRef, format: Format[T], serializeMailBox: Boolean = true): SerializedActorRefProtocol = { val lifeCycleProtocol: Option[LifeCycleProtocol] = { def setScope(builder: LifeCycleProtocol.Builder, scope: Scope) = scope match { case Permanent => builder.setLifeCycle(LifeCycleType.PERMANENT) @@ -114,6 +115,29 @@ object ActorSerialization { .setIsTransactor(actorRef.isTransactor) .setTimeout(actorRef.timeout) + if (serializeMailBox == true) { + val messages = + actorRef.mailbox match { + case q: java.util.Queue[MessageInvocation] => + val l = new scala.collection.mutable.ListBuffer[MessageInvocation] + val it = q.iterator + while (it.hasNext == true) l += it.next + l + } + + val requestProtocols = + messages.map(m => + RemoteActorSerialization.createRemoteRequestProtocolBuilder( + actorRef, + m.message, + false, + actorRef.getSender, + None, + ActorType.ScalaActor).build) + + requestProtocols.foreach(rp => builder.addMessages(rp)) + } + actorRef.receiveTimeout.foreach(builder.setReceiveTimeout(_)) builder.setActorInstance(ByteString.copyFrom(format.toBinary(actorRef.actor.asInstanceOf[T]))) lifeCycleProtocol.foreach(builder.setLifeCycle(_)) diff --git a/akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala b/akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala index 7e8babe168..832a655c22 100644 --- a/akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala +++ b/akka-remote/src/test/scala/serialization/SerializableTypeClassActorSpec.scala @@ -127,9 +127,16 @@ class SerializableTypeClassActorSpec extends (actor1 ! "hello") (actor1 ! "hello") (actor1 ! "hello") + actor1.mailboxSize should be > (0) val actor2 = fromBinary(toBinary(actor1)) Thread.sleep(1000) + actor2.mailboxSize should be > (0) (actor2 !! "hello-reply").getOrElse("_") should equal("world") + + val actor3 = fromBinary(toBinary(actor1, false)) + Thread.sleep(1000) + actor3.mailboxSize should equal(0) + (actor3 !! "hello-reply").getOrElse("_") should equal("world") } } } diff --git a/akka-remote/src/test/scala/serialization/Ticket435Spec.scala b/akka-remote/src/test/scala/serialization/Ticket435Spec.scala new file mode 100644 index 0000000000..ed175ea0ad --- /dev/null +++ b/akka-remote/src/test/scala/serialization/Ticket435Spec.scala @@ -0,0 +1,126 @@ +package se.scalablesolutions.akka.actor.serialization + + +import org.scalatest.Spec +import org.scalatest.matchers.ShouldMatchers +import org.scalatest.BeforeAndAfterAll +import org.scalatest.junit.JUnitRunner +import org.junit.runner.RunWith + +import se.scalablesolutions.akka.serialization._ +import se.scalablesolutions.akka.actor._ +import ActorSerialization._ +import Actor._ + +@RunWith(classOf[JUnitRunner]) +class Ticket435Spec extends + Spec with + ShouldMatchers with + BeforeAndAfterAll { + + object BinaryFormatMyStatefulActor { + implicit object MyStatefulActorFormat extends Format[MyStatefulActor] { + def fromBinary(bytes: Array[Byte], act: MyStatefulActor) = { + val p = Serializer.Protobuf.fromBinary(bytes, Some(classOf[ProtobufProtocol.Counter])).asInstanceOf[ProtobufProtocol.Counter] + act.count = p.getCount + act + } + def toBinary(ac: MyStatefulActor) = + ProtobufProtocol.Counter.newBuilder.setCount(ac.count).build.toByteArray + } + } + + object BinaryFormatMyStatelessActorWithMessagesInMailbox { + implicit object MyStatelessActorFormat extends StatelessActorFormat[MyStatelessActorWithMessagesInMailbox] + } + + describe("Serializable actor") { + + it("should be able to serialize and deserialize a stateless actor with messages in mailbox") { + import BinaryFormatMyStatelessActorWithMessagesInMailbox._ + + val actor1 = actorOf[MyStatelessActorWithMessagesInMailbox].start + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + actor1.mailboxSize should be > (0) + val actor2 = fromBinary(toBinary(actor1)) + Thread.sleep(1000) + actor2.mailboxSize should be > (0) + (actor2 !! "hello-reply").getOrElse("_") should equal("world") + + val actor3 = fromBinary(toBinary(actor1, false)) + Thread.sleep(1000) + actor3.mailboxSize should equal(0) + (actor3 !! "hello-reply").getOrElse("_") should equal("world") + } + + it("should serialize the mailbox optionally") { + import BinaryFormatMyStatelessActorWithMessagesInMailbox._ + + val actor1 = actorOf[MyStatelessActorWithMessagesInMailbox].start + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + (actor1 ! "hello") + actor1.mailboxSize should be > (0) + + val actor2 = fromBinary(toBinary(actor1, false)) + Thread.sleep(1000) + actor2.mailboxSize should equal(0) + (actor2 !! "hello-reply").getOrElse("_") should equal("world") + } + + it("should be able to serialize and deserialize a stateful actor with messages in mailbox") { + import BinaryFormatMyStatefulActor._ + + val actor1 = actorOf[MyStatefulActor].start + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + (actor1 ! "hi") + actor1.mailboxSize should be > (0) + val actor2 = fromBinary(toBinary(actor1)) + Thread.sleep(1000) + actor2.mailboxSize should be > (0) + (actor2 !! "hello").getOrElse("_") should equal("world 1") + + val actor3 = fromBinary(toBinary(actor1, false)) + Thread.sleep(1000) + actor3.mailboxSize should equal(0) + (actor3 !! "hello").getOrElse("_") should equal("world 1") + } + } +} + +class MyStatefulActor extends Actor { + var count = 0 + + def receive = { + case "hi" => + println("# messages in mailbox " + self.mailboxSize) + Thread.sleep(500) + case "hello" => + count = count + 1 + self.reply("world " + count) + } +} From e48011cb9dbf3390fd6e0ea5740009aca6e61945 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Sat, 18 Sep 2010 14:19:44 +0200 Subject: [PATCH 15/24] Switching from OP_READ to OP_WRITE --- .../src/test/scala/dispatch/HawtDispatcherEchoServer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala b/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala index 8d4c8dedc1..6196a13490 100644 --- a/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala +++ b/akka-actor/src/test/scala/dispatch/HawtDispatcherEchoServer.scala @@ -146,7 +146,7 @@ object HawtDispatcherEchoServer { read_source.setEventHandler(^{ read }) read_source.setCancelHandler(^{ close }) - write_source = createSource(channel, SelectionKey.OP_READ, HawtDispatcher.queue(self)); + write_source = createSource(channel, SelectionKey.OP_WRITE, HawtDispatcher.queue(self)); write_source.setEventHandler(^{ write }) write_source.setCancelHandler(^{ close }) From e90d5b1b69124601ef8985f5665aa3ccb9c64e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Bon=C3=A9r?= Date: Sun, 19 Sep 2010 21:32:06 +0200 Subject: [PATCH 16/24] Readded a bugfixed DataFlowStream --- .../scala/dataflow/DataFlowVariable.scala | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala b/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala index 6608f6075b..329682de52 100644 --- a/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala +++ b/akka-actor/src/main/scala/dataflow/DataFlowVariable.scala @@ -150,4 +150,46 @@ object DataFlow { def shutdown = in ! Exit } -} \ No newline at end of file + + /** + * @author Jonas Bonér + */ + class DataFlowStream[T <: Any] extends Seq[T] { + private[this] val queue = new LinkedBlockingQueue[DataFlowVariable[T]] + + def <<<(ref: DataFlowVariable[T]) = queue.offer(ref) + + def <<<(value: T) = { + val ref = new DataFlowVariable[T] + ref << value + queue.offer(ref) + } + + def apply(): T = { + val ref = queue.take + val result = ref() + ref.shutdown + result + } + + def take: DataFlowVariable[T] = queue.take + + //==== For Seq ==== + + def length: Int = queue.size + + def apply(i: Int): T = { + if (i == 0) apply() + else throw new UnsupportedOperationException( + "Access by index other than '0' is not supported by DataFlowStream") + } + + def iterator: Iterator[T] = new Iterator[T] { + private val iter = queue.iterator + def hasNext: Boolean = iter.hasNext + def next: T = { val ref = iter.next; ref() } + } + + override def toList: List[T] = queue.toArray.toList.asInstanceOf[List[T]] + } +} From 7897cadfa6d5085e4762918b1126c9ad39135833 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 09:07:49 +0200 Subject: [PATCH 17/24] Fixing varargs issue with Logger.warn --- akka-actor/src/main/scala/util/Logging.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/akka-actor/src/main/scala/util/Logging.scala b/akka-actor/src/main/scala/util/Logging.scala index b6ddaaa16a..8d2e64be58 100644 --- a/akka-actor/src/main/scala/util/Logging.scala +++ b/akka-actor/src/main/scala/util/Logging.scala @@ -111,7 +111,7 @@ class Logger(val logger: SLFLogger) { warning(message(fmt,arg,argN:_*)) } - def warn(fmt: => String, arg: Any, argN: Any*) = warning(fmt, arg, argN) + def warn(fmt: => String, arg: Any, argN: Any*) = warning(fmt, arg, argN:_*) def warning(msg: => String) { if (warning_?) logger warn msg From 5f08f124a333a0443be35e497eacb7bbb916e0c5 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 09:08:04 +0200 Subject: [PATCH 18/24] Adding the old tests for the DataFlowStream --- .../test/scala/dataflow/DataFlowSpec.scala | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala index 2997715452..dc80e5129a 100644 --- a/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala +++ b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala @@ -69,5 +69,97 @@ class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll { result.get should equal (sum(0,ints(0,1000))) List(x,y,z).foreach(_.shutdown) } + + it("should be able to join streams") { + import DataFlow._ + ActorRegistry.shutdownAll + + def ints(n: Int, max: Int, stream: DataFlowStream[Int]): Unit = if (n != max) { + stream <<< n + ints(n + 1, max, stream) + } + + def sum(s: Int, in: DataFlowStream[Int], out: DataFlowStream[Int]): Unit = { + out <<< s + sum(in() + s, in, out) + } + + val producer = new DataFlowStream[Int] + val consumer = new DataFlowStream[Int] + val latch = new CountDownLatch(1) + val result = new AtomicInteger(0) + + val t1 = thread { ints(0, 1000, producer) } + val t2 = thread { + Thread.sleep(1000) + result.set(producer.map(x => x * x).foldLeft(0)(_ + _)) + latch.countDown + } + + latch.await(3,TimeUnit.SECONDS) should equal (true) + result.get should equal (332833500) } + + it("should be able to sum streams recursively") { + import DataFlow._ + + def ints(n: Int, max: Int, stream: DataFlowStream[Int]): Unit = if (n != max) { + stream <<< n + ints(n + 1, max, stream) + } + + def sum(s: Int, in: DataFlowStream[Int], out: DataFlowStream[Int]): Unit = { + out <<< s + sum(in() + s, in, out) + } + + val result = new AtomicLong(0) + + val producer = new DataFlowStream[Int] + val consumer = new DataFlowStream[Int] + val latch = new CountDownLatch(1) + + @tailrec def recurseSum(stream: DataFlowStream[Int]): Unit = { + val x = stream() + + if(result.addAndGet(x) == 166666500) + latch.countDown + + recurseSum(stream) + } + + thread { ints(0, 1000, producer) } + thread { sum(0, producer, consumer) } + thread { recurseSum(consumer) } + + latch.await(15,TimeUnit.SECONDS) should equal (true) + } + + /* Test not ready for prime time, causes some sort of deadlock */ + /* it("should be able to conditionally set variables") { + + import DataFlow._ + ActorRegistry.shutdownAll + + val latch = new CountDownLatch(1) + val x, y, z, v = new DataFlowVariable[Int] + + val main = thread { + x << 1 + z << Math.max(x(),y()) + latch.countDown + } + + val setY = thread { + // Thread.sleep(2000) + y << 2 + } + + val setV = thread { + v << y + } + List(x,y,z,v) foreach (_.shutdown) + latch.await(2,TimeUnit.SECONDS) should equal (true) + }*/ + } } \ No newline at end of file From 60dd1b9eea1d2d41b35ace85783f52e8e94a8410 Mon Sep 17 00:00:00 2001 From: Michael Kober Date: Mon, 20 Sep 2010 12:33:30 +0200 Subject: [PATCH 19/24] added possibility to register and find remote actors by uuid --- .../src/main/scala/remote/RemoteServer.scala | 116 +++++++++++------- .../serialization/SerializationProtocol.scala | 2 +- .../ServerInitiatedRemoteActorSpec.scala | 37 +++++- .../ServerInitiatedRemoteTypedActorSpec.scala | 29 ++++- 4 files changed, 137 insertions(+), 47 deletions(-) diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala index c1f25b6d4f..3763bcb17b 100644 --- a/akka-remote/src/main/scala/remote/RemoteServer.scala +++ b/akka-remote/src/main/scala/remote/RemoteServer.scala @@ -67,6 +67,7 @@ object RemoteNode extends RemoteServer * @author Jonas Bonér */ object RemoteServer { + val UUID_PREFIX = "uuid:" val HOSTNAME = config.getString("akka.remote.server.hostname", "localhost") val PORT = config.getInt("akka.remote.server.port", 9999) @@ -123,18 +124,20 @@ object RemoteServer { private class RemoteActorSet { private[RemoteServer] val actors = new ConcurrentHashMap[String, ActorRef] + private[RemoteServer] val actorsByUuid = new ConcurrentHashMap[String, ActorRef] private[RemoteServer] val typedActors = new ConcurrentHashMap[String, AnyRef] + private[RemoteServer] val typedActorsByUuid = new ConcurrentHashMap[String, AnyRef] } private val guard = new ReadWriteGuard private val remoteActorSets = Map[Address, RemoteActorSet]() private val remoteServers = Map[Address, RemoteServer]() - private[akka] def registerActor(address: InetSocketAddress, uuid: String, actor: ActorRef) = guard.withWriteGuard { - actorsFor(RemoteServer.Address(address.getHostName, address.getPort)).actors.put(uuid, actor) + private[akka] def registerActorByUuid(address: InetSocketAddress, uuid: String, actor: ActorRef) = guard.withWriteGuard { + actorsFor(RemoteServer.Address(address.getHostName, address.getPort)).actorsByUuid.put(uuid, actor) } - private[akka] def registerTypedActor(address: InetSocketAddress, uuid: String, typedActor: AnyRef) = guard.withWriteGuard { + private[akka] def registerTypedActorByUuid(address: InetSocketAddress, uuid: String, typedActor: AnyRef) = guard.withWriteGuard { actorsFor(RemoteServer.Address(address.getHostName, address.getPort)).typedActors.put(uuid, typedActor) } @@ -192,6 +195,7 @@ case class RemoteServerClientDisconnected(@BeanProperty val server: RemoteServer * @author Jonas Bonér */ class RemoteServer extends Logging with ListenerManagement { + import RemoteServer._ def name = "RemoteServer@" + hostname + ":" + port private[akka] var address = RemoteServer.Address(RemoteServer.HOSTNAME,RemoteServer.PORT) @@ -283,10 +287,11 @@ class RemoteServer extends Logging with ListenerManagement { * @param typedActor typed actor to register */ def registerTypedActor(id: String, typedActor: AnyRef): Unit = synchronized { - val typedActors = RemoteServer.actorsFor(RemoteServer.Address(hostname, port)).typedActors - if (!typedActors.contains(id)) { - log.debug("Registering server side remote actor [%s] with id [%s] on [%s:%d]", typedActor.getClass.getName, id, hostname, port) - typedActors.put(id, typedActor) + log.debug("Registering server side remote typed actor [%s] with id [%s]", typedActor.getClass.getName, id) + if (id.startsWith(UUID_PREFIX)) { + registerTypedActor(id.substring(UUID_PREFIX.length), typedActor, typedActorsByUuid()) + } else { + registerTypedActor(id, typedActor, typedActors()) } } @@ -301,12 +306,27 @@ class RemoteServer extends Logging with ListenerManagement { * NOTE: If you use this method to register your remote actor then you must unregister the actor by this ID yourself. */ def register(id: String, actorRef: ActorRef): Unit = synchronized { + log.debug("Registering server side remote actor [%s] with id [%s]", actorRef.actorClass.getName, id) + if (id.startsWith(UUID_PREFIX)) { + register(id.substring(UUID_PREFIX.length), actorRef, actorsByUuid()) + } else { + register(id, actorRef, actors()) + } + } + + private def register(id: String, actorRef: ActorRef, registry: ConcurrentHashMap[String, ActorRef]) { if (_isRunning) { - val actorMap = actors() - if (!actorMap.contains(id)) { + if (!registry.contains(id)) { if (!actorRef.isRunning) actorRef.start - log.debug("Registering server side remote actor [%s] with id [%s]", actorRef.actorClass.getName, id) - actorMap.put(id, actorRef) + registry.put(id, actorRef) + } + } + } + + private def registerTypedActor(id: String, typedActor: AnyRef, registry: ConcurrentHashMap[String, AnyRef]) { + if (_isRunning) { + if (!registry.contains(id)) { + registry.put(id, typedActor) } } } @@ -319,7 +339,7 @@ class RemoteServer extends Logging with ListenerManagement { log.debug("Unregistering server side remote actor [%s] with id [%s:%s]", actorRef.actorClass.getName, actorRef.id, actorRef.uuid) val actorMap = actors() actorMap remove actorRef.id - if (actorRef.registeredInRemoteNodeDuringSerialization) actorMap remove actorRef.uuid + if (actorRef.registeredInRemoteNodeDuringSerialization) actorsByUuid() remove actorRef.uuid } } @@ -331,10 +351,15 @@ class RemoteServer extends Logging with ListenerManagement { def unregister(id: String):Unit = synchronized { if (_isRunning) { log.info("Unregistering server side remote actor with id [%s]", id) - val actorMap = actors() - val actorRef = actorMap get id - actorMap remove id - if (actorRef.registeredInRemoteNodeDuringSerialization) actorMap remove actorRef.uuid + if (id.startsWith(UUID_PREFIX)) { + actorsByUuid().remove(id.substring(UUID_PREFIX.length)) + } else { + if (actorRef.registeredInRemoteNodeDuringSerialization) { + val actorRef = actors().get(id) + actorsByUuid() remove actorRef.uuid + } + actors() remove id + } } } @@ -346,8 +371,11 @@ class RemoteServer extends Logging with ListenerManagement { def unregisterTypedActor(id: String):Unit = synchronized { if (_isRunning) { log.info("Unregistering server side remote typed actor with id [%s]", id) - val registeredTypedActors = typedActors() - registeredTypedActors.remove(id) + if (id.startsWith(UUID_PREFIX)) { + typedActorsByUuid().remove(id.substring(UUID_PREFIX.length)) + } else { + typedActors().remove(id) + } } } @@ -356,7 +384,9 @@ class RemoteServer extends Logging with ListenerManagement { protected[akka] override def notifyListeners(message: => Any): Unit = super.notifyListeners(message) private[akka] def actors() = RemoteServer.actorsFor(address).actors + private[akka] def actorsByUuid() = RemoteServer.actorsFor(address).actorsByUuid private[akka] def typedActors() = RemoteServer.actorsFor(address).typedActors + private[akka] def typedActorsByUuid() = RemoteServer.actorsFor(address).typedActorsByUuid } object RemoteServerSslContext { @@ -419,6 +449,7 @@ class RemoteServerHandler( val openChannels: ChannelGroup, val applicationLoader: Option[ClassLoader], val server: RemoteServer) extends SimpleChannelUpstreamHandler with Logging { + import RemoteServer._ val AW_PROXY_PREFIX = "$$ProxiedByAW".intern applicationLoader.foreach(MessageSerializer.setClassLoader(_)) @@ -565,32 +596,23 @@ class RemoteServerHandler( } } - /** - * Find a registered actor by ID (default) or UUID. - * Actors are registered by id apart from registering during serialization see SerializationProtocol. - */ - private def findActorByIdOrUuid(id: String, uuid: String) : ActorRef = { - val registeredActors = server.actors() - var actorRefOrNull = registeredActors get id - if (actorRefOrNull eq null) { - actorRefOrNull = registeredActors get uuid - } - actorRefOrNull + private def findActorById(id: String) : ActorRef = { + server.actors().get(id) } - /** - * Find a registered typed actor by ID (default) or UUID. - * Actors are registered by id apart from registering during serialization see SerializationProtocol. - */ - private def findTypedActorByIdOrUUid(id: String, uuid: String) : AnyRef = { - val registeredActors = server.typedActors() - var actorRefOrNull = registeredActors get id - if (actorRefOrNull eq null) { - actorRefOrNull = registeredActors get uuid - } - actorRefOrNull + private def findActorByUuid(uuid: String) : ActorRef = { + server.actorsByUuid().get(uuid) } + private def findTypedActorById(id: String) : AnyRef = { + server.typedActors().get(id) + } + + private def findTypedActorByUuid(uuid: String) : AnyRef = { + server.typedActorsByUuid().get(uuid) + } + + /** * Creates a new instance of the actor with name, uuid and timeout specified as arguments. * @@ -605,8 +627,12 @@ class RemoteServerHandler( val name = actorInfo.getTarget val timeout = actorInfo.getTimeout - val actorRefOrNull = findActorByIdOrUuid(id, uuid) - + val actorRefOrNull = if (id.startsWith(UUID_PREFIX)) { + findActorByUuid(id.substring(UUID_PREFIX.length)) + } else { + findActorById(id) + } + if (actorRefOrNull eq null) { try { log.info("Creating a new remote actor [%s:%s]", name, uuid) @@ -632,7 +658,11 @@ class RemoteServerHandler( val uuid = actorInfo.getUuid val id = actorInfo.getId - val typedActorOrNull = findTypedActorByIdOrUUid(id, uuid) + val typedActorOrNull = if (id.startsWith(UUID_PREFIX)) { + findTypedActorByUuid(id.substring(UUID_PREFIX.length)) + } else { + findTypedActorById(id) + } if (typedActorOrNull eq null) { val typedActorInfo = actorInfo.getTypedActorInfo diff --git a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala index 1577b62e13..43e52a92c8 100644 --- a/akka-remote/src/main/scala/serialization/SerializationProtocol.scala +++ b/akka-remote/src/main/scala/serialization/SerializationProtocol.scala @@ -249,7 +249,7 @@ object RemoteActorSerialization { if (!registeredInRemoteNodeDuringSerialization) { Actor.log.debug("Register serialized Actor [%s] as remote @ [%s:%s]", actorClass.getName, host, port) RemoteServer.getOrCreateServer(homeAddress) - RemoteServer.registerActor(homeAddress, uuid, ar) + RemoteServer.registerActorByUuid(homeAddress, uuid, ar) registeredInRemoteNodeDuringSerialization = true } diff --git a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala index 59f122c656..fbf723ece5 100644 --- a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala +++ b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteActorSpec.scala @@ -79,7 +79,6 @@ class ServerInitiatedRemoteActorSpec extends JUnitSuite { } } - @Test def shouldSendWithBang { val actor = RemoteClient.actorFor( @@ -178,5 +177,41 @@ class ServerInitiatedRemoteActorSpec extends JUnitSuite { assert(actor2.id == actor3.id) } + @Test + def shouldFindActorByUuid { + val actor1 = actorOf[RemoteActorSpecActorUnidirectional] + val actor2 = actorOf[RemoteActorSpecActorUnidirectional] + server.register("uuid:" + actor1.uuid, actor1) + server.register("my-service", actor2) + + val ref1 = RemoteClient.actorFor("uuid:" + actor1.uuid, HOSTNAME, PORT) + val ref2 = RemoteClient.actorFor("my-service", HOSTNAME, PORT) + + ref1 ! "OneWay" + assert(RemoteActorSpecActorUnidirectional.latch.await(1, TimeUnit.SECONDS)) + ref1.stop + ref2 ! "OneWay" + ref2.stop + + } + + @Test + def shouldRegisterAndUnregister { + val actor1 = actorOf[RemoteActorSpecActorUnidirectional] + server.register("my-service-1", actor1) + assert(server.actors().get("my-service-1") != null, "actor registered") + server.unregister("my-service-1") + assert(server.actors().get("my-service-1") == null, "actor unregistered") + } + + @Test + def shouldRegisterAndUnregisterByUuid { + val actor1 = actorOf[RemoteActorSpecActorUnidirectional] + server.register("uuid:" + actor1.uuid, actor1) + assert(server.actorsByUuid().get(actor1.uuid) != null, "actor registered") + server.unregister("uuid:" + actor1.uuid) + assert(server.actorsByUuid().get(actor1.uuid) == null, "actor unregistered") + } + } diff --git a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteTypedActorSpec.scala b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteTypedActorSpec.scala index b800fbf2c3..f50c3e6652 100644 --- a/akka-remote/src/test/scala/remote/ServerInitiatedRemoteTypedActorSpec.scala +++ b/akka-remote/src/test/scala/remote/ServerInitiatedRemoteTypedActorSpec.scala @@ -103,9 +103,34 @@ class ServerInitiatedRemoteTypedActorSpec extends it("should register and unregister typed actors") { val typedActor = TypedActor.newInstance(classOf[RemoteTypedActorOne], classOf[RemoteTypedActorOneImpl], 1000) server.registerTypedActor("my-test-service", typedActor) - assert(server.typedActors().get("my-test-service") != null) + assert(server.typedActors().get("my-test-service") != null, "typed actor registered") server.unregisterTypedActor("my-test-service") - assert(server.typedActors().get("my-test-service") == null) + assert(server.typedActors().get("my-test-service") == null, "typed actor unregistered") + } + + it("should register and unregister typed actors by uuid") { + val typedActor = TypedActor.newInstance(classOf[RemoteTypedActorOne], classOf[RemoteTypedActorOneImpl], 1000) + val init = AspectInitRegistry.initFor(typedActor) + val uuid = "uuid:" + init.actorRef.uuid + server.registerTypedActor(uuid, typedActor) + assert(server.typedActorsByUuid().get(init.actorRef.uuid) != null, "typed actor registered") + server.unregisterTypedActor(uuid) + assert(server.typedActorsByUuid().get(init.actorRef.uuid) == null, "typed actor unregistered") + } + + it("should find typed actors by uuid") { + val typedActor = TypedActor.newInstance(classOf[RemoteTypedActorOne], classOf[RemoteTypedActorOneImpl], 1000) + val init = AspectInitRegistry.initFor(typedActor) + val uuid = "uuid:" + init.actorRef.uuid + server.registerTypedActor(uuid, typedActor) + assert(server.typedActorsByUuid().get(init.actorRef.uuid) != null, "typed actor registered") + + val actor = RemoteClient.typedActorFor(classOf[RemoteTypedActorOne], uuid, HOSTNAME, PORT) + expect("oneway") { + actor.oneWay + oneWayLog.poll(5, TimeUnit.SECONDS) + } + } } } From 7b8d2a6628a99978144ff92eba9accd9eab07f44 Mon Sep 17 00:00:00 2001 From: Michael Kober Date: Mon, 20 Sep 2010 12:41:40 +0200 Subject: [PATCH 20/24] fixed merge --- akka-remote/src/main/scala/remote/RemoteServer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala index 3763bcb17b..0c8b305364 100644 --- a/akka-remote/src/main/scala/remote/RemoteServer.scala +++ b/akka-remote/src/main/scala/remote/RemoteServer.scala @@ -354,8 +354,8 @@ class RemoteServer extends Logging with ListenerManagement { if (id.startsWith(UUID_PREFIX)) { actorsByUuid().remove(id.substring(UUID_PREFIX.length)) } else { + val actorRef = actors().get(id) if (actorRef.registeredInRemoteNodeDuringSerialization) { - val actorRef = actors().get(id) actorsByUuid() remove actorRef.uuid } actors() remove id From 1d48b9104b6044a765acbed9d9f0bff66a38bd5e Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 13:24:18 +0200 Subject: [PATCH 21/24] Reverting some of the dataflow tests --- akka-actor/src/test/scala/dataflow/DataFlowSpec.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala index dc80e5129a..d1f663e9f4 100644 --- a/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala +++ b/akka-actor/src/test/scala/dataflow/DataFlowSpec.scala @@ -70,7 +70,7 @@ class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll { List(x,y,z).foreach(_.shutdown) } - it("should be able to join streams") { + /*it("should be able to join streams") { import DataFlow._ ActorRegistry.shutdownAll @@ -133,7 +133,7 @@ class DataFlowTest extends Spec with ShouldMatchers with BeforeAndAfterAll { thread { recurseSum(consumer) } latch.await(15,TimeUnit.SECONDS) should equal (true) - } + }*/ /* Test not ready for prime time, causes some sort of deadlock */ /* it("should be able to conditionally set variables") { From b1462ade30579834dd40adcd8bdd86b6064de35c Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 16:56:12 +0200 Subject: [PATCH 22/24] Threw away old ThreadBasedDispatcher and replaced it with an EBEDD with 1 in core pool and 1 in max pool --- .../ExecutorBasedEventDrivenDispatcher.scala | 10 ++++ .../dispatch/ThreadBasedDispatcher.scala | 54 ++++++------------- 2 files changed, 25 insertions(+), 39 deletions(-) diff --git a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala index 63ce310848..7a86c47c51 100644 --- a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala +++ b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala @@ -189,3 +189,13 @@ class ExecutorBasedEventDrivenDispatcher( buildThreadPool } } + +/** + * Usable to create a single-threaded dispatcher + */ +object SingleThread extends Function1[ThreadPoolBuilder,Unit] { + def apply(b: ThreadPoolBuilder) { + b setCorePoolSize 1 + b setMaxPoolSize 1 + } +} \ No newline at end of file diff --git a/akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala b/akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala index eda5a86a9e..090be85cee 100644 --- a/akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala +++ b/akka-actor/src/main/scala/dispatch/ThreadBasedDispatcher.scala @@ -11,6 +11,14 @@ import se.scalablesolutions.akka.config.Config.config import concurrent.forkjoin.{TransferQueue, LinkedTransferQueue} import java.util.concurrent.{ConcurrentLinkedQueue, BlockingQueue, TimeUnit, LinkedBlockingQueue} +object ThreadBasedDispatcher { + def oneThread(b: ThreadPoolBuilder) { + b setCorePoolSize 1 + b setMaxPoolSize 1 + b setAllowCoreThreadTimeout true + } +} + /** * Dedicates a unique thread for each actor passed in as reference. Served through its messageQueue. * @@ -18,16 +26,14 @@ import java.util.concurrent.{ConcurrentLinkedQueue, BlockingQueue, TimeUnit, Lin */ class ThreadBasedDispatcher(private val actor: ActorRef, val mailboxConfig: MailboxConfig - ) extends MessageDispatcher { + ) extends ExecutorBasedEventDrivenDispatcher( + actor.getClass.getName + ":" + actor.uuid, + Dispatchers.THROUGHPUT, + -1, + mailboxConfig, + ThreadBasedDispatcher.oneThread) { def this(actor: ActorRef, capacity: Int) = this(actor,MailboxConfig(capacity,None,true)) def this(actor: ActorRef) = this(actor, Dispatchers.MAILBOX_CAPACITY)// For Java - - private val name = actor.getClass.getName + ":" + actor.uuid - private val threadName = "akka:thread-based:dispatcher:" + name - private var selectorThread: Thread = _ - @volatile private var active: Boolean = false - - override def createMailbox(actorRef: ActorRef): AnyRef = mailboxConfig.newMailbox(blockDequeue = true) override def register(actorRef: ActorRef) = { if(actorRef != actor) @@ -36,35 +42,5 @@ class ThreadBasedDispatcher(private val actor: ActorRef, super.register(actorRef) } - def mailbox = actor.mailbox.asInstanceOf[Queue[MessageInvocation] with MessageQueue] - - def mailboxSize(a: ActorRef) = mailbox.size - - def dispatch(invocation: MessageInvocation) = mailbox enqueue invocation - - def start = if (!active) { - log.debug("Starting up %s", toString) - active = true - selectorThread = new Thread(threadName) { - override def run = { - while (active) { - try { - actor.invoke(mailbox.dequeue) - } catch { case e: InterruptedException => active = false } - } - } - } - selectorThread.start - } - - def isShutdown = !active - - def shutdown = if (active) { - log.debug("Shutting down %s", toString) - active = false - selectorThread.interrupt - uuids.clear - } - - override def toString = "ThreadBasedDispatcher[" + threadName + "]" + override def toString = "ThreadBasedDispatcher[" + name + "]" } \ No newline at end of file From d2abefc9829d007b9db0a07111e4cca59f7499c7 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 17:15:54 +0200 Subject: [PATCH 23/24] Folding 3 booleans into 1 reference, preparing for @volatile decimation --- .../src/main/scala/actor/ActorRef.scala | 51 ++++++++++++------- .../main/scala/component/ActorComponent.scala | 7 ++- .../src/main/scala/remote/RemoteServer.scala | 15 +++--- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/akka-actor/src/main/scala/actor/ActorRef.scala b/akka-actor/src/main/scala/actor/ActorRef.scala index 4905e62670..cddbb92fc3 100644 --- a/akka-actor/src/main/scala/actor/ActorRef.scala +++ b/akka-actor/src/main/scala/actor/ActorRef.scala @@ -28,6 +28,17 @@ import java.lang.reflect.Field import scala.reflect.BeanProperty + +object ActorRefStatus { + /** LifeCycles for ActorRefs + */ + private[akka] sealed trait StatusType + object UNSTARTED extends StatusType + object RUNNING extends StatusType + object BEING_RESTARTED extends StatusType + object SHUTDOWN extends StatusType +} + /** * ActorRef is an immutable and serializable handle to an Actor. *

    @@ -68,9 +79,7 @@ trait ActorRef extends // Only mutable for RemoteServer in order to maintain identity across nodes @volatile protected[akka] var _uuid = UUID.newUuid.toString - @volatile protected[this] var _isRunning = false - @volatile protected[this] var _isShutDown = false - @volatile protected[akka] var _isBeingRestarted = false + @volatile protected[this] var _status: ActorRefStatus.StatusType = ActorRefStatus.UNSTARTED @volatile protected[akka] var _homeAddress = new InetSocketAddress(RemoteServerModule.HOSTNAME, RemoteServerModule.PORT) @volatile protected[akka] var _futureTimeout: Option[ScheduledFuture[AnyRef]] = None @volatile protected[akka] var registeredInRemoteNodeDuringSerialization = false @@ -229,17 +238,25 @@ trait ActorRef extends /** * Is the actor being restarted? */ - def isBeingRestarted: Boolean = _isBeingRestarted + def isBeingRestarted: Boolean = _status == ActorRefStatus.BEING_RESTARTED /** * Is the actor running? */ - def isRunning: Boolean = _isRunning + def isRunning: Boolean = _status match { + case ActorRefStatus.BEING_RESTARTED | ActorRefStatus.RUNNING => true + case _ => false + } /** * Is the actor shut down? */ - def isShutdown: Boolean = _isShutDown + def isShutdown: Boolean = _status == ActorRefStatus.SHUTDOWN + + /** + * Is the actor ever started? + */ + def isUnstarted: Boolean = _status == ActorRefStatus.UNSTARTED /** * Is the actor able to handle the message passed in as arguments? @@ -800,7 +817,7 @@ class LocalActorRef private[akka]( if (isTransactor) { _transactionFactory = Some(TransactionFactory(_transactionConfig, id)) } - _isRunning = true + _status = ActorRefStatus.RUNNING if (!isInInitialization) initializeActorInstance else runActorInitialization = true } @@ -815,8 +832,7 @@ class LocalActorRef private[akka]( cancelReceiveTimeout dispatcher.unregister(this) _transactionFactory = None - _isRunning = false - _isShutDown = true + _status = ActorRefStatus.SHUTDOWN actor.postStop ActorRegistry.unregister(this) if (isRemotingEnabled) { @@ -1000,7 +1016,7 @@ class LocalActorRef private[akka]( } /** - * Callback for the dispatcher. This is the ingle entry point to the user Actor implementation. + * Callback for the dispatcher. This is the single entry point to the user Actor implementation. */ protected[akka] def invoke(messageHandle: MessageInvocation): Unit = guard.withGuard { if (isShutdown) @@ -1067,7 +1083,7 @@ class LocalActorRef private[akka]( stop } else { - _isBeingRestarted = true + _status = ActorRefStatus.BEING_RESTARTED val failedActor = actorInstance.get guard.withGuard { lifeCycle match { @@ -1077,10 +1093,12 @@ class LocalActorRef private[akka]( Actor.log.info("Restarting actor [%s] configured as PERMANENT.", id) Actor.log.debug("Restarting linked actors for actor [%s].", id) restartLinkedActors(reason, maxNrOfRetries, withinTimeRange) + Actor.log.debug("Invoking 'preRestart' for failed actor instance [%s].", id) if (isProxyableDispatcher(failedActor)) restartProxyableDispatcher(failedActor, reason) - else restartActor(failedActor, reason) - _isBeingRestarted = false + else restartActor(failedActor, reason) + + _status = ActorRefStatus.RUNNING } } } @@ -1236,7 +1254,7 @@ class LocalActorRef private[akka]( private def handleExceptionInDispatch(reason: Throwable, message: Any, topLevelTransaction: Boolean) = { Actor.log.error(reason, "Exception when invoking \n\tactor [%s] \n\twith message [%s]", this, message) - _isBeingRestarted = true + _status = ActorRefStatus.BEING_RESTARTED // abort transaction set if (isTransactionSetInScope) { val txSet = getTransactionSetInScope @@ -1376,13 +1394,12 @@ private[akka] case class RemoteActorRef private[akka] ( } def start: ActorRef = { - _isRunning = true + _status = ActorRefStatus.RUNNING this } def stop: Unit = { - _isRunning = false - _isShutDown = true + _status = ActorRefStatus.SHUTDOWN postMessageToMailbox(RemoteActorSystemMessage.Stop, None) } diff --git a/akka-camel/src/main/scala/component/ActorComponent.scala b/akka-camel/src/main/scala/component/ActorComponent.scala index 6c1c5902fa..89cc0d4d3e 100644 --- a/akka-camel/src/main/scala/component/ActorComponent.scala +++ b/akka-camel/src/main/scala/component/ActorComponent.scala @@ -18,10 +18,10 @@ import se.scalablesolutions.akka.camel.{Failure, CamelMessageConversion, Message import CamelMessageConversion.toExchangeAdapter import se.scalablesolutions.akka.dispatch.{CompletableFuture, MessageInvocation, MessageDispatcher} import se.scalablesolutions.akka.stm.TransactionConfig -import se.scalablesolutions.akka.actor.{ScalaActorRef, ActorRegistry, Actor, ActorRef} import se.scalablesolutions.akka.AkkaException import scala.reflect.BeanProperty +import se.scalablesolutions.akka.actor._ /** * Camel component for sending messages to and receiving replies from (untyped) actors. @@ -199,13 +199,12 @@ private[akka] object AsyncCallbackAdapter { private[akka] class AsyncCallbackAdapter(exchange: Exchange, callback: AsyncCallback) extends ActorRef with ScalaActorRef { def start = { - _isRunning = true + _status = ActorRefStatus.RUNNING this } def stop() = { - _isRunning = false - _isShutDown = true + _status = ActorRefStatus.SHUTDOWN } /** diff --git a/akka-remote/src/main/scala/remote/RemoteServer.scala b/akka-remote/src/main/scala/remote/RemoteServer.scala index 0c8b305364..b258c4867d 100644 --- a/akka-remote/src/main/scala/remote/RemoteServer.scala +++ b/akka-remote/src/main/scala/remote/RemoteServer.scala @@ -383,9 +383,9 @@ class RemoteServer extends Logging with ListenerManagement { protected[akka] override def notifyListeners(message: => Any): Unit = super.notifyListeners(message) - private[akka] def actors() = RemoteServer.actorsFor(address).actors + private[akka] def actors() = RemoteServer.actorsFor(address).actors private[akka] def actorsByUuid() = RemoteServer.actorsFor(address).actorsByUuid - private[akka] def typedActors() = RemoteServer.actorsFor(address).typedActors + private[akka] def typedActors() = RemoteServer.actorsFor(address).typedActors private[akka] def typedActorsByUuid() = RemoteServer.actorsFor(address).typedActorsByUuid } @@ -508,11 +508,12 @@ class RemoteServerHandler( private def handleRemoteRequestProtocol(request: RemoteRequestProtocol, channel: Channel) = { log.debug("Received RemoteRequestProtocol[\n%s]", request.toString) - val actorType = request.getActorInfo.getActorType - if (actorType == SCALA_ACTOR) dispatchToActor(request, channel) - else if (actorType == JAVA_ACTOR) throw new IllegalActorStateException("ActorType JAVA_ACTOR is currently not supported") - else if (actorType == TYPED_ACTOR) dispatchToTypedActor(request, channel) - else throw new IllegalActorStateException("Unknown ActorType [" + actorType + "]") + request.getActorInfo.getActorType match { + case SCALA_ACTOR => dispatchToActor(request, channel) + case TYPED_ACTOR => dispatchToTypedActor(request, channel) + case JAVA_ACTOR => throw new IllegalActorStateException("ActorType JAVA_ACTOR is currently not supported") + case other => throw new IllegalActorStateException("Unknown ActorType [" + other + "]") + } } private def dispatchToActor(request: RemoteRequestProtocol, channel: Channel) = { From 362c930623dfcb30eacf3a96acf2f971e6bcec99 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Mon, 20 Sep 2010 21:40:10 +0200 Subject: [PATCH 24/24] Removing dead code --- .../dispatch/ExecutorBasedEventDrivenDispatcher.scala | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala index 7a86c47c51..19e9cd38e7 100644 --- a/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala +++ b/akka-actor/src/main/scala/dispatch/ExecutorBasedEventDrivenDispatcher.scala @@ -188,14 +188,4 @@ class ExecutorBasedEventDrivenDispatcher( config(this) buildThreadPool } -} - -/** - * Usable to create a single-threaded dispatcher - */ -object SingleThread extends Function1[ThreadPoolBuilder,Unit] { - def apply(b: ThreadPoolBuilder) { - b setCorePoolSize 1 - b setMaxPoolSize 1 - } } \ No newline at end of file

    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 D#;4=Z delta 57188 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