# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marian.edu@acorn.ro-20200520113422-ldvy961j7oxzdryy # target_branch: https://proj.goldencode.com/downloads/skeletons/repo # testament_sha1: 16bd67137f05b53eb55d9450f5e75610d2282c9e # timestamp: 2020-05-20 14:34:27 +0300 # base_revision_id: ca@goldencode.com-20200503184235-79x833ed8u0jph3j # # Begin patch === added file 'oo4gl/OpenEdge/Core/Collections/AbstractTTCollection.cls' --- oo4gl/OpenEdge/Core/Collections/AbstractTTCollection.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/AbstractTTCollection.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,71 @@ +class OpenEdge.Core.Collections.AbstractTTCollection abstract serializable +implements OpenEdge.Core.Collections.ICollection: + + define public property Size as integer no-undo get. + + constructor public AbstractTTCollection(): + end constructor. + + constructor protected AbstractTTCollection (p1 as OpenEdge.Core.Collections.ICollection, p2 as handle, p3 as char): + end constructor. + + constructor protected AbstractTTCollection ( p1 as handle, p2 as char ): + end constructor. + + constructor protected AbstractTTCollection (p1 as handle, p2 as handle ): + end constructor. + + destructor AbstractTTCollection(): + end destructor. + + method public logical Add( p1 as Progress.Lang.Object): + end method. + + method public logical AddArray(p1 as Progress.Lang.Object extent): + end method. + + method public logical AddAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public void Clear( ): + end method. + + method public logical Contains( p1 as Progress.Lang.Object ): + end method. + + method public logical ContainsAll(input p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public OpenEdge.Core.Collections.IIterator Iterator( ): + end method. + + method public logical IsEmpty( ): + end method. + + method public void ToTable( output table-handle p1 ): + end method. + + method public logical Remove( p1 as Progress.Lang.Object ): + end method. + + method public logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public logical RetainAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public Progress.Lang.Object extent ToArray(): + end method. + + method abstract protected void FindBufferUseObject (p1 as Progress.Lang.Object). + + method override public Progress.Lang.Object Clone(): + end method. + + method protected void CloneElements(input p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method protected void Resize(): + end method. + +end class. === modified file 'oo4gl/OpenEdge/Core/Collections/Array.cls' --- oo4gl/OpenEdge/Core/Collections/Array.cls 2020-04-15 21:32:23 +0000 +++ oo4gl/OpenEdge/Core/Collections/Array.cls 2020-05-04 11:21:05 +0000 @@ -32,7 +32,7 @@ method public void Clear(): end. - method public Progress.Lang.Object Clone(): + method override public Progress.Lang.Object Clone(): end. method protected void CloneElements(p1 as OpenEdge.Core.Collections.ICollection): @@ -73,4 +73,4 @@ method public void ToTable(output table-handle p1): end. -end interface. +end class. === added file 'oo4gl/OpenEdge/Core/Collections/ArrayIterator.cls' --- oo4gl/OpenEdge/Core/Collections/ArrayIterator.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/ArrayIterator.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,17 @@ +class OpenEdge.Core.Collections.ArrayIterator implements OpenEdge.Core.Collections.IIterator: + define protected property CurrentExtent as integer no-undo get. set. + define protected property IteratedArray as OpenEdge.Core.Collections.Array no-undo get. set . + + constructor public ArrayIterator(input poIteratedArray as OpenEdge.Core.Collections.Array): + end method. + + method public logical HasNext(): + end method. + + method public Progress.Lang.Object Next(): + end method. + + method public logical Remove(): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Core/Collections/Collection.cls' --- oo4gl/OpenEdge/Core/Collections/Collection.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/Collection.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,24 @@ + +class OpenEdge.Core.Collections.Collection serializable inherits OpenEdge.Core.Collections.AbstractTTCollection: + constructor public Collection(): + end constructor. + + constructor public Collection (c as OpenEdge.Core.Collections.ICollection): + end constructor. + + method public override logical Contains( checkObject as Progress.Lang.Object): + end method. + + method protected override void FindBufferUseObject (obj as Progress.Lang.Object): + end method. + + /* + method protected void FindBufferUseObject(obj as Object, + buffer pbCollection for ttCollection): + end. + */ + + method public override logical Equals(o as Progress.Lang.Object): + end method. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/EntrySet.cls' --- oo4gl/OpenEdge/Core/Collections/EntrySet.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/EntrySet.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,26 @@ +class OpenEdge.Core.Collections.EntrySet serializable +inherits OpenEdge.Core.Collections.MapBackedCollection +implements OpenEdge.Core.Collections.ISet: + + constructor public EntrySet (p1 as OpenEdge.Core.Collections.IMap, p2 as handle, p3 as char): + end constructor. + + method public override OpenEdge.Core.Collections.IIterator Iterator(): + end method. + + method override public logical Contains( p1 as Progress.Lang.Object): + end method. + + method override public logical ContainsAll(input p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method override public logical Remove(p1 as Progress.Lang.Object): + end method. + + method override public logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method override public logical RetainAll(input p1 as OpenEdge.Core.Collections.ICollection). + end method. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/EntrySetIterator.cls' --- oo4gl/OpenEdge/Core/Collections/EntrySetIterator.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/EntrySetIterator.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,12 @@ +class OpenEdge.Core.Collections.EntrySetIterator +inherits OpenEdge.Core.Collections.Iterator: + + define protected property OwningMap as OpenEdge.Core.Collections.IMap no-undo get. set. + + constructor public EntrySetIterator (p1 as OpenEdge.Core.Collections.IMap, p2 as OpenEdge.Core.Collections.ICollection, p3 as handle, p4 as char): + end constructor. + + method public override Progress.Lang.Object Next(): + end method. + +end class. === modified file 'oo4gl/OpenEdge/Core/Collections/ICollection.cls' --- oo4gl/OpenEdge/Core/Collections/ICollection.cls 2020-04-15 21:32:23 +0000 +++ oo4gl/OpenEdge/Core/Collections/ICollection.cls 2020-05-04 11:21:05 +0000 @@ -6,7 +6,7 @@ method public logical Add(input obj as Progress.Lang.Object). - method public logical AddAll(input col as OpenEdge.Core.Collections.ICollection). + method public logical AddAll(input oCol as OpenEdge.Core.Collections.ICollection). method public logical AddArray(input obj as Progress.Lang.Object extent). @@ -14,15 +14,15 @@ method public logical Contains(input obj as Progress.Lang.Object). - method public logical ContainsAll(input col as OpenEdge.Core.Collections.ICollection). + method public logical ContainsAll(input oCol as OpenEdge.Core.Collections.ICollection). method public logical IsEmpty(). method public logical Remove(input obj as Progress.Lang.Object). - method public logical RemoveAll(input col as OpenEdge.Core.Collections.ICollection). + method public logical RemoveAll(input oCol as OpenEdge.Core.Collections.ICollection). - method public logical RetainAll(input col as OpenEdge.Core.Collections.ICollection). + method public logical RetainAll(input oCol as OpenEdge.Core.Collections.ICollection). method public Progress.Lang.Object extent ToArray(). === modified file 'oo4gl/OpenEdge/Core/Collections/IMap.cls' --- oo4gl/OpenEdge/Core/Collections/IMap.cls 2018-10-30 16:53:54 +0000 +++ oo4gl/OpenEdge/Core/Collections/IMap.cls 2020-05-04 11:21:05 +0000 @@ -15,9 +15,9 @@ method public void Clear(). - method public logical ContainsAllKeys(input col as OpenEdge.Core.Collections.ICollection). + method public logical ContainsAllKeys(input oCol as OpenEdge.Core.Collections.ICollection). - method public logical ContainsAllValues(input col as OpenEdge.Core.Collections.ICollection). + method public logical ContainsAllValues(input oCol as OpenEdge.Core.Collections.ICollection). method public logical ContainsKey(input obj as Progress.Lang.Object). @@ -33,6 +33,6 @@ method public Progress.Lang.Object Remove(input obj as Progress.Lang.Object). - method public void RemoveAll(input col as OpenEdge.Core.Collections.ICollection). + method public void RemoveAll(input oCol as OpenEdge.Core.Collections.ICollection). end interface. \ No newline at end of file === added file 'oo4gl/OpenEdge/Core/Collections/IMapEntry.cls' --- oo4gl/OpenEdge/Core/Collections/IMapEntry.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/IMapEntry.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,5 @@ + +interface OpenEdge.Core.Collections.IMapEntry: + define property Key as Progress.Lang.Object no-undo get. + define property Value as Progress.Lang.Object no-undo get. set. +end interface. \ No newline at end of file === added file 'oo4gl/OpenEdge/Core/Collections/Iterator.cls' --- oo4gl/OpenEdge/Core/Collections/Iterator.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/Iterator.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,29 @@ +class OpenEdge.Core.Collections.Iterator use-widget-pool implements OpenEdge.Core.Collections.IIterator : + + define protected property OwnerCollection as OpenEdge.Core.Collections.ICollection no-undo get. set . + define protected property QueryHandle as handle no-undo get. set . + define protected property BufferHandle as handle no-undo get. set . + define protected property ObjectFieldHandle as handle no-undo get. set . + + constructor public Iterator (p1 as OpenEdge.Core.Collections.ICollection, p2 as handle, p3 as char): + end constructor. + + constructor public Iterator (p1 as OpenEdge.Core.Collections.ICollection, p2 as handle, p3 as char, p4 as char): + end. + + constructor public Iterator (p1 as OpenEdge.Core.Collections.ICollection, p2 as handle, p3 as char, p4 as char, p5 as char): + end constructor. + + method public logical HasNext( ): + end method. + + method public Progress.Lang.Object Next( ): + end method. + + method public logical Remove( ): + end method. + + destructor public Iterator ( ): + end destructor. + + end class. === added file 'oo4gl/OpenEdge/Core/Collections/KeySet.cls' --- oo4gl/OpenEdge/Core/Collections/KeySet.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/KeySet.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,25 @@ +class OpenEdge.Core.Collections.KeySet serializable inherits OpenEdge.Core.Collections.MapBackedCollection + implements OpenEdge.Core.Collections.ISet: + + constructor public KeySet (p1 as OpenEdge.Core.Collections.IMap, p2 as handle, p3 as char): + end constructor. + + method public override logical Contains(p1 as Progress.Lang.Object): + end method. + + method override public logical ContainsAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public override logical Equals(p1 as Progress.Lang.Object): + end method. + + method public override logical Remove(p1 as Progress.Lang.Object ): + end method. + + method public override logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public override logical RetainAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/Map.cls' --- oo4gl/OpenEdge/Core/Collections/Map.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/Map.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,57 @@ +class OpenEdge.Core.Collections.Map serializable + implements OpenEdge.Core.Collections.IMap: + + define public property Size as integer no-undo get. + + define public property Values as OpenEdge.Core.Collections.ICollection no-undo get. + + define public property KeySet as OpenEdge.Core.Collections.ISet no-undo get. + + define public property EntrySet as OpenEdge.Core.Collections.ISet no-undo get. + + method public void Clear(): + end method. + + method public override logical Equals(o as Progress.Lang.Object): + end method. + + method public logical IsEmpty( ): + end method. + + method public logical ContainsKey(input poKey as Progress.Lang.Object): + end method. + + method public logical ContainsAllKeys(input poKeys as OpenEdge.Core.Collections.ICollection): + end method. + + method public logical ContainsAllValues(input poValues as OpenEdge.Core.Collections.ICollection): + end method. + + method public logical ContainsValue(poValue as class Progress.Lang.Object): + end method. + + method public Progress.Lang.Object Get(poKey as Progress.Lang.Object): + end method. + + method public Progress.Lang.Object Put(poKey as Progress.Lang.Object, poValue as class Progress.Lang.Object): + end method. + + method public void PutAll(poMap as OpenEdge.Core.Collections.IMap): + end method. + + method public Progress.Lang.Object Remove(input poKey as Progress.Lang.Object): + end method. + + method public void RemoveAll(input poKeys as OpenEdge.Core.Collections.ICollection). + end method. + + constructor public Map (input poMap as OpenEdge.Core.Collections.IMap): + end constructor. + + constructor public Map ( ): + end constructor. + + destructor public Map ( ): + end destructor. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/MapBackedCollection.cls' --- oo4gl/OpenEdge/Core/Collections/MapBackedCollection.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/MapBackedCollection.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,47 @@ +class OpenEdge.Core.Collections.MapBackedCollection abstract serializable + implements OpenEdge.Core.Collections.ICollection: + + define protected property OwningMap as OpenEdge.Core.Collections.IMap no-undo get. + define protected property OwningBuffer as handle no-undo get. + define protected property KeyField as handle no-undo get. + + define public property Size as integer no-undo get. + + constructor public MapBackedCollection(poMap as OpenEdge.Core.Collections.IMap, phTT as handle, pcValuefield as char): + end constructor. + + method public logical Add(p1 as Progress.Lang.Object): + end method. + + method public logical AddAll( p1 as OpenEdge.Core.Collections.ICollection ): + end method. + + method public logical AddArray(p1 as Progress.Lang.Object extent ): + end method. + + method public void Clear(): + end method. + + method public logical IsEmpty(): + end method. + + method abstract public logical Contains( p1 as Progress.Lang.Object). + + method abstract public logical ContainsAll(input p1 as OpenEdge.Core.Collections.ICollection). + + method abstract public logical Remove( p1 as Progress.Lang.Object). + + method abstract public logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection). + + method abstract public logical RetainAll(input p1 as OpenEdge.Core.Collections.ICollection). + + method public OpenEdge.Core.Collections.IIterator Iterator( ): + end method. + + method public Progress.Lang.Object extent ToArray(): + end method. + + method public void ToTable( output table-handle p1): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Core/Collections/MapEntry.cls' --- oo4gl/OpenEdge/Core/Collections/MapEntry.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/MapEntry.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,18 @@ +class OpenEdge.Core.Collections.MapEntry serializable +implements OpenEdge.Core.Collections.IMapEntry: + + define protected property OwningMap as OpenEdge.Core.Collections.IMap no-undo get. set. + + define public property Key as Progress.Lang.Object no-undo get. + + + define public property Value as Progress.Lang.Object no-undo get. set. + + constructor public MapEntry (p1 as OpenEdge.Core.Collections.IMap, p2 as Progress.Lang.Object): + end constructor. + + method public override logical Equals(p1 as Progress.Lang.Object): + end method. + + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/Set.cls' --- oo4gl/OpenEdge/Core/Collections/Set.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/Set.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,36 @@ +class OpenEdge.Core.Collections.Set +inherits OpenEdge.Core.Collections.AbstractTTCollection +implements OpenEdge.Core.Collections.ISet : + + constructor public Set ( ): + end constructor. + + constructor public Set (p1 as OpenEdge.Core.Collections.ISet): + end constructor. + + method public override logical Contains( p1 as Progress.Lang.Object): + end method. + + method protected override void FindBufferUseObject (p1 as Progress.Lang.Object): + end method. + + /* + method protected void FindBufferUseObject(obj as Object, + buffer pbSet for ttSet): + + end. + */ + + method public override logical Add(p1 as Progress.Lang.Object): + end method. + + method public override logical AddAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method public override logical Equals(p1 as Progress.Lang.Object): + end method. + + method public override logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/StringKeyedMap.cls' --- oo4gl/OpenEdge/Core/Collections/StringKeyedMap.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/StringKeyedMap.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,54 @@ +class OpenEdge.Core.Collections.StringKeyedMap +inherits OpenEdge.Core.Collections.Map +implements OpenEdge.Core.Collections.IStringKeyedMap: + + constructor public StringKeyedMap(input poMap as OpenEdge.Core.Collections.IStringKeyedMap): + end constructor. + + constructor public StringKeyedMap(): + end constructor. + + method public Progress.Lang.Object Put(input poKey as OpenEdge.Core.String, input poValue as Progress.Lang.Object): + end method. + + method override public Progress.Lang.Object Put(input poKey as Progress.Lang.Object, input poValue as Progress.Lang.Object): + end method. + + method public Progress.Lang.Object Remove(input poKey as OpenEdge.Core.String): + end method. + + method override public Progress.Lang.Object Remove(input poKey as Progress.Lang.Object): + end method. + + + method override public logical ContainsKey(input poKey as Progress.Lang.Object): + end method. + + method public logical ContainsKey(input poKey as OpenEdge.Core.String): + end method. + + method override public Progress.Lang.Object Get(input poKey as Progress.Lang.Object): + end method. + + method public Progress.Lang.Object Get(input poKey as OpenEdge.Core.String): + end method. + + method public void PutAll(input poMap as OpenEdge.Core.Collections.IStringKeyedMap): + end method. + + method override public void PutAll(input poMap as OpenEdge.Core.Collections.IMap): + end method. + + method public Progress.Lang.Object Put(input pcKey as character, input poValue as Progress.Lang.Object): + end method. + + method public Progress.Lang.Object Get(input pcKey as character): + end method. + + method public Progress.Lang.Object Remove(input pcKey as character): + end method. + + method public logical ContainsKey(input pcKey as character): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Core/Collections/StringStringMap.cls' --- oo4gl/OpenEdge/Core/Collections/StringStringMap.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/StringStringMap.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,62 @@ +class OpenEdge.Core.Collections.StringStringMap +inherits OpenEdge.Core.Collections.Map +implements OpenEdge.Core.Collections.IStringStringMap: + + constructor public StringStringMap(input poMap as OpenEdge.Core.Collections.IStringStringMap): + end constructor. + + constructor public StringStringMap(): + end constructor. + + method public OpenEdge.Core.String Put(input poKey as OpenEdge.Core.String, input poValue as OpenEdge.Core.String): + end method. + + method override public Progress.Lang.Object Put(input poKey as Progress.Lang.Object, input poValue as Progress.Lang.Object): + end method. + + method public OpenEdge.Core.String Remove(input poKey as OpenEdge.Core.String): + end method. + + method override public Progress.Lang.Object Remove(input poKey as Progress.Lang.Object): + end method. + + method override public logical ContainsKey(input poKey as Progress.Lang.Object): + end method. + + method public logical ContainsKey(input poKey as OpenEdge.Core.String): + end method. + + method override public logical ContainsValue(input poValue as Progress.Lang.Object): + end method. + + method public logical ContainsValue(input poValue as OpenEdge.Core.String): + end method. + + method override public Progress.Lang.Object Get(input poKey as Progress.Lang.Object): + end method. + + method public OpenEdge.Core.String Get(input poKey as OpenEdge.Core.String): + end method. + + method public void PutAll(input poMap as OpenEdge.Core.Collections.IStringStringMap): + end method. + + method override public void PutAll(input poMap as OpenEdge.Core.Collections.IMap): + end method. + + method public longchar Put(input pcKey as character, input pcValue as longchar): + end method. + + method public longchar Get(input pcKey as character): + end method. + + method public longchar Remove(input pcKey as character): + end method. + + method public logical ContainsKey(input pcKey as character): + end method. + + method public logical ContainsValue(input pcValue as character): + end method. + +end class. === added file 'oo4gl/OpenEdge/Core/Collections/ValueCollection.cls' --- oo4gl/OpenEdge/Core/Collections/ValueCollection.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/Collections/ValueCollection.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,20 @@ +class OpenEdge.Core.Collections.ValueCollection serializable inherits OpenEdge.Core.Collections.MapBackedCollection: + + constructor public ValueCollection(p1 as OpenEdge.Core.Collections.IMap, p2 as handle, p3 as char): + end constructor. + + method override public logical Contains( p1 as Progress.Lang.Object): + end method. + + method override public logical ContainsAll(input p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method override public logical Remove(p1 as Progress.Lang.Object): + end method. + + method override public logical RemoveAll(p1 as OpenEdge.Core.Collections.ICollection): + end method. + + method override public logical RetainAll(p2 as OpenEdge.Core.Collections.ICollection): + end method. +end class. === modified file 'oo4gl/OpenEdge/Core/ISupportEncoding.cls' --- oo4gl/OpenEdge/Core/ISupportEncoding.cls 2018-11-20 18:35:49 +0000 +++ oo4gl/OpenEdge/Core/ISupportEncoding.cls 2020-05-04 11:21:05 +0000 @@ -2,4 +2,4 @@ define public property Encoding as character get. -end class. +end interface. === modified file 'oo4gl/OpenEdge/Core/String.cls' --- oo4gl/OpenEdge/Core/String.cls 2020-04-15 21:32:23 +0000 +++ oo4gl/OpenEdge/Core/String.cls 2020-05-04 11:21:05 +0000 @@ -26,7 +26,7 @@ method public static OpenEdge.Core.String Empty(): end. - method public logical Equals(p1 as Progress.Lang.Object): + method override public logical Equals(p1 as Progress.Lang.Object): end. method public logical IsNullOrEmpty(): @@ -74,7 +74,7 @@ method public static OpenEdge.Core.Collections.Array Split(p1 as OpenEdge.Core.String, p2 as character): end. - method public character ToString(): + method override public character ToString(): end. method public void Trim(): === added file 'oo4gl/OpenEdge/Core/System/UnsupportedOperationError.cls' --- oo4gl/OpenEdge/Core/System/UnsupportedOperationError.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Core/System/UnsupportedOperationError.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,11 @@ +class OpenEdge.Core.System.UnsupportedOperationError inherits OpenEdge.Core.System.ApplicationError: + constructor static UnsupportedOperationError(): + end constructor. + + constructor public UnsupportedOperationError (p1 as char, p2 as char): + end constructor. + + constructor public UnsupportedOperationError (p1 as Error, p2 as char, p3 as char): + end constructor. + +end class. === added file 'oo4gl/OpenEdge/Net/HTTP/AuthenticationMethodEnum.cls' --- oo4gl/OpenEdge/Net/HTTP/AuthenticationMethodEnum.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/AuthenticationMethodEnum.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,9 @@ +enum OpenEdge.Net.HTTP.AuthenticationMethodEnum: + define enum None = 0 + Basic + Digest + Form + Other + Bearer + . +end enum. === added file 'oo4gl/OpenEdge/Net/HTTP/AuthenticationRequestEventArgs.cls' --- oo4gl/OpenEdge/Net/HTTP/AuthenticationRequestEventArgs.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/AuthenticationRequestEventArgs.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,14 @@ +class OpenEdge.Net.HTTP.AuthenticationRequestEventArgs: + define public property Request as OpenEdge.Net.HTTP.IHttpRequest no-undo get. + + define public property Realm as character no-undo get. private set. + + define public property Credentials as OpenEdge.Net.HTTP.Credentials no-undo get. set. + + define public property Cancel as logical no-undo get. set. + + constructor public AuthenticationRequestEventArgs(input poRequest as OpenEdge.Net.HTTP.IHttpRequest, + input pcRealm as character): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/AuthorizationHeader.cls' --- oo4gl/OpenEdge/Net/HTTP/AuthorizationHeader.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/AuthorizationHeader.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,11 @@ +class OpenEdge.Net.HTTP.AuthorizationHeader inherits OpenEdge.Net.HTTP.HttpHeader: + constructor public AuthorizationHeader(input pName as character): + end constructor. + + constructor public AuthorizationHeader (input pName as character, input pValue as character): + end constructor. + + method override protected void Validate(input pValue as character): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/AuthorizationHeaderBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/AuthorizationHeaderBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/AuthorizationHeaderBuilder.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,5 @@ + +class OpenEdge.Net.HTTP.AuthorizationHeaderBuilder inherits OpenEdge.Net.HTTP.DefaultHeaderBuilder: + constructor public AuthorizationHeaderBuilder (input pHeaderName as character): + end constructor. +end class. \ No newline at end of file === modified file 'oo4gl/OpenEdge/Net/HTTP/ClientBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/ClientBuilder.cls 2019-09-27 04:13:43 +0000 +++ oo4gl/OpenEdge/Net/HTTP/ClientBuilder.cls 2020-05-04 11:21:05 +0000 @@ -1,24 +1,20 @@ class OpenEdge.Net.HTTP.ClientBuilder inherits OpenEdge.Net.HTTP.ConfigBuilder -implements OpenEdge.Core.ISupportInitialize abstract: define public static property Registry as OpenEdge.Net.HTTP.BuilderRegistry get. - define public property Client as OpenEdge.Net.HTTP.IHttpClient get. - define public property PROP_CLIENT_NAME as character get. - define public property PROP_CLIENT_VERSION as character get. + define public abstract property Client as OpenEdge.Net.HTTP.IHttpClient get. + define protected property PROP_CLIENT_NAME as character get. + define protected property PROP_CLIENT_VERSION as character get. method public static OpenEdge.Net.HTTP.ClientBuilder Build(): end. - method public OpenEdge.Net.HTTP.IHttpClientLibrary BuildLibrary(): + method protected OpenEdge.Net.HTTP.IHttpClientLibrary BuildLibrary(): end. method public static OpenEdge.Net.HTTP.IHttpClient DecorateClient(p1 as Progress.Lang.Class, p2 as OpenEdge.Net.HTTP.ihttpclient): end. - method public static void InitializeRegistry(p1 as OpenEdge.Net.HTTP.BuilderRegistry): - end. - method public OpenEdge.Net.HTTP.ClientBuilder KeepCookies(): end. === added file 'oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeader.cls' --- oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeader.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeader.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,47 @@ +/************************************************ +Copyright (c) 2016, 2018 by Progress Software Corporation. All rights reserved. +*************************************************/ +/*------------------------------------------------------------------------ + File : ContentDispositionHeader + Purpose : + Syntax : + Description : + Author(s) : pjudge + Created : 2016-07-01 + Notes : * Header per spec http://tools.ietf.org/html/rfc6266 + ----------------------------------------------------------------------*/ +block-level on error undo, throw. + +using OpenEdge.Core.StringConstant. +using OpenEdge.Net.HTTP.HttpHeader. + +class OpenEdge.Net.HTTP.ContentDispositionHeader inherits HttpHeader: + /* Constructor + + @param character A non-empty header name */ + constructor public ContentDispositionHeader(input pcName as character): + super (pcName). + assign this-object:ParamDelimiter = ';':u. + end constructor. + + /* Constructor + + @param character A non-empty header name + @param character A valid header value */ + constructor public ContentDispositionHeader (input pcName as character, input pcValue as character): + super(pcName, pcValue). + assign this-object:ParamDelimiter = ';':u. + end constructor. + + method override public logical SetParameterValue( input pcParamName as character, input pcParamValue as character ): + case pcParamName: + when 'filename':u or + when 'name':u then + if not OpenEdge.Core.String:IsQuoted(pcParamValue) then + assign pcParamValue = StringConstant:DOUBLE_QUOTE + pcParamValue + StringConstant:DOUBLE_QUOTE. + end case. + + return super:SetParameterValue(input pcParamName, input pcParamValue). + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeaderBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeaderBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/ContentDispositionHeaderBuilder.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,31 @@ +/************************************************ +Copyright (c) 2016 by Progress Software Corporation. All rights reserved. +*************************************************/ +/*------------------------------------------------------------------------ + File : ContentDispositionHeaderBuilder + Purpose : Bulider to create Content-Disposition header objects + Syntax : + Description : + Author(s) : pjudge + Created : 2016-07-01 + Notes : + ----------------------------------------------------------------------*/ +block-level on error undo, throw. + +using OpenEdge.Net.HTTP.ContentDispositionHeader. +using OpenEdge.Net.HTTP.DefaultHeaderBuilder. +using OpenEdge.Net.HTTP.HttpHeader. + +class OpenEdge.Net.HTTP.ContentDispositionHeaderBuilder inherits DefaultHeaderBuilder: + + /* Constructor + + @param character The name of the header to which this builder applies */ + constructor public ContentDispositionHeaderBuilder ( input pcHeaderName as character ): + super (input pcHeaderName). + + SetOption('paramDelimiter':u, ';':u). + SetOption(get-class(HttpHeader):TypeName, get-class(ContentDispositionHeader)). + end constructor. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/ContentTypeHeader.cls' --- oo4gl/OpenEdge/Net/HTTP/ContentTypeHeader.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/ContentTypeHeader.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,15 @@ +class OpenEdge.Net.HTTP.ContentTypeHeader inherits OpenEdge.Net.HTTP.HttpHeader: + constructor public ContentTypeHeader(input pcName as character): + end constructor. + + constructor public ContentTypeHeader (input pcName as character, input pcValue as character): + end constructor. + + method override protected void Validate( input pcValue as character ): + end method. + + method override public logical SetParameterValue(input pcParamName as character, + input pcParamValue as character ): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/ContentTypeHeaderBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/ContentTypeHeaderBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/ContentTypeHeaderBuilder.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,6 @@ +class OpenEdge.Net.HTTP.ContentTypeHeaderBuilder inherits OpenEdge.Net.HTTP.DefaultHeaderBuilder: + + constructor public ContentTypeHeaderBuilder ( input pcHeaderName as character ): + end constructor. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/DefaultCookieJarBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/DefaultCookieJarBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/DefaultCookieJarBuilder.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,8 @@ +class OpenEdge.Net.HTTP.DefaultCookieJarBuilder inherits OpenEdge.Net.HTTP.CookieJarBuilder: + + define override public property CookieJar as OpenEdge.Net.HTTP.ICookieJar no-undo get. + + constructor public DefaultCookieJarBuilder(): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/DefaultHeaderBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/DefaultHeaderBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/DefaultHeaderBuilder.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,11 @@ +class OpenEdge.Net.HTTP.DefaultHeaderBuilder inherits OpenEdge.Net.HTTP.HttpHeaderBuilder: + + define override public property Header as OpenEdge.Net.HTTP.HttpHeader no-undo get. + + constructor public DefaultHeaderBuilder(input p1 as character): + end. + + method protected OpenEdge.Net.HTTP.HttpHeader NewHeader(): + end. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/DefaultHttpClientBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/DefaultHttpClientBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/DefaultHttpClientBuilder.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,99 @@ +/************************************************ +Copyright (c) 2015-2016 by Progress Software Corporation. All rights reserved. +*************************************************/ +/*------------------------------------------------------------------------ + File : DefaultHttpClientBuilder + Purpose : + Syntax : + Description : + Author(s) : pjudge + Created : Wed Jan 14 14:53:46 EST 2015 + Notes : + ----------------------------------------------------------------------*/ +block-level on error undo, throw. + +using OpenEdge.Core.Assert. +using OpenEdge.Core.ISupportInitialize. +using OpenEdge.Logging.ILogWriter. +using OpenEdge.Logging.ISupportLogging. +using OpenEdge.Net.HTTP.ClientBuilder. +using OpenEdge.Net.HTTP.ICookieJar. +using OpenEdge.Net.HTTP.IHttpClient. +using OpenEdge.Net.HTTP.ISupportCookies. +using OpenEdge.Net.HTTP.ISupportProxy. +using OpenEdge.Net.URI. + +class OpenEdge.Net.HTTP.DefaultHttpClientBuilder inherits ClientBuilder + implements ISupportInitialize: + + /** Returns a configured client. */ + define override public property Client as IHttpClient no-undo + get(): + return NewClient(). + end get. + + constructor public DefaultHttpClientBuilder(): + super(). + end constructor. + + destructor public DefaultHttpClientBuilder(): + Destroy(). + end destructor. + + method public void Initialize(): + Named('OpenEdge-HttpClient':u, '0.4.0':u). + end method. + + method public void Destroy(): + end method. + /** Returns a useable HttpClient based on the config. + + @return IHttpClient A useable HttpClient instance */ + method private IHttpClient NewClient(): + define variable oClient as IHttpClient no-undo. + define variable oClientType as Progress.Lang.Class no-undo. + + /* INVOKE */ + Assert:IsTrue(HasOption(PROP_CLIENT_NAME)). + Assert:IsTrue(HasOption(PROP_CLIENT_VERSION)). + + assign oClientType = ClientBuilder:Registry:Get(get-class(IHttpClient):TypeName). + + /* We know the signature to the default client's constructor - make sure that the type we + get is of that type */ + Assert:IsType(oClientType, get-class(OpenEdge.Net.HTTP.HttpClient)). + + oClient = dynamic-new string(oClientType:TypeName) (GetOptionStringValue(PROP_CLIENT_NAME), + GetOptionStringValue(PROP_CLIENT_VERSION), + BuildLibrary() ). + + /* SET OPTIONS */ + if HasOption('numRetries':u) then + oClient:Options:NumRetries = GetOptionNumericValue('numRetries':u). + if HasOption('pauseBetweenRetry':u) then + oClient:Options:PauseBetweenRetry = GetOptionNumericValue('pauseBetweenRetry':u). + if HasOption('requestTimeout':u) then + oClient:Options:RequestTimeout = GetOptionNumericValue('requestTimeout':u). + + // Add logging if it's been passed in + if HasOption(get-class(ILogWriter):TypeName) + and type-of(oClient, ISupportLogging) then + assign cast(oClient, ISupportLogging):Logger = cast(GetOptionObjectValue(get-class(ILogWriter):TypeName), ILogWriter). + + /* INIT if needed */ + if type-of(oClient, ISupportInitialize) then + cast(oClient, ISupportInitialize):Initialize(). + + /* COOKIES? */ + if HasOption(get-class(ICookieJar):TypeName) then + assign oClient = ClientBuilder:DecorateClient(get-class(ISupportCookies), oClient) + cast(oClient, ISupportCookies):CookieJar = cast(GetOptionObjectValue(get-class(ICookieJar):TypeName), ICookieJar). + + /* PROXY? */ + if HasOption(get-class(ISupportProxy):TypeName) then + assign oClient = ClientBuilder:DecorateClient(get-class(ISupportProxy), oClient) + cast(oClient, ISupportProxy):ProxyURI = cast(GetOptionObjectValue(get-class(ISupportProxy):TypeName), URI). + return oClient. + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/DefaultRequestBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/DefaultRequestBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/DefaultRequestBuilder.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,8 @@ +class OpenEdge.Net.HTTP.DefaultRequestBuilder inherits OpenEdge.Net.HTTP.RequestBuilder: + define override public property Request as OpenEdge.Net.HTTP.IHttpRequest no-undo get. + + constructor public DefaultRequestBuilder (input p1 as character, + input p2 as OpenEdge.Net.URI): + end. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/DefaultResponseBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/DefaultResponseBuilder.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/DefaultResponseBuilder.cls 2020-05-04 11:21:05 +0000 @@ -0,0 +1,8 @@ +class OpenEdge.Net.HTTP.DefaultResponseBuilder inherits OpenEdge.Net.HTTP.ResponseBuilder: + /* custom implementation */ + define override public property Response as OpenEdge.Net.HTTP.IHttpResponse no-undo get. + + constructor public DefaultResponseBuilder(): + end. + +end class. \ No newline at end of file === added directory 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth' === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthFilterEventHandlerWrapper.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthFilterEventHandlerWrapper.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthFilterEventHandlerWrapper.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,12 @@ +class OpenEdge.Net.HTTP.Filter.Auth.AuthFilterEventHandlerWrapper implements OpenEdge.Net.HTTP.Filter.Auth.IAuthFilterEventHandler: + define public property Callback as handle no-undo get. + + constructor public AuthFilterEventHandlerWrapper(input phCallbackProcedure as handle): + end constructor. + + method public void AuthFilter_HttpCredentialRequestHandler( + input poSender as Progress.Lang.Object, + input poEventArgs as OpenEdge.Net.HTTP.AuthenticationRequestEventArgs ): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthenticationRequestFilter.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthenticationRequestFilter.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/AuthenticationRequestFilter.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,65 @@ +class OpenEdge.Net.HTTP.Filter.Auth.AuthenticationRequestFilter + implements OpenEdge.Net.HTTP.IHttpMessageWriter, OpenEdge.Net.HTTP.Filter.IFilterEvents, OpenEdge.Core.ISupportInitialize + abstract: + + define public event HttpCredentialRequest signature void ( + input poSender as Progress.Lang.Object, + input poEventArgs as OpenEdge.Net.HTTP.AuthenticationRequestEventArgs). + + define public property FilterEventListenerType as class Progress.Lang.Class no-undo get. + + define public property Message as OpenEdge.Net.HTTP.IHttpMessage no-undo get. private set. + + define protected property AuthenticatedRequest as OpenEdge.Net.HTTP.IAuthenticatedRequest no-undo get. private set. + + constructor public AuthenticationRequestFilter(input poRequest as OpenEdge.Net.HTTP.IAuthenticatedRequest): + end. + + destructor AuthenticationRequestFilter(): + end destructor. + + method public void Close(): + end method. + + method public void Flush(): + end method. + + method abstract protected void AddAuthentication(). + + method public void Open(): + end method. + + method public void Write(input-output pcData as longchar): + end method. + + method public void Write(input pmData as memptr): + end method. + + method public void Write(input poData as Progress.Lang.Object): + end method. + + method public void Write(input phData as handle): + end method. + + method public void Write(input-output pcData as character): + end method. + + method protected void OnHttpCredentialRequest(input poAuthRequestArgs as OpenEdge.Net.HTTP.AuthenticationRequestEventArgs): + end method. + + method protected OpenEdge.Net.HTTP.Credentials GetCredentials(input pcRealm as character): + end method. + + method public void SubscribeListener(input poListener as Progress.Lang.Object): + end method. + + method public void UnsubscribeListener(input poListener as Progress.Lang.Object): + end method. + + method public void Initialize(): + end method. + + method public void Destroy( ): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/BasicAuthenticationFilter.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/BasicAuthenticationFilter.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/BasicAuthenticationFilter.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,11 @@ +class OpenEdge.Net.HTTP.Filter.Auth.BasicAuthenticationFilter + inherits OpenEdge.Net.HTTP.Filter.Auth.AuthenticationRequestFilter: + + constructor public BasicAuthenticationFilter (input poRequest as OpenEdge.Net.HTTP.IAuthenticatedRequest ): + super(poRequest). + end constructor. + + method override protected void AddAuthentication(): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/DigestAuthenticationFilter.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/DigestAuthenticationFilter.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/DigestAuthenticationFilter.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,14 @@ +class OpenEdge.Net.HTTP.Filter.Auth.DigestAuthenticationFilter + inherits OpenEdge.Net.HTTP.Filter.Auth.AuthenticationRequestFilter: + + constructor public DigestAuthenticationFilter ( input poRequest as OpenEdge.Net.HTTP.IAuthenticatedRequest ): + super(poRequest). + end constructor. + + destructor DigestAuthenticationFilter(): + end destructor. + + method override protected void AddAuthentication(): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/IAuthFilterEventHandler.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/IAuthFilterEventHandler.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/IAuthFilterEventHandler.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,6 @@ +interface OpenEdge.Net.HTTP.Filter.Auth.IAuthFilterEventHandler: + method public void AuthFilter_HttpCredentialRequestHandler( + input poSender as Progress.Lang.Object, + input poEventArgs as OpenEdge.Net.HTTP.AuthenticationRequestEventArgs). + +end interface. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/Auth/NoAuthenticationFilter.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Auth/NoAuthenticationFilter.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Auth/NoAuthenticationFilter.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,11 @@ +class OpenEdge.Net.HTTP.Filter.Auth.NoAuthenticationFilter + inherits OpenEdge.Net.HTTP.Filter.Auth.AuthenticationRequestFilter: + + constructor public NoAuthenticationFilter ( input poRequest as OpenEdge.Net.HTTP.IAuthenticatedRequest ): + super(poRequest). + end constructor. + + method override protected void AddAuthentication(): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/Filter/IFilterEvents.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/IFilterEvents.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/IFilterEvents.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,8 @@ +interface OpenEdge.Net.HTTP.Filter.IFilterEvents: + define public property FilterEventListenerType as class Progress.Lang.Class no-undo get. + + method public void SubscribeListener(input poListener as Progress.Lang.Object). + + method public void UnsubscribeListener(input poListener as Progress.Lang.Object). + +end interface. \ No newline at end of file === modified file 'oo4gl/OpenEdge/Net/HTTP/Filter/Payload/MessageWriter.cls' --- oo4gl/OpenEdge/Net/HTTP/Filter/Payload/MessageWriter.cls 2019-10-15 15:22:42 +0000 +++ oo4gl/OpenEdge/Net/HTTP/Filter/Payload/MessageWriter.cls 2020-05-04 11:21:05 +0000 @@ -26,7 +26,7 @@ input poLogLevel as OpenEdge.Logging.LogLevelEnum): end. - method override public void Open(): + method public void Open(): end. method override public int64 Write(input p0 as character): @@ -45,7 +45,6 @@ end. method abstract public int64 Write(input poData as Progress.Lang.Object). - end. method protected int64 WriteFileStream(input pStream as Progress.IO.FileInputStream): end. === modified file 'oo4gl/OpenEdge/Net/HTTP/HttpHeaderBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/HttpHeaderBuilder.cls 2019-08-03 14:51:56 +0000 +++ oo4gl/OpenEdge/Net/HTTP/HttpHeaderBuilder.cls 2020-05-20 11:34:22 +0000 @@ -1,25 +1,25 @@ class OpenEdge.Net.HTTP.HttpHeaderBuilder -inherits OpenEdge.Net.HTTP.ConfigBuilder. - define public static property Registry as openedge.net.http.builderregistry no-undo get. private set. +inherits OpenEdge.Net.HTTP.ConfigBuilder abstract: + define public static property Registry as openedge.net.http.builderregistry no-undo get. define abstract public property Header as openedge.net.http.httpheader get. - define protected property HeaderName as character no-undo get. private set. - - - constructor public HttpHeaderBuilder(p1 as character): + define protected property HeaderName as character no-undo get. + + + constructor protected HttpHeaderBuilder(p1 as character): end. method public static openedge.net.http.httpheaderbuilder Build(p1 as character): end. - method public static void InitializeRegistry(p1 as OpenEdge.Net.HTTP.builderregistry): - end. - method public openedge.net.http.httpheaderbuilder ParametersDelimitedBy(p1 as character): end. method public openedge.net.http.httpheaderbuilder Value(p1 as character): end. + method public openedge.net.http.httpheaderbuilder AddParameter(input pName as character, + input pValue as character): + end. end. === added file 'oo4gl/OpenEdge/Net/HTTP/HttpRequestDecorator.cls' --- oo4gl/OpenEdge/Net/HTTP/HttpRequestDecorator.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/HttpRequestDecorator.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,78 @@ +class OpenEdge.Net.HTTP.HttpRequestDecorator + implements OpenEdge.Net.HTTP.IHttpRequest, OpenEdge.Core.IAdaptable: + + define protected property DecoratedHttpRequest as OpenEdge.Net.HTTP.IHttpRequest no-undo get. + + define public property Method as character no-undo get. set. + + define public property URI as OpenEdge.Net.URI no-undo get. set. + + define public property Version as character no-undo get. set. + + define public property ContentType as character no-undo get. set. + + define public property CharacterEncoding as character no-undo get. set. + + define public property ContentMD5 as raw no-undo get. set. + + define public property Entity as Progress.Lang.Object no-undo get. set. + + define public property ContentLength as integer no-undo get. set. + + define public property TransferEncoding as character no-undo get. set. + + constructor public HttpRequestDecorator(input poHttpRequest as OpenEdge.Net.HTTP.IHttpRequest): + end constructor. + + method public void SetHeader( input poHeader as OpenEdge.Net.HTTP.HttpHeader ): + end method. + + method public void SetHeaders(input poHeader as OpenEdge.Net.HTTP.HttpHeader extent): + end method. + + method public OpenEdge.Net.HTTP.HttpHeader GetHeader( input pcName as character ): + end method. + + method public integer GetHeaders(output poHeader as OpenEdge.Net.HTTP.HttpHeader extent ): + end method. + + method public void RemoveHeader( input pcName as character ): + end method. + + method public logical HasHeader( input pcName as character ): + end method. + + method public void ClearHeaders(): + end method. + + method public void SetCookie( input poCookie as OpenEdge.Net.HTTP.Cookie ): + end method. + + method public void SetCookies(input poCookies as OpenEdge.Net.HTTP.Cookie extent): + end method. + + method public integer GetCookies( output poCookies as OpenEdge.Net.HTTP.Cookie extent): + end method. + + method public void RemoveCookie( input poCookie as OpenEdge.Net.HTTP.Cookie): + end method. + + method public logical HasCookie( input poCookie as OpenEdge.Net.HTTP.Cookie): + end method. + + method public void ClearCookies(): + end method. + + method public void RemoveCookie( input pcName as character ): + end method. + + method public logical HasCookie( input pcName as character ): + end method. + + method public OpenEdge.Net.HTTP.Cookie GetCookie( input pcName as character ): + end method. + + method public Progress.Lang.Object GetAdapter(input poAdaptTo as class Progress.Lang.Class): + end method. + +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/HttpResponseDecorator.cls' --- oo4gl/OpenEdge/Net/HTTP/HttpResponseDecorator.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/HttpResponseDecorator.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,76 @@ +class OpenEdge.Net.HTTP.HttpResponseDecorator implements OpenEdge.Net.HTTP.IHttpResponse, OpenEdge.Core.IAdaptable: + + define protected property DecoratedHttpResponse as OpenEdge.Net.HTTP.IHttpResponse no-undo get. + + define public property StatusCode as integer no-undo get. set. + + define public property StatusReason as character no-undo get. set. + + define public property Version as character no-undo get. set. + + define public property ContentType as character no-undo get. set. + + define public property CharacterEncoding as character no-undo get. set. + + define public property ContentMD5 as raw no-undo get. set. + + define public property Entity as Progress.Lang.Object no-undo get. set. + + define public property ContentLength as integer no-undo get. set. + + define public property TransferEncoding as character no-undo get. set. + + constructor public HttpResponseDecorator(input poHttpResponse as OpenEdge.Net.HTTP.IHttpResponse): + end constructor. + + method public void SetHeader( input poHeader as OpenEdge.Net.HTTP.HttpHeader): + end method. + + method public void SetHeaders(input poHeader as OpenEdge.Net.HTTP.HttpHeader extent): + end method. + + method public OpenEdge.Net.HTTP.HttpHeader GetHeader( input pcName as character ): + end method. + + method public integer GetHeaders( output poHeader as OpenEdge.Net.HTTP.HttpHeader extent ): + end method. + + method public void RemoveHeader( input pcName as character ): + end method. + + method public logical HasHeader( input pcName as character ): + end method. + + method public void ClearHeaders(): + end method. + + method public void SetCookie( input poCookie as OpenEdge.Net.HTTP.Cookie ): + end method. + + method public void SetCookies(input poCookies as OpenEdge.Net.HTTP.Cookie extent): + end method. + + method public integer GetCookies( output poCookies as OpenEdge.Net.HTTP.Cookie extent): + end method. + + method public void RemoveCookie( input poCookie as OpenEdge.Net.HTTP.Cookie): + end method. + + method public logical HasCookie( input poCookie as OpenEdge.Net.HTTP.Cookie): + end method. + + method public void ClearCookies(): + end method. + + method public void RemoveCookie( input pcName as character ): + end method. + + method public logical HasCookie( input pcName as character ): + end method. + + method public OpenEdge.Net.HTTP.Cookie GetCookie( input pcName as character ): + end method. + + method public Progress.Lang.Object GetAdapter(input poAdaptTo as class Progress.Lang.Class): + end method. +end class. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/IAuthenticatedRequest.cls' --- oo4gl/OpenEdge/Net/HTTP/IAuthenticatedRequest.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/IAuthenticatedRequest.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,20 @@ +interface OpenEdge.Net.HTTP.IAuthenticatedRequest: + + define public property AuthenticationMethod as character no-undo get. + + define public property Credentials as OpenEdge.Net.HTTP.Credentials no-undo get. set. + + define public property AuthenticationChallenge as character no-undo get. + + method public void SetChallenge(input poAuthMethod as character, + input pcChallenge as character). + + method public void AddAuthentication(). + + method public void AddAuthenticationCallback(input poListener as OpenEdge.Net.HTTP.Filter.Auth.IAuthFilterEventHandler). + + method public void RemoveAuthenticationCallback(input poListener as OpenEdge.Net.HTTP.Filter.Auth.IAuthFilterEventHandler). + + method public integer GetAuthenticationCallbacks(output poListener as OpenEdge.Net.HTTP.Filter.Auth.IAuthFilterEventHandler extent). + +end interface. \ No newline at end of file === added file 'oo4gl/OpenEdge/Net/HTTP/MethodEnum.cls' --- oo4gl/OpenEdge/Net/HTTP/MethodEnum.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/OpenEdge/Net/HTTP/MethodEnum.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,33 @@ + +enum OpenEdge.Net.HTTP.MethodEnum: + define enum INVALID = -1 + GET + + HEAD + POST + PUT + PATCH + DELETE + TRACE + OPTIONS + LINK + UNLINK + + LOCK + UNLOCK + + PROPFIND + PROPPATCH + MKCOL + COPY + MOVE + + EXT_0 + EXT_1 + EXT_2 + EXT_3 + EXT_4 + EXT_5 + EXT_6 + . +end enum. === modified file 'oo4gl/OpenEdge/Net/HTTP/RequestBuilder.cls' --- oo4gl/OpenEdge/Net/HTTP/RequestBuilder.cls 2019-09-27 04:13:43 +0000 +++ oo4gl/OpenEdge/Net/HTTP/RequestBuilder.cls 2020-05-04 11:21:05 +0000 @@ -4,9 +4,9 @@ abstract: define public static property Registry as OpenEdge.Net.HTTP.BuilderRegistry get. - define public property Request as openedge.net.http.ihttprequest get. + define abstract public property Request as openedge.net.http.ihttprequest get. - constructor public RequestBuilder(p1 as character, p2 as openedge.net.uri): + constructor protected RequestBuilder(p1 as character, p2 as openedge.net.uri): end. method public void Initialize(): @@ -60,9 +60,6 @@ method public static openedge.net.http.requestbuilder Head(p1 as openedge.net.uri): end. - method public static void InitializeRegistry(p1 as openedge.net.http.builderregistry): - end. - method public static openedge.net.http.requestbuilder Options(p1 as character): end. @@ -87,6 +84,12 @@ method public static openedge.net.http.requestbuilder Patch(p1 as openedge.net.uri, p2 as Progress.Lang.Object, p3 as character): end. + method static public openedge.net.http.requestbuilder Post(p1 as character): + end. + + method static public openedge.net.http.requestbuilder Post(p1 as openedge.net.uri): + end. + method public static openedge.net.http.requestbuilder Post(p1 as character, p2 as Progress.Lang.Object): end. @@ -137,7 +140,10 @@ method public openedge.net.http.requestbuilder AddCallback(p1 as Progress.Lang.Class, p2 as Progress.Lang.Object): end. - + + method public openedge.net.http.requestbuilder AddCookie(input pCookie as OpenEdge.Net.HTTP.Cookie): + end method. + method public openedge.net.http.requestbuilder AddFormData(p1 as character, p2 as character): end. @@ -168,7 +174,7 @@ method public openedge.net.http.requestbuilder SendRequestId(): end. - method public logical SetHeaderOption(p1 as openedge.net.http.httpheader): + method protected logical SetHeaderOption(p1 as openedge.net.http.httpheader): end. method public openedge.net.http.requestbuilder SupportsAuthentication(): @@ -201,8 +207,7 @@ method public openedge.net.http.requestbuilder UsingDigestAuthentication(p1 as OpenEdge.Net.HTTP.Credentials): end. - // Leave Enum out until actually referenced - //method public openedge.net.http.requestbuilder WithTransferEncoding(p1 as OpenEdge.Net.HTTP.TransferEncodingEnum): - //end. + method public openedge.net.http.requestbuilder WithTransferEncoding(p1 as OpenEdge.Net.HTTP.TransferEncodingEnum): + end. end. === modified file 'oo4gl/OpenEdge/Net/URI.cls' --- oo4gl/OpenEdge/Net/URI.cls 2018-11-20 18:35:49 +0000 +++ oo4gl/OpenEdge/Net/URI.cls 2020-05-04 11:21:05 +0000 @@ -1,17 +1,17 @@ class OpenEdge.Net.URI: define public property BaseURI as character get. - define public property Fragment as character get. + define public property Fragment as character get. set. define public property Host as character get. - define public property Password as character get. - - define public property Path as character get. - - define public property Port as integer get. - - define public property QueryMap as OpenEdge.Core.Collections.IStringStringMap get. + define public property Password as character get. set. + + define public property Path as character get. set. + + define public property Port as integer get. set. + + define protected property QueryMap as OpenEdge.Core.Collections.IStringStringMap get. define public property QueryString as character get. @@ -19,7 +19,7 @@ define public property Scheme as character get. - define public property User as character get. + define public property User as character get. set. constructor static URI(): end. @@ -45,9 +45,6 @@ method public void AddQuery(p1 as character, p2 as character): end. - method public void BuildUri(): - end. - method public character Decode(): end. @@ -65,6 +62,9 @@ method public static character Encode(p1 as character, p2 as OpenEdge.Net.UriEncodingTypeEnum): end. + + method public static character Encode(p1 as character, p2 as OpenEdge.Net.UriEncodingTypeEnum, p3 as logical): + end. method public static character Encode(p1 as OpenEdge.Net.URI): end. @@ -123,16 +123,13 @@ method public static character EncodeString(p1 as character): end. - method public static character EncodeString(p1 as character, p2 as character, p3 as logical extent 128, p4 as logical): - end. - method public static character EncodeString(p1 as OpenEdge.Core.String): end. method public static character EncodeURI(p1 as OpenEdge.Net.URI): end. - method public static character EncodeUserinfo(): + method public character EncodeUserinfo(): end. method public static character EncodeUserinfo(p1 as character): @@ -141,16 +138,25 @@ method public static character EncodeUserinfo(p1 as OpenEdge.Core.String): end. - method public integer GetPathSegments(p1 as character extent): + method public integer GetPathSegments(output p1 as character extent): + end. + + method public OpenEdge.Core.Collections.IStringStringMap GetQueryMap(): end. - method public integer GetQueryNames(p1 as character extent): + method public integer GetQueryNames(output p1 as character extent): end. method public character GetQueryValue(p1 as character): end. + + method public logical HasQueryName(p1 as character): + end. - method public static openedge.net.uri Parse(p1 as character): + method public static Openedge.Net.URI Parse(p1 as character): + end. + + method public static Openedge.Net.URI Parse(p1 as character, p2 as logical): end. method public logical RemoveQuery(p1 as character): @@ -158,6 +164,9 @@ method public void SetPath(p1 as character extent): end. + + method public void SetQueryMap(p1 as OpenEdge.Core.Collections.IStringStringMap): + end. method public override character ToString(): end. === modified file 'oo4gl/OpenEdge/Web/WebHandler.cls' --- oo4gl/OpenEdge/Web/WebHandler.cls 2018-11-20 18:35:49 +0000 +++ oo4gl/OpenEdge/Web/WebHandler.cls 2020-05-04 11:21:05 +0000 @@ -2,48 +2,51 @@ implements Progress.Web.IWebHandler, OpenEdge.Logging.ISupportLogging: - define public property Logger as OpenEdge.Logging.ILogWriter get. + define public property Logger as OpenEdge.Logging.ILogWriter get. set. constructor public WebHandler(): end. - method public integer HandleDelete(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleException(p1 as Progress.Lang.Error, p2 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleGet(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleHead(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleNotAllowedMethod(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleNotImplemented(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandleOptions(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandlePatch(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandlePost(p1 as OpenEdge.Web.IWebRequest): - end. - - method public integer HandlePut(p1 as OpenEdge.Web.IWebRequest): + method protected integer HandleDelete(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleException(p1 as Progress.Lang.Error, p2 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleGet(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleHead(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleNotAllowedMethod(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleNotImplemented(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandleOptions(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandlePatch(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandlePost(p1 as OpenEdge.Web.IWebRequest): + end. + + method protected integer HandlePut(p1 as OpenEdge.Web.IWebRequest): end. method public integer HandleRequest(): end. - method public integer HandleTrace(p1 as OpenEdge.Web.IWebRequest): + method protected integer HandleTrace(p1 as OpenEdge.Web.IWebRequest): end. - method public void LogMessage(p1 as character, p2 as integer): + method protected void LogMessage(p1 as character, p2 as integer): + end. + + method protected logical CanAcceptContentType(input pRequest as OpenEdge.Web.IWebRequest, input pContentType as character ): end. end. === added file 'oo4gl/Progress/Reflect/Constructor.cls' --- oo4gl/Progress/Reflect/Constructor.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/Constructor.cls 2020-04-22 14:13:40 +0000 @@ -0,0 +1,18 @@ +class Progress.Reflect.Constructor + inherits Progress.Lang.Object: + + define public property AccessMode as Progress.Reflect.AccessMode get. + + define public property OriginatingClass as Progress.Lang.Class get. + + define public property Name as character get. + + define public property NumParameters as integer get. + + method public Progress.Reflect.Parameter EXTENT GetParameters(): + end. + + method public Progress.Lang.Object Invoke( INPUT params AS Progress.Lang.ParameterList ): + end. + +end. === added file 'oo4gl/Progress/Reflect/Event.cls' --- oo4gl/Progress/Reflect/Event.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/Event.cls 2020-04-22 14:13:40 +0000 @@ -0,0 +1,22 @@ +class Progress.Reflect.Event + inherits Progress.Lang.Object: + define public property AccessMode as Progress.Reflect.AccessMode get. + + define public property DeclaringClass as Progress.Lang.Class get. + + define public property IsAbstract as logical get. + + define public property IsOverride as logical get. + + define public property IsStatic as logical get. + + define public property Name as character get. + + define public property NumHandlerParameters as integer get. + + define public property OriginatingClass as progress.lang.class get. + + method public Progress.Reflect.Parameter EXTENT GetHandlerParameters(): + end. + +end. === added file 'oo4gl/Progress/Reflect/Parameter.cls' --- oo4gl/Progress/Reflect/Parameter.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/Parameter.cls 2020-04-22 14:13:40 +0000 @@ -0,0 +1,16 @@ +class Progress.Reflect.Parameter + inherits Progress.Lang.Object: + + define public property DataType as Progress.Reflect.DataType get. + + define public property DataTypeName as character get. + + define public property Extent as integer get. + + define public property Name as character get. + + define public property Mode as Progress.Reflect.ParameterMode get. + + define public property Position as integer get. + +end. === added file 'oo4gl/Progress/Reflect/ParameterMode.cls' --- oo4gl/Progress/Reflect/ParameterMode.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/ParameterMode.cls 2020-05-20 11:34:22 +0000 @@ -0,0 +1,10 @@ +enum Progress.Reflect.ParameterMode flags: + + define enum + Input = 1 + Output = 2 + InputOutput = 3 + Append + Bind. + +end enum. === added file 'oo4gl/Progress/Reflect/Property.cls' --- oo4gl/Progress/Reflect/Property.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/Property.cls 2020-04-22 14:13:40 +0000 @@ -0,0 +1,18 @@ +class Progress.Reflect.Property + inherits Progress.Reflect.Variable: + + define public property GetterAccessMode as Progress.Reflect.AccessMode get. + + define public property CanRead as logical get. + + define public property CanWrite as logical get. + + define public property IsAbstract as logical get. + + define public property IsIndexed as logical get. + + define public property IsOverride as logical get. + + define public property SetterAccessMode as Progress.Reflect.AccessMode get. + +end. === added file 'oo4gl/Progress/Reflect/Variable.cls' --- oo4gl/Progress/Reflect/Variable.cls 1970-01-01 00:00:00 +0000 +++ oo4gl/Progress/Reflect/Variable.cls 2020-04-22 14:13:40 +0000 @@ -0,0 +1,53 @@ +class Progress.Reflect.Variable + inherits Progress.Lang.Object: + + define public property AccessMode as Progress.Reflect.Accessmode get. + + define public property DataType as Progress.Reflect.DataType get. + + define public property DataTypeName as character get. + + define public property DeclaringClass as Progress.Lang.Class get. + + define public property Extent as integer get. + + define public property IsStatic as logical get. + + define public property Name as character get. + + define public property OriginatingClass as Progress.Lang.Class get. + + method public Progress.Lang.Object EXTENT Get(): + end. + + method public Progress.Lang.Object EXTENT Get(INPUT index AS INTEGER): + end. + + method public Progress.Lang.Object EXTENT Get(INPUT instance AS Progress.Lang.Object): + end. + + method public Progress.Lang.Object EXTENT Get( + INPUT instance AS Progress.Lang.Object, + INPUT index AS INTEGER): + end. + + method public void Set( INPUT value AS Progress.Lang.Object ): + end. + + method public void Set( + INPUT index AS INTEGER, + INPUT value AS Progress.Lang.Object ): + end. + + method public void Set( + INPUT instance AS Progress.Lang.Object, + INPUT value AS Progress.Lang.Object ): + end. + + method public void Set( + INPUT instance AS Progress.Lang.Object, + INPUT index AS INTEGER, + INPUT value AS Progress.Lang.Object ): + end. + +end. # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWVvutIoAdw//gH///0RR//// ////8L////Bgdn53l4Y6A8cymmS9WYR3tF7MV77uVx4gD7zxrQGbD3ZPm+vuzffbqBVrfC8Me7dj C1tme927fcjbo64FRrGs+yR93uhoABvo968LxgA6Adx3AAFAc53egAAH3nnAAA+97zz6AAfffe7w Cg6b3cAAHZYABZ9wABOm3fDzs7u6199vXr2xdrK19zSHGmTabNvgDbuJ0B0HABBsAoMrokmAcnXN O7t57h3b12X3uDxT22NSY+uqwEFSOcAAYAAcXQu4cDQo2wBohJbZpIyAFVoyMbBACriAzQt9xgPS 2gJC222Za1Wgoo1606aVwkiCaEZDI0amQRiMQJiYqDam9UeptRp6mI9kp6noIDR6QNMgIREplT9B lT0jymj1MMkekDQAAAABoPUAGg0wkgmqnsiQ9I00yMnqAMQAAAAAAADQAJNJEQghoAjSIz1U/1U/ 0RT8p6U9E9Q9QPUAaNAAADQYIkiBBNNAT0RhNBqZMgBMJgpPFGxoUGTQZBoNoFUgEACJJhTCJ6am k2kymYSfoiaAADQbUAABpwEAD3kRUR2RhJ6L/F42gQwkjYkalIpUQ0i2imMBaiHwRhFR/9RPZHn7 KADrbsdbOdpTSDPjS+tA8lggjr9h6EJKsXi4+tOHql46/rJ5fj6PFRHKURVTy9uTBdNZxJWBEYF2 WAZMRRExKLq21qmUXQ7YhHcBihVmhWnC6vb9r4B8HkN/G3BjkxpRuXc3QuHmf/roI0KNzZcJ0BdI R/eFTqZ/A8Kxkj4bSi+Y5pU+q9+woVvq8VZE127xNM7zNUtVSd8nLqRE5OvX6Mw2IrHF7MbE8o75 NBC9B1Uvk6rJuckoaxYJl3gvOG1rHe7qLzpw8XnnO09xAvqw9TUUIj3pA47u7DEiMDfBZCiSEp40 CsxpUasFgvrQhphFUAWSKBr22KGJJ72B5G+cFqDtRCGLfOXvg/9GP4u7eanrwNfXstZdlFTilzRU V+sZtB1Ya8Rpq6S312hzxvMw451TzDxbNM06EQRPscw6MrMBHtQpk5GKLA5ZRFkOggXdCAvDD8dW GmQihFhKhFkVZDYQiYwNtk5ippa0OjRgPak/WIcanEzlD1ZVIMRQNLUtJ6rOrDSiGmLO9mSAJz0v 5uIWK+VOHFJ0SxSpUGPgYyv8RD6WE6TJMq1HGZldbImyS/TneB/zsxm3Vw+369l5paX+ES3T+3XV R5a9A04HVDr2a7P7v2PGJoGXdi42php/9PyApNqBEm0SYPzcYKZxHq/88Hf/fCon8Tj+wpZpan8e fPTd7vdVbzfv+0/H9j7J+j5/o+SDhk5+NK5z7yrr8jrvp4kLv9S/t31111zz/N/jvK0l3j+S8Fcb n0qvTs0f4tvGq6kc1fqXxwOc8PTM8Xy/dD5fJFIaA4/Dvir4/OEMQmBVRFn4ZMYL85Aln1/F/ew5 VnnQh2D1/HC40h2CHYATdRBc2/rfsmQSSShkP2cMhOrYW6wh7UuVXosu+u6SSaYEU/l/f+R+frOW fV2gXGp4JidbJ70DekTbhh5r67ds2MEhmEhh3FJhTizmlSutxbuxlssMdXvlxYfXqPRp0SkiVlXx slESTVJWrvMEcaRYMVLMpijUqqwOsfOvnR4tHwqazsyIVbsdv702unOarfaWle93uZSiBOZajlLN rcXu/sXBmU42USXCCJtBFiDPaDg004N4pi1tp3/Cev0TUkA8z3J1QPOxZBSeLtA157ITEnckDh4T hCcMOE2mPZYCyGAJAkgmiwaCGeLusrK6qRl1l+ii0tKzyl3aGWJZmI7cQxrFGgAKA4iOf4ecHfQW LSQPu/OnLF036VKJqPZhQYlRTRRJIHJ79U4uMi1w5DmiFkEgkgzedSC1bZRISQFgTJYOJrMjmZcz MyumAjBYmrDSYilaquqbd88XZrhXyePLHY28Zhx1Hl41g0rIrWWXgFjN60KpG7kRGAhQUIBSGGUY 0hbiqQrUaga2zO9GDAABIBLC4epd6LgsS1BhBOE2JyhD7thl6neDYNgbchNUQ4RAsssQZzR430Hx CZH2de77Z5u88dZ5sgl8JM8UVvksUDxIDFAPiyAX0iXCQmGkBQUQQURVRUVWKe8DVdmkgAENxIIu MFUCqoxJ4lNI1aI4QwhzM8vw8Pw9UPBn76JKiZAF2TOhI6hnfCR4jd8Xp0q+AhnG0UABMuYoZGQJ CCjFYjAiMSCwAZEQhrVIAAlhvFn0wpBLMYoKRqEkIgEiDgMBRqISKjjEXOAgoWL1qiYHrJO7yvr0 /q45IZVSJqIec9rhYLGBKdkgTIyEFCBl3fxOOu7f0eWum0Olzh1CUxYRNkFiBgoAWpAIK7Mwe1gy xnhYsVWGqWEBEmJQnRF2QDo5hKQIHmcc86vajUTdkArgwRY9qGVNmbIgfzYvCOcN5+T2+7XCTt2J ZAEkFYiIKiipFkWRRYisQWMVFFJIosSQigghIyP64NgrEEkgyIhEQJCMCRYCkAiskkAh0095sN5l nxdFIafTdTz6A2/LV2h6shceU7np6SmIocIQk1JziFCRHrhnBYPYPvzR86f6x+T6Rno2cR9yFB9B O0ZZ4af0ZcxiPaV5SiUD/jgCVEkOwRfKLzQSRWEEaWEIyMZAkRGKIgKIxEVEARJARIRGKLEQWAqR WRGKCIiCpIQJq/zXAiqPZj2eM90r2e3DJyt7pM8sXPHDwwJpeDXPfObVl3xt0dvP4h1mpbZaIKQq AItA3DIdYXA7b9NSADw9YhuQmIEKPHfIbhsivETAlr1MeTwjhRGksI1zT6tB5oPGJi6D7TKnXIiF LYgCLVyg/p3YHgswjrffRjXdjaXjKDPPN7QPQ2yOAiBBA3E+F066Q6koWRwyYJrgURqL22lo2OEQ ZyfDkuLhemiBORFkNrLRCzgjj1z0ii1KpoEu2wIcRU0kQ2xcBObSpMtUHssayHgYVh2nBI2aIVBw 5ooudOsoervYHZYDnW77niMdT25ftd3eJTACRE6sO0Hhq0JpCaGzkbMwiOKoioRG3UFxGsun6vnF k0+oVEQX5pDRbqbnaffNZzA6d9WMMWhoydAsbQKjUbpgHrqVxPcJ44E0g9BgSANaQCLTQkRBp8I3 g2/Ok8uPawGrDZfaa867ij0hZ7YDZBTgjN46crKdshMacIHuHL7eSIGpcYRZl1q124gZF6Qw5iBS Aci0yxAKj1OapCWwiC0OvAeuQnWzBCGLZQhCTtljtVa/JJonml/pF+DOzLndbm49j9seVp+Eq7FT r9oZAatbsx2Pu86GA3kfFwMQuU1eBUjUO+HdMoOIF6dNjtMHQzcwXZpck0GMLRKPRgckSfLeztzQ 4Hu5n5e8MPbJqibXjvJxvCde15EiMFT/T6g55fmwpE5KdPHCtErc/K7DmhewnnmtYdwz25Ophrh1 IeAUGD+ImjgxQppq1HZsnIhTwPAHgosqC3MForWL3gsS2ohS2iFveHiGnJiTGWC7IO3LGOGIhgb5 rJZ5rKaRRJMWqEJEKwIh6vCbw0aspDrqkVdMIsCoLDQkOWGIBy827N2TYkNNXKYkNMNDYBxRQxko hMO0OpIeP1FJgw3tgE84JZA6pCsYT6lQIaZARgoAsMGTqlBRkAQUtgFBRS2SgoPAc+HcyveTUPQn oDW3hmBwJGTc9tOszRPMdDK9cNnEhwiMMjsDtOp8jcVu+6sKFkjRUxWnJIIjNhr6+zr7YkwqNC54 FhFOEWBr4CwvnBGwnkxBJ8yRCDtWg267AKpyn6uU/+ly3Ht1rZqG2LRF6YMw7Rss0KpkLh0xDsId 2dkJ1DVuxBgmyYh0guzdmkact+vO226iyZ0DjDTFb0L9EUUUUW6k0hOepmTQ7dL4XaHV0ZaPB/L+ G9V/oYKdeSrrBDRzPzBhwI+Acw9flZXkTY1/HIme+uET/sgnilg8mooTeTzqzNd1mLob8WJBBEGP Uwb/p7WgRh8bYt7qtWqSnXQrr8szylhFx79PluzOFFPbOl43ZHaqqqlSpDdPQ6ZcKZ9SBw8MEZsa EmyXqn1CZpv/7u8s7TFNK3vlwlJyDJ4Y7zS5NG4d5vo5owZ4Pc9k9FqdtNQ76nVjNJ9PAaKbi1EH Z62wu7VhUgRksAk71yKkIh++kFYKIsIbSmPut5T5osiIX/Rj9LrxAylCIhhG/9dERArEMxKxDLiO N+YiduD2HQ2bBCxbYyDSGIEIsInDBTb/FTNqvb5Dtsxog+1uFLZgF4C9SdwINZ8+bxzXd1xSkUpy JcYSyAaVZvXcmQYhUdyRGkzieey2g7q0Acy2rYJx9nZvntvJrBk04gyJFo1rKJmIlCcx0JfdESix JUGk45Dw7BEDtIUASdANwMgP7oH1a9XHJiLLaCMIIsYEWREJKhkIRInul9YApoYgCt0OLiLo48ug AANzfOIxiFxUCSW1WTDDa7eYNO6rmGDvxlQYpIHd4Q/cW2FmI48kiqFUa1dA1jMxUKCH0e3Lt8iY oGSrokCW1iEIjBggtO+grICIREFhARIkO/3eqAAWDVcoUMfkvZyjIkMKK97SolTVf5Wj4+jxhjBS HAkKwiMAUke61wSBWDAEIiQByw5DIsAyEjqyypKOSEENAyEwSIyCIIyiCIIkRAyEyWIwDVLaVYCI qyBWjaUtrGBoSBZ6WMQUIiCCCyKKIwjEgsBBU01RkSMCLLA0CRVCEAXEv5LVLl3iAQPVPZwcvmXu vTwIHvYSqgoDm7vwihJ3iyRsQAOG3G+GTW0VV7AK3YoWQkq2dQFXvS4Ny4ILDaryqggsg9TkYoLZ Tkqm6+NBTmv1BdOXWzUEUjFSqkKUZBCRAiQFJGMh1z0CfP6fq+n4/oPu07pl/Vn0Of0sXnjSfLcV qIudCmfNYNK5Kt9Xd4dB60aDzpVNZVnMj1TcjVGhKnKxW9RsHdvMCXKJqwRlAU1wxeau6jNYwxnb S1dPptay7qqQ1pgIDwIgxjZMIgOmnMtqa2xqhxgfTiGklnhMOOtz4wA+1knvZCB4x56qPPd3a797 aapbtxtNwUzQNhq7KAYcabaRJVpq2VuchW68pIYbjyTlKiioU2WE3DA4QFtVdtY34aJQZCAYCQJD aZ5zkMRHwNlxkO2IyWqkSMjdEXGyASSEYqTs3I1GyUnYiIDgu7oeBzkWMXtBY8HhCiPZqTQ8f++e bF+2XwL2CfUPPjdCR3HexA7geW32PA3w8uZ6mabrk+b0E0xUeOubHWhzU9eJkeC6FiBAX3AGDBr7 9eGF8ZgkkB4wxNtM9zftjGFsSpd7DJRUSDpnZlvTU0XXOjDQiCQSmTD52qzv0/HSCTiFp8uI+P5l F2H/JuNq3RIqwF9bBGwQqRNtMSU0j0tpmKfRvaDGW4u620DFMGhqyYBS6tpbqG+TsTXHdVvjyIYD CugzRhUwcbczGU1adeg0OrcGlpxzqtmjRhy4wR1hdU0Gb3bZRpbU5395wHOjuVTycC2GTQ4z4iSI 7QnKAl3chgg3Rbcbw16ZkzMzPaFbQPhtej3NjqrKgO7ORyBpc5GtrxNBxG6j7k6e9RQyqqqoTMzM sQYrnBDt0nT481yRNw2FoH4r4x9frbt2+Zjn3dfSjDa8lTXQJYVVadw4bZ9HRvs85yefNvMtN0/C 8NpZ0866cU2bZG62bV7jWOkfPkJzKIhJHcFIthEcql8KOZoTypjxaLNibaJcRKUeGTgFqTWCCJv0 gVITSHVmpQkkFQlyBRaiDIbzMGCYwQ2gkszMDcnTw6d4ZYvc1hV1V7xlDjZmGXFbjWtdUtP8PE43 cwOE7+M41AbpBYLBYLBSd773zJo0RbGMdNBhj4TkN50/mOweFEghnGjSDkFEJiRAJLeIT1VR13pC DCua5AJBlfeYMMo+4gj9DStMat+DFE/xZhEyMlkjJNbjpsitaAgXDYk6maAZHZWQSpKceRCJItaa MZ6DKvJ6cwYm1VVMtZDPVqmSa0aidN0zg4JIX4qskMcux2Zocb9QMfYde8oBZe1YQU7+r7Pz3+Cv P5fY015liNbG+DlfHHlEMPulFr6r4Hqix+cWMlBEEYw8PaZPHXbzeFzc1u2UZyhF3+H5R9TBgJIG 6RHzBJ/UJMHFCh+OAdYZL6BLCaDbEAwuLYg4sNwwYZFBcCDxNYlgoSBHoGLQPiUREE0oQoE0E4RB NETF2Hzas2IiBmwiSibdquUZsmbNU7Elkj+Vq1cKjZJkgR4/1SSzPtRSJJRJ98hNIiCAHX4e8tpf de3lnO404OIb49p05GCIQkJqoU+JV1ZyGerTGYFYN8OQR4CD8PzZ5E3rNOk8iBI0OgT51AENOaDs ntgPQAhomcKta10dinaCY4SdghctaTzj0f6X68AuDyAIcDc8bxZvLdcFyXz865mB0IUID8bsAN9m HSd3QuY7TZxEOMJ94aw2rkiehd1+lUSX3ogTOkVgh80MEG04iBmoQ7iIYAb9sndGQD1RLWSIEgJS kYDaK0gjIVgTGej8z3MczBK0aVErODTxsYrbWts/4tQRc5PvTEZof34lBggMAFBYxhIp6aWOqIvv yWLi0sEkajOQrZUBQKyVJWiQFYhRrKihiVnpymkJqMyWfRFCqYGi24bQ+bO/dDX4UMOZAlLPHzPK URKjUaiyWdPT/A3/2/3zVr1Z8UtGa982IF4MQk0pbmY4nosUTDD96Mkh5gMMPb7PanV5bnXsdQPF rbO7XNiPb/8GBCQyBJ8IhMsRUaNEihSIhApEKCgMbmKDgl1YCUZ0KAYpdQhilDiCkMyDCYwSgJ2U nkRWIgRNBREVIUEDJLykRDLBVAsxIrgCjhJhVUsohch1YGkm9hPcftnqOSHcHGznCcvfyuwtMx3W 6rNZzzszLcxV67dThUmhIuNicXFwKIr9jLOPXe3FvLMdJwbmg6I0aCx+i7RFiaFTJDMoNEVJokEl E0J2EMKFMDkTZTkOBOxwbOSxgXCGJkqtxQU+curm5QJgge/A+PAMhQUtkXVT2xhPl+c7/0khIEhO 6zE7QBfSqAQ1FYv1boAADj6x53hhpsgBrt2mEnJmaxDLdQZccXK5c937c3bQd7yllUVT0vskC2wt sLbCW0JbQktskhvfBzymAXGyRH5EZcbL5GyYsmE2/NHVnMubm1DSKckpcz4wL/5ommhkSQ8mwjjs Ns+AbyBSEku7CVUWVAF2mmTsk2kmIsWfghDEJiC8MWsk6IYikiyd1sOiBykOr0ygbQkWQWHF2azM 7F681S9dmNJTh79AAUFF0CKwNHzjIamiFUbo0AgBd1n4mWDsNLZL0lWbKIuJVrAgyCIk4nI5SijJ otdmqZmR06iP2NNNd9pIyarkIQ3sxua6du53xsTr1E6GE4OMMZSQjEKpE0oQDhWlAiMn7SqzJneN pWrPLPVVNKNosALVThDlSblyzWc/4Pv0Zs+W6kd6rJNU38xs4pzlrbE6JkImimmIhbOItvvWGp24 ZM3C9Gxoo4yLN73tXieKs5aWQCmi+KCllVNQEVDO1yyi5kVOVKpPCrtSzZSLKtpbZ557S1iIEiCO yIjQuUxFYjfZVCEMmiMIJQQXSYiIb/VTgzMLulEmfC3N9qSZ13JohNIg2bmbh48TXviW1Ik7mZGs jxQ5bWNFv6oiI50y63M9r9e2MoC5haIVpWCJJwpAcIh6NDCrleNEkzlNocOT0WctWeWVNbxxYxET upNDYwaqy3JxusToy4zSZmi5gk4W1xvZlESxCJibZLCzTZJDV3No03bNiQQViM7oicRLhMyV5JNm FWGteGjRkVUjXRTZzhKtpWo2aMGZszu55YcOWslCsk0k/XrNq1yOXThwcqFWxNwcqySzHablNKGb N00auyjRs0OC6zd27ZN2ztsbxGURs0SrsTnw6XZtZOjns1OGSTJM2eCI/piH5QQpERH5QQ6a+hP7 tPqh2J5mcJOiedPWzO80i4le5cReHRcsL8zPw6N++OAaqIHxmC5x6ADCiGDAce2XjWSa9Oia1KdQ JYVRBYHDOEzdqBwgcR86Gbs5tA41e7WadSoG0xni6QNsOqaTrxvJxhddSBA+4ZJDfjx1l82rKWz0 okm0RcUGTgyBVCCBjHfXfPSWbSphkJrVExDFQ7TZxb9MaQ1yRhMOteUc8sN5bQjslUczQKhPVQnQ kPYCFmE8b0kBjrsPOloqwhN+aI+/72b2jKI7atEaSiI9nvEuw57nhS5d5dDLPqzRFkERKCISM1vn S3Ezo8QhCpuhmg0420avRNYw1xJGMasl2xSI9RHpGz2+kaPRt1fiIpIl3Mlylcv4jKQQBQm6SAYV pjPEslha0iylC4EG8jSvB8R2B3UCwL6jwKE+EPYI866779nm+ezeP16dcy9eteOjdrnq6vnOiH6K FUrrx1k0/iO8xedXuvJ54O75s+B5w+OvBq57vWvEYdVfVecIyY5WVnnxXWuW2u+PqHMtMuYjY0MG F+/usdN/d8/e8tY8nPElMddsRERDokUOOMOTXaIjkQbPdVmkELIESFFCoXIYTiEzacIavOnS7xmk WR3ttBaSm5WmUURtERAo20QbyghOxZ1lkoppeM28RCeGDiOHoxGqDRK7R8zh9IjHziNPhJ6O2Gnn qnenEojiTFz3jCFXMf10x6RjyrJEoQ5TaxvIVC7VOUITPel0VXcV1fDxf4cKLMM6/KIz+5q+E2B7 adYR33KLrqUiutO9Ut5ZNXw3ZTNCEWY3W7Z/NTVv72e3LhPo37ygvLqUTnOqxxZxviIY3Z2tzLRu tEQKcpcuq7u27BvbbhY6O0nRwb9HbDOLm1fz67ignG1vNwcxgKpFOIMeR5HdJTqpdX1/Wfnkzdm7 pso3RLrbuKSi8Uyt0oIRxEIlOURIwpEk9WkRozcv50TN8ZGu+M1VyZ2k/NWImIJRFIiIiJPuUdI0 Ph8nTJVfxN2+40ZOqWSkwcPo8bE26U1DR9zhRyZplaGTlm2yPPpoyy6JTn24U5M0zU2bsRc00VNF 1CiOFXSh9oi7s7yN3DRqoaNmRw3ZM/xwm36TUYUcJsnspdJNLVU4q2evUyzdl8vSBH6DUgWi49K0 pxFWQynE3V7NsHhUzSZiLxYlFzZp3RmhrcGvlMmCJkBqETaUM0OjwoQveZ2a6CBLNEAXTgKpwyN6 QuSgNCK6ydxb2lpSd0qlx8gYAfKCAwF0eijm3eOP4Ydg99oSHkB2okkgEvpjbI29JMc7usxEBpsO U827XAykZxSWsqJjIAfNSiEIVmtIlEOCc0QQzREQkERs41tUAWIYsz8e2PrnPCXBmg3Ujqibdp9t WDkk4PD+17iIjnXzHNDjqfqV7REIWiIFO5o9np404aZ3nlbX1L2+y1oiLkNTZWIRHOJonLEqNWT2 xIlnmfC5sss+HxHpsxf0lJ1KUMp3R6ugRyn3SIRG0ROM5xEeZuGr1kl4yq2nG+Tdvc5byeNEizZw Zud6V2ay6tKIixaIgw44ZI816Si2SSTdMgnk30iE9deiii0n2ZLCDYkqq9MOGjZVp10eb4rGUlJT jDa2DbyJJSkxON3jtZV4olRyuqqq+kRnmZbzklxtza8mXi/TN6+M3hp6w5YempfjjmN+JR7i2uIj K7NopG9TJVv7lqpSmq/cIWesmrGRoyp22Z+bviHMd03mnN1WM2nY5UsTOnwrwk10w9Lq9JQjNMzb o9KtTjTIvLKU57b3qsQ1hF5Y4kqKlBE2EU5JgTYTVtKMyGJvyU4dO/TZHM+8I68WgOW9vHCqjhRy 89ubo9EkRRonFHoq/HuI53gQcJkmqahkoxQ8SN18PGS7J7TSe13hsWatWGa7BqyaNdVmzxo2zaOV mGE2SiThkqss0YYKNUmxmWMltVlzNmpiNCf3buEllTIq8+WS+ztc40LJ9uTDV0ZMnyeLucfb1kNW qnCbVlq2T3WMlkmzJJzUMCZZaWlrBo37rUkBmBmhHR0C8YrbcivFJCIK/W/IFBh8HeEI5R3RrlWE G56cAjEROp07BIGFqSA+AsC4d5pxQVTRGtlSDfrTDbiDRySNvI/DDAJRAxxs9sGRoukPFbXNfEGY IihQpAYGiukC9suzQtobXikYZQqrmDa0GpVOKSWIRKIh9Ehsl0icEGaikh4BApOhgU+OpQ8E7DsE idxsycfG9WXLW/VpzDOecNndobfV6IX2Srwnol4iUaK6ep22aPkSUzRVZ6ViF1cMjk8N2ma6Tgr1 XlHLe9stuE4WiLREV9kxBw9bP1Mbsnx+ERMzdF23PBni+m/+SOne0aJy2hpZm9vR1mnRVBG6i3Lk 59nt23cGHL1MopELLdkk7Qg6gh8Rmsb/GcRCF0QRZ23aJxEIbssvu5s5V8aGLNi2XLY7cHKavdcp TiXKCKxDhZ/Fve1np1Ecq7G7SI5kwcOjGFnr2slouUVbKlzYyydwvJJzI0dps5vZso7Xjty3ZsHv vCzXXdqEupRLW4iM0+LkO2RSZDe6yTdwecFIzKtl3DHvbnWISk1EEmVe4k2bM/TU2T3Rpz3OENuF NOG+02qra04eNWqaVavjRg3SSa918NH6IeuWZVdq8UOFjl7fsiIjChlZyyU+SZmmfBy4aFWbvvhk u1dPapjHyUYXaPOiabqzomyfnCPHXLZq06d6O0012TZJk1g4ZPhEJMOW7pR55w8dnDD16NVEqxCb pyn6RNPgo1KMLLYambV4UXdLEhB+ceRER/TEP0QfpEZxv84iMEFI/ZBD6oOoiEMIp+n6QQ/Ch8/h 3LqU5k5GqHQ34xy3yy9Z1ZWhlALK3z25UGZWcCdEjU0+DcUbC1rLNW9bOGNM91udUDdSDIWi312N CN3wzzLeBrsDQdAFizBo0/XuQ+Lr3PXupDGYeB8AJtDRUOIEIIaHfe2XIWmarkIlWZB1GBbsMGjc b1Ws2ypcsQO8rjCd5rEV5KEIk3UZvb+dv+vbjXVl7daXvenNLoxBELINlcmTrHqVcdeWtTvyr4tf XeIEZwQkWKa32UohxcQo8/SIgSrSV3fRyhok+5BG+ufM3qa1i1YiEOKJO1aoEYhERRScRBrEP2Kc yZav8XozWdKSbPhWNZKzkiG5p5ba6ytadXXrlhKFXtdxD4PTxwIjfL2lqySen8GDysRCF4Z6ZKRE J50QzuuoIih6Y13UejyW7lh2wzcsFHJ+hzo9dSsx3w9sn15J2m0Sos84v8JSWTXWYSz7UKnjnmko +ltOTgwV1qq6e0n8r5Gb4OtpJPFT0+XunceSlKSDK7Noy6mzPbpF9Jy0irx7e3jO70zUVcuS7Ns9 6NnhZJJwV25iPjNkeNnp9PxiI5JIiJN1li7RsuHsQOIPeHj5LPGjQu9qbM38blBnR2lObCZJJmYJ vzKmb0/FBF2x29LuWpPVv9zNUm+b59RmkbKPkySlg6cLnDWTTdNfpww3KLqlGhss2TaJOWrRZ4aN myc0omzdNh8fHLs4SZHBm8VfsQRU/aIj1EZEC36QR0hQ102znmMwVtUxuoYV2wuhZS3xsO040Noq 2ROo0FCqjMNDcig696Q7srhQmWiG18qbG9IrBfLCiPr9Ct9aNFBdaHgWC0EByCZHprbpYzvdVYJd UDbtMDVXTrK5tCxaBM1MTE6C90FO3YWqZaisBF6QqjEracFhIlLs+zVu0arOKamakuaGtDxP4LYP VZ3S5iebPinpSJo7ees1YiEok4lDTxlEVcmj0k+yK+DKK1oo2+/Ftv6cNYA4VApol8nH6uTeJejr 11MWQhD4R49VvKIPk9KSSwyfcuiHw0TJvkoeaOuss38rTqJSkjxq7am34O0EUfaIhDIo8dw6690T yb4SfBnyl6zlGsKJPaMoQkgnaM2ZQwktCyRAoTTUiOHR6cKOee2b8UEa9a46VaNHN2hu+XtNystJ o+Sq8nLxw7emaWhe8sda9MOPTjN7XgwrJhJ0557jhdo5cc+qcxEOyfPp2zdNz1aqZ448bcMmRU0a R1y05rWnr1M3cGrt1o0iTPhRylol2aoo7Xd8etLZ5NPU4Mmqm219aMMOiTNw27fbPm7R70M0k1Oz lllh6emfbc1Om70eNI5UOdjRy2ZrsHibc1NXDCazdmyTTc0hRorJdHpsTTdHC7Iw2XtNkwULujcq uyNKrzuqWSL6O27s5ZMZ7OLKHDtkYUTDUXlZ3h4AJYh2Lig8Xd5EHgCCKDccb6+Qeh0wqXRS5eM8 8EdXFwLWtQcuW3YamBhhGjaoe+Tdz8HxZN5ULWWbo0qHNtD2quJhwnloM2C6ztLlczkc7yKBSPge KMRioiCajeWGeZZSlFpEF0YjDMMwzMDMyYa+XGRMPvU0W/B+P4PZd+KaIW4X2cu/Gj4k5UenxNn0 8cIg71vLJtxlOZNquxynTNlZg4Ry1TQIr8PkxNfGRNkcamqrS66Tbty9esmbBZRNNwk05rWibKWZ s/dXWqt3h62NCq2T2c9O2rN0zWXWfDrD8ve/q0o+81+LUiEi6WRV93tJZbB1Nh09atpJSW6YaGZC Jqwh2/dmzXS9/LdgyZwaqqpKPh8r7xo+qD7lWZvF0u3po1wwSkUZFDdJkzOuDkgkRwU9mxx32mhR vKFoSN5MH0lrjlxCJcKsNFWD5JcZS7Z886ZtmSRJ28O0VNjRuybPrE9edp1jq2pOfwu3ZtDfSjhQ 4XJsM33xHrmQgZcMye5q3Lk43XNE1+MLqlGM0snnk3TY3SXM3Kro5XVXOSipZRHhSW7pdoTVMmcy 0e16KS+X2/Vy3HkdDoegqwcJ+1uC7qHKKKCQh+DrBoDsIF8PEnRZ52ob778m6te/3xEDlz8lTSvp wXVVaxuYcvl8qertHjdJ7saPyMQfI/YZ8ECNog0JJdvUcN2HegRRJa9MdU25OO47ZSyqveDxAd24 IwdZAAHCQ9VDCCQw5MJC7gdIZnsmXKcuUMq8cxLi8FQZQLxeGQgQ1rJJJl8NfwWpksIirqRK26DO MoiG1abZ74vo+n0+hXJ1hqOIbEbQF0jsqThE+nJ+CbJt1F9JzSZbYc81/BvbvidJb925ZQRw/dcu kYc8fr+FMpvwwuSX1e2HS8dSpVLhY84VPh4xkv6s+DERA7l7IZO28c8sPZDujJ2ZJnLI9PPhsk3q pERGPc3KxROiIanPtw982SxHwzejQ7VYNyHDnjSjds0PezppNvTNxPC6yzyirNjw3Ua8R61Yek5N 0nJsssWevjZw6ZOS/TI1mXLM+xppbWfLSLe3jv2dHb0ywcdNuN99N9btlKJlk44S9OCbyJepm5KJ uFD01l+tHXDO7d2006X2buVWb1deWaWefBm+Ih84juIiB8NmbVVJG/o3fI7SM2HhZh6VMEzmeaTD Zdgop33o0NWHwcmhZNsxGpJrDCjPhJhkuuzkwWKJLknswas+jV4Q1fgeMNWElnfc3Ju24OWTk9lq pX2bMPSRZqapvRRxxZm8YffH4wfCD9aBFBZCCQSR2oRcq79+5t1xlLF25ohUOQdilRHcgmtBQzCk bh2Zwlj3uQLr4aGpGHU5qVlEHJyRmxEjImbqJFRwcGnCADAUA+6dmLbHiQzbdvNMA4FQ+woXKm/U Vxo+VYagQmiIcgiJFNC9DDfDptzgqaOWRSH0JN2qd9k49LmiZVw2aNVs9NvNqyjTKV6FZIoqzKVM NVIiSRuum1RJhLVZ9FDrpdSDlJSUbPwiEoiEMintSIkskUcM58GzY4e/dFGzX11JpllLLrmIWz0S ze1iz2dJ+lcUTcdoRGenUoZo4xFkSwy++mWGrdHirHkacyllKW/V052p0l2bzfFlloqnhkk9sO3S lLrbJ4b5s5abSNGGG5O7RPopE27Y4lGZn02jGbNIuT4zz4ZRmVOThM6bRfdImcpKN4j9cRb6xHC6 hq4yN0bp6pN3bdkksuYKGTzxsq1SdmrI2s0YMroyS8bODZq02bo3LtGaNWzJwyXOFGrwsUSMmimT OajJg2mZsmibDYuksap6JuFXCTRgxs5phRH5Mfb6oPsn1/H0fgi6sQ9pIuEwjyIQxdswvxTbrCuE I7qQplZBwqd5IAuQgIATookwdz+FUNqhD7FCZlYisiIG9yNzCrFIUbnTFcCAAHsgUPUODTAcZrD8 7f3yjYbSKAYrzlB6cqXyxTiCK2DYc+hwNhosr1lEI29UoMktGOGF/JbpNSjNuszzzTziFV26pqSS ZGVWj4TcHbEfedMnfbA0N1XbVPoS6bqN2rWdGGrtszTaPwXNHvW+luks1VNnvWqs2Ro8OlNWXDbR fo7ePdse3DpE6yrTCTRUu7TVYZOHDMm59nmL44pz4dF03L263XdmEOCbJRzSGvTVOaP8CBGsTOY2 YJzznq1T2ePhNb2UNNWmRrKMpPbyejNO0u3flmptk4e+tvXv0pHPOdCebRykw7LJJNGPFGbZfhqZ +OloiHzQ1dVz43lxLiPXqzkrvK2HRxu1ZnjPLWbZd+jgI/CIlKIyZvRJ6bmSjc4YZrvlijCubJms 6MFm7RHwelDPXM1XUKGzNdY0KpPTVwY0bsIqbFU0aP5IQoybKvDJoanTRwmqbKKyXYLLLIoo6Uap KvTdqo7bsk0NT9SIVSO4hu/YH1fB3c++dXDDFTC1KSKWLQ77npLFs4NxjmZKimVqRoqlBxvarIKd uVCjdvDTInCuK+9frIxa0+ZXSxBCpafamB7Vp5Jb2OdJhBlEKiKathxG23w3azXlsktjUrli5gYw ZzLSPSAMGLBXgvUtFRNq4AId1WvwYkIGKRFIiIEoi8RIWEDERkEDTSZL2ID3AIDFLa3+zL+DcmD6 vl98PzTlD+H7/62/f+eT+Pqz6j98d6vk59/fUe8vT9w/6V2/1e9zuzc684vtcn097AAPlb7JPlJQ CiQiMRILAUioiqKIIsBjGIILFUEYqICqjIsQEZERFSSSMn4rFCCMjAGBIgIxgqDBAQCH9KQFgqSI yAyAsiqQVD6R/cIsioH5rn/d/f/uFBT3H2L9EGkn1LBA5g+nQP+zVfzP0+/+XyR/8TQv3fcNcZt9 kkzGT8JdsFI/oGdKaY4H3FRuEP8hBnx7vyd7mYMziDMc1Vw1oE73jt67U76aIf3wexnhO4wziPN4 zpMosJ4Ed4nQhkQLYYcjVOSiCnvAiyIQSb9f+P+pvNSaKVfxdgie9VIgQVgCEgkUWIf8j+px+wWJ 7bbLZxrUdrp/0NtQ31Mbs2ltgQZ0BCEENVWlFYVqw1MzIM7zg6d81POflP9R/5ED/vShsbI52cOL 2QvYbH9ZgjWCNRMDkt7szsOL5mhcsRZGXjji1ZiWELMuF07gpec5uhpMdMX74Kls5DzkklqYRGMb ax5EqCSFqYx/Ey462q6Gw3EMCq5FvdWfvWGEkByEYMMKW7zJDJGJnp4zJJvKw/6cvUMRXMm6SaSj 9kWhAgqXWrphGIw02vg/V1ru6rv5KRbqMK4vr5+hvVMuTCQDzCFhOidRPP2Vbp28WttFStrO/GVF uxU6NjkUsiWNt0JD3NWfl526OttyG9P44tAGg8AP8w0dWRQfThDZjXo+W4+ZbHiggll2kyXiE5xd G1l+IKciPMJzPNneVA7XRYUBeSCLoJdJJZDIOh1xrWgjgwc1pT73dVdTfK4CAsbK8c8BuiS9zdDT BIcU0YOikI5Zl+TCxLn0Z+rz+vu4l5baL1aLvKnmkxrSTOmWKCorTm+MUTBGBFyBb5YyJTl5ql69 gR/Ug4PZMPMwt7AC9IexxBNr/R5ztUsz2GAkAQ4Z+fdov2OkQF62PGwWR5CBrDgkz8pJ4B4JjKSx er5ljyFHzY3hwCiWy1i6MTMxwqj/Ac5cPQM4h9nGzpHZmOFzlSGRG3cSSNbGsk4zuxMx2OBGUs3u w3vf3QMhWRZCDGZyX7oH8HBnDwKY0FogSIWliHCK3kh4+OOhl/ayNiMD8J2p8p3moXWTPGrSiRlq hXs4qB8Og7Q6zMZM+VKDPY+Sj6vbV30dZAnKCIL7Y9N0Gydey4VxzDDDDYpq3bye30QxdgJ3AZLZ 02+9cT0Htr+hBb/qediV4F+1moejkK8EAtK2k70REFt5DyN6VLHrTJegLmeGfMSoD0rwtr1wzcQG EDPbA9TD0j/M88a2eDjFoZvcQqaYqCVDkl4wFfFwy7nO7XWJ4yeE52cJxLr6vpfLtCZxOfwT+j1p 0O3E3p82zjc3rt9gqw3asWMEUxuVO45U8Sob04ERueYaCAQ05AZrOHPRXD07rf0LTLxwBmrqvw0O /d5QhA8/aehUx9Ojn9ldX2eGYpbUhX2M/GdvaKqkw+G59v2nibdf0cPAOCzzGGy1kD5PpOwsfUeN c7wVD6dVKliAAUQHniSuZnkYfpEQX3wEGycMYEjZO2wFTTqfcN333MLcKzLJ1CgHP08OBVQwNxCE A9RLl/hRzsgbj0ic7y+elYbnm7Hc0GhimHsgTtmWxJsQMXG4QgkCQVGlDGlkpkTLvauSKW1VM3Wm FNgMS5yhvZsO4NpV0oIDeYfmEHQycDdb0b3bQ/dc+8EhMZ7BtsBJTsh9IufatazL7zNT9Zd2BRaf o7zl+PhxPr9BJaOaanNMoX2wJWhZbbBkqKLqAuhVJ0dJkhd+9myzzeroUj0MMKMxc7sX9FPgYY8y 5FU9ublW8jDgN2Ufb2WLFwrTy3LF0xiWeco80U7O7TzXHKPIwMcJKzm8+mtpurGnlIJdhckNxaek G9FyN2WkgnQFWHYp1Bw5cTn6RR7LZoXUoII9BMPoF2kCSSAN1+/Wg86SALzosStAxyTVsEqNzOTA L5fDjRwk7/X7DOD7DsI91O7J8zCAbxUSQonWNBBpdaWO1DnPl4cZ/U2cZukhx7OrqGfyHEFOvmSk U6PRzJMBXyhn37Pzc093o+J9PoGtz7R+AjDrhn3Yq6HwZ6fgM59YbPqsTTonsswg9ncSRQm7mMbK jc02qbxMlAFDoBQLl2ujjTpkZ7+TrR4bfmPDrA9ZcCG0sFGRcCwa0OeEGCkEYkAILCIQAIKQRh4y ISwEGKAIjARGJBYAgtZdcEgALz8fA+f9PziQPkZd34H5/MSD7z7BysPa3VZJnarY/aaLRlxO3MW8 iIgbM2jhgzbOnTDhpERERhqkcNl09395Qy4JMHThJR2j+94s0alDtVfGRqYTLJvDZy5NWabBZk3S vEpTN51WzYTLOGa5o0SZ6q30SSUYaSMnKxUuc33Sns4TOHDhHnnZm4YZm7trRdsrWWRuoqcOmqi7 Csk2S7durGxdbLYnN01atlWTDCRnw7cmjMzYWchHuP7JIiHJX00SMKMlWTSy7Vdqaf+Xa/USYOXt 791e2GzT0h8/DA9R8KbglLRLqfZpEVp8NaPKST4RL9Hkf9OzIOI+NDWS1BwMDIgZmQxULTpWhedc kHQsHqJAhxXj9Axz3/6CgpmAq2IcWE98a49u3Z+R2fl+oQarPyeQ7UaydQfcd9xBEcNCTl+T/zsz Lqm7NH0fRy1emF1njXPNLRRksqu+psWa6rf8KIYfCypTh3+SB2ECgBCDHzoJq/x9hlPlOpQO1ar1 u0BS0yGI2P4YDZwjPSmHiJkftbgP7Uu8HUaIqRhxwIICCSKACMPPAOgH0gsRhCBJGAEQAIlKBWxa P65L3wUFNjgswW/rgH9OIPxJEgjBCEWcZ0B8gIDPt5tQmx2/cAuYMVg7MH3e23mEOA9Ypu5okk7O tq3+UBKIMSyUgo9AfMSKwgJAgSYHJ4POYAKBl0Pl80CEYR515xQUrIyD+Q87zsnEXnQinQICfhJB VT9/8f0n0XE7p+65/dZUFxyoETo7U86QcD0uI/UHIR7giZrMOWaSEGW/g3yWX3Mdwjyu9fqNn17x KE5BR94+IZ+G+ckcYmDNh3kLmAWDaJ5Mv6GrnjtX2oKa2qzTQhGBCSSEhUE+9YoXg0EH997hgiXj IriXF+FQM9DhwXiMTQ5zDCSTAqpJND93xbDQO6gGQ1uz9h3bD6fo+Wjsn2cOrJ2EEKB6A+4MTMo/ pfM/ufwXN390NE3ESlHLRNOk9ZY5qTf3NlD2jJyw/zbMcNktTrDdmwdHU5PIiEOdO7KUyFC7Zy/l VapHJuu3sSo1ct11mbyhl1VwbElslGiakuFtDlNRjltdF2rc40LLJ4ap8LmTR+rztYyOmjlN/lR3 c6KpunLp08dlih477ybODCS7Dls8bmGaibZnQzzWSOHDJMpEe/UIlouk7MHBdkbo4ZGGz05UX/Q3 S/w7MNGzZb8vjVk4enjlHj4tY4fC7DCp7Xe3tkxRNJ5QphUwtglM3SPhXjZM7SVa1Nm6uz5kntRy 9teHmpquZOESum3XN1nEbjjNog/yQwO9V2nV51/YCIQgwgQ1AaxfwgAQgRRUD832ghz/lgq4JQC9 C8AU2gh/kBgHeB/EzVhGIQ3j/4IPicgUU1E2+wbBYD95dCgvTtH0PocWmmycqKARAE/3xHVBAV56 83e3wdCuztOgOkh1HRA6xSsJHZkOEjsCBebDnJEKbH2QLz81TluqftUO1irl0oqZGSSxhxxkw1TO DDNoduzlg1arFm7VZZs41O3RJe+FmaNknaijlkZsbN3C3LR0ccWO83JtIzdpOE01XCrhpN3lJhqk u4XbMcMNnZLZRU4UfWI8wzTOGN57ZvHL/QaLHTRZViznQ8aOll2+rd/uHrNQ6NibZ6ema7syVWb5 GxJ0/kPlEkQiUSfJy2bePSmbho4OyTtoESezlk8V7OxAu1kuPV7nD3/B3kAgwDE2aTEz1GAObShM KPiJlz7vlq+irBe9/ms0fvHzaKJt2z7nDJskyP2xL9JxBKU0YMmjhwoyauHjtZJm5WwfZUqYfYk/ dHESRJENCS7grJ7X3arqqlkvl11qs2eaPb9WvbnPs/dx5lUhKUpRHShJGce3tNsej16+UenMfN6b tjgo6/j9LXX7xkgkgwkgij8wdxSGPkxjENYdLS2tYSAcEJ6Rbhkh6xEgwS3pBsIfufc/bRJZWKxQ nE4oiIgfB3ALibgigbfWHGdZvHcbNijkbFV6l2YkNRD8IjICM/4MhKpJDr1tqqtO3edCTQBygIph jbcuDlEUxIqRAgAjIEkgRCCCRBRgsiSCiPMKAQKPsTOx9L4Im/40E5tZ47AF9ZfRyiVJEVil1YAg EolQIpIMZIoBLJmZN+k2N14cFQIKEJkBkNjxokKToooAVhdAIRiLAREtehbY4AUIfRVIGiec7j12 1YGvUapa5CofIgXcC5qLklKJIDJJFiIKQBBRYIyQREYKsAUkkWCowNxCAcw4fxMn6KqaqvwP3OCp U/Q5P0fnQ2fERhlG2WxdZu/XsmbMjJ+4k4arqu1U34NE1XbQm/kbqv5FHJskL2Y6ta7XXQ5avG7R /jctRBwu54On8+1EmTjV6jSHpp9ojFDdNZzhQeNEpV2drPnBA9niLk3D22etHl0kmE2S7lj7oiIG 67o+TQ95s0mHpdc7U5VMHcRqq0duXr1musWfE4h6SNbnpvsm6m9o6KmzSIu7RN8QQHs3SAwQ6Ttv B784gymnQS4ulNlNkDmsuLggQNJkG0lrGbVIoG6dYuSXmF1kjWu7UajI0jH3anQ+a7xV8/qkmfb5 HsyZmzZq2NEmixV5xKKOFzV37nOfBiB0+FzBm2NVw8gJoa9eCHNkCYjRFjFYKM6g6iDE0RBpZ5OS JMEij0WKy+iP4nt+jSdhlAfSd1DkIHw86qq0+YEUBCLBYioyCAxERZEQRgCIMiKsBPiMc+NVdesA /TWbsEIESEkBIuCwosRjD8nppDFBiIIDERERGAojEEBFGAwkRhESa7yd4nBYZGZyvMyAOcjKYY8M CAdy+1AJBAYCJQPJcPyED4+mk4gWftl/qfeZOkQkBqMhxLIIfYrR7MSiwgOBh1ZLxLiKCkm6kIkI BXo5wRWHHeCObvXpAQfQvPwDGvq/eqY6PyLx64A9vws79EDO7IcXTPzimjAjIv6GASYOBrps5odY SRAFCw5YHodc42mZ9tsQzHXpDJew99C6wmmQ2iJBecMwVVhO+UBeCXLGW3daBnIaWzwQvsU2g5m0 IqrfthrIyMUIQGBjdLAftuLnhg7oSaocWtKb0q5IxkiBAZBkUJBAkkFCGLtZlR79mq0wQyKyNmZZ 6Dx+DlNx8PFyCwvcWwkRWLasGviSd5zAYYNprgMKtrKE04LYnYOOnE3gcE01J65fqhtRdAcSZ0mO 34mI2xgXx0mA3EqaByCkOUILhdxMtZsqZpmERiEIJQiRCRKEIJEJEYxM0qDAooIRVbIFIAHL6PP6 NQXv3na7jzTOg0dJzFg0QsBiR2hzBoPANemw5Pb5bG3Nu3XRhnyunNN45TXLulzl+BMZ4YTk4VeO avTZqUu7aH4uX9eHySbM2ribCRVoaCokFRoHpaWQ1gSLuF8Hx7HItHlCCYm8L3VUokHwIytActws mtOJUGtXoRCS9JIG5M9+J+ZNIL2n+LPggauvlL9y6K9teI+iQiHLBUULScKvqe01m72+z5KH0Rmz ZPrKRM0MySft7aso1eMN5KNUWavw/Czhd9Wbc6NW7Zw5VdNF32u6zXWbrkzcybGp+pwVKt1E1HK5 uoySOGZk4NWDRxwzZNDVy+1HShw4dKOlFySq8Z35as3Kxm5Mzj5nv6KOizZVWCq9SHeTYgnJCMAG 0hAkSEZBGmD3tmBmUeDiFi7MewrUprI6pKqtaX1EbmhBMCvBTaF1MDp2QntlNSWjWiuq04fFsisA SCDKKpOh5CGw4B0p1HMc5oXNxqDpPt/EB8CSQiMiQIkSABEYPn7DZkYvIB9tYp4+IO07jaGoihaz QePx+IvzNBxF9Qtx0TqKPQNoZkg6zRV27fUs0UZs3w+XO76zPzWTKpEkn6USI9MVAPKAVAUaV5ed FDC6EiC4EBmSSQOSPISO5kRkb4QTdjduhzOk42lbE2JsEoByZFrQognlFCdkAUrQDoDto8G8iOco ZkOrhEYTpHSFRquFpgQO5J8dY6LWES5CyeJ3D71og/z/fGrM/sRBEO34u35zTbNUjqJUujfc0Phq VZ2BkM5aVlo5ZE4HhvDuStzXT4qr3iM4j39ouLn4v9OacRGpWIHTl22dp/i5SOj82ckQkh6/f4/f F3y/jwiCGXQfkRCJU4gggQZMxn9u8R1HMlziOk8iddcGWue/VyjdxS5sovxzaSXMcLpR4/kk4lqD YDBnggZegPATcyCh8RTyiv8vgDwgQfkObJDqhs3diiCR14KrsOoN4FsT9X2C/PEH9QIxS0GhQsSJ CCsBBhAV+6hBshERsumPpWQLCfu75/HPT79geMEowG2DMLKYNRKKKYISEGJuWmzGCRGylrIUUQia af6WnFCSURaAKUQoTWOg9BWYCZZYImsPt+qTRAuRiYKoGoOMF3EJQf0Eoh8DCHRM0aPkUcsYhTSH 37PL3p6wF+cuN0hAYQFYQgkA1BXP0wQtKM9KWskrD0MsEPTgXChRkLALENueqWRBny3p/HNGB62x nTiwWIxVgiB11CWTK1ZGKxvA6Q1wUDMLCpUtOgPGutuwdHCsrCLCTTCSsJIkRBYMkQTE1kIaswNT QSkwmimeFA1kNjjEQylCHKdcOpLowk1qwCnZF2PInBxDiajA5kYRwRxNSGIXFN6aCdTNVn+FslQ/ YZIajUovO6HOYGDCOWgVloO1CBBEGOyQIT41zDn6yxBKm+S1E48GzYZynS0t+d6FhACJoQEUICeC hosCDRrIumoEYEQC60UpqdwNY7YECJhA7IFUEp6oGEDUIyCxEAYMFEYjAkIQZCLCEYCMIoPxIiF3 rQuO4B79HJFDSUREILGKIxBEBiAiiqoqHmJ5Hf4SE8ClA8vOFkQgoAxgIrCBEhDQxQyHPS+8Ln2O 7QbHdowIHV29ugKhyaPScHoHmEul0QA0FT50Q96oEB8h2K/aqWCx7w5V4CmE3TpAOP7z1esqHsc8 Je76SsxNVgVBMYOoKB7SQ5AuMZe4vChcSHIldd0yqEXhfonSqWj6Y/KNS6TDRIu1VZNFTQ1/RVk+ 267Jc0SRowzSNWrDM5ZJv4CDNH9bY4eMdKvGbjdms3apHMNlGEl2jZrqZSWauV2pqwqzwcmThwzL n4P7XC7Zo2NpKpOkmdjQkpR4q6cKFHbt2oZs25md6n63BVR04dN8y8bFGRqSbtieZ3R/nQVTbu5K JlG5mo7S/qjhk1LOWHvfZwZNo0cqtOzky1btE/pEQxmfC2qpJsl2uTjqh6OVHJt339weMGJP3vyo iG8QOD23TfMrJ8PRoycOHERhwz9nmr23WbpPWlHSuSxm9nHHtdy4OHLK7fpI1VUS6cs2F0z+jldq usqkIGaix0opk11wfZEkSPz3OmmzQ9tXDV2szNiSj162R6KvxED+ZDwl8j8fe1/X2P9H+xERER/T AH3wB/f+xd6f4zRfREEP2RsfY+FkP5WabIVXUh0AIWLQDpW5iYnb5hBhy+pzM156+7f5IJ1bUXqJ AihaCgt8EE7jkwHmxCiCGxIgRGKMXwKUxc90LSqjTCojYFRIh9NqBEL0Hu51CSRWEjvNS/x+zk/a JNkQVNY8QHiRR1Gg0oj6hpso7EPxzJxOQQdHDJALgIf0VXvBL/DcEUMsuSECIECCSDAhI4q2Q+IE IBp+SfGqh8AHth213j8QBcCCNMAstkeJT3B46jnNBMCYqxqsrAKB/RsHQubEDWViquBAFSHrT1pk JgkQ/GAyQgm8NR1GtNlzyFB3WLFsiDtsMGyHMRVb5IYqhVgvgJQPfATnEIooJxwA+sNRKeV4ctP8 OYAOxXj6cyBbIwKqoQtVSezZ1+Ip8Qor2nYHsDZY5FoDzHYq6K+AC/C5awT4aF9U9sV1JEYJIDBU U7krl5ZNh6X9QhkEqARiDBoeL+e2AApIiQgKRiCDAkURWQIsWALCLBQFBWMAFFiqoIwUBZASRkAF FICkiQCCBAVtuu09aiOCJgMRYQTYSPb5fVS+iDtSvV65R4AJVoAR19kTgl8kCAMGzz7VFrG5iv1C pxRn8XIDIVDVEGsAhA5iDF2/EPoP+tdKCBy8uncJxcBh+KZGCHUqbaQw4jideuqr7BD40PQezzIU Cjp0MQAG4R8CFhIQUIOzpdeuT438Uica+cTJZrP68+6A7pmHH+1wWsYQwr9RYHMvicAEFYYF0QQ0 9fXic4iJPsafdSKUmJSSEZYyfJ8lGZGTgdKJD3oTQREE/BJwkwDvncjFYiEYgZ/D/IxVYMCB6w/z bKscIv53ccIwP5qEsF/r0+/NZKs2KihSIfC/zOCkgImZmDBA0WU9aLZEdqwbbj8V+RcFsgc7EWRZ BRiwRiwIgAQAZEGLFAT731nHb6CfmJzvQPWPDcgRCCQ8T24nq0+YUQuDoHziHsPYedCqrYhJ4Br+ SDf4CpAD9RuOI1as3+GQJ6xNXA3RSQPehgqG1daUpPkPtVPkDejgpPaMNIkBAIWor6F/UKHEEP5U CM0cIh/QbRsfq9f5v7NiCHzED3qgUBxCFlTwHerD7FO5wX73sEPyAX3L5emD/Y84fQtl6+Jo0Q3G nJkGrEQhkJtYhjAuh2nn8+iq6H3ACGsNYdCL1ei3SbPK7lFO7YtrASA1KbK0QCRAjaNJCpHiT8Hw P4siI+iN4Iff+8+6EQ3QfmFKpuQ60ONexBOdXYuIhESHJQYAWLJRXJ9T5BIoQY8A+3oVA9wkjAYD AEhAwzT1Aduw1AyJyKrAQa3iBPzYw+BZZWCKolkkkYUiMQGBKCcAcoRE4fl9JrSklIWgDgbQVdqs iIjYkMQT+JVnWGQBmY2E1uoOs9x/IToEwV53qE1KKgakDdimfGpzxJACRVICYbXioMQHj2q5gRQ+ RYUMLpzAguFNi4FOJ1KvlDrevv3u0rlYIj6CjkCwk8hyKc6onRyHrUXciQTlhyHNE6AVYhUoQEjU 8DDocyAMAXYtKYIIcuzKIYSoZ4h6oBhAGGQUrfioXSDtuKUEBuERaUKCAjyju8VQNC6OPk1Ov4BM LEhAgSGBzbXEh5g9vtp4mZot/ElKEGQLJEpGFgJSRKAhQsRoGFIwGkIUiwFoGFADFUr5l5QzAd7s 5CaRFBojSyjzq7dTrdr5cUSpvE0TiDPe67LqdTit1A/jCcsigLIIiAMVRRGMZEkGCKgKIEUYIxQV VgCxgxVBWCKSIftZLJIJEYRSMiICDARRBARIwST3CQJJyckmSPECHl96urExJOQMnwXm5jpXYh6V yDmFda8gCBq/kRAziGFRX1QiGOQTn7NXxB39OrAezfyUoyZ1sZOxSuMX4IadoYY3Wsw0agXBA0xZ DQqqrCSGyIKUKClL7kT/YAvkfUCGoE9gg8RBH1iEfgglB+9BSPEawgN+kThzBBBgQ/0JDTAMmUxk 7bqefyCfnT32FtvX/bSAB4f4CZr0lHrVewEPObl1wDzbFVgEIrFdPMXLKqJFIALaARER/rIJwr+K okeLgVQgnCqIISajso9CbhdFC2+C6FlPLiU3PBD40DosfYqRdpuAgiaggQAYoQEQkgNyQFYhlFaE JxIUEoiC8RoYQ/XBCvUVPl7fZnEZNekQP063RR4hLz02zcoAIawyAQ6yryDJ1BQjBiAtIkBNomQf KIZmCYIq3LQeQ5lQtFAMomNiA2LMgALiizMIAXUMIAXGAyUSJgBDB94MANUKDASBIUQqAIIQSEYA JIIQST6xvW6Jh6XYCGer3e8Pl94/af2HgFkVih5cFs/MGtFVwIID5BQLvrC4pgWV+jFczRh+98p+ cdoz8mFEW+CuuABzMWRDbFNEinrDcaOgZncUYbQj93zIYuv4wFB2xVV7QT7wfriZRDyRKEpVas0L gWpQNw2NnGHSqcfGQ+541XewjESAKSCnABDMEUNPmABP0CFpyKrxrN3uEPFVborYCIQSBBGCowv0 FKr9X4FAYegE4TlYhMqFLQFegiKJ5YIJkU/pOUMgOlcQx1EorBOeJYSxclCCHuCFkxBCSIkkFEUh IgKfEM7CpZgt7Zcwb5uQO8pQRycW8bSBAYyDLSopJIvuLKCJFQWe6JIUKMgwYBCEIgIaagjBP1/I 58ukbBJGkIQf49fmQkRlmyEolCMhCIYdZify2A0QQsqR5b0AfzKJNpvegF3gofFTbju9Txn2+9Of 1PgU0ST0ivppBeLU8h/O2YXA+4QGPae4OmBUQSgAoiUIRA696KKIiAiCihBYRIoojCMERGIKCiLF gKQWEjBSRYbFqkQPrVYqfrVEyycoMRLm6g5rjwsA4QjCQUj7GZ/oH0fX9cIYe1YgAaUqgUG2bMjF 5BubSLxwFhAJEjiI+/wQO4fzxEQe1kxD9/qtEH8IhBDxibqBuarbT+tJkpoTsvCUQQj+D/J/dEMo 5I+E4/rRPyENhKCX1Olx/NV3QQ+JRCyCrAYyCmB6wh8evrmiByyFmwD6uiEYMfgP2B0othDIQ+hU 5U17QPPPjO5aQVO/uoBDsVE+N04Cc3ESEIU9oloCWFNqjmqKBibSEUGRRhAEhFVhFhFGQVjFf19z 9Kon6z7kPQHWhuT5/h7jHl5AFuq8BD1iH3ngqYntzyTM/sEGEhPjweRkRigsRUFixUie5IFBKhUF WFT2GFmMgUGBYklSS09GEM1ZpBGBKwqSKsWQxCRZZJIrEjuEjMwsBiUSUVFggwVFEYwYyVFUVS2i iRTVkrEGDhRiMRiMRjJloExgqMgVgLJbawIgnjJBIZIIwgIZSWQiGpZCooAxkpEgUREREmwksDqB JYQ9BmmCrAVZDhixYKAnvJZCUYYgSpIfqXNVsgow+XBAQ+RuKOpcRxD9jZIHDInQRGMGIRYIoxED 6zxISiKiWozIngsGzaEbWQtTBUTiDysl8PgFZ7zxAqWEkKY1yp4B1gFlxG4K0oMgEBHxnQMOt/rL TMO3RIrqUYzJLgCEg9n5vqLxd6X1pWgIDuiARS0Yh8eOpTR6klmFfuEpAGAsFRTrD3DYP2dai5gd Df2O99T+CHqwxEdhBB+ba6jf6wD4BlAmaoeo7CRJZWxAGAagyLSShoUFLWPEEO8UFMcibIoKFHKE oiyAAQiCsSEXlBWNASAAR4mAYPudbqfhQ+HqF3DAhqVE3GMUXAWMUCBAiZQkDAgfEIMsy0642FhE D4UywujeCIOwkAPYJ9kmBO6fXdHIo8wLRYxFWyUooWS2MIYCjZGT9RIfQCBgfaIBeV/A9tsawi0r rCVUmEN7JkqpkIDMTdmccGBCwZIxiIoNVFFSUAaNKwlQYylCyFSyjBiWW0CylIVIsGpaikCoUUSF iSCISFZFIQsEKgIkARAGJErLCrxjTCDhUSCgSEZkJ+f02pAJMA7kZjJhSWAcEICxCAMQuZkqwOtl waqtRkRoqD1glYXEQxoBUcM2UyCEE3OA3v9lztsHdyP8MvM7CAwK05OQ4BIRCQDYiIIhKTt4HJIG 01ACIQCICEhGHHHOhEKUMLmH7IlA7zoeuELmUyzdDcn5thOQLDYMWBRBuutQqxAgEJMIG2LgE0xR DYPgBtcwoNb1kW/S6h2VyFnO8aX2DQUVWu9zn0xfYJ7qyEu3+UgA++uMLw8fS6xOPTi4hdqPkiLI gSKsiEiEghIJ4qq2E4EHFdxBNAmavGcjY1qoFReVA49aqsXgrrewTYcS2DyIvVEZECRkEkJBJNgh 9amhETiPOEEdR6PVs/9O3JDwJVlISkhDGCoQAUIM6wIAtesZIVECPQIRdtnntImUF2wC7IFwoC4Q FcSGcIQ+r6qwj6wXhGkRCGjv4CDiA07TtF9pOoZndO+DGACgLBZIKCIDIkgEi3QqjGfKH7m1gMDV blfT4h28xht8J7id3Ue77/N6do4bwcc0fplsTIzUQYmB3aL8OY4bylIsjIMYrPckLJs5hWC5nN9m 1i0dvF6PAG9iAdCHTNpkI9oGskmb3HRaGaIBJQmbpsc1OOrYTnl5D+qNsacxlDoJTg1SiJQ0XMOm F5HWcTOIWxLTVuFEZBQRhLiFkYGSkRRixYFpYJLRRtGPaaQoA1F7AxcWkFago50U4QKiqUqhBQCJ IIQWLBytQ2KKVOD8pPLnW5I8E5SuGoynhJ3GzsC03DlJ3bwMFUUFRm8nxYflQ4iHaPM5kMuEnRlk S67akw1rBhWIcSZYWGjiDgbJJkTtKYGpClIa7FAMgzOJbZs7al7aIaJqOLBMGVEL44sSyABuFVdg qOs/cSaiDCMQiK3RnA/FIklAhXTWpNBsE2RiipE84ZvqeJs4DcnkvFh3QpN5awblwaGDxt4ghtLs 3mlcd5SCKWqWRragok1uQWgq0nCKROIIlEBkOvfJ0IHIzBgQqEHDOxdTSBBRWEVkRSiooRvBhtW1 oUXKFuCQ9OBEGDChzALgSBsdm1jvFVcWLf0VPvaR3ECdKaGSEMkoLkRH+J1MoRchpEIghQKReMoj bGZkhIilYIhMK3Qv5RbvHgcbaDJvYYyQCgsUxoaZEJDlDJEqBLJNMgqIxYqoXGC1CiLQQSmwCBHQ tsMkr7AoXuIhCWUEv4LHz8IOoiFGqId8O41bwS8vGGayRIEIRVYkkgwEYkYBwqEFDiEPID+SURH4 IlEEJJINoG6uSAajsTnDa7EwiMGIhBdcQQOMusC0oUBZDwvqmIiwEBQFjEXlaG8DkiqBkcAENxku jmgP5KIRB0Mw5TAYJytBlrkUVN9FFJCDGouwHEOcDYGQ+teAvQp6fjLigpBOD8zxAqEiig706Ogh Mv3viPIKAeh6umKhYiL/gsDiVByMiDpQNQjCIQisEQFVZIgIiAICETnRPca/cLQHSq/mwMVVC8hG M5DhzKARjXXuO3t35cYHMIRT9F568p5vkNWqBAkuPW/h+NhNnM9xRzdf3q/S+7V3d77OqmQTvQig AUcYEjSkTZ+PmASAIwRgAkjIMHkOEfMJg5h8Ae1PyOtExQT3CD7s0SwmznEOrqpqvap9wIfKgnoX eLvgBg2fTbzA/cyJCIkDsRKCiYAXOgio4cz14ZCiVj3EQPpMg7BDvun80RD+1nH6II+PogHAadm7 8xjPiEOAIcEPMOL0inoeSx7o1yYNoJq9HxJx0eEFZkkgJVAjNG4PBW6l4I2GsWHlEG6oG5BDnexU 6XICd/ATEQ0CyQ3iHR/VDUfl+cIfu/bRu1df0/iIjSIhC77gyEQCoiRkIA930+vp6QFN4HhBAdhX U/D0cN22+JiDCAAHixVLIXxLUBg0UIWiQTLNL0AJTR1qmzHKSq8RvYhnCpTqaXO1F2ONDCgzBCLF Npiah0VA6w5RAcg1REvO3W0vL6qwIQgq3ricRXEkU+7EHbn9VYIXRDUhR/stlQhwVPyO4NauAZ7R PQ6uoE/F3xVIhFIQgQBIIeg0VPYwPA2juLENWoIGx/qh9ESiYg0ugR+2EeD5fsiPqj2+p0T+wPBX rEB7wsLrGAIEhOYBa4bj9r1hkHMHYSSRBLJBccBYgJf/i7kinChILfdaRQA=