diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 581915ec..87042a0b 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -15,14 +15,14 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
- go: ["1.20.x", "1.21.x"]
+ go: ["1.22.x", "1.23.x"]
steps:
- name: Check out code into the Go module directory
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Setup Go ${{ matrix.go }}
- uses: actions/setup-go@v4
+ uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go }}
id: go
diff --git a/.gitignore b/.gitignore
index 971ffc61..8017b54f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,9 @@ build/
dist/
__pycache__/
.vscode/
+*.pem
+*.crt
+*.csr
+*.exe
.idea/
+__debug*
\ No newline at end of file
diff --git a/Makefile b/Makefile
index ba98c752..40343dda 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
# go test -count=1 disables the test cache so that all tests are run every time.
-all: test integration examples
+all: test integration selfintegration examples
test:
go test -count=1 -race ./...
@@ -9,22 +9,26 @@ lint:
staticcheck ./...
integration:
- go test -count=1 -race -v -tags=integration ./uatest/...
+ go test -count=1 -race -v -tags=integration ./tests/python...
+
+selfintegration:
+ go test -count=1 -race -v -tags=integration ./tests/go...
examples:
go build -o build/ ./examples/...
test-race:
go test -count=1 -race ./...
- go test -count=1 -race -v -tags=integration ./uatest/...
+ go test -count=1 -race -v -tags=integration ./tests/python...
+ go test -count=1 -race -v -tags=integration ./tests/go...
install-py-opcua:
pip3 install opcua
gen:
- go install golang.org/x/tools/cmd/stringer@latest
+ which stringer || go install golang.org/x/tools/cmd/stringer@latest
+ find . -name '*_gen.go' -delete
go generate ./...
- go mod tidy
release:
GITHUB_TOKEN=$$(security find-generic-password -gs GITHUB_TOKEN -w) goreleaser --clean
diff --git a/README.md b/README.md
index 26d26878..32567ca0 100644
--- a/README.md
+++ b/README.md
@@ -169,7 +169,7 @@ We would be happy if you can add your equipment to the list. Just open a PR :)
| OMRON NX102-9020 |v0.3.x | production | [IOTech Systems](https://www.iotechsys.com/) |
| InfluxDB Telegraf plugin | v0.3.x | ? | Community |
-## Supported Features
+## Supported Client Features
The current focus is on the OPC UA Binary protocol over TCP. No other protocols are supported at this point.
@@ -191,51 +191,78 @@ The current focus is on the OPC UA Binary protocol over TCP. No other protocols
| | User Name Password | Yes | |
| | X509 Certificate | Yes | |
+## Supported Server Features
+
+The current focus is on the OPC UA Binary protocol over TCP. No other protocols are supported at this point.
+
+| Categories | Features | Supported | Notes |
+|----------------|----------------------------------|-----------|-------------|
+| Encoding | OPC UA Binary | Yes | |
+| | OPC UA JSON | | not planned |
+| | OPC UA XML | | not planned |
+| Transport | UA-TCP UA-SC UA Binary | Yes | |
+| | OPC UA HTTPS | | not planned |
+| | SOAP-HTTP WS-SC UA Binary | | not planned |
+| | SOAP-HTTP WS-SC UA XML | | not planned |
+| | SOAP-HTTP WS-SC UA XML-UA Binary | | not planned |
+| Encryption | None | Yes | |
+| | Basic128Rsa15 | Untested | |
+| | Basic256 | Untested | |
+| | Basic256Sha256 | Untested | |
+| Authentication | Anonymous | Yes | |
+| | User Name Password | Untested | |
+| | X509 Certificate | Untested | |
+
+
### Services
Here is the current set of supported services. For low-level access use the client `Send` function directly.
-| Service Set | Service | Client | Notes |
-|-----------------------------|-------------------------------|--------|--------------|
-| Discovery Service Set | FindServers | Yes | |
-| | FindServersOnNetwork | Yes | |
-| | GetEndpoints | Yes | |
-| | RegisterServer | | |
-| | RegisterServer2 | | |
-| Secure Channel Service Set | OpenSecureChannel | Yes | |
-| | CloseSecureChannel | Yes | |
-| Session Service Set | CreateSession | Yes | |
-| | CloseSession | Yes | |
-| | ActivateSession | Yes | |
-| | Cancel | | |
-| Node Management Service Set | AddNodes | | |
-| | AddReferences | | |
-| | DeleteNodes | | |
-| | DeleteReferences | | |
-| View Service Set | Browse | Yes | |
-| | BrowseNext | Yes | |
-| | TranslateBrowsePathsToNodeIds | | |
-| | RegisterNodes | Yes | |
-| | UnregisterNodes | Yes | |
-| Query Service Set | QueryFirst | | |
-| | QueryNext | | |
-| Attribute Service Set | Read | Yes | |
-| | Write | Yes | |
-| | HistoryRead | Yes | |
-| | HistoryUpdate | | |
-| Method Service Set | Call | Yes | |
-| MonitoredItems Service Set | CreateMonitoredItems | Yes | |
-| | DeleteMonitoredItems | Yes | |
-| | ModifyMonitoredItems | Yes | |
-| | SetMonitoringMode | Yes | |
-| | SetTriggering | | |
-| Subscription Service Set | CreateSubscription | Yes | |
-| | ModifySubscription | | |
-| | SetPublishingMode | | |
-| | Publish | Yes | |
-| | Republish | | |
-| | DeleteSubscriptions | Yes | |
-| | TransferSubscriptions | | |
+
+| Service Set | Service | Client | Server | Notes |
+|-----------------------------|-------------------------------|--------|--------|--------------|
+| Discovery Service Set | FindServers | Yes | | |
+| | FindServersOnNetwork | Yes | | |
+| | GetEndpoints | Yes | | |
+| | RegisterServer | | | |
+| | RegisterServer2 | | | |
+| Secure Channel Service Set | OpenSecureChannel | Yes | Yes* | |
+| | CloseSecureChannel | Yes | Yes* | |
+| Session Service Set | CreateSession | Yes | Yes | |
+| | CloseSession | Yes | Yes | |
+| | ActivateSession | Yes | Yes | |
+| | Cancel | | | |
+| Node Management Service Set | AddNodes | | | |
+| | AddReferences | | | |
+| | DeleteNodes | | | |
+| | DeleteReferences | | | |
+| View Service Set | Browse | Yes | Yes | |
+| | BrowseNext | Yes | | |
+| | TranslateBrowsePathsToNodeIds | | | |
+| | RegisterNodes | Yes | | |
+| | UnregisterNodes | Yes | | |
+| Query Service Set | QueryFirst | | | |
+| | QueryNext | | | |
+| Attribute Service Set | Read | Yes | Yes | |
+| | Write | Yes | Yes | |
+| | HistoryRead | Yes | | |
+| | HistoryUpdate | | | |
+| Method Service Set | Call | Yes | | |
+| MonitoredItems Service Set | CreateMonitoredItems | Yes | Yes | |
+| | DeleteMonitoredItems | Yes | Yes | |
+| | ModifyMonitoredItems | Yes | Yes | |
+| | SetMonitoringMode | Yes | Yes | |
+| | SetTriggering | | | |
+| Subscription Service Set | CreateSubscription | Yes | Yes | |
+| | ModifySubscription | | | |
+| | SetPublishingMode | | | |
+| | Publish | Yes | Yes | |
+| | Republish | | | |
+| | DeleteSubscriptions | Yes | Yes | |
+| | TransferSubscriptions | | | |
+
+* not all encryption schemes are fully functional at this time
+
## Authors
diff --git a/client.go b/client.go
index f3a5329f..0ebbaedf 100644
--- a/client.go
+++ b/client.go
@@ -763,7 +763,7 @@ func (c *Client) CreateSession(ctx context.Context, cfg *uasc.SessionConfig) (*S
var s *Session
// for the CreateSessionRequest the authToken is always nil.
// use c.SecureChannel().SendRequest() to enforce this.
- err := c.SecureChannel().SendRequest(ctx, req, nil, func(v interface{}) error {
+ err := c.SecureChannel().SendRequest(ctx, req, nil, func(v ua.Response) error {
var res *ua.CreateSessionResponse
if err := safeAssign(v, &res); err != nil {
return err
@@ -876,7 +876,7 @@ func (c *Client) ActivateSession(ctx context.Context, s *Session) error {
UserIdentityToken: ua.NewExtensionObject(s.cfg.UserIdentityToken),
UserTokenSignature: s.cfg.UserTokenSignature,
}
- return c.SecureChannel().SendRequest(ctx, req, s.resp.AuthenticationToken, func(v interface{}) error {
+ return c.SecureChannel().SendRequest(ctx, req, s.resp.AuthenticationToken, func(v ua.Response) error {
var res *ua.ActivateSessionResponse
if err := safeAssign(v, &res); err != nil {
return err
@@ -918,7 +918,7 @@ func (c *Client) closeSession(ctx context.Context, s *Session) error {
}
req := &ua.CloseSessionRequest{DeleteSubscriptions: true}
var res *ua.CloseSessionResponse
- return c.Send(ctx, req, func(v interface{}) error {
+ return c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
}
@@ -936,7 +936,7 @@ func (c *Client) DetachSession(ctx context.Context) (*Session, error) {
// Send sends the request via the secure channel and registers a handler for
// the response. If the client has an active session it injects the
// authentication token.
-func (c *Client) Send(ctx context.Context, req ua.Request, h func(interface{}) error) error {
+func (c *Client) Send(ctx context.Context, req ua.Request, h func(ua.Response) error) error {
stats.Client().Add("Send", 1)
err := c.sendWithTimeout(ctx, req, c.cfg.sechan.RequestTimeout, h)
@@ -948,7 +948,7 @@ func (c *Client) Send(ctx context.Context, req ua.Request, h func(interface{}) e
// sendWithTimeout sends the request via the secure channel with a custom timeout and registers a handler for
// the response. If the client has an active session it injects the
// authentication token.
-func (c *Client) sendWithTimeout(ctx context.Context, req ua.Request, timeout time.Duration, h func(interface{}) error) error {
+func (c *Client) sendWithTimeout(ctx context.Context, req ua.Request, timeout time.Duration, h uasc.ResponseHandler) error {
sc := c.SecureChannel()
if sc == nil {
return ua.StatusBadServerNotConnected
@@ -981,7 +981,7 @@ func (c *Client) FindServers(ctx context.Context) (*ua.FindServersResponse, erro
EndpointURL: c.endpointURL,
}
var res *ua.FindServersResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -993,7 +993,7 @@ func (c *Client) FindServersOnNetwork(ctx context.Context) (*ua.FindServersOnNet
req := &ua.FindServersOnNetworkRequest{}
var res *ua.FindServersOnNetworkResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1007,7 +1007,7 @@ func (c *Client) GetEndpoints(ctx context.Context) (*ua.GetEndpointsResponse, er
EndpointURL: c.endpointURL,
}
var res *ua.GetEndpointsResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1046,7 +1046,7 @@ func (c *Client) Read(ctx context.Context, req *ua.ReadRequest) (*ua.ReadRespons
req = cloneReadRequest(req)
var res *ua.ReadResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
err := safeAssign(v, &res)
if err != nil {
return err
@@ -1077,7 +1077,7 @@ func (c *Client) Write(ctx context.Context, req *ua.WriteRequest) (*ua.WriteResp
stats.Client().Add("NodesToWrite", int64(len(req.NodesToWrite)))
var res *ua.WriteResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1117,7 +1117,7 @@ func (c *Client) Browse(ctx context.Context, req *ua.BrowseRequest) (*ua.BrowseR
req = cloneBrowseRequest(req)
var res *ua.BrowseResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1131,7 +1131,7 @@ func (c *Client) Call(ctx context.Context, req *ua.CallMethodRequest) (*ua.CallM
MethodsToCall: []*ua.CallMethodRequest{req},
}
var res *ua.CallResponse
- err := c.Send(ctx, creq, func(v interface{}) error {
+ err := c.Send(ctx, creq, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
@@ -1148,7 +1148,7 @@ func (c *Client) BrowseNext(ctx context.Context, req *ua.BrowseNextRequest) (*ua
stats.Client().Add("BrowseNext", 1)
var res *ua.BrowseNextResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1162,7 +1162,7 @@ func (c *Client) RegisterNodes(ctx context.Context, req *ua.RegisterNodesRequest
stats.Client().Add("NodesToRegister", int64(len(req.NodesToRegister)))
var res *ua.RegisterNodesResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1176,7 +1176,7 @@ func (c *Client) UnregisterNodes(ctx context.Context, req *ua.UnregisterNodesReq
stats.Client().Add("NodesToUnregister", int64(len(req.NodesToUnregister)))
var res *ua.UnregisterNodesResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1199,7 +1199,7 @@ func (c *Client) HistoryReadEvent(ctx context.Context, nodes []*ua.HistoryReadVa
}
var res *ua.HistoryReadResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1222,7 +1222,7 @@ func (c *Client) HistoryReadRawModified(ctx context.Context, nodes []*ua.History
}
var res *ua.HistoryReadResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1245,7 +1245,7 @@ func (c *Client) HistoryReadProcessed(ctx context.Context, nodes []*ua.HistoryRe
}
var res *ua.HistoryReadResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -1268,7 +1268,7 @@ func (c *Client) HistoryReadAtTime(ctx context.Context, nodes []*ua.HistoryReadV
}
var res *ua.HistoryReadResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
diff --git a/client_sub.go b/client_sub.go
index 80b387dc..f9d885c9 100644
--- a/client_sub.go
+++ b/client_sub.go
@@ -35,7 +35,7 @@ func (c *Client) Subscribe(ctx context.Context, params *SubscriptionParameters,
}
var res *ua.CreateSubscriptionResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
@@ -110,7 +110,7 @@ func (c *Client) transferSubscriptions(ctx context.Context, ids []uint32) (*ua.T
}
var res *ua.TransferSubscriptionsResponse
- err := c.Send(ctx, req, func(v interface{}) error {
+ err := c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -178,7 +178,7 @@ func (c *Client) sendRepublishRequests(ctx context.Context, sub *Subscription, a
debug.Printf("RepublishRequest: req=%s", debug.ToJSON(req))
var res *ua.RepublishResponse
- err := c.SecureChannel().SendRequest(ctx, req, c.Session().resp.AuthenticationToken, func(v interface{}) error {
+ err := c.SecureChannel().SendRequest(ctx, req, c.Session().resp.AuthenticationToken, func(v ua.Response) error {
return safeAssign(v, &res)
})
debug.Printf("RepublishResponse: res=%s err=%v", debug.ToJSON(res), err)
@@ -549,7 +549,7 @@ func (c *Client) sendPublishRequest(ctx context.Context) (*ua.PublishResponse, e
dlog.Printf("PublishRequest: %s", debug.ToJSON(req))
var res *ua.PublishResponse
- err := c.sendWithTimeout(ctx, req, c.publishTimeout(), func(v interface{}) error {
+ err := c.sendWithTimeout(ctx, req, c.publishTimeout(), func(v ua.Response) error {
return safeAssign(v, &res)
})
stats.RecordError(err)
diff --git a/client_test.go b/client_test.go
index b64ad50c..0c44e588 100644
--- a/client_test.go
+++ b/client_test.go
@@ -15,7 +15,7 @@ func TestClient_Send_DoesNotPanicWhenDisconnected(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- err = c.Send(context.Background(), &ua.ReadRequest{}, func(i interface{}) error {
+ err = c.Send(context.Background(), &ua.ReadRequest{}, func(i ua.Response) error {
return nil
})
verify.Values(t, "", err, ua.StatusBadServerNotConnected)
diff --git a/debug/debug.go b/debug/debug.go
index 113bef01..68c501f7 100644
--- a/debug/debug.go
+++ b/debug/debug.go
@@ -11,6 +11,7 @@ import (
"io"
"log"
"os"
+ "runtime"
"strings"
"golang.org/x/exp/slices"
@@ -41,7 +42,26 @@ func Printf(format string, args ...interface{}) {
if !Enable {
return
}
- Logger.Printf(format, args...)
+
+ _, file, line, ok := runtime.Caller(1)
+ if !ok {
+ file = "???"
+ line = 0
+ }
+
+ short := file
+ for i := len(file) - 1; i > 0; i-- {
+ if file[i] == '/' {
+ short = file[i+1:]
+ break
+ }
+ }
+ file = short
+
+ prefix := fmt.Sprintf(" %v:%v ", file, line)
+ Logger.Printf(prefix+format, args...)
+
+ //Logger.Printf(format, args...)
}
// ToJSON returns the JSON representation of v when debug logging
@@ -57,7 +77,7 @@ func ToJSON(v interface{}) string {
return string(b)
}
-// FlagSet returns true if the OPCUA_DEBUG environment variable contains the
+// FlagSet returns true if the OPC_DEBUG environment variable contains the
// given flag.
func FlagSet(name string) bool {
return slices.Contains(strings.Fields(Flags), name)
diff --git a/examples/crypto/crypto.go b/examples/crypto/crypto.go
index d766fc90..b9e09f68 100644
--- a/examples/crypto/crypto.go
+++ b/examples/crypto/crypto.go
@@ -22,8 +22,8 @@ import (
"github.com/gopcua/opcua"
"github.com/gopcua/opcua/debug"
"github.com/gopcua/opcua/errors"
+ uatest "github.com/gopcua/opcua/tests/python"
"github.com/gopcua/opcua/ua"
- "github.com/gopcua/opcua/uatest"
)
var (
diff --git a/examples/server/NodeSet2_server/Opc.Ua.Di.NodeSet2.xml b/examples/server/NodeSet2_server/Opc.Ua.Di.NodeSet2.xml
new file mode 100644
index 00000000..f0ef0258
--- /dev/null
+++ b/examples/server/NodeSet2_server/Opc.Ua.Di.NodeSet2.xml
@@ -0,0 +1,5719 @@
+
+
+
+
+
+ http://opcfoundation.org/UA/DI/
+
+
+
+
+
+
+
+ i=1
+ i=2
+ i=3
+ i=4
+ i=5
+ i=6
+ i=7
+ i=8
+ i=9
+ i=10
+ i=11
+ i=13
+ i=12
+ i=15
+ i=14
+ i=16
+ i=17
+ i=18
+ i=20
+ i=21
+ i=19
+ i=22
+ i=26
+ i=27
+ i=28
+ i=47
+ i=46
+ i=35
+ i=36
+ i=48
+ i=45
+ i=40
+ i=37
+ i=38
+ i=39
+ i=53
+ i=52
+ i=51
+ i=54
+ i=9004
+ i=9005
+ i=17597
+ i=9006
+ i=15112
+ i=17604
+ i=17603
+
+
+ http://opcfoundation.org/UA/DI/
+ https://reference.opcfoundation.org/DI/v104/docs/12.1
+
+ ns=1;i=15002
+ ns=1;i=15003
+ ns=1;i=15004
+ ns=1;i=15005
+ ns=1;i=15006
+ ns=1;i=15007
+ ns=1;i=15008
+ ns=1;i=15031
+ ns=1;i=15032
+ ns=1;i=15033
+ i=11715
+ i=11616
+
+
+
+ NamespaceUri
+
+ i=68
+ ns=1;i=15001
+
+
+ http://opcfoundation.org/UA/DI/
+
+
+
+ NamespaceVersion
+
+ i=68
+ ns=1;i=15001
+
+
+ 1.04.0
+
+
+
+ NamespacePublicationDate
+
+ i=68
+ ns=1;i=15001
+
+
+ 2022-11-03T00:00:00Z
+
+
+
+ IsNamespaceSubset
+
+ i=68
+ ns=1;i=15001
+
+
+ false
+
+
+
+ StaticNodeIdTypes
+
+ i=68
+ ns=1;i=15001
+
+
+
+ 0
+
+
+
+
+ StaticNumericNodeIdRange
+
+ i=68
+ ns=1;i=15001
+
+
+
+ 1:2147483647
+
+
+
+
+ StaticStringNodeIdPattern
+
+ i=68
+ ns=1;i=15001
+
+
+
+
+
+
+ DefaultRolePermissions
+
+ i=68
+ ns=1;i=15001
+
+
+
+ DefaultUserRolePermissions
+
+ i=68
+ ns=1;i=15001
+
+
+
+ DefaultAccessRestrictions
+
+ i=68
+ ns=1;i=15001
+
+
+
+ ConnectsTo
+ Used to indicate that source and target Node have a topological connection.
+ DI ConnectsTo
+ https://reference.opcfoundation.org/DI/v104/docs/5.5
+
+ i=33
+
+
+
+ ConnectsToParent
+ Defines the parent (i.e. the communication Device) of a Network.
+ DI ConnectsTo
+ https://reference.opcfoundation.org/DI/v104/docs/5.5
+
+ ns=1;i=6030
+
+
+
+ IsOnline
+ Used to bind the offline representation of a Device to the online representation.
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.3.2
+
+ i=44
+
+ OnlineOf
+
+
+ DeviceSet
+ Contains all instances of devices
+ DI DeviceSet
+ https://reference.opcfoundation.org/DI/v104/docs/4.9
+
+ i=85
+ i=58
+
+
+
+ DeviceFeatures
+ DI DeviceSet
+ https://reference.opcfoundation.org/DI/v104/docs/4.10
+
+ ns=1;i=5001
+ i=58
+
+
+
+ NetworkSet
+ Contains all instances of communication networks
+ DI NetworkSet
+ https://reference.opcfoundation.org/DI/v104/docs/5.6
+
+ i=85
+ i=58
+
+
+
+ DeviceTopology
+ Starting point of the configured device topology.
+ DI DeviceTopology
+ https://reference.opcfoundation.org/DI/v104/docs/6.2
+
+ ns=1;i=6095
+ i=85
+ i=58
+
+
+
+ OnlineAccess
+ Hint of whether the Server is currently able to communicate to Devices in the topology.
+
+ i=68
+ ns=1;i=6094
+
+
+
+ TopologyElementType
+ Defines the basic information components for all configurable elements in a device topology
+ DI Information Model
+ https://reference.opcfoundation.org/DI/v104/docs/4.3
+
+ ns=1;i=5002
+ ns=1;i=5003
+ ns=1;i=6567
+ ns=1;i=6014
+ ns=1;i=6161
+ i=58
+
+
+
+ ParameterSet
+ Flat list of Parameters
+
+ ns=1;i=6017
+ i=58
+ i=80
+ ns=1;i=1001
+
+
+
+ <ParameterIdentifier>
+ A parameter which belongs to the topology element.
+
+ i=63
+ i=11510
+ ns=1;i=5002
+
+
+
+ MethodSet
+ Flat list of Methods
+
+ i=58
+ i=80
+ ns=1;i=1001
+
+
+
+ <GroupIdentifier>
+ An application specific functional group used to organize parameters and methods.
+
+ ns=1;i=1005
+ i=11508
+ ns=1;i=1001
+
+
+
+ Identification
+ Used to organize parameters for identification of this TopologyElement
+
+ ns=1;i=1005
+ i=80
+ ns=1;i=1001
+
+
+
+ Lock
+ Used to lock the topology element.
+
+ ns=1;i=6468
+ ns=1;i=6163
+ ns=1;i=6164
+ ns=1;i=6165
+ ns=1;i=6166
+ ns=1;i=6169
+ ns=1;i=6171
+ ns=1;i=6173
+ ns=1;i=6388
+ i=80
+ ns=1;i=1001
+
+
+
+ Locked
+
+ i=68
+ i=78
+ ns=1;i=6161
+
+
+
+ LockingClient
+
+ i=68
+ i=78
+ ns=1;i=6161
+
+
+
+ LockingUser
+
+ i=68
+ i=78
+ ns=1;i=6161
+
+
+
+ RemainingLockTime
+
+ i=68
+ i=78
+ ns=1;i=6161
+
+
+
+ InitLock
+ DI Locking
+
+ ns=1;i=6167
+ ns=1;i=6168
+ i=78
+ ns=1;i=6161
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=6166
+
+
+
+
+
+ i=297
+
+
+
+ Context
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6166
+
+
+
+
+
+ i=297
+
+
+
+ InitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ RenewLock
+ DI Locking
+
+ ns=1;i=6170
+ i=78
+ ns=1;i=6161
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6169
+
+
+
+
+
+ i=297
+
+
+
+ RenewLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ ExitLock
+ DI Locking
+
+ ns=1;i=6172
+ i=78
+ ns=1;i=6161
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6171
+
+
+
+
+
+ i=297
+
+
+
+ ExitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ BreakLock
+ DI Locking
+
+ ns=1;i=6174
+ i=78
+ ns=1;i=6161
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6173
+
+
+
+
+
+ i=297
+
+
+
+ BreakLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ IVendorNameplateType
+ DI Nameplate
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.2
+
+ ns=1;i=15036
+ ns=1;i=15037
+ ns=1;i=15038
+ ns=1;i=15039
+ ns=1;i=15040
+ ns=1;i=15041
+ ns=1;i=15042
+ ns=1;i=15043
+ ns=1;i=15044
+ ns=1;i=15045
+ ns=1;i=15046
+ ns=1;i=15047
+ ns=1;i=23
+ ns=1;i=24
+ i=17602
+
+
+
+ Manufacturer
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ Model
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ HardwareRevision
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ DeviceRevision
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ ProductCode
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ DeviceManual
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ DeviceClass
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ SerialNumber
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ ProductInstanceUri
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ RevisionCounter
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ SoftwareReleaseDate
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ PatchIdentifiers
+
+ i=68
+ i=80
+ ns=1;i=15035
+
+
+
+ ITagNameplateType
+ DI TagNameplate
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.3
+
+ ns=1;i=15049
+ ns=1;i=15050
+ i=17602
+
+
+
+ AssetId
+
+ i=68
+ i=80
+ ns=1;i=15048
+
+
+
+ ComponentName
+
+ i=68
+ i=80
+ ns=1;i=15048
+
+
+
+ IDeviceHealthType
+ DI DeviceHealth
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.4
+
+ ns=1;i=15052
+ ns=1;i=15053
+ i=17602
+
+
+
+ DeviceHealth
+
+ i=63
+ i=80
+ ns=1;i=15051
+
+
+
+ DeviceHealthAlarms
+
+ i=61
+ i=80
+ ns=1;i=15051
+
+
+
+ ISupportInfoType
+ DI DeviceSupportInfo
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.6
+
+ ns=1;i=15055
+ ns=1;i=15057
+ ns=1;i=27
+ ns=1;i=15059
+ ns=1;i=15061
+ i=17602
+
+
+
+ DeviceTypeImage
+
+ ns=1;i=15056
+ i=61
+ i=80
+ ns=1;i=15054
+
+
+
+ <ImageIdentifier>
+
+ i=63
+ i=11510
+ ns=1;i=15055
+
+
+
+ Documentation
+
+ ns=1;i=15058
+ i=61
+ i=80
+ ns=1;i=15054
+
+
+
+ <DocumentIdentifier>
+
+ i=63
+ i=11510
+ ns=1;i=15057
+
+
+
+ DocumentationFiles
+
+ ns=1;i=28
+ i=61
+ i=80
+ ns=1;i=15054
+
+
+
+ <DocumentFileId>
+
+ ns=1;i=29
+ ns=1;i=30
+ ns=1;i=31
+ ns=1;i=32
+ ns=1;i=36
+ ns=1;i=39
+ ns=1;i=63
+ ns=1;i=66
+ ns=1;i=68
+ ns=1;i=71
+ i=11575
+ i=11510
+ ns=1;i=27
+
+
+
+ Size
+
+ i=68
+ i=78
+ ns=1;i=28
+
+
+
+ Writable
+
+ i=68
+ i=78
+ ns=1;i=28
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ ns=1;i=28
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ ns=1;i=28
+
+
+
+ Open
+
+ ns=1;i=37
+ ns=1;i=38
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=36
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=36
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ Close
+
+ ns=1;i=62
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=39
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ Read
+
+ ns=1;i=64
+ ns=1;i=65
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=63
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=63
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+
+ Write
+
+ ns=1;i=67
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=66
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+
+ GetPosition
+
+ ns=1;i=69
+ ns=1;i=70
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=68
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=68
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+
+ SetPosition
+
+ ns=1;i=72
+ i=78
+ ns=1;i=28
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=71
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+
+ ProtocolSupport
+
+ ns=1;i=15060
+ i=61
+ i=80
+ ns=1;i=15054
+
+
+
+ <ProtocolSupportIdentifier>
+
+ i=63
+ i=11510
+ ns=1;i=15059
+
+
+
+ ImageSet
+
+ ns=1;i=15062
+ i=61
+ i=80
+ ns=1;i=15054
+
+
+
+ <ImageIdentifier>
+
+ i=63
+ i=11510
+ ns=1;i=15061
+
+
+
+ ComponentType
+ DI Information Model
+ https://reference.opcfoundation.org/DI/v104/docs/4.6
+
+ ns=1;i=15086
+ ns=1;i=15087
+ ns=1;i=15088
+ ns=1;i=15089
+ ns=1;i=15090
+ ns=1;i=15091
+ ns=1;i=15092
+ ns=1;i=15093
+ ns=1;i=15094
+ ns=1;i=15095
+ ns=1;i=15096
+ ns=1;i=15097
+ ns=1;i=15098
+ ns=1;i=15099
+ ns=1;i=15035
+ ns=1;i=15048
+ ns=1;i=1001
+
+
+
+ Manufacturer
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ Model
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ HardwareRevision
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ DeviceRevision
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ ProductCode
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ DeviceManual
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ DeviceClass
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ SerialNumber
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ ProductInstanceUri
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ RevisionCounter
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ AssetId
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ ComponentName
+
+ i=68
+ i=80
+ ns=1;i=15063
+
+
+
+ DeviceType
+ Defines the basic information components for all configurable elements in a device topology
+ DI DeviceType
+ https://reference.opcfoundation.org/DI/v104/docs/4.7
+
+ ns=1;i=6003
+ ns=1;i=15100
+ ns=1;i=6004
+ ns=1;i=6008
+ ns=1;i=6007
+ ns=1;i=6006
+ ns=1;i=15101
+ ns=1;i=6005
+ ns=1;i=6470
+ ns=1;i=6001
+ ns=1;i=15102
+ ns=1;i=6002
+ ns=1;i=6571
+ ns=1;i=6208
+ ns=1;i=15105
+ ns=1;i=6209
+ ns=1;i=6211
+ ns=1;i=6213
+ ns=1;i=6215
+ ns=1;i=15054
+ ns=1;i=15051
+ ns=1;i=15063
+
+
+
+ Manufacturer
+ Name of the company that manufactured the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=80
+ ns=1;i=1002
+
+
+
+ Model
+ Model name of the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ HardwareRevision
+ Revision level of the hardware of the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ SoftwareRevision
+ Revision level of the software/firmware of the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ DeviceRevision
+ Overall revision level of the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ ProductCode
+
+ i=68
+ i=80
+ ns=1;i=1002
+
+
+
+ DeviceManual
+ Address (pathname in the file system or a URL | Web address) of user manual for the device
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ DeviceClass
+
+ i=68
+ i=80
+ ns=1;i=1002
+
+
+
+ SerialNumber
+ Identifier that uniquely identifies, within a manufacturer, a device instance
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ ProductInstanceUri
+
+ i=68
+ i=80
+ ns=1;i=1002
+
+
+
+ RevisionCounter
+ An incremental counter indicating the number of times the static data within the Device has been modified
+
+ i=68
+ i=78
+ ns=1;i=1002
+
+
+
+ <CPIdentifier>
+
+ ns=1;i=6592
+ ns=1;i=6308
+ i=11508
+ ns=1;i=1002
+
+
+
+ NetworkAddress
+ The address of the device on this network.
+
+ ns=1;i=1005
+ i=78
+ ns=1;i=6571
+
+
+
+ DeviceHealth
+
+ i=63
+ i=80
+ ns=1;i=1002
+
+
+
+ DeviceHealthAlarms
+
+ i=61
+ i=80
+ ns=1;i=1002
+
+
+
+ DeviceTypeImage
+ Organizes pictures of the device.
+
+ ns=1;i=6210
+ i=61
+ i=80
+ ns=1;i=1002
+
+
+
+ <ImageIdentifier>
+ An image of the device.
+
+ i=63
+ i=11510
+ ns=1;i=6209
+
+
+
+ Documentation
+ Organizes documents for the device.
+
+ ns=1;i=6212
+ i=61
+ i=80
+ ns=1;i=1002
+
+
+
+ <DocumentIdentifier>
+ A document for the device.
+
+ i=63
+ i=11510
+ ns=1;i=6211
+
+
+
+ ProtocolSupport
+ Protocol-specific files for the device.
+
+ ns=1;i=6214
+ i=61
+ i=80
+ ns=1;i=1002
+
+
+
+ <ProtocolSupportIdentifier>
+ A protocol-specific file for the device.
+
+ i=63
+ i=11510
+ ns=1;i=6213
+
+
+
+ ImageSet
+ Organizes images that are used within UIElements.
+
+ ns=1;i=6216
+ i=61
+ i=80
+ ns=1;i=1002
+
+
+
+ <ImageIdentifier>
+ An image for a UIElement.
+
+ i=63
+ i=11510
+ ns=1;i=6215
+
+
+
+ SoftwareType
+ DI Software Component
+ https://reference.opcfoundation.org/DI/v104/docs/4.8
+
+ ns=1;i=15129
+ ns=1;i=15131
+ ns=1;i=15133
+ ns=1;i=15063
+
+
+
+ Manufacturer
+
+ i=68
+ i=78
+ ns=1;i=15106
+
+
+
+ Model
+
+ i=68
+ i=78
+ ns=1;i=15106
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=78
+ ns=1;i=15106
+
+
+
+ BlockType
+ Adds the concept of Blocks needed for block-oriented FieldDevices
+ DI Blocks
+ https://reference.opcfoundation.org/DI/v104/docs/4.11
+
+ ns=1;i=6009
+ ns=1;i=6010
+ ns=1;i=6011
+ ns=1;i=6012
+ ns=1;i=6013
+ ns=1;i=1001
+
+
+
+ RevisionCounter
+ Incremental counter indicating the number of times the static data within the Block has been modified
+
+ i=68
+ i=80
+ ns=1;i=1003
+
+
+
+ ActualMode
+ Current mode of operation the Block is able to achieve
+
+ i=68
+ i=80
+ ns=1;i=1003
+
+
+
+ PermittedMode
+ Modes of operation that are allowed for the Block based on application requirements
+
+ i=68
+ i=80
+ ns=1;i=1003
+
+
+
+ NormalMode
+ Mode the Block should be set to during normal operating conditions
+
+ i=68
+ i=80
+ ns=1;i=1003
+
+
+
+ TargetMode
+ Mode of operation that is desired for the Block
+
+ i=68
+ i=80
+ ns=1;i=1003
+
+
+
+ DeviceHealthDiagnosticAlarmType
+ DI HealthDiagnosticsAlarm
+ https://reference.opcfoundation.org/DI/v104/docs/4.12.2
+
+ i=18347
+
+
+
+ FailureAlarmType
+ DI HealthDiagnosticsAlarm
+ https://reference.opcfoundation.org/DI/v104/docs/4.12.3
+
+ ns=1;i=15143
+
+
+
+ CheckFunctionAlarmType
+ DI HealthDiagnosticsAlarm
+ https://reference.opcfoundation.org/DI/v104/docs/4.12.4
+
+ ns=1;i=15143
+
+
+
+ OffSpecAlarmType
+ DI HealthDiagnosticsAlarm
+ https://reference.opcfoundation.org/DI/v104/docs/4.12.5
+
+ ns=1;i=15143
+
+
+
+ MaintenanceRequiredAlarmType
+ DI HealthDiagnosticsAlarm
+ https://reference.opcfoundation.org/DI/v104/docs/4.12.6
+
+ ns=1;i=15143
+
+
+
+ ConfigurableObjectType
+ Defines a general pattern to expose and configure modular components
+ DI Information Model
+ https://reference.opcfoundation.org/DI/v104/docs/9.2.2
+
+ ns=1;i=5004
+ ns=1;i=6026
+ i=58
+
+
+
+ SupportedTypes
+ Folder maintaining the set of (sub-types of) BaseObjectTypes that can be instantiated in the ConfigurableComponent
+
+ i=61
+ i=78
+ ns=1;i=1004
+
+
+
+ <ObjectIdentifier>
+
+ i=58
+ i=11508
+ ns=1;i=1004
+
+
+
+ LifetimeVariableType
+ Remaining lifetime
+ DI LT Lifetime Base
+ https://reference.opcfoundation.org/DI/v104/docs/10.2.2
+
+ ns=1;i=469
+ ns=1;i=470
+ ns=1;i=471
+ ns=1;i=472
+ i=17497
+
+
+
+ StartValue
+ StartValue indicates the initial value, when there is still the full lifetime left.
+
+ i=68
+ i=78
+ ns=1;i=468
+
+
+
+ LimitValue
+ LimitValue indicates when the end of lifetime has been reached.
+
+ i=68
+ i=78
+ ns=1;i=468
+
+
+
+ Indication
+ Indication gives an indication of what is actually measured / represented by the Value of the Variable and the StartValue and LimitValue.
+
+ i=68
+ i=80
+ ns=1;i=468
+
+
+
+ WarningValues
+ WarningValues indicates one or more levels when the end of lifetime is reached soon and may be used to inform the user when reached.
+
+ i=68
+ i=80
+ ns=1;i=468
+
+
+
+ BaseLifetimeIndicationType
+ Base indication type not further defining a semantic
+ DI LT Lifetime Base
+ https://reference.opcfoundation.org/DI/v104/docs/10.3.2
+
+ i=58
+
+
+
+ TimeIndicationType
+ Indicates the time the entity has been in use or can still be used
+ DI LT Time Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.4.2
+
+ ns=1;i=473
+
+
+
+ NumberOfPartsIndicationType
+ Indicates the total number of parts that have been produced or can still be produced.
+ DI LT Nb Of Parts Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.5.2
+
+ ns=1;i=473
+
+
+
+ NumberOfUsagesIndicationType
+ Indicates counting the process steps the entity has been used or can still be used for (for example usages of a punching tool).
+ DI LT Nb Of Usages Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.6.2
+
+ ns=1;i=473
+
+
+
+ LengthIndicationType
+ Indicates the abraded length, for example of a drill.
+ DI LT Length Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.7.2
+
+ ns=1;i=473
+
+
+
+ DiameterIndicationType
+ Indicates the abraded diameter, for example of a drill.
+ DI LT Diameter Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.8.2
+
+ ns=1;i=473
+
+
+
+ SubstanceVolumeIndicationType
+ Indicates the volume of a substance, for example of a liquid.
+ DI LT Substance Volume Indication
+ https://reference.opcfoundation.org/DI/v104/docs/10.9.2
+
+ ns=1;i=473
+
+
+
+ FunctionalGroupType
+ FolderType is used to organize the Parameters and Methods from the complete set (ParameterSet, MethodSet) with regard to their application
+ DI Information Model
+ https://reference.opcfoundation.org/DI/v104/docs/4.4.1
+
+ ns=1;i=6027
+ ns=1;i=6243
+ i=61
+
+
+
+ <GroupIdentifier>
+ An application specific functional group used to organize parameters and methods.
+
+ ns=1;i=6242
+ ns=1;i=1005
+ i=11508
+ ns=1;i=1005
+
+
+
+ UIElement
+ A user interface element assigned to this group.
+
+ ns=1;i=6246
+ i=80
+ ns=1;i=6027
+
+
+
+ UIElement
+ A user interface element assigned to this group.
+
+ ns=1;i=6246
+ i=80
+ ns=1;i=1005
+
+
+
+ ProtocolType
+ General structure of a Protocol ObjectType
+ DI Network
+ DI Protocol
+ https://reference.opcfoundation.org/DI/v104/docs/5.2
+
+ i=58
+
+
+
+ DeviceHealthEnumeration
+ DI DeviceHealth
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.4
+
+ ns=1;i=6450
+ i=29
+
+
+
+ This device functions normally.
+
+
+ Malfunction of the device or any of its peripherals.
+
+
+ Functional checks are currently performed.
+
+
+ The device is currently working outside of its specified range or that internal diagnoses indicate deviations from measured or set values.
+
+
+ This element is working, but a maintenance operation is required.
+
+
+
+
+ EnumStrings
+
+ i=68
+ ns=1;i=6244
+
+
+
+
+ NORMAL
+
+
+ FAILURE
+
+
+ CHECK_FUNCTION
+
+
+ OFF_SPEC
+
+
+ MAINTENANCE_REQUIRED
+
+
+
+
+
+ IOperationCounterType
+ Interface defining counters for the duration of operation
+ DI OperationCounter Interface
+ https://reference.opcfoundation.org/DI/v104/docs/4.5.5
+
+ ns=1;i=481
+ ns=1;i=482
+ ns=1;i=483
+ i=17602
+
+
+
+ PowerOnDuration
+ PowerOnDuration is the duration the Device has been powered. The main purpose is to determine the time in which degradation of the Device occurred. The details, when the time is counted, is implementation-specific. Companion specifications might define specific rules. Typically, when the Device has supply voltage and the main CPU is running, the time is counted. This may include any kind of sleep mode, but may not include pure Wake on LAN. This value shall only increase during the lifetime of the Device and shall not be reset when the Device is restarted. The PowerOnDuration is provided as Duration, i.e., in milliseconds or even fractions of a millisecond. However, the Server is not expected to update the value in such a high frequency, but maybe once a minute or once an hour, depending on the application.
+
+ i=68
+ i=80
+ ns=1;i=480
+
+
+
+ OperationDuration
+ OperationDuration is the duration the Device has been powered and performing an activity. This counter is intended for Devices where a distinction is made between switched on and in operation. For example, a drive might be powered on but not operating. It is not intended for Devices always performing an activity like sensors always measuring data. This value shall only increase during the lifetime of the Device and shall not be reset when the Device is restarted. The OperationDuration is provided as Duration, i.e., in milliseconds or even fractions of a millisecond. However, the Server is not expected to update the value in such a high frequency, but maybe once a minute or once an hour, depending on the application.
+
+ i=68
+ i=80
+ ns=1;i=480
+
+
+
+ OperationCycleCounter
+ OperationCycleCounter is counting the times the Device switches from not performing an activity to performing an activity. For example, each time a valve starts moving, is counted. This value shall only increase during the lifetime of the Device and shall not be reset when the Device is restarted.
+
+ i=68
+ i=80
+ ns=1;i=480
+
+
+
+ UIElementType
+ The base type for all UI Element Types.
+ DI Information Model
+ https://reference.opcfoundation.org/DI/v104/docs/4.4.3
+
+ i=63
+
+
+
+ NetworkType
+ Represents the communication means for Devices that are connected to it.
+ DI Network
+ https://reference.opcfoundation.org/DI/v104/docs/5.3
+
+ ns=1;i=6596
+ ns=1;i=6248
+ ns=1;i=6294
+ i=58
+
+
+
+ <ProfileIdentifier>
+
+ ns=1;i=1006
+ i=11510
+ ns=1;i=6247
+
+
+
+ <CPIdentifier>
+ The ConnectionPoint(s) that have been configured for this Network.
+
+ ns=1;i=6292
+ ns=1;i=6308
+ i=11508
+ ns=1;i=6247
+
+
+
+ NetworkAddress
+ The address of the device on this network.
+
+ ns=1;i=1005
+ i=78
+ ns=1;i=6248
+
+
+
+ Lock
+ Used to lock the Network.
+
+ ns=1;i=6497
+ ns=1;i=6296
+ ns=1;i=6297
+ ns=1;i=6298
+ ns=1;i=6299
+ ns=1;i=6302
+ ns=1;i=6304
+ ns=1;i=6306
+ ns=1;i=6388
+ i=80
+ ns=1;i=6247
+
+
+
+ Locked
+
+ i=68
+ i=78
+ ns=1;i=6294
+
+
+
+ LockingClient
+
+ i=68
+ i=78
+ ns=1;i=6294
+
+
+
+ LockingUser
+
+ i=68
+ i=78
+ ns=1;i=6294
+
+
+
+ RemainingLockTime
+
+ i=68
+ i=78
+ ns=1;i=6294
+
+
+
+ InitLock
+ DI Locking
+
+ ns=1;i=6300
+ ns=1;i=6301
+ i=78
+ ns=1;i=6294
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=6299
+
+
+
+
+
+ i=297
+
+
+
+ Context
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6299
+
+
+
+
+
+ i=297
+
+
+
+ InitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ RenewLock
+ DI Locking
+
+ ns=1;i=6303
+ i=78
+ ns=1;i=6294
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6302
+
+
+
+
+
+ i=297
+
+
+
+ RenewLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ ExitLock
+ DI Locking
+
+ ns=1;i=6305
+ i=78
+ ns=1;i=6294
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6304
+
+
+
+
+
+ i=297
+
+
+
+ ExitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ BreakLock
+ DI Locking
+
+ ns=1;i=6307
+ i=78
+ ns=1;i=6294
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6306
+
+
+
+
+
+ i=297
+
+
+
+ BreakLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ ConnectionPointType
+ Represents the interface (interface card) of a Device to a Network.
+ DI ConnectionPoint
+ https://reference.opcfoundation.org/DI/v104/docs/5.4
+
+ ns=1;i=6354
+ ns=1;i=6499
+ ns=1;i=6599
+ ns=1;i=1001
+
+
+
+ NetworkAddress
+ The address of the device on this network.
+
+ ns=1;i=1005
+ i=78
+ ns=1;i=6308
+
+
+
+ <ProfileIdentifier>
+
+ ns=1;i=1006
+ i=11510
+ ns=1;i=6308
+
+
+
+ <NetworkIdentifier>
+
+ ns=1;i=6247
+ i=11508
+ ns=1;i=6308
+
+
+
+ FetchResultDataType
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.6
+
+ i=22
+
+
+
+
+ TransferResultErrorDataType
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.6
+
+ ns=1;i=6522
+
+
+
+
+
+
+
+ TransferResultDataDataType
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.6
+
+ ns=1;i=6522
+
+
+
+
+
+
+
+
+ ParameterResultDataType
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.6
+
+ i=22
+
+
+
+
+
+
+
+
+ TransferServicesType
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.2
+
+ ns=1;i=6527
+ ns=1;i=6529
+ ns=1;i=6531
+ i=58
+
+
+
+ TransferToDevice
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.4
+
+ ns=1;i=6528
+ i=78
+ ns=1;i=6526
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6527
+
+
+
+
+
+ i=297
+
+
+
+ TransferID
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ InitTransferStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ TransferFromDevice
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.5
+
+ ns=1;i=6530
+ i=78
+ ns=1;i=6526
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6529
+
+
+
+
+
+ i=297
+
+
+
+ TransferID
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ InitTransferStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ FetchTransferResultData
+ DI Offline
+ https://reference.opcfoundation.org/DI/v104/docs/6.4.6
+
+ ns=1;i=6532
+ ns=1;i=6533
+ i=78
+ ns=1;i=6526
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=6531
+
+
+
+
+
+ i=297
+
+
+
+ TransferID
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ SequenceNumber
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxParameterResultsToReturn
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ OmitGoodResults
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6531
+
+
+
+
+
+ i=297
+
+
+
+ FetchResultData
+
+ i=22
+
+ -1
+
+
+
+
+
+
+
+
+
+ MaxInactiveLockTime
+ Server-specific period of time in milliseconds until the Server will revoke a lock.
+
+ i=2268
+ i=68
+
+
+
+ LockingServicesType
+ An interface for Locking.
+ DI Locking
+ https://reference.opcfoundation.org/DI/v104/docs/7.2
+
+ ns=1;i=15890
+ ns=1;i=6534
+ ns=1;i=6390
+ ns=1;i=6391
+ ns=1;i=6392
+ ns=1;i=6393
+ ns=1;i=6396
+ ns=1;i=6398
+ ns=1;i=6400
+ i=58
+
+
+
+ DefaultInstanceBrowseName
+
+ i=68
+ ns=1;i=6388
+
+
+
+ 1
+ Lock
+
+
+
+
+ Locked
+
+ i=68
+ i=78
+ ns=1;i=6388
+
+
+
+ LockingClient
+
+ i=68
+ i=78
+ ns=1;i=6388
+
+
+
+ LockingUser
+
+ i=68
+ i=78
+ ns=1;i=6388
+
+
+
+ RemainingLockTime
+
+ i=68
+ i=78
+ ns=1;i=6388
+
+
+
+ InitLock
+ DI Locking
+ https://reference.opcfoundation.org/DI/v104/docs/7.5
+
+ ns=1;i=6394
+ ns=1;i=6395
+ i=78
+ ns=1;i=6388
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=6393
+
+
+
+
+
+ i=297
+
+
+
+ Context
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6393
+
+
+
+
+
+ i=297
+
+
+
+ InitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ RenewLock
+ DI Locking
+ https://reference.opcfoundation.org/DI/v104/docs/7.7
+
+ ns=1;i=6397
+ i=78
+ ns=1;i=6388
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6396
+
+
+
+
+
+ i=297
+
+
+
+ RenewLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ ExitLock
+ DI Locking
+ https://reference.opcfoundation.org/DI/v104/docs/7.6
+
+ ns=1;i=6399
+ i=78
+ ns=1;i=6388
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6398
+
+
+
+
+
+ i=297
+
+
+
+ ExitLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ BreakLock
+ DI Locking
+ https://reference.opcfoundation.org/DI/v104/docs/7.8
+
+ ns=1;i=6401
+ i=78
+ ns=1;i=6388
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=6400
+
+
+
+
+
+ i=297
+
+
+
+ BreakLockStatus
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+
+ SoftwareUpdateType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.1/#8.4.1.1
+
+ ns=1;i=2
+ ns=1;i=4
+ ns=1;i=40
+ ns=1;i=76
+ ns=1;i=98
+ ns=1;i=122
+ ns=1;i=133
+ ns=1;i=402
+ ns=1;i=134
+ i=58
+
+
+
+ Loading
+
+ ns=1;i=135
+ i=80
+ ns=1;i=1
+
+
+
+ PrepareForUpdate
+
+ ns=1;i=5
+ ns=1;i=19
+ ns=1;i=20
+ ns=1;i=213
+ i=80
+ ns=1;i=1
+
+
+
+ CurrentState
+
+ ns=1;i=6
+ i=2760
+ i=78
+ ns=1;i=4
+
+
+
+ Id
+
+ i=68
+ i=78
+ ns=1;i=5
+
+
+
+ Prepare
+
+ i=78
+ ns=1;i=4
+
+
+
+ Abort
+
+ i=78
+ ns=1;i=4
+
+
+
+ Installation
+
+ ns=1;i=41
+ ns=1;i=61
+ ns=1;i=249
+ i=80
+ ns=1;i=1
+
+
+
+ CurrentState
+
+ ns=1;i=42
+ i=2760
+ i=78
+ ns=1;i=40
+
+
+
+ Id
+
+ i=68
+ i=78
+ ns=1;i=41
+
+
+
+ Resume
+
+ i=78
+ ns=1;i=40
+
+
+
+ PowerCycle
+
+ ns=1;i=77
+ ns=1;i=285
+ i=80
+ ns=1;i=1
+
+
+
+ CurrentState
+
+ ns=1;i=78
+ i=2760
+ i=78
+ ns=1;i=76
+
+
+
+ Id
+
+ i=68
+ i=78
+ ns=1;i=77
+
+
+
+ Confirmation
+
+ ns=1;i=99
+ ns=1;i=112
+ ns=1;i=113
+ ns=1;i=307
+ i=80
+ ns=1;i=1
+
+
+
+ CurrentState
+
+ ns=1;i=100
+ i=2760
+ i=78
+ ns=1;i=98
+
+
+
+ Id
+
+ i=68
+ i=78
+ ns=1;i=99
+
+
+
+ Confirm
+
+ i=78
+ ns=1;i=98
+
+
+
+ ConfirmationTimeout
+
+ i=63
+ i=78
+ ns=1;i=98
+
+
+
+ Parameters
+
+ ns=1;i=123
+ ns=1;i=124
+ ns=1;i=127
+ ns=1;i=130
+ i=15744
+ i=80
+ ns=1;i=1
+
+
+
+ ClientProcessingTimeout
+
+ i=68
+ i=78
+ ns=1;i=122
+
+
+
+ GenerateFileForRead
+
+ ns=1;i=125
+ ns=1;i=126
+ i=78
+ ns=1;i=122
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=124
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=124
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ GenerateFileForWrite
+
+ ns=1;i=128
+ ns=1;i=129
+ i=78
+ ns=1;i=122
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=127
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=127
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ CloseAndCommit
+
+ ns=1;i=131
+ ns=1;i=132
+ i=78
+ ns=1;i=122
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=130
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=130
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ UpdateStatus
+
+ i=63
+ i=80
+ ns=1;i=1
+
+
+
+ VendorErrorCode
+
+ i=63
+ i=80
+ ns=1;i=1
+
+
+
+ DefaultInstanceBrowseName
+
+ i=68
+ ns=1;i=1
+
+
+
+ 1
+ SoftwareUpdate
+
+
+
+
+ SoftwareLoadingType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.2/#8.4.2.1
+
+ ns=1;i=136
+ i=58
+
+
+
+ UpdateKey
+
+ i=63
+ i=80
+ ns=1;i=135
+
+
+
+ PackageLoadingType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.3/#8.4.3.1
+
+ ns=1;i=139
+ ns=1;i=140
+ ns=1;i=151
+ ns=1;i=152
+ ns=1;i=135
+
+
+
+ CurrentVersion
+
+ ns=1;i=345
+ ns=1;i=346
+ ns=1;i=347
+ ns=1;i=212
+ i=78
+ ns=1;i=137
+
+
+
+ Manufacturer
+
+ i=68
+ i=78
+ ns=1;i=139
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=78
+ ns=1;i=139
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=78
+ ns=1;i=139
+
+
+
+ FileTransfer
+
+ ns=1;i=141
+ ns=1;i=142
+ ns=1;i=145
+ ns=1;i=148
+ i=15744
+ i=78
+ ns=1;i=137
+
+
+
+ ClientProcessingTimeout
+
+ i=68
+ i=78
+ ns=1;i=140
+
+
+
+ GenerateFileForRead
+
+ ns=1;i=143
+ ns=1;i=144
+ i=78
+ ns=1;i=140
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=142
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=142
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ GenerateFileForWrite
+
+ ns=1;i=146
+ ns=1;i=147
+ i=78
+ ns=1;i=140
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=145
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=145
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ CloseAndCommit
+
+ ns=1;i=149
+ ns=1;i=150
+ i=78
+ ns=1;i=140
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=148
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=148
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ ErrorMessage
+
+ i=63
+ i=78
+ ns=1;i=137
+
+
+
+ WriteBlockSize
+
+ i=68
+ i=80
+ ns=1;i=137
+
+
+
+ DirectLoadingType
+ DI SU DirectLoading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.4/#8.4.4.1
+
+ ns=1;i=169
+ ns=1;i=170
+ ns=1;i=137
+
+
+
+ UpdateBehavior
+
+ i=63
+ i=78
+ ns=1;i=153
+
+
+
+ WriteTimeout
+
+ i=68
+ i=80
+ ns=1;i=153
+
+
+
+ CachedLoadingType
+ DI SU CachedLoading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.5/#8.4.5.1
+
+ ns=1;i=187
+ ns=1;i=188
+ ns=1;i=189
+ ns=1;i=137
+
+
+
+ PendingVersion
+
+ ns=1;i=366
+ ns=1;i=367
+ ns=1;i=368
+ ns=1;i=212
+ i=78
+ ns=1;i=171
+
+
+
+ Manufacturer
+
+ i=68
+ i=78
+ ns=1;i=187
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=78
+ ns=1;i=187
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=78
+ ns=1;i=187
+
+
+
+ FallbackVersion
+
+ ns=1;i=373
+ ns=1;i=374
+ ns=1;i=375
+ ns=1;i=212
+ i=80
+ ns=1;i=171
+
+
+
+ Manufacturer
+
+ i=68
+ i=78
+ ns=1;i=188
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=78
+ ns=1;i=188
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=78
+ ns=1;i=188
+
+
+
+ GetUpdateBehavior
+ DI SU CachedLoading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.5/#8.4.5.5
+
+ ns=1;i=190
+ ns=1;i=191
+ i=78
+ ns=1;i=171
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=189
+
+
+
+
+
+ i=297
+
+
+
+ ManufacturerUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ SoftwareRevision
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ PatchIdentifiers
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=189
+
+
+
+
+
+ i=297
+
+
+
+ UpdateBehavior
+
+ ns=1;i=333
+
+ -1
+
+
+
+
+
+
+
+
+
+ FileSystemLoadingType
+ DI SU FileSystem Loading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.6/#8.4.6.1
+
+ ns=1;i=194
+ ns=1;i=206
+ ns=1;i=209
+ ns=1;i=135
+
+
+
+ FileSystem
+
+ ns=1;i=195
+ ns=1;i=198
+ ns=1;i=201
+ ns=1;i=203
+ i=13353
+ i=78
+ ns=1;i=192
+
+
+
+ CreateDirectory
+
+ ns=1;i=196
+ ns=1;i=197
+ i=78
+ ns=1;i=194
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=195
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=195
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ CreateFile
+
+ ns=1;i=199
+ ns=1;i=200
+ i=78
+ ns=1;i=194
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=198
+
+
+
+
+
+ i=297
+
+
+
+ FileName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestFileOpen
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=198
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+
+ Delete
+
+ ns=1;i=202
+ i=78
+ ns=1;i=194
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=201
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToDelete
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ MoveOrCopy
+
+ ns=1;i=204
+ ns=1;i=205
+ i=78
+ ns=1;i=194
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=203
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToMoveOrCopy
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetDirectory
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ CreateCopy
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ NewName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=203
+
+
+
+
+
+ i=297
+
+
+
+ NewNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+
+ GetUpdateBehavior
+ DI SU FileSystem Loading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.6/#8.4.6.3
+
+ ns=1;i=207
+ ns=1;i=208
+ i=78
+ ns=1;i=192
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=206
+
+
+
+
+
+ i=297
+
+
+
+ NodeIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=206
+
+
+
+
+
+ i=297
+
+
+
+ UpdateBehavior
+
+ ns=1;i=333
+
+ -1
+
+
+
+
+
+
+
+
+
+ ValidateFiles
+ DI SU FileSystem Loading
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.6/#8.4.6.4
+
+ ns=1;i=210
+ ns=1;i=211
+ i=80
+ ns=1;i=192
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=209
+
+
+
+
+
+ i=297
+
+
+
+ NodeIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ ns=1;i=209
+
+
+
+
+
+ i=297
+
+
+
+ ErrorCode
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ ErrorMessage
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+
+ SoftwareVersionType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.7/#8.4.7.1
+
+ ns=1;i=380
+ ns=1;i=381
+ ns=1;i=382
+ ns=1;i=383
+ ns=1;i=384
+ ns=1;i=385
+ ns=1;i=386
+ i=58
+
+
+
+ Manufacturer
+
+ i=68
+ i=78
+ ns=1;i=212
+
+
+
+ ManufacturerUri
+
+ i=68
+ i=78
+ ns=1;i=212
+
+
+
+ SoftwareRevision
+
+ i=68
+ i=78
+ ns=1;i=212
+
+
+
+ PatchIdentifiers
+
+ i=68
+ i=80
+ ns=1;i=212
+
+
+
+ ReleaseDate
+
+ i=68
+ i=80
+ ns=1;i=212
+
+
+
+ ChangeLogReference
+
+ i=68
+ i=80
+ ns=1;i=212
+
+
+
+ Hash
+
+ i=68
+ i=80
+ ns=1;i=212
+
+
+
+ PrepareForUpdateStateMachineType
+ DI SU PrepareForUpdate
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.8/#8.4.8.1
+
+ ns=1;i=227
+ ns=1;i=228
+ ns=1;i=229
+ ns=1;i=230
+ ns=1;i=231
+ ns=1;i=233
+ ns=1;i=235
+ ns=1;i=237
+ ns=1;i=239
+ ns=1;i=241
+ ns=1;i=243
+ ns=1;i=245
+ ns=1;i=247
+ i=2771
+
+
+
+ PercentComplete
+
+ i=63
+ i=80
+ ns=1;i=213
+
+
+
+ Prepare
+
+ i=78
+ ns=1;i=213
+
+
+
+ Abort
+
+ i=78
+ ns=1;i=213
+
+
+
+ Resume
+
+ i=80
+ ns=1;i=213
+
+
+
+ Idle
+
+ ns=1;i=232
+ ns=1;i=239
+ ns=1;i=241
+ ns=1;i=247
+ i=2309
+ ns=1;i=213
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=231
+
+
+ 1
+
+
+
+ Preparing
+
+ ns=1;i=234
+ ns=1;i=239
+ ns=1;i=241
+ ns=1;i=243
+ i=2307
+ ns=1;i=213
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=233
+
+
+ 2
+
+
+
+ PreparedForUpdate
+
+ ns=1;i=236
+ ns=1;i=243
+ ns=1;i=245
+ i=2307
+ ns=1;i=213
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=235
+
+
+ 3
+
+
+
+ Resuming
+
+ ns=1;i=238
+ ns=1;i=245
+ ns=1;i=247
+ i=2307
+ ns=1;i=213
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=237
+
+
+ 4
+
+
+
+ IdleToPreparing
+
+ ns=1;i=240
+ ns=1;i=231
+ ns=1;i=233
+ i=2311
+ i=2310
+ ns=1;i=213
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=239
+
+
+ 12
+
+
+
+ PreparingToIdle
+
+ ns=1;i=242
+ ns=1;i=231
+ ns=1;i=233
+ i=2311
+ i=2310
+ ns=1;i=213
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=241
+
+
+ 21
+
+
+
+ PreparingToPreparedForUpdate
+
+ ns=1;i=244
+ ns=1;i=233
+ ns=1;i=235
+ i=2311
+ i=2310
+ ns=1;i=213
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=243
+
+
+ 23
+
+
+
+ PreparedForUpdateToResuming
+
+ ns=1;i=246
+ ns=1;i=235
+ ns=1;i=237
+ i=2311
+ i=2310
+ ns=1;i=213
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=245
+
+
+ 34
+
+
+
+ ResumingToIdle
+
+ ns=1;i=248
+ ns=1;i=231
+ ns=1;i=237
+ i=2311
+ i=2310
+ ns=1;i=213
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=247
+
+
+ 41
+
+
+
+ InstallationStateMachineType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.9/#8.4.9.1
+
+ ns=1;i=263
+ ns=1;i=264
+ ns=1;i=265
+ ns=1;i=268
+ ns=1;i=270
+ ns=1;i=271
+ ns=1;i=273
+ ns=1;i=275
+ ns=1;i=277
+ ns=1;i=279
+ ns=1;i=281
+ ns=1;i=283
+ i=2771
+
+
+
+ PercentComplete
+
+ i=63
+ i=80
+ ns=1;i=249
+
+
+
+ InstallationDelay
+
+ i=63
+ i=80
+ ns=1;i=249
+
+
+
+ InstallSoftwarePackage
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.9/#8.4.9.4
+
+ ns=1;i=266
+ i=80
+ ns=1;i=249
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=265
+
+
+
+
+
+ i=297
+
+
+
+ ManufacturerUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ SoftwareRevision
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+ i=297
+
+
+
+ PatchIdentifiers
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+ i=297
+
+
+
+ Hash
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+
+ InstallFiles
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.9/#8.4.9.5
+
+ ns=1;i=269
+ i=80
+ ns=1;i=249
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ ns=1;i=268
+
+
+
+
+
+ i=297
+
+
+
+ NodeIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+
+ Resume
+
+ i=78
+ ns=1;i=249
+
+
+
+ Idle
+
+ ns=1;i=272
+ ns=1;i=277
+ ns=1;i=279
+ ns=1;i=283
+ i=2309
+ ns=1;i=249
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=271
+
+
+ 1
+
+
+
+ Installing
+
+ ns=1;i=274
+ ns=1;i=277
+ ns=1;i=279
+ ns=1;i=281
+ i=2307
+ ns=1;i=249
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=273
+
+
+ 2
+
+
+
+ Error
+
+ ns=1;i=276
+ ns=1;i=281
+ ns=1;i=283
+ i=2307
+ ns=1;i=249
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=275
+
+
+ 3
+
+
+
+ IdleToInstalling
+
+ ns=1;i=387
+ ns=1;i=271
+ ns=1;i=273
+ i=2311
+ i=2310
+ ns=1;i=249
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=277
+
+
+ 12
+
+
+
+ InstallingToIdle
+
+ ns=1;i=280
+ ns=1;i=271
+ ns=1;i=273
+ i=2311
+ i=2310
+ ns=1;i=249
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=279
+
+
+ 21
+
+
+
+ InstallingToError
+
+ ns=1;i=282
+ ns=1;i=273
+ ns=1;i=275
+ i=2311
+ i=2310
+ ns=1;i=249
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=281
+
+
+ 23
+
+
+
+ ErrorToIdle
+
+ ns=1;i=284
+ ns=1;i=271
+ ns=1;i=275
+ i=2311
+ i=2310
+ ns=1;i=249
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=283
+
+
+ 31
+
+
+
+ PowerCycleStateMachineType
+ DI SU Manual Power Cycle
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.10
+
+ ns=1;i=299
+ ns=1;i=301
+ ns=1;i=303
+ ns=1;i=305
+ i=2771
+
+
+
+ NotWaitingForPowerCycle
+
+ ns=1;i=300
+ ns=1;i=303
+ ns=1;i=305
+ i=2309
+ ns=1;i=285
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=299
+
+
+ 1
+
+
+
+ WaitingForPowerCycle
+
+ ns=1;i=302
+ ns=1;i=303
+ ns=1;i=305
+ i=2307
+ ns=1;i=285
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=301
+
+
+ 2
+
+
+
+ NotWaitingForPowerCycleToWaitingForPowerCycle
+
+ ns=1;i=304
+ ns=1;i=299
+ ns=1;i=301
+ i=2311
+ i=2310
+ ns=1;i=285
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=303
+
+
+ 12
+
+
+
+ WaitingForPowerCycleToNotWaitingForPowerCycle
+
+ ns=1;i=306
+ ns=1;i=299
+ ns=1;i=301
+ i=2311
+ i=2310
+ ns=1;i=285
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=305
+
+
+ 21
+
+
+
+ ConfirmationStateMachineType
+ DI SU Update Confirmation
+ https://reference.opcfoundation.org/DI/v104/docs/8.4.11/#8.4.11.1
+
+ ns=1;i=321
+ ns=1;i=322
+ ns=1;i=323
+ ns=1;i=325
+ ns=1;i=327
+ ns=1;i=329
+ i=2771
+
+
+
+ Confirm
+
+ i=78
+ ns=1;i=307
+
+
+
+ ConfirmationTimeout
+
+ i=63
+ i=78
+ ns=1;i=307
+
+
+
+ NotWaitingForConfirm
+
+ ns=1;i=324
+ ns=1;i=327
+ ns=1;i=329
+ i=2309
+ ns=1;i=307
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=323
+
+
+ 1
+
+
+
+ WaitingForConfirm
+
+ ns=1;i=326
+ ns=1;i=327
+ ns=1;i=329
+ i=2307
+ ns=1;i=307
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ ns=1;i=325
+
+
+ 2
+
+
+
+ NotWaitingForConfirmToWaitingForConfirm
+
+ ns=1;i=328
+ ns=1;i=323
+ ns=1;i=325
+ i=2311
+ i=2310
+ ns=1;i=307
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=327
+
+
+ 12
+
+
+
+ WaitingForConfirmToNotWaitingForConfirm
+
+ ns=1;i=330
+ ns=1;i=323
+ ns=1;i=325
+ i=2311
+ i=2310
+ ns=1;i=307
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ ns=1;i=329
+
+
+ 21
+
+
+
+ SoftwareVersionFileType
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.5.1
+
+ ns=1;i=332
+ i=29
+
+
+
+ The currently used version of the software identified by the CurrentVersion Object.
+
+
+ The pending version of the software that could be installed identified by the PendingVersion Object.
+
+
+ The fallback version of the software identified by the FallbackVersion Object.
+
+
+
+
+ EnumStrings
+
+ i=68
+ ns=1;i=331
+
+
+
+
+ Current
+
+
+ Pending
+
+
+ Fallback
+
+
+
+
+
+ UpdateBehavior
+ DI SU Software Update
+ https://reference.opcfoundation.org/DI/v104/docs/8.5.2
+
+ ns=1;i=388
+ i=7
+
+
+
+ If KeepsParameters is not set, the device will lose its configuration during update. The Client should do a backup of the parameters before the update and restore them afterwards.
+
+
+ If WillDisconnect is set, the OPC UA Server will restart during installation. This can be the case if the update is about the firmware of the device that hosts the OPC UA Server.
+
+
+ If RequiresPowerCycle is set, the devices require a manual power off / power on for installation.
+
+
+ If WillReboot is set, the device will reboot during the update, inclusive of embedded infrastructure elements like an integrated switch. An update Client should take this into account since the devices behind an integrated switch are not reachable for that time.
+
+
+ If NeedsPreparation is not set, the Client can install the update without maintaining the PrepareForUpdateStateMachine. This can be used to support an installation without stopping the software.
+
+
+
+
+ OptionSetValues
+
+ i=68
+ ns=1;i=333
+
+
+
+
+ KeepsParameters
+
+
+ WillDisconnect
+
+
+ RequiresPowerCycle
+
+
+ WillReboot
+
+
+ NeedsPreparation
+
+
+
+
+
+ Default Binary
+
+ ns=1;i=6522
+ ns=1;i=6555
+ i=76
+
+
+
+ Default Binary
+
+ ns=1;i=15888
+ ns=1;i=15894
+ i=76
+
+
+
+ Default Binary
+
+ ns=1;i=15889
+ ns=1;i=15897
+ i=76
+
+
+
+ Default Binary
+
+ ns=1;i=6525
+ ns=1;i=6564
+ i=76
+
+
+
+ Opc.Ua.Di
+
+ ns=1;i=6437
+ ns=1;i=15893
+ ns=1;i=6555
+ ns=1;i=15894
+ ns=1;i=15897
+ ns=1;i=6564
+ i=93
+ i=72
+
+
+ PG9wYzpUeXBlRGljdGlvbmFyeQ0KICB4bWxuczpvcGM9Imh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9y
+Zy9CaW5hcnlTY2hlbWEvIg0KICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1M
+U2NoZW1hLWluc3RhbmNlIg0KICB4bWxuczp1YT0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VB
+LyINCiAgeG1sbnM6dG5zPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvREkvIg0KICBEZWZh
+dWx0Qnl0ZU9yZGVyPSJMaXR0bGVFbmRpYW4iDQogIFRhcmdldE5hbWVzcGFjZT0iaHR0cDovL29w
+Y2ZvdW5kYXRpb24ub3JnL1VBL0RJLyINCj4NCiAgPG9wYzpJbXBvcnQgTmFtZXNwYWNlPSJodHRw
+Oi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIiBMb2NhdGlvbj0iT3BjLlVhLkJpbmFyeVNjaGVtYS5i
+c2QiLz4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IkRldmljZUhlYWx0aEVudW1lcmF0
+aW9uIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJO
+T1JNQUwiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZBSUxV
+UkUiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkNIRUNLX0ZV
+TkNUSU9OIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPRkZf
+U1BFQyIgVmFsdWU9IjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTUFJTlRF
+TkFOQ0VfUkVRVUlSRUQiIFZhbHVlPSI0IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkZldGNoUmVzdWx0RGF0YVR5cGUiIEJhc2VUeXBl
+PSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3Bj
+OlN0cnVjdHVyZWRUeXBlIE5hbWU9IlRyYW5zZmVyUmVzdWx0RXJyb3JEYXRhVHlwZSIgQmFzZVR5
+cGU9InRuczpGZXRjaFJlc3VsdERhdGFUeXBlIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1
+cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0
+aWNzIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVHJhbnNmZXJSZXN1bHREYXRhRGF0
+YVR5cGUiIEJhc2VUeXBlPSJ0bnM6RmV0Y2hSZXN1bHREYXRhVHlwZSI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJTZXF1ZW5jZU51bWJlciIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IkVuZE9mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZlBhcmFtZXRlckRlZnMiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQYXJhbWV0ZXJEZWZzIiBUeXBlTmFtZT0idG5zOlBh
+cmFtZXRlclJlc3VsdERhdGFUeXBlIiBMZW5ndGhGaWVsZD0iTm9PZlBhcmFtZXRlckRlZnMiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+UGFyYW1ldGVyUmVzdWx0RGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk5vZGVQYXRoIiBUeXBlTmFtZT0ib3BjOkludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9kZVBhdGgiIFR5cGVOYW1lPSJ1YTpRdWFsaWZpZWRO
+YW1lIiBMZW5ndGhGaWVsZD0iTm9PZk5vZGVQYXRoIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U3RhdHVzQ29kZSIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJEaWFnbm9zdGljcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlNvZnR3YXJl
+VmVyc2lvbkZpbGVUeXBlIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJDdXJyZW50IiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJQZW5kaW5nIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJGYWxsYmFjayIgVmFsdWU9IjIiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQog
+IDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iVXBkYXRlQmVoYXZpb3IiIExlbmd0aEluQml0cz0i
+MzIiIElzT3B0aW9uU2V0PSJ0cnVlIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJO
+b25lIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJLZWVwc1Bh
+cmFtZXRlcnMiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ildp
+bGxEaXNjb25uZWN0IiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJSZXF1aXJlc1Bvd2VyQ3ljbGUiIFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IldpbGxSZWJvb3QiIFZhbHVlPSI4IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9Ik5lZWRzUHJlcGFyYXRpb24iIFZhbHVlPSIxNiIgLz4NCiAgPC9vcGM6RW51bWVy
+YXRlZFR5cGU+DQoNCjwvb3BjOlR5cGVEaWN0aW9uYXJ5Pg==
+
+
+
+ NamespaceUri
+
+ i=68
+ ns=1;i=6435
+
+
+ http://opcfoundation.org/UA/DI/
+
+
+
+ Deprecated
+
+ i=68
+ ns=1;i=6435
+
+
+ true
+
+
+
+ FetchResultDataType
+
+ i=69
+ ns=1;i=6435
+
+
+ FetchResultDataType
+
+
+
+ TransferResultErrorDataType
+
+ i=69
+ ns=1;i=6435
+
+
+ TransferResultErrorDataType
+
+
+
+ TransferResultDataDataType
+
+ i=69
+ ns=1;i=6435
+
+
+ TransferResultDataDataType
+
+
+
+ ParameterResultDataType
+
+ i=69
+ ns=1;i=6435
+
+
+ ParameterResultDataType
+
+
+
+ Default XML
+
+ ns=1;i=6522
+ ns=1;i=6539
+ i=76
+
+
+
+ Default XML
+
+ ns=1;i=15888
+ ns=1;i=15903
+ i=76
+
+
+
+ Default XML
+
+ ns=1;i=15889
+ ns=1;i=15906
+ i=76
+
+
+
+ Default XML
+
+ ns=1;i=6525
+ ns=1;i=6548
+ i=76
+
+
+
+ Opc.Ua.Di
+
+ ns=1;i=6425
+ ns=1;i=15902
+ ns=1;i=6539
+ ns=1;i=15903
+ ns=1;i=15906
+ ns=1;i=6548
+ i=92
+ i=72
+
+
+ PHhzOnNjaGVtYQ0KICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEi
+DQogIHhtbG5zOnVhPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvMjAwOC8wMi9UeXBlcy54
+c2QiDQogIHhtbG5zOnRucz0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBL0RJL1R5cGVzLnhz
+ZCINCiAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvREkvVHlw
+ZXMueHNkIg0KICBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCINCj4NCiAgPHhzOmFubm90
+YXRpb24+DQogICAgPHhzOmFwcGluZm8+DQogICAgICA8dWE6TW9kZWwgTW9kZWxVcmk9Imh0dHA6
+Ly9vcGNmb3VuZGF0aW9uLm9yZy9VQS9ESS8iIFZlcnNpb249IjEuMDQuMCIgUHVibGljYXRpb25E
+YXRlPSIyMDIyLTExLTAzVDAwOjAwOjAwWiIgLz4NCiAgICA8L3hzOmFwcGluZm8+DQogIDwveHM6
+YW5ub3RhdGlvbj4NCiAgDQogIDx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vb3BjZm91bmRh
+dGlvbi5vcmcvVUEvMjAwOC8wMi9UeXBlcy54c2QiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5h
+bWU9IkRldmljZUhlYWx0aEVudW1lcmF0aW9uIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0i
+eHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTk9STUFMXzAiIC8+DQog
+ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZBSUxVUkVfMSIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iQ0hFQ0tfRlVOQ1RJT05fMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iT0ZGX1NQRUNfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTUFJ
+TlRFTkFOQ0VfUkVRVUlSRURfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNp
+bXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRldmljZUhlYWx0aEVudW1lcmF0aW9uIiB0
+eXBlPSJ0bnM6RGV2aWNlSGVhbHRoRW51bWVyYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ikxpc3RPZkRldmljZUhlYWx0aEVudW1lcmF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXZpY2VIZWFsdGhFbnVtZXJhdGlvbiIgdHlwZT0i
+dG5zOkRldmljZUhlYWx0aEVudW1lcmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i
+b3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9Ikxpc3RPZkRldmljZUhlYWx0aEVudW1lcmF0aW9uIiB0eXBlPSJ0bnM6
+TGlzdE9mRGV2aWNlSGVhbHRoRW51bWVyYXRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1l
+bnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkZldGNoUmVzdWx0RGF0YVR5cGUiPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJGZXRjaFJlc3VsdERhdGFUeXBlIiB0eXBlPSJ0bnM6RmV0Y2hS
+ZXN1bHREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRmV0Y2hS
+ZXN1bHREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRmV0Y2hSZXN1bHREYXRhVHlwZSIgdHlwZT0idG5zOkZldGNoUmVzdWx0RGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZkZldGNoUmVzdWx0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZGZXRjaFJlc3VsdERh
+dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJUcmFuc2ZlclJlc3VsdEVycm9yRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29u
+dGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RmV0Y2hS
+ZXN1bHREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJTdGF0dXMiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNzIiB0eXBlPSJ1YTpEaWFnbm9zdGljSW5m
+byIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVyUmVzdWx0RXJyb3JE
+YXRhVHlwZSIgdHlwZT0idG5zOlRyYW5zZmVyUmVzdWx0RXJyb3JEYXRhVHlwZSIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHJhbnNmZXJSZXN1bHRFcnJvckRhdGFUeXBlIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclJlc3Vs
+dEVycm9yRGF0YVR5cGUiIHR5cGU9InRuczpUcmFuc2ZlclJlc3VsdEVycm9yRGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZlRyYW5zZmVyUmVzdWx0RXJyb3JEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlRyYW5z
+ZmVyUmVzdWx0RXJyb3JEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNmZXJSZXN1bHREYXRhRGF0YVR5cGUiPg0KICAg
+IDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBi
+YXNlPSJ0bnM6RmV0Y2hSZXN1bHREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXF1ZW5jZU51bWJlciIgdHlwZT0ieHM6aW50IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kT2ZSZXN1bHRz
+IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUGFyYW1ldGVyRGVmcyIgdHlwZT0idG5zOkxpc3RPZlBhcmFtZXRlclJlc3VsdERh
+dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNl
+cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJSZXN1bHRE
+YXRhRGF0YVR5cGUiIHR5cGU9InRuczpUcmFuc2ZlclJlc3VsdERhdGFEYXRhVHlwZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHJhbnNmZXJSZXN1bHREYXRhRGF0YVR5cGUi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVyUmVz
+dWx0RGF0YURhdGFUeXBlIiB0eXBlPSJ0bnM6VHJhbnNmZXJSZXN1bHREYXRhRGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZlRyYW5zZmVyUmVzdWx0RGF0YURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVHJhbnNm
+ZXJSZXN1bHREYXRhRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlBhcmFtZXRlclJlc3VsdERhdGFUeXBlIj4NCiAgICA8eHM6
+c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlUGF0aCIgdHlwZT0idWE6TGlz
+dE9mUXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNzIiB0eXBlPSJ1
+YTpEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQ
+YXJhbWV0ZXJSZXN1bHREYXRhVHlwZSIgdHlwZT0idG5zOlBhcmFtZXRlclJlc3VsdERhdGFUeXBl
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQYXJhbWV0ZXJSZXN1bHREYXRh
+VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyYW1l
+dGVyUmVzdWx0RGF0YVR5cGUiIHR5cGU9InRuczpQYXJhbWV0ZXJSZXN1bHREYXRhVHlwZSIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGlzdE9mUGFyYW1ldGVyUmVzdWx0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQYXJhbWV0ZXJS
+ZXN1bHREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2lt
+cGxlVHlwZSAgbmFtZT0iU29mdHdhcmVWZXJzaW9uRmlsZVR5cGUiPg0KICAgIDx4czpyZXN0cmlj
+dGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDdXJy
+ZW50XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBlbmRpbmdfMSIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRmFsbGJhY2tfMiIgLz4NCiAgICA8L3hzOnJlc3Ry
+aWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNvZnR3YXJl
+VmVyc2lvbkZpbGVUeXBlIiB0eXBlPSJ0bnM6U29mdHdhcmVWZXJzaW9uRmlsZVR5cGUiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNvZnR3YXJlVmVyc2lvbkZpbGVUeXBlIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTb2Z0d2FyZVZlcnNp
+b25GaWxlVHlwZSIgdHlwZT0idG5zOlNvZnR3YXJlVmVyc2lvbkZpbGVUeXBlIiBtaW5PY2N1cnM9
+IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlNvZnR3YXJlVmVyc2lvbkZp
+bGVUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mU29mdHdhcmVWZXJzaW9uRmlsZVR5cGUiIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlVwZGF0ZUJl
+aGF2aW9yIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAg
+IDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVXBkYXRlQmVoYXZpb3IiIHR5cGU9InRuczpVcGRhdGVCZWhhdmlvciIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVXBkYXRlQmVoYXZpb3IiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVwZGF0ZUJlaGF2aW9yIiB0eXBlPSJ0bnM6VXBk
+YXRlQmVoYXZpb3IiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGlzdE9mVXBkYXRlQmVoYXZpb3IiIHR5cGU9InRuczpMaXN0T2ZVcGRhdGVCZWhhdmlvciIgbmls
+bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KPC94czpzY2hlbWE+
+
+
+
+ NamespaceUri
+
+ i=68
+ ns=1;i=6423
+
+
+ http://opcfoundation.org/UA/DI/Types.xsd
+
+
+
+ Deprecated
+
+ i=68
+ ns=1;i=6423
+
+
+ true
+
+
+
+ FetchResultDataType
+
+ i=69
+ ns=1;i=6423
+
+
+ //xs:element[@name='FetchResultDataType']
+
+
+
+ TransferResultErrorDataType
+
+ i=69
+ ns=1;i=6423
+
+
+ //xs:element[@name='TransferResultErrorDataType']
+
+
+
+ TransferResultDataDataType
+
+ i=69
+ ns=1;i=6423
+
+
+ //xs:element[@name='TransferResultDataDataType']
+
+
+
+ ParameterResultDataType
+
+ i=69
+ ns=1;i=6423
+
+
+ //xs:element[@name='ParameterResultDataType']
+
+
+
+ Default JSON
+
+ ns=1;i=6522
+ i=76
+
+
+
+ Default JSON
+
+ ns=1;i=15888
+ i=76
+
+
+
+ Default JSON
+
+ ns=1;i=15889
+ i=76
+
+
+
+ Default JSON
+
+ ns=1;i=6525
+ i=76
+
+
+
diff --git a/examples/server/NodeSet2_server/generate_cert.go b/examples/server/NodeSet2_server/generate_cert.go
new file mode 100644
index 00000000..d5facc71
--- /dev/null
+++ b/examples/server/NodeSet2_server/generate_cert.go
@@ -0,0 +1,107 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate a self-signed X.509 certificate for a TLS server. Outputs to
+// 'cert.pem' and 'key.pem' and will overwrite existing files.
+
+// Based on src/crypto/tls/generate_cert.go from the Go SDK
+// Modified by the Gopcua Authors for use in creating an OPC-UA compliant client certificate
+
+package main
+
+import (
+ "crypto/ecdsa"
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+ "net"
+ "net/url"
+ "os"
+ "time"
+)
+
+func GenerateCert(host []string, rsaBits int, validFor time.Duration) (certPEM, keyPEM []byte, err error) {
+ if len(host) == 0 {
+ return nil, nil, fmt.Errorf("missing required host parameter")
+ }
+ if rsaBits == 0 {
+ rsaBits = 2048
+ }
+
+ priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate private key: %s", err)
+ }
+
+ notBefore := time.Now()
+ notAfter := notBefore.Add(validFor)
+
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate serial number: %s", err)
+ }
+
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{
+ CommonName: "Gopcua Server",
+ },
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+
+ KeyUsage: x509.KeyUsageContentCommitment | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageDataEncipherment | x509.KeyUsageCertSign,
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth},
+ BasicConstraintsValid: true,
+ }
+
+ for _, h := range host {
+ if ip := net.ParseIP(h); ip != nil {
+ template.IPAddresses = append(template.IPAddresses, ip)
+ } else {
+ template.DNSNames = append(template.DNSNames, h)
+ }
+ if uri, err := url.Parse(h); err == nil {
+ template.URIs = append(template.URIs, uri)
+ }
+ }
+
+ derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to create certificate: %s", err)
+ }
+
+ return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes}), pem.EncodeToMemory(pemBlockForKey(priv)), nil
+}
+
+func publicKey(priv interface{}) interface{} {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &k.PublicKey
+ case *ecdsa.PrivateKey:
+ return &k.PublicKey
+ default:
+ return nil
+ }
+}
+
+func pemBlockForKey(priv interface{}) *pem.Block {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
+ case *ecdsa.PrivateKey:
+ b, err := x509.MarshalECPrivateKey(k)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to marshal ECDSA private key: %v", err)
+ os.Exit(2)
+ }
+ return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
+ default:
+ return nil
+ }
+}
diff --git a/examples/server/NodeSet2_server/server.go b/examples/server/NodeSet2_server/server.go
new file mode 100644
index 00000000..dadfe8d4
--- /dev/null
+++ b/examples/server/NodeSet2_server/server.go
@@ -0,0 +1,201 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package main
+
+import (
+ "context"
+ "crypto/rsa"
+ "crypto/tls"
+ "encoding/xml"
+ "flag"
+ "io"
+ "log"
+ "os"
+ "os/signal"
+ "time"
+
+ "github.com/gopcua/opcua/debug"
+ "github.com/gopcua/opcua/schema"
+ "github.com/gopcua/opcua/server"
+ "github.com/gopcua/opcua/ua"
+)
+
+var (
+ endpoint = flag.String("endpoint", "0.0.0.0", "OPC UA Endpoint URL")
+ port = flag.Int("port", 4840, "OPC UA Endpoint port")
+ certfile = flag.String("cert", "cert.pem", "Path to certificate file")
+ keyfile = flag.String("key", "key.pem", "Path to PEM Private Key file")
+ gencert = flag.Bool("gen-cert", false, "Generate a new certificate")
+)
+
+type Logger int
+
+func (l Logger) Debug(msg string, args ...any) {
+ if l < 0 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Info(msg string, args ...any) {
+ if l < 1 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Warn(msg string, args ...any) {
+ if l < 2 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Error(msg string, args ...any) {
+ if l < 3 {
+ log.Printf(msg, args...)
+ }
+}
+
+func main() {
+ flag.BoolVar(&debug.Enable, "debug", false, "enable debug logging")
+ flag.Parse()
+ log.SetFlags(0)
+
+ var opts []server.Option
+
+ // Set your security options.
+ opts = append(opts,
+ server.EnableSecurity("None", ua.MessageSecurityModeNone),
+ /*
+ These security modes are not implemented yet.
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSignAndEncrypt),
+ */
+ )
+
+ // Set your user authentication options.
+ opts = append(opts,
+ server.EnableAuthMode(ua.UserTokenTypeAnonymous),
+ /*
+ These authentication modes are not implemented yet
+ server.EnableAuthMode(ua.UserTokenTypeUserName),
+ server.EnableAuthMode(ua.UserTokenTypeCertificate),
+ */
+ // server.EnableAuthWithoutEncryption(), // Dangerous and not recommended, shown for illustration only
+ )
+
+ // Here we're automatically adding the hostname and localhost to the endpoint list.
+ // Some clients are picky about the endpoint matching the connection url, so be sure to add any addresses/hostnames that
+ // clients will use to connect to the server.
+ //
+ // be sure the hostname(s) also match the certificate the server is going to use.
+ hostname, err := os.Hostname()
+ if err != nil {
+ log.Fatalf("Error getting host name %v", err)
+ }
+
+ opts = append(opts,
+ server.EndPoint(*endpoint, *port),
+ server.EndPoint("localhost", *port),
+ server.EndPoint(hostname, *port),
+ )
+
+ // the server.SetLogger takes a server.Logger interface. This interface is met by
+ // the slog.Logger{}. A simple wrapper could be made for other loggers if they don't already
+ // meet the interface.
+ logger := Logger(2)
+ opts = append(opts,
+ server.SetLogger(logger),
+ )
+
+ // Here is an example of certificate generation. This is not necessary if you already have a certificate.
+ if *gencert {
+ // it is important that the certificate is generated with the correct hostname/IP address URIs
+ // or the clients may not accept the certificate.
+ endpoints := []string{
+ "localhost",
+ hostname,
+ *endpoint,
+ }
+
+ c, k, err := GenerateCert(endpoints, 4096, time.Minute*60*24*365*10)
+ if err != nil {
+ log.Fatalf("problem creating cert: %v", err)
+ }
+ err = os.WriteFile(*certfile, c, 0)
+ if err != nil {
+ log.Fatalf("problem writing cert: %v", err)
+ }
+ err = os.WriteFile(*keyfile, k, 0)
+ if err != nil {
+ log.Fatalf("problem writing key: %v", err)
+ }
+
+ }
+
+ var cert []byte
+ if *gencert || (*certfile != "" && *keyfile != "") {
+ log.Printf("Loading cert/key from %s/%s", *certfile, *keyfile)
+ c, err := tls.LoadX509KeyPair(*certfile, *keyfile)
+ if err != nil {
+ log.Printf("Failed to load certificate: %s", err)
+ } else {
+ pk, ok := c.PrivateKey.(*rsa.PrivateKey)
+ if !ok {
+ log.Fatalf("Invalid private key")
+ }
+ cert = c.Certificate[0]
+ opts = append(opts, server.PrivateKey(pk), server.Certificate(cert))
+ }
+ }
+
+ // Now that all the options are set, create the server.
+ // When the server is created, it will automatically create namespace 0 and populate it with
+ // the core opc ua nodes.
+ s := server.New(opts...)
+
+ // Now we'll import our NodeSet2.xml file.
+ // These files often create additional namespaces and reference them assuming they
+ // stat at namespace 1. So you'll want to import the nodeset first, then add any custom namespaces
+ // after that.
+
+ // first, we read the file and unmarshal it into a schema.UANodeSet struct. Then it can be imported
+ file, err := os.Open("Opc.Ua.Di.NodeSet2.xml")
+ if err != nil {
+ log.Fatalf("error opening nodeset file: %v", err)
+ }
+ node_data, err := io.ReadAll(file)
+ if err != nil {
+ log.Fatalf("error reading nodeset file: %v", err)
+ }
+ var nodes schema.UANodeSet
+ xml.Unmarshal(node_data, &nodes)
+ s.ImportNodeSet(&nodes)
+
+ // At this point you can lookup any specific node by its nodeid to add references or modify it or whatever
+ // your heart desires
+ node := s.Node(ua.NewNumericNodeID(1, 15044))
+ if node != nil {
+ log.Printf("Found node %v", node)
+ }
+
+ // Start the server
+ if err := s.Start(context.Background()); err != nil {
+ log.Fatalf("Error starting server, exiting: %s", err)
+ }
+ defer s.Close()
+
+ // catch ctrl-c and gracefully shutdown the server.
+ sigch := make(chan os.Signal, 1)
+ signal.Notify(sigch, os.Interrupt)
+ defer signal.Stop(sigch)
+ log.Printf("Press CTRL-C to exit")
+
+ <-sigch
+ log.Printf("Shutting down the server...")
+}
diff --git a/examples/server/map_server/generate_cert.go b/examples/server/map_server/generate_cert.go
new file mode 100644
index 00000000..d5facc71
--- /dev/null
+++ b/examples/server/map_server/generate_cert.go
@@ -0,0 +1,107 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate a self-signed X.509 certificate for a TLS server. Outputs to
+// 'cert.pem' and 'key.pem' and will overwrite existing files.
+
+// Based on src/crypto/tls/generate_cert.go from the Go SDK
+// Modified by the Gopcua Authors for use in creating an OPC-UA compliant client certificate
+
+package main
+
+import (
+ "crypto/ecdsa"
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+ "net"
+ "net/url"
+ "os"
+ "time"
+)
+
+func GenerateCert(host []string, rsaBits int, validFor time.Duration) (certPEM, keyPEM []byte, err error) {
+ if len(host) == 0 {
+ return nil, nil, fmt.Errorf("missing required host parameter")
+ }
+ if rsaBits == 0 {
+ rsaBits = 2048
+ }
+
+ priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate private key: %s", err)
+ }
+
+ notBefore := time.Now()
+ notAfter := notBefore.Add(validFor)
+
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate serial number: %s", err)
+ }
+
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{
+ CommonName: "Gopcua Server",
+ },
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+
+ KeyUsage: x509.KeyUsageContentCommitment | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageDataEncipherment | x509.KeyUsageCertSign,
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth},
+ BasicConstraintsValid: true,
+ }
+
+ for _, h := range host {
+ if ip := net.ParseIP(h); ip != nil {
+ template.IPAddresses = append(template.IPAddresses, ip)
+ } else {
+ template.DNSNames = append(template.DNSNames, h)
+ }
+ if uri, err := url.Parse(h); err == nil {
+ template.URIs = append(template.URIs, uri)
+ }
+ }
+
+ derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to create certificate: %s", err)
+ }
+
+ return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes}), pem.EncodeToMemory(pemBlockForKey(priv)), nil
+}
+
+func publicKey(priv interface{}) interface{} {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &k.PublicKey
+ case *ecdsa.PrivateKey:
+ return &k.PublicKey
+ default:
+ return nil
+ }
+}
+
+func pemBlockForKey(priv interface{}) *pem.Block {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
+ case *ecdsa.PrivateKey:
+ b, err := x509.MarshalECPrivateKey(k)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to marshal ECDSA private key: %v", err)
+ os.Exit(2)
+ }
+ return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
+ default:
+ return nil
+ }
+}
diff --git a/examples/server/map_server/server.go b/examples/server/map_server/server.go
new file mode 100644
index 00000000..b4ce3a23
--- /dev/null
+++ b/examples/server/map_server/server.go
@@ -0,0 +1,245 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+//
+// This example program shows how to create a simple OPC UA server with data backed by a map.
+// This allows you to easily create a server with a simple data model that can be updated from
+// other parts of your application. This example also shows how to monitor the data for changes
+// and how to trigger change notifications to clients when the data changes.
+
+package main
+
+import (
+ "context"
+ "crypto/rsa"
+ "crypto/tls"
+ "flag"
+ "log"
+ "os"
+ "os/signal"
+ "time"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server"
+ "github.com/gopcua/opcua/ua"
+)
+
+var (
+ endpoint = flag.String("endpoint", "0.0.0.0", "OPC UA Endpoint URL")
+ port = flag.Int("port", 4840, "OPC UA Endpoint port")
+ certfile = flag.String("cert", "cert.pem", "Path to certificate file")
+ keyfile = flag.String("key", "key.pem", "Path to PEM Private Key file")
+ gencert = flag.Bool("gen-cert", false, "Generate a new certificate")
+)
+
+type Logger int
+
+func (l Logger) Debug(msg string, args ...any) {
+ if l < 0 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Info(msg string, args ...any) {
+ if l < 1 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Warn(msg string, args ...any) {
+ if l < 2 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Error(msg string, args ...any) {
+ if l < 3 {
+ log.Printf(msg, args...)
+ }
+}
+
+func main() {
+ flag.Parse()
+ log.SetFlags(0)
+
+ var opts []server.Option
+
+ // Set your security options.
+ opts = append(opts,
+ server.EnableSecurity("None", ua.MessageSecurityModeNone),
+ /*
+ These security modes are not implemented yet.
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSignAndEncrypt),
+ */
+ )
+
+ // Set your user authentication options.
+ opts = append(opts,
+ server.EnableAuthMode(ua.UserTokenTypeAnonymous),
+ /*
+ These authentication modes are not implemented yet
+ server.EnableAuthMode(ua.UserTokenTypeUserName),
+ server.EnableAuthMode(ua.UserTokenTypeCertificate),
+ */
+ // server.EnableAuthWithoutEncryption(), // Dangerous and not recommended, shown for illustration only
+ )
+
+ // Here we're automatically adding the hostname and localhost to the endpoint list.
+ // Some clients are picky about the endpoint matching the connection url, so be sure to add any addresses/hostnames that
+ // clients will use to connect to the server.
+ //
+ // be sure the hostname(s) also match the certificate the server is going to use.
+ hostname, err := os.Hostname()
+ if err != nil {
+ log.Fatalf("Error getting host name %v", err)
+ }
+
+ opts = append(opts,
+ server.EndPoint(*endpoint, *port),
+ server.EndPoint("localhost", *port),
+ server.EndPoint(hostname, *port),
+ )
+
+ // the server.SetLogger takes a server.Logger interface. This interface is met by
+ // the slog.Logger{}. A simple wrapper could be made for other loggers if they don't already
+ // meet the interface and that is what we've done here.
+ logger := Logger(1)
+ opts = append(opts,
+ server.SetLogger(logger),
+ )
+
+ // Here is an example of certificate generation. This is not necessary if you already have a certificate.
+ if *gencert {
+ // it is important that the certificate is generated with the correct hostname/IP address URIs
+ // or the clients may not accept the certificate.
+ endpoints := []string{
+ "localhost",
+ hostname,
+ *endpoint,
+ }
+
+ c, k, err := GenerateCert(endpoints, 4096, time.Minute*60*24*365*10)
+ if err != nil {
+ log.Fatalf("problem creating cert: %v", err)
+ }
+ err = os.WriteFile(*certfile, c, 0)
+ if err != nil {
+ log.Fatalf("problem writing cert: %v", err)
+ }
+ err = os.WriteFile(*keyfile, k, 0)
+ if err != nil {
+ log.Fatalf("problem writing key: %v", err)
+ }
+
+ }
+
+ var cert []byte
+ if *gencert || (*certfile != "" && *keyfile != "") {
+ log.Printf("Loading cert/key from %s/%s", *certfile, *keyfile)
+ c, err := tls.LoadX509KeyPair(*certfile, *keyfile)
+ if err != nil {
+ log.Printf("Failed to load certificate: %s", err)
+ } else {
+ pk, ok := c.PrivateKey.(*rsa.PrivateKey)
+ if !ok {
+ log.Fatalf("Invalid private key")
+ }
+ cert = c.Certificate[0]
+ opts = append(opts, server.PrivateKey(pk), server.Certificate(cert))
+ }
+ }
+
+ // Now that all the options are set, create the server.
+ // When the server is created, it will automatically create namespace 0 and populate it with
+ // the core opc ua nodes.
+ s := server.New(opts...)
+
+ // Create some map namespaces. These are backed by go map[string]any
+ // which may be more convenient for some use cases than the NodeNamespace which requires
+ // your application's data structure to match the opcua node model.
+ myMapNamespace1 := server.NewMapNamespace(s, "MyTestNamespace")
+ log.Printf("map namespace 1 added at index %d", myMapNamespace1.ID())
+ myMapNamespace2 := server.NewMapNamespace(s, "SomeOtherNamespace")
+ log.Printf("map namespace 2 added at index %d", myMapNamespace2.ID())
+
+ // fill them with data.
+ myMapNamespace1.Data["Tag1"] = 123.4
+ myMapNamespace1.Data["Tag2"] = 42
+ myMapNamespace1.Data["Tag3.Tag4"] = "some string"
+ myMapNamespace1.Data["Tag5"] = true
+ myMapNamespace1.Data["Tag6"] = time.Now()
+
+ myMapNamespace2.Data["Tag7"] = 56.78
+ myMapNamespace2.Data["Tag8"] = 92
+ myMapNamespace2.Data["Tag9"] = "different string"
+ myMapNamespace2.Data["Tag10"] = false
+ myMapNamespace2.Data["Tag11"] = time.Now().Add(time.Hour)
+
+ // simulate a background process updating the data in the map namespace.
+ go func() {
+ updates := 0
+ num := 42
+ tag5 := true
+ time.Sleep(time.Second * 10)
+ for {
+ updates++
+ num++
+ // you can manually lock and change the value, then manually trigger the change notification
+ myMapNamespace1.Mu.Lock()
+ myMapNamespace1.Data["Tag2"] = num
+ myMapNamespace1.ChangeNotification("Tag2")
+ myMapNamespace1.Mu.Unlock()
+ if updates == 10 {
+ // or you can do it with the built-in functions.
+ // which handles the locking and triggering
+ tag5 = !tag5
+ myMapNamespace1.SetValue("Tag5", tag5)
+ updates = 0
+ }
+ time.Sleep(time.Second)
+ }
+ }()
+
+ // simulate monitoring one of the namespaces for change events.
+ // this is how you would be notified when a write to the map
+ // occurs through the opc ua server
+ go func() {
+ for {
+ changed_key := <-myMapNamespace2.ExternalNotification
+ log.Printf("%s changed to %v", changed_key, myMapNamespace2.GetValue(changed_key))
+ }
+ }()
+
+ // add the namespaces to the server. If you want them to show up in a browse, you'll
+ // also have to add a reference to them (probably from the object node).
+ root_ns, _ := s.Namespace(0)
+ root_obj_node := root_ns.Objects()
+
+ // then we add the namespace to the server and add a reference to it from the object node.
+ // the object node of the map namespace is a virtual node that contains all the "nodes" for each
+ // map key
+ root_obj_node.AddRef(myMapNamespace1.Objects(), id.HasComponent, true)
+ root_obj_node.AddRef(myMapNamespace2.Objects(), id.HasComponent, true)
+
+ // Start the server
+ // Note that you can add namespaces before or after starting the server.
+ if err := s.Start(context.Background()); err != nil {
+ log.Fatalf("Error starting server, exiting: %s", err)
+ }
+ defer s.Close()
+
+ // catch ctrl-c and gracefully shutdown the server.
+ sigch := make(chan os.Signal, 1)
+ signal.Notify(sigch, os.Interrupt)
+ defer signal.Stop(sigch)
+ log.Printf("Press CTRL-C to exit")
+
+ <-sigch
+ log.Printf("Shutting down the server...")
+}
diff --git a/examples/server/node_server/generate_cert.go b/examples/server/node_server/generate_cert.go
new file mode 100644
index 00000000..d5facc71
--- /dev/null
+++ b/examples/server/node_server/generate_cert.go
@@ -0,0 +1,107 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate a self-signed X.509 certificate for a TLS server. Outputs to
+// 'cert.pem' and 'key.pem' and will overwrite existing files.
+
+// Based on src/crypto/tls/generate_cert.go from the Go SDK
+// Modified by the Gopcua Authors for use in creating an OPC-UA compliant client certificate
+
+package main
+
+import (
+ "crypto/ecdsa"
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+ "net"
+ "net/url"
+ "os"
+ "time"
+)
+
+func GenerateCert(host []string, rsaBits int, validFor time.Duration) (certPEM, keyPEM []byte, err error) {
+ if len(host) == 0 {
+ return nil, nil, fmt.Errorf("missing required host parameter")
+ }
+ if rsaBits == 0 {
+ rsaBits = 2048
+ }
+
+ priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate private key: %s", err)
+ }
+
+ notBefore := time.Now()
+ notAfter := notBefore.Add(validFor)
+
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate serial number: %s", err)
+ }
+
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{
+ CommonName: "Gopcua Server",
+ },
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+
+ KeyUsage: x509.KeyUsageContentCommitment | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageDataEncipherment | x509.KeyUsageCertSign,
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth},
+ BasicConstraintsValid: true,
+ }
+
+ for _, h := range host {
+ if ip := net.ParseIP(h); ip != nil {
+ template.IPAddresses = append(template.IPAddresses, ip)
+ } else {
+ template.DNSNames = append(template.DNSNames, h)
+ }
+ if uri, err := url.Parse(h); err == nil {
+ template.URIs = append(template.URIs, uri)
+ }
+ }
+
+ derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to create certificate: %s", err)
+ }
+
+ return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes}), pem.EncodeToMemory(pemBlockForKey(priv)), nil
+}
+
+func publicKey(priv interface{}) interface{} {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &k.PublicKey
+ case *ecdsa.PrivateKey:
+ return &k.PublicKey
+ default:
+ return nil
+ }
+}
+
+func pemBlockForKey(priv interface{}) *pem.Block {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
+ case *ecdsa.PrivateKey:
+ b, err := x509.MarshalECPrivateKey(k)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to marshal ECDSA private key: %v", err)
+ os.Exit(2)
+ }
+ return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
+ default:
+ return nil
+ }
+}
diff --git a/examples/server/node_server/server.go b/examples/server/node_server/server.go
new file mode 100644
index 00000000..f40ee000
--- /dev/null
+++ b/examples/server/node_server/server.go
@@ -0,0 +1,262 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package main
+
+import (
+ "context"
+ "crypto/rsa"
+ "crypto/tls"
+ "flag"
+ "log"
+ "os"
+ "os/signal"
+ "time"
+
+ "github.com/gopcua/opcua/debug"
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/ua"
+)
+
+var (
+ endpoint = flag.String("endpoint", "0.0.0.0", "OPC UA Endpoint URL")
+ port = flag.Int("port", 4840, "OPC UA Endpoint port")
+ certfile = flag.String("cert", "cert.pem", "Path to certificate file")
+ keyfile = flag.String("key", "key.pem", "Path to PEM Private Key file")
+ gencert = flag.Bool("gen-cert", false, "Generate a new certificate")
+)
+
+type Logger int
+
+func (l Logger) Debug(msg string, args ...any) {
+ if l < 0 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Info(msg string, args ...any) {
+ if l < 1 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Warn(msg string, args ...any) {
+ if l < 2 {
+ log.Printf(msg, args...)
+ }
+}
+func (l Logger) Error(msg string, args ...any) {
+ if l < 3 {
+ log.Printf(msg, args...)
+ }
+}
+func main() {
+ flag.BoolVar(&debug.Enable, "debug", false, "enable debug logging")
+ flag.Parse()
+ log.SetFlags(0)
+
+ var opts []server.Option
+
+ // Set your security options.
+ opts = append(opts,
+ server.EnableSecurity("None", ua.MessageSecurityModeNone),
+ /*
+ These security modes are not implemented yet.
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSignAndEncrypt),
+ */
+ )
+
+ // Set your user authentication options.
+ opts = append(opts,
+ server.EnableAuthMode(ua.UserTokenTypeAnonymous),
+ /*
+ These authentication modes are not implemented yet
+ server.EnableAuthMode(ua.UserTokenTypeUserName),
+ server.EnableAuthMode(ua.UserTokenTypeCertificate),
+ */
+ // server.EnableAuthWithoutEncryption(), // Dangerous and not recommended, shown for illustration only
+ )
+
+ // Here we're automatically adding the hostname and localhost to the endpoint list.
+ // Some clients are picky about the endpoint matching the connection url, so be sure to add any addresses/hostnames that
+ // clients will use to connect to the server.
+ //
+ // be sure the hostname(s) also match the certificate the server is going to use.
+ hostname, err := os.Hostname()
+ if err != nil {
+ log.Fatalf("Error getting host name %v", err)
+ }
+
+ opts = append(opts,
+ server.EndPoint(*endpoint, *port),
+ server.EndPoint("localhost", *port),
+ server.EndPoint(hostname, *port),
+ )
+
+ // the server.SetLogger takes a server.Logger interface. This interface is met by
+ // the slog.Logger{}. A simple wrapper could be made for other loggers if they don't already
+ // meet the interface.
+ logger := Logger(1)
+ opts = append(opts,
+ server.SetLogger(logger),
+ )
+
+ // Here is an example of certificate generation. This is not necessary if you already have a certificate.
+ if *gencert {
+ // it is important that the certificate is generated with the correct hostname/IP address URIs
+ // or the clients may not accept the certificate.
+ endpoints := []string{
+ "localhost",
+ hostname,
+ *endpoint,
+ }
+
+ c, k, err := GenerateCert(endpoints, 4096, time.Minute*60*24*365*10)
+ if err != nil {
+ log.Fatalf("problem creating cert: %v", err)
+ }
+ err = os.WriteFile(*certfile, c, 0)
+ if err != nil {
+ log.Fatalf("problem writing cert: %v", err)
+ }
+ err = os.WriteFile(*keyfile, k, 0)
+ if err != nil {
+ log.Fatalf("problem writing key: %v", err)
+ }
+
+ }
+
+ var cert []byte
+ if *gencert || (*certfile != "" && *keyfile != "") {
+ log.Printf("Loading cert/key from %s/%s", *certfile, *keyfile)
+ c, err := tls.LoadX509KeyPair(*certfile, *keyfile)
+ if err != nil {
+ log.Printf("Failed to load certificate: %s", err)
+ } else {
+ pk, ok := c.PrivateKey.(*rsa.PrivateKey)
+ if !ok {
+ log.Fatalf("Invalid private key")
+ }
+ cert = c.Certificate[0]
+ opts = append(opts, server.PrivateKey(pk), server.Certificate(cert))
+ }
+ }
+
+ // Now that all the options are set, create the server.
+ // When the server is created, it will automatically create namespace 0 and populate it with
+ // the core opc ua nodes.
+ s := server.New(opts...)
+
+ // add the namespaces to the server, and add a reference to them if desired.
+ // here we are choosing to add the namespaces to the root/object folder
+ // to do this we first need to get the root namespace object folder so we
+ // get the object node
+ root_ns, _ := s.Namespace(0)
+ root_obj_node := root_ns.Objects()
+
+ // Start the server
+ // Note that you can add namespaces before or after starting the server.
+ if err := s.Start(context.Background()); err != nil {
+ log.Fatalf("Error starting server, exiting: %s", err)
+ }
+ defer s.Close()
+
+ // Now we'll add a node namespace. This is a more traditional way to add nodes to the server
+ // and is more in line with the opc ua node model, but may be more cumbersome for some use cases.
+ nodeNS := server.NewNodeNameSpace(s, "NodeNamespace")
+ log.Printf("Node Namespace added at index %d", nodeNS.ID())
+
+ // add the reference for this namespace's root object folder to the server's root object folder
+ // but you can add a reference to whatever node(s) you need
+ nns_obj := nodeNS.Objects()
+ root_obj_node.AddRef(nns_obj, id.HasComponent, true)
+
+ // Create some nodes for it. Here we are usin gthe AddNewVariableNode utility function to create a new variable node
+ // with an integer node ID that is automatically assigned. (ns=,s=)
+ // be sure to add the reference to the node somewhere if desired, or clients won't be able to browse it.
+ var1 := nodeNS.AddNewVariableNode("TestVar1", float32(123.45))
+ nns_obj.AddRef(var1, id.HasComponent, true)
+
+ // This node will have a string node id (ns=,s=TestVar2)
+ // your variable node's value can also return a ua.Variant from a function if you want to update the value dynamically
+ // here we are just incrementing a counter every time the value is read.
+ var2Value := int32(0)
+ var2 := nodeNS.AddNewVariableStringNode("TestVar2", func() *ua.Variant { var2Value++; return ua.MustVariant(var2Value) })
+ nns_obj.AddRef(var2, id.HasComponent, true)
+
+ // Now we'll add a node from scratch. This is a more manual way to add nodes to the server and gives you full
+ // control, but you'll have to build the node up with the correct attributes and references and then reference it from
+ // the parent node in the namespace if applicable.
+ var3 := server.NewNode(
+ ua.NewNumericNodeID(nodeNS.ID(), 12345), // you can use whatever node id you want here, whether it's numeric, string, guid, etc...
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("MyBrowseName")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(12.34) },
+ )
+ nodeNS.AddNode(var3)
+ nns_obj.AddRef(var3, id.HasComponent, true)
+
+ // simulate a background process updating the data in the namespace.
+ go func() {
+ updates := 0
+ num := 42
+ time.Sleep(time.Second * 10)
+ for {
+ updates++
+ num++
+
+ // get the current value of the variable
+ last_value := var1.Value().Value().(float32)
+ // and change it
+ last_value += 1
+
+ // wrap the new value in a DataValue and use that to update the Value attribute of the node
+ val := ua.DataValue{
+ Value: ua.MustVariant(last_value),
+ SourceTimestamp: time.Now(),
+ EncodingMask: ua.DataValueValue | ua.DataValueSourceTimestamp,
+ }
+ var1.SetAttribute(ua.AttributeIDValue, val)
+
+ // we also need to let the node namespace know that the value has changed so it can trigger the change notification
+ // and send the updated value to any subscribed clients.
+ nodeNS.ChangeNotification(var1.ID())
+
+ time.Sleep(time.Second)
+ }
+ }()
+
+ // simulate monitoring one of the namespaces for change events.
+ // this is how you would be notified when a write to a node
+ // occurs through the opc ua server
+ go func() {
+ for {
+ changed_id := <-nodeNS.ExternalNotification
+ node := nodeNS.Node(changed_id)
+ value := node.Value().Value()
+ log.Printf("%s changed to %v", changed_id.String(), value)
+ }
+ }()
+
+ // catch ctrl-c and gracefully shutdown the server.
+ sigch := make(chan os.Signal, 1)
+ signal.Notify(sigch, os.Interrupt)
+ defer signal.Stop(sigch)
+ log.Printf("Press CTRL-C to exit")
+
+ <-sigch
+ log.Printf("Shutting down the server...")
+}
diff --git a/examples/server_test/generate_cert.go b/examples/server_test/generate_cert.go
new file mode 100644
index 00000000..d39857e7
--- /dev/null
+++ b/examples/server_test/generate_cert.go
@@ -0,0 +1,107 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate a self-signed X.509 certificate for a TLS server. Outputs to
+// 'cert.pem' and 'key.pem' and will overwrite existing files.
+
+// Based on src/crypto/tls/generate_cert.go from the Go SDK
+// Modified by the Gopcua Authors for use in creating an OPC-UA compliant client certificate
+
+package main
+
+import (
+ "crypto/ecdsa"
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+ "net"
+ "net/url"
+ "os"
+ "time"
+)
+
+func GenerateCert(host []string, rsaBits int, validFor time.Duration) (certPEM, keyPEM []byte, err error) {
+ if len(host) == 0 {
+ return nil, nil, fmt.Errorf("missing required host parameter")
+ }
+ if rsaBits == 0 {
+ rsaBits = 2048
+ }
+
+ priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate private key: %s", err)
+ }
+
+ notBefore := time.Now()
+ notAfter := notBefore.Add(validFor)
+
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate serial number: %s", err)
+ }
+
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{
+ Organization: []string{"Gopcua Test Client"},
+ },
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+
+ KeyUsage: x509.KeyUsageContentCommitment | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageDataEncipherment | x509.KeyUsageCertSign,
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth},
+ BasicConstraintsValid: true,
+ }
+
+ for _, h := range host {
+ if ip := net.ParseIP(h); ip != nil {
+ template.IPAddresses = append(template.IPAddresses, ip)
+ } else {
+ template.DNSNames = append(template.DNSNames, h)
+ }
+ if uri, err := url.Parse(h); err == nil {
+ template.URIs = append(template.URIs, uri)
+ }
+ }
+
+ derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to create certificate: %s", err)
+ }
+
+ return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes}), pem.EncodeToMemory(pemBlockForKey(priv)), nil
+}
+
+func publicKey(priv interface{}) interface{} {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &k.PublicKey
+ case *ecdsa.PrivateKey:
+ return &k.PublicKey
+ default:
+ return nil
+ }
+}
+
+func pemBlockForKey(priv interface{}) *pem.Block {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
+ case *ecdsa.PrivateKey:
+ b, err := x509.MarshalECPrivateKey(k)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to marshal ECDSA private key: %v", err)
+ os.Exit(2)
+ }
+ return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
+ default:
+ return nil
+ }
+}
diff --git a/examples/server_test/server.go b/examples/server_test/server.go
new file mode 100644
index 00000000..468b512e
--- /dev/null
+++ b/examples/server_test/server.go
@@ -0,0 +1,117 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package main
+
+import (
+ "context"
+ "crypto/rsa"
+ "crypto/tls"
+ "flag"
+ "log"
+ "os"
+ "time"
+
+ "github.com/gopcua/opcua/debug"
+ "github.com/gopcua/opcua/server"
+ "github.com/gopcua/opcua/ua"
+)
+
+var (
+ endpoint = flag.String("endpoint", "0.0.0.0", "OPC UA Endpoint URL")
+ port = flag.Int("port", 4840, "OPC UA Endpoint port")
+ certfile = flag.String("cert", "cert.pem", "Path to certificate file")
+ keyfile = flag.String("key", "key.pem", "Path to PEM Private Key file")
+ gencert = flag.Bool("gen-cert", true, "Generate a new certificate")
+)
+
+func main() {
+ flag.BoolVar(&debug.Enable, "debug", false, "enable debug logging")
+ flag.Parse()
+ log.SetFlags(0)
+
+ var opts []server.Option
+
+ opts = append(opts,
+ server.EnableSecurity("None", ua.MessageSecurityModeNone),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSignAndEncrypt),
+ )
+
+ opts = append(opts,
+ server.EnableAuthMode(ua.UserTokenTypeAnonymous),
+ server.EnableAuthMode(ua.UserTokenTypeUserName),
+ server.EnableAuthMode(ua.UserTokenTypeCertificate),
+ // server.EnableAuthWithoutEncryption(), // Dangerous and not recommended, shown for illustration only
+ )
+ hostname, err := os.Hostname()
+ if err != nil {
+ log.Fatalf("Error getting host name %v", err)
+ }
+
+ // not sure if a list of hostnames is better or adding endpoints to the options
+ endpoints := []string{
+ "localhost",
+ hostname,
+ *endpoint,
+ }
+
+ opts = append(opts,
+ server.EndPoint(*endpoint, *port),
+ server.EndPoint("localhost", *port),
+ server.EndPoint(hostname, *port),
+ )
+
+ if *gencert {
+ c, k, err := GenerateCert(endpoints, 4096, time.Minute*60*24*365*10)
+ if err != nil {
+ log.Fatalf("problem creating cert: %v", err)
+ }
+ err = os.WriteFile(*certfile, c, 0)
+ if err != nil {
+ log.Fatalf("problem writing cert: %v", err)
+ }
+ err = os.WriteFile(*keyfile, k, 0)
+ if err != nil {
+ log.Fatalf("problem writing key: %v", err)
+ }
+
+ }
+
+ var cert []byte
+ if *gencert || (*certfile != "" && *keyfile != "") {
+ log.Printf("Loading cert/key from %s/%s", *certfile, *keyfile)
+ c, err := tls.LoadX509KeyPair(*certfile, *keyfile)
+ if err != nil {
+ log.Printf("Failed to load certificate: %s", err)
+ } else {
+ pk, ok := c.PrivateKey.(*rsa.PrivateKey)
+ if !ok {
+ log.Fatalf("Invalid private key")
+ }
+ cert = c.Certificate[0]
+ opts = append(opts, server.PrivateKey(pk), server.Certificate(cert))
+ }
+ }
+
+ s := server.New(opts...)
+
+ // Create a new node namespace. You can add namespaces before or after starting the server.
+ // Start the server
+ if err := s.Start(context.Background()); err != nil {
+ log.Fatalf("Error starting server, exiting: %s", err)
+ }
+ defer s.Close()
+
+ select {}
+
+}
diff --git a/go.mod b/go.mod
index ffcc2965..6e9a0c2d 100644
--- a/go.mod
+++ b/go.mod
@@ -1,10 +1,11 @@
module github.com/gopcua/opcua
-go 1.20
+go 1.22.0
require (
+ github.com/google/uuid v1.3.0
github.com/pascaldekloe/goe v0.1.1
- golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1
+ golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d
golang.org/x/term v0.8.0
)
diff --git a/go.sum b/go.sum
index 3e6f34d0..2a3bdd41 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,9 @@
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/pascaldekloe/goe v0.1.1 h1:Ah6WQ56rZONR3RW3qWa2NCZ6JAVvSpUcoLBaOmYFt9Q=
github.com/pascaldekloe/goe v0.1.1/go.mod h1:KSyfaxQOh0HZPjDP1FL/kFtbqYqrALJTaMafFUIccqU=
-golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc=
-golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
+golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d h1:0olWaB5pg3+oychR51GUVCEsGkeCU/2JxjBgIo4f3M0=
+golang.org/x/exp v0.0.0-20241204233417-43b7b7cde48d/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
diff --git a/id/id_gen.go b/id/id_gen.go
index a8f8b7b7..21fa267e 100644
--- a/id/id_gen.go
+++ b/id/id_gen.go
@@ -16,136 +16,136 @@ func Name(id uint32) string {
}
const (
- Boolean = 1
- SByte = 2
- Byte = 3
- Int16 = 4
- UInt16 = 5
- Int32 = 6
- UInt32 = 7
- Int64 = 8
- UInt64 = 9
- Float = 10
- Double = 11
- String = 12
- DateTime = 13
- GUID = 14
- ByteString = 15
- XMLElement = 16
- NodeID = 17
- ExpandedNodeID = 18
- StatusCode = 19
- QualifiedName = 20
- LocalizedText = 21
- Structure = 22
- DataValue = 23
- BaseDataType = 24
- DiagnosticInfo = 25
- Number = 26
- Integer = 27
- UInteger = 28
- Enumeration = 29
- Image = 30
- References = 31
- NonHierarchicalReferences = 32
- HierarchicalReferences = 33
- HasChild = 34
- Organizes = 35
- HasEventSource = 36
- HasModellingRule = 37
- HasEncoding = 38
- HasDescription = 39
- HasTypeDefinition = 40
- GeneratesEvent = 41
- Aggregates = 44
- HasSubtype = 45
- HasProperty = 46
- HasComponent = 47
- HasNotifier = 48
- HasOrderedComponent = 49
- Decimal = 50
- FromState = 51
- ToState = 52
- HasCause = 53
- HasEffect = 54
- HasHistoricalConfiguration = 56
- BaseObjectType = 58
- FolderType = 61
- BaseVariableType = 62
- BaseDataVariableType = 63
- PropertyType = 68
- DataTypeDescriptionType = 69
- DataTypeDictionaryType = 72
- DataTypeSystemType = 75
- DataTypeEncodingType = 76
- ModellingRuleType = 77
- ModellingRule_Mandatory = 78
- ModellingRule_Optional = 80
- ModellingRule_ExposesItsArray = 83
- RootFolder = 84
- ObjectsFolder = 85
- TypesFolder = 86
- ViewsFolder = 87
- ObjectTypesFolder = 88
- VariableTypesFolder = 89
- DataTypesFolder = 90
- ReferenceTypesFolder = 91
- XMLSchema_TypeSystem = 92
- OPCBinarySchema_TypeSystem = 93
- PermissionType = 94
- AccessRestrictionType = 95
- RolePermissionType = 96
- DataTypeDefinition = 97
- StructureType = 98
- StructureDefinition = 99
- EnumDefinition = 100
- StructureField = 101
- EnumField = 102
- DataTypeDescriptionType_DataTypeVersion = 104
- DataTypeDescriptionType_DictionaryFragment = 105
- DataTypeDictionaryType_DataTypeVersion = 106
- DataTypeDictionaryType_NamespaceURI = 107
- HasSubStateMachine = 117
- NamingRuleType = 120
- DataTypeDefinition_Encoding_DefaultBinary = 121
- StructureDefinition_Encoding_DefaultBinary = 122
- EnumDefinition_Encoding_DefaultBinary = 123
- DataSetMetaDataType_Encoding_DefaultBinary = 124
- DataTypeDescription_Encoding_DefaultBinary = 125
- StructureDescription_Encoding_DefaultBinary = 126
- EnumDescription_Encoding_DefaultBinary = 127
- RolePermissionType_Encoding_DefaultBinary = 128
- HasArgumentDescription = 129
- HasOptionalInputArgumentDescription = 131
- IDType = 256
- NodeClass = 257
- Node = 258
- Node_Encoding_DefaultXML = 259
- Node_Encoding_DefaultBinary = 260
- ObjectNode = 261
- ObjectNode_Encoding_DefaultXML = 262
- ObjectNode_Encoding_DefaultBinary = 263
- ObjectTypeNode = 264
- ObjectTypeNode_Encoding_DefaultXML = 265
- ObjectTypeNode_Encoding_DefaultBinary = 266
- VariableNode = 267
- VariableNode_Encoding_DefaultXML = 268
- VariableNode_Encoding_DefaultBinary = 269
- VariableTypeNode = 270
- VariableTypeNode_Encoding_DefaultXML = 271
- VariableTypeNode_Encoding_DefaultBinary = 272
- ReferenceTypeNode = 273
- ReferenceTypeNode_Encoding_DefaultXML = 274
- ReferenceTypeNode_Encoding_DefaultBinary = 275
- MethodNode = 276
- MethodNode_Encoding_DefaultXML = 277
- MethodNode_Encoding_DefaultBinary = 278
- ViewNode = 279
- ViewNode_Encoding_DefaultXML = 280
- ViewNode_Encoding_DefaultBinary = 281
- DataTypeNode = 282
- DataTypeNode_Encoding_DefaultXML = 283
- DataTypeNode_Encoding_DefaultBinary = 284
+ Boolean = 1
+ SByte = 2
+ Byte = 3
+ Int16 = 4
+ UInt16 = 5
+ Int32 = 6
+ UInt32 = 7
+ Int64 = 8
+ UInt64 = 9
+ Float = 10
+ Double = 11
+ String = 12
+ DateTime = 13
+ GUID = 14
+ ByteString = 15
+ XMLElement = 16
+ NodeID = 17
+ ExpandedNodeID = 18
+ StatusCode = 19
+ QualifiedName = 20
+ LocalizedText = 21
+ Structure = 22
+ DataValue = 23
+ BaseDataType = 24
+ DiagnosticInfo = 25
+ Number = 26
+ Integer = 27
+ UInteger = 28
+ Enumeration = 29
+ Image = 30
+ References = 31
+ NonHierarchicalReferences = 32
+ HierarchicalReferences = 33
+ HasChild = 34
+ Organizes = 35
+ HasEventSource = 36
+ HasModellingRule = 37
+ HasEncoding = 38
+ HasDescription = 39
+ HasTypeDefinition = 40
+ GeneratesEvent = 41
+ Aggregates = 44
+ HasSubtype = 45
+ HasProperty = 46
+ HasComponent = 47
+ HasNotifier = 48
+ HasOrderedComponent = 49
+ Decimal = 50
+ FromState = 51
+ ToState = 52
+ HasCause = 53
+ HasEffect = 54
+ HasHistoricalConfiguration = 56
+ BaseObjectType = 58
+ FolderType = 61
+ BaseVariableType = 62
+ BaseDataVariableType = 63
+ PropertyType = 68
+ DataTypeDescriptionType = 69
+ DataTypeDictionaryType = 72
+ DataTypeSystemType = 75
+ DataTypeEncodingType = 76
+ ModellingRuleType = 77
+ ModellingRule_Mandatory = 78
+ ModellingRule_Optional = 80
+ ModellingRule_ExposesItsArray = 83
+ RootFolder = 84
+ ObjectsFolder = 85
+ TypesFolder = 86
+ ViewsFolder = 87
+ ObjectTypesFolder = 88
+ VariableTypesFolder = 89
+ DataTypesFolder = 90
+ ReferenceTypesFolder = 91
+ XMLSchema_TypeSystem = 92
+ OPCBinarySchema_TypeSystem = 93
+ PermissionType = 94
+ AccessRestrictionType = 95
+ RolePermissionType = 96
+ DataTypeDefinition = 97
+ StructureType = 98
+ StructureDefinition = 99
+ EnumDefinition = 100
+ StructureField = 101
+ EnumField = 102
+ DataTypeDescriptionType_DataTypeVersion = 104
+ DataTypeDescriptionType_DictionaryFragment = 105
+ DataTypeDictionaryType_DataTypeVersion = 106
+ DataTypeDictionaryType_NamespaceURI = 107
+ HasSubStateMachine = 117
+ NamingRuleType = 120
+ DataTypeDefinition_Encoding_DefaultBinary = 121
+ StructureDefinition_Encoding_DefaultBinary = 122
+ EnumDefinition_Encoding_DefaultBinary = 123
+ DataSetMetaDataType_Encoding_DefaultBinary = 124
+ DataTypeDescription_Encoding_DefaultBinary = 125
+ StructureDescription_Encoding_DefaultBinary = 126
+ EnumDescription_Encoding_DefaultBinary = 127
+ RolePermissionType_Encoding_DefaultBinary = 128
+ HasArgumentDescription = 129
+ HasOptionalInputArgumentDescription = 131
+ IDType = 256
+ NodeClass = 257
+ Node = 258
+ Node_Encoding_DefaultXML = 259
+ Node_Encoding_DefaultBinary = 260
+ ObjectNode = 261
+ ObjectNode_Encoding_DefaultXML = 262
+ ObjectNode_Encoding_DefaultBinary = 263
+ ObjectTypeNode = 264
+ ObjectTypeNode_Encoding_DefaultXML = 265
+ ObjectTypeNode_Encoding_DefaultBinary = 266
+ VariableNode = 267
+ VariableNode_Encoding_DefaultXML = 268
+ VariableNode_Encoding_DefaultBinary = 269
+ VariableTypeNode = 270
+ VariableTypeNode_Encoding_DefaultXML = 271
+ VariableTypeNode_Encoding_DefaultBinary = 272
+ ReferenceTypeNode = 273
+ ReferenceTypeNode_Encoding_DefaultXML = 274
+ ReferenceTypeNode_Encoding_DefaultBinary = 275
+ MethodNode = 276
+ MethodNode_Encoding_DefaultXML = 277
+ MethodNode_Encoding_DefaultBinary = 278
+ ViewNode = 279
+ ViewNode_Encoding_DefaultXML = 280
+ ViewNode_Encoding_DefaultBinary = 281
+ DataTypeNode = 282
+ DataTypeNode_Encoding_DefaultXML = 283
+ DataTypeNode_Encoding_DefaultBinary = 284
ReferenceNode = 285
ReferenceNode_Encoding_DefaultXML = 286
ReferenceNode_Encoding_DefaultBinary = 287
@@ -366,6 +366,8 @@ const (
BrowseNextResponse_Encoding_DefaultBinary = 536
RelativePathElement = 537
RelativePathElement_Encoding_DefaultXML = 538
+
+
RelativePathElement_Encoding_DefaultBinary = 539
RelativePath = 540
RelativePath_Encoding_DefaultXML = 541
diff --git a/node.go b/node.go
index 2d083297..fb418999 100644
--- a/node.go
+++ b/node.go
@@ -241,7 +241,7 @@ func (n *Node) TranslateBrowsePathsToNodeIDs(ctx context.Context, pathNames []*u
}
var nodeID *ua.NodeID
- err := n.c.Send(ctx, &req, func(i interface{}) error {
+ err := n.c.Send(ctx, &req, func(i ua.Response) error {
if resp, ok := i.(*ua.TranslateBrowsePathsToNodeIDsResponse); ok {
if len(resp.Results) == 0 {
return ua.StatusBadUnexpectedError
diff --git a/schema/Opc.Ua.NodeSet2.xml b/schema/Opc.Ua.NodeSet2.xml
new file mode 100644
index 00000000..31710190
--- /dev/null
+++ b/schema/Opc.Ua.NodeSet2.xml
@@ -0,0 +1,72367 @@
+
+
+
+
+
+
+
+
+ i=1
+ i=2
+ i=3
+ i=4
+ i=5
+ i=6
+ i=7
+ i=8
+ i=9
+ i=10
+ i=11
+ i=13
+ i=12
+ i=15
+ i=14
+ i=16
+ i=17
+ i=18
+ i=20
+ i=21
+ i=19
+ i=22
+ i=26
+ i=27
+ i=28
+ i=47
+ i=46
+ i=35
+ i=36
+ i=48
+ i=45
+ i=40
+ i=37
+ i=38
+ i=39
+ i=53
+ i=52
+ i=51
+ i=54
+ i=9004
+ i=9005
+ i=17597
+ i=9006
+ i=15112
+ i=17604
+ i=17603
+
+
+ Default Binary
+
+ i=58
+
+
+
+ Default XML
+
+ i=58
+
+
+
+ BaseDataType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.1
+
+
+
+ Number
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9
+
+ i=24
+
+
+
+ Integer
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.5
+
+ i=26
+
+
+
+ UInteger
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.10
+
+ i=26
+
+
+
+ Enumeration
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.5
+
+ i=24
+
+
+
+
+ Boolean
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.2
+
+ i=24
+
+
+
+ SByte
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.9
+
+ i=27
+
+
+
+ Byte
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.11
+
+ i=28
+
+
+
+ Int16
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.6
+
+ i=27
+
+
+
+ UInt16
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.12
+
+ i=28
+
+
+
+ Int32
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.7
+
+ i=27
+
+
+
+ UInt32
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.14
+
+ i=28
+
+
+
+ Int64
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.8
+
+ i=27
+
+
+
+ UInt64
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.15
+
+ i=28
+
+
+
+ Float
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.4
+
+ i=26
+
+
+
+ Double
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.2
+
+ i=26
+
+
+
+ String
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11
+
+ i=24
+
+
+
+ DateTime
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.4
+
+ i=24
+
+
+
+ Guid
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.6
+
+ i=24
+
+
+
+ ByteString
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3
+
+ i=24
+
+
+
+ XmlElement
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.13
+
+ i=24
+
+
+
+ NodeId
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.8
+
+ i=24
+
+
+
+ ExpandedNodeId
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.9
+
+ i=24
+
+
+
+ StatusCode
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.14
+
+ i=24
+
+
+
+ QualifiedName
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.10
+
+ i=24
+
+
+
+ LocalizedText
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.7
+
+ i=24
+
+
+
+ Structure
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12
+
+ i=24
+
+
+
+ DataValue
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.5
+
+ i=24
+
+
+
+ DiagnosticInfo
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.8
+
+ i=24
+
+
+
+ Image
+ Base Info Image DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.2
+
+ i=15
+
+
+
+ Decimal
+ Base Info Decimal DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.1
+
+ i=26
+
+
+
+ References
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.1
+
+
+
+ NonHierarchicalReferences
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.3
+
+ i=31
+
+
+
+ HierarchicalReferences
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.2
+
+ i=31
+
+ InverseHierarchicalReferences
+
+
+ HasChild
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.4
+
+ i=33
+
+ ChildOf
+
+
+ Organizes
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.6
+
+ i=33
+
+ OrganizedBy
+
+
+ HasEventSource
+ Address Space Source Hierarchy
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.14
+
+ i=33
+
+ EventSourceOf
+
+
+ HasModellingRule
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.11
+
+ i=32
+
+ ModellingRuleOf
+
+
+ HasEncoding
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.13
+
+ i=32
+
+ EncodingOf
+
+
+ HasDescription
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.1
+
+ i=32
+
+ DescriptionOf
+
+
+ HasTypeDefinition
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.12
+
+ i=32
+
+ TypeDefinitionOf
+
+
+ GeneratesEvent
+ Address Space Events 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.16
+
+ i=32
+
+ GeneratedBy
+
+
+ AlwaysGeneratesEvent
+ Address Space Events 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.17
+
+ i=41
+
+ AlwaysGeneratedBy
+
+
+ Aggregates
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.5
+
+ i=34
+
+ AggregatedBy
+
+
+ HasSubtype
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.10
+
+ i=34
+
+ SubtypeOf
+
+
+ HasProperty
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.9
+
+ i=44
+
+ PropertyOf
+
+
+ HasComponent
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.7
+
+ i=44
+
+ ComponentOf
+
+
+ HasNotifier
+ Address Space Notifier Hierarchy
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.15
+
+ i=36
+
+ NotifierOf
+
+
+ HasOrderedComponent
+ Base Info HasOrderedComponent
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.8
+
+ i=47
+
+ OrderedComponentOf
+
+
+ FromState
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.11
+
+ i=32
+
+ ToTransition
+
+
+ ToState
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.12
+
+ i=32
+
+ FromTransition
+
+
+ HasCause
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.13
+
+ i=32
+
+ MayBeCausedBy
+
+
+ HasEffect
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.14
+
+ i=32
+
+ MayBeEffectedBy
+
+
+ HasSubStateMachine
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.15
+
+ i=32
+
+ SubStateMachineOf
+
+
+ HasHistoricalConfiguration
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.2.3
+
+ i=44
+
+ HistoricalConfigurationOf
+
+
+ HasStructuredComponent
+ Base Info Subvariables of Structures
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.23
+
+ i=47
+
+ IsStructuredComponentOf
+
+
+ AssociatedWith
+ Base Info AssociatedWith
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.24
+
+ i=32
+
+
+
+ BaseObjectType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.2
+
+
+
+ FolderType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.6
+
+ i=58
+
+
+
+ BaseVariableType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.2
+
+
+
+ BaseDataVariableType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.4
+
+ i=62
+
+
+
+ PropertyType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.3
+
+ i=62
+
+
+
+ DataTypeDescriptionType
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.3
+
+ i=104
+ i=105
+ i=63
+
+
+
+ DataTypeVersion
+
+ i=68
+ i=80
+ i=69
+
+
+
+ DictionaryFragment
+
+ i=68
+ i=80
+ i=69
+
+
+
+ DataTypeDictionaryType
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.2
+
+ i=106
+ i=107
+ i=15001
+ i=63
+
+
+
+ DataTypeVersion
+
+ i=68
+ i=80
+ i=72
+
+
+
+ NamespaceUri
+
+ i=68
+ i=80
+ i=72
+
+
+
+ Deprecated
+
+ i=68
+ i=80
+ i=72
+
+
+
+ DataTypeSystemType
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.4
+
+ i=58
+
+
+
+ DataTypeEncodingType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.7
+
+ i=58
+
+
+
+ NamingRuleType
+ https://reference.opcfoundation.org/v104/Core/docs/Part3/8.29
+
+ i=12169
+ i=29
+
+
+
+ The BrowseName must appear in all instances of the type.
+
+
+ The BrowseName may appear in an instance of the type.
+
+
+ The modelling rule defines a constraint and the BrowseName is not used in an instance of the type.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=120
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Mandatory
+
+
+ The BrowseName must appear in all instances of the type.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Optional
+
+
+ The BrowseName may appear in an instance of the type.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Constraint
+
+
+ The modelling rule defines a constraint and the BrowseName is not used in an instance of the type.
+
+
+
+
+
+
+
+
+ ModellingRuleType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.5
+
+ i=58
+
+
+
+ Mandatory
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.4
+
+ i=77
+
+
+
+ Optional
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.5
+
+ i=77
+
+
+
+ ExposesItsArray
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.3
+
+ i=77
+
+
+
+ OptionalPlaceholder
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.6
+
+ i=77
+
+
+
+ MandatoryPlaceholder
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.7
+
+ i=77
+
+
+
+ Root
+ Base Info Core Structure 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.2
+
+ i=61
+
+
+
+ Objects
+ Base Info Core Structure 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.4
+
+ i=84
+ i=61
+
+
+
+ Types
+ Base Info Core Types Folders
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.5
+
+ i=84
+ i=61
+
+
+
+ Views
+ Base Info Core Views Folder
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.3
+
+ i=84
+ i=61
+
+
+
+ ObjectTypes
+ Base Info Core Types Folders
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.6
+
+ i=86
+ i=58
+ i=61
+
+
+
+ VariableTypes
+ Base Info Core Types Folders
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.7
+
+ i=86
+ i=62
+ i=61
+
+
+
+ DataTypes
+ Base Info Core Types Folders
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.9
+
+ i=86
+ i=24
+ i=61
+
+
+
+ ReferenceTypes
+ Base Info Core Types Folders
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.8
+
+ i=86
+ i=31
+ i=61
+
+
+
+ XML Schema
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.6
+
+ i=90
+ i=75
+
+
+
+ OPC Binary
+ https://reference.opcfoundation.org/v104/Core/docs/Part5/D.5.5
+
+ i=90
+ i=75
+
+
+
+ HasArgumentDescription
+ Address Space Method Meta Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.18
+
+ i=47
+
+ ArgumentDescriptionOf
+
+
+ HasOptionalInputArgumentDescription
+ Address Space Method Meta Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.19
+
+ i=129
+
+ OptionalInputArgumentDescriptionOf
+
+
+ http://opcfoundation.org/UA/
+
+ i=15958
+ i=15959
+ i=15960
+ i=15961
+ i=15962
+ i=15963
+ i=15964
+ i=16134
+ i=16135
+ i=16136
+ i=11715
+ i=11616
+
+
+
+ NamespaceUri
+
+ i=68
+ i=15957
+
+
+ http://opcfoundation.org/UA/
+
+
+
+ NamespaceVersion
+
+ i=68
+ i=15957
+
+
+ 1.05.02
+
+
+
+ NamespacePublicationDate
+
+ i=68
+ i=15957
+
+
+ 2022-11-01T00:00:00Z
+
+
+
+ IsNamespaceSubset
+
+ i=68
+ i=15957
+
+
+ false
+
+
+
+ StaticNodeIdTypes
+
+ i=68
+ i=15957
+
+
+
+ 0
+
+
+
+
+ StaticNumericNodeIdRange
+
+ i=68
+ i=15957
+
+
+
+ 1:2252
+ 2270
+ 2273
+ 2280
+ 2283
+ 2291:2293
+ 2297:2734
+ 2738:2991
+ 2995
+ 2998:3703
+ 3710:11191
+ 11194:11195
+ 11202:11241
+ 11243:11272
+ 11276:11280
+ 11284:11311
+ 11315:11491
+ 11495:11501
+ 11503:11701
+ 11706
+ 11708
+ 11716:12164
+ 12169:12748
+ 12752:12872
+ 12875:12884
+ 12888:12910
+ 12912:14414
+ 14416:15003
+ 15005:15605
+ 15607:16300
+ 16306:17633
+ 17635:19090
+ 19092:24094
+ 24102:24103
+ 24105:31915
+ 31917:2147483647
+
+
+
+
+ StaticStringNodeIdPattern
+
+ i=68
+ i=15957
+
+
+
+
+
+
+ DefaultRolePermissions
+
+ i=68
+ i=15957
+
+
+
+ DefaultUserRolePermissions
+
+ i=68
+ i=15957
+
+
+
+ DefaultAccessRestrictions
+
+ i=68
+ i=15957
+
+
+
+ NodeVersion
+
+ i=68
+
+
+
+ ViewVersion
+
+ i=68
+
+
+
+ Icon
+
+ i=68
+
+
+
+ LocalTime
+
+ i=68
+
+
+
+ AllowNulls
+
+ i=68
+
+
+
+ ValueAsText
+
+ i=68
+
+
+
+ MaxStringLength
+
+ i=68
+
+
+
+ MaxCharacters
+
+ i=68
+
+
+
+ MaxByteStringLength
+
+ i=68
+
+
+
+ MaxArrayLength
+
+ i=68
+
+
+
+ EngineeringUnits
+
+ i=68
+
+
+
+ EnumStrings
+
+ i=68
+
+
+
+ EnumValues
+
+ i=68
+
+
+
+ OptionSetValues
+
+ i=68
+
+
+
+ OptionSetLength
+
+ i=68
+
+
+
+ InputArguments
+
+ i=68
+
+
+
+ OutputArguments
+
+ i=68
+
+
+
+ DefaultInstanceBrowseName
+
+ i=68
+
+
+
+ ImageBMP
+ Base Info Image DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.3
+
+ i=30
+
+
+
+ ImageGIF
+ Base Info Image DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.4
+
+ i=30
+
+
+
+ ImageJPG
+ Base Info Image DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.5
+
+ i=30
+
+
+
+ ImagePNG
+ Base Info Image DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.6
+
+ i=30
+
+
+
+ AudioDataType
+ Base Info Audio Type
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.3/#12.2.3.1
+
+ i=15
+
+
+
+ Union
+ Base Info OptionSet DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.12
+
+ i=22
+
+
+
+
+ UriString
+ Base Info UriString
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.39
+
+ i=12
+
+
+
+ ServerType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.1
+
+ i=2005
+ i=2006
+ i=15003
+ i=2007
+ i=2008
+ i=2742
+ i=12882
+ i=17612
+ i=2009
+ i=2010
+ i=2011
+ i=2012
+ i=11527
+ i=11489
+ i=12871
+ i=12746
+ i=12883
+ i=58
+
+
+
+ ServerArray
+
+ i=68
+ i=78
+ i=2004
+
+
+
+ NamespaceArray
+
+ i=68
+ i=78
+ i=2004
+
+
+
+ UrisVersion
+
+ i=68
+ i=80
+ i=2004
+
+
+
+ ServerStatus
+
+ i=3074
+ i=3075
+ i=3076
+ i=3077
+ i=3084
+ i=3085
+ i=2138
+ i=78
+ i=2004
+
+
+
+ StartTime
+
+ i=63
+ i=78
+ i=2007
+
+
+
+ CurrentTime
+
+ i=63
+ i=78
+ i=2007
+
+
+
+ State
+
+ i=63
+ i=78
+ i=2007
+
+
+
+ BuildInfo
+
+ i=3078
+ i=3079
+ i=3080
+ i=3081
+ i=3082
+ i=3083
+ i=3051
+ i=78
+ i=2007
+
+
+
+ ProductUri
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ ManufacturerName
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ ProductName
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ SoftwareVersion
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ BuildNumber
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ BuildDate
+
+ i=63
+ i=78
+ i=3077
+
+
+
+ SecondsTillShutdown
+
+ i=63
+ i=78
+ i=2007
+
+
+
+ ShutdownReason
+
+ i=63
+ i=78
+ i=2007
+
+
+
+ ServiceLevel
+
+ i=68
+ i=78
+ i=2004
+
+
+
+ Auditing
+
+ i=68
+ i=78
+ i=2004
+
+
+
+ EstimatedReturnTime
+
+ i=68
+ i=80
+ i=2004
+
+
+
+ LocalTime
+
+ i=68
+ i=80
+ i=2004
+
+
+
+ ServerCapabilities
+
+ i=3086
+ i=3087
+ i=3088
+ i=3089
+ i=3090
+ i=3091
+ i=3092
+ i=3093
+ i=3094
+ i=2013
+ i=78
+ i=2004
+
+
+
+ ServerProfileArray
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ LocaleIdArray
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ MinSupportedSampleRate
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ MaxBrowseContinuationPoints
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ MaxQueryContinuationPoints
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ MaxHistoryContinuationPoints
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ SoftwareCertificates
+
+ i=68
+ i=78
+ i=2009
+
+
+
+ ModellingRules
+
+ i=61
+ i=78
+ i=2009
+
+
+
+ AggregateFunctions
+
+ i=61
+ i=78
+ i=2009
+
+
+
+ ServerDiagnostics
+
+ i=3095
+ i=3110
+ i=3111
+ i=3114
+ i=2020
+ i=78
+ i=2004
+
+
+
+ ServerDiagnosticsSummary
+
+ i=3096
+ i=3097
+ i=3098
+ i=3099
+ i=3100
+ i=3101
+ i=3102
+ i=3104
+ i=3105
+ i=3106
+ i=3107
+ i=3108
+ i=2150
+ i=78
+ i=2010
+
+
+
+ ServerViewCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ CurrentSessionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ CumulatedSessionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ SecurityRejectedSessionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ RejectedSessionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ SessionTimeoutCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ SessionAbortCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ PublishingIntervalCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ CurrentSubscriptionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ CumulatedSubscriptionCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ SecurityRejectedRequestsCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ RejectedRequestsCount
+
+ i=63
+ i=78
+ i=3095
+
+
+
+ SubscriptionDiagnosticsArray
+
+ i=2171
+ i=78
+ i=2010
+
+
+
+ SessionsDiagnosticsSummary
+
+ i=3112
+ i=3113
+ i=2026
+ i=78
+ i=2010
+
+
+
+ SessionDiagnosticsArray
+
+ i=2196
+ i=78
+ i=3111
+
+
+
+ SessionSecurityDiagnosticsArray
+
+ i=2243
+ i=78
+ i=3111
+
+
+
+ EnabledFlag
+
+ i=68
+ i=78
+ i=2010
+
+
+
+ VendorServerInfo
+
+ i=2033
+ i=78
+ i=2004
+
+
+
+ ServerRedundancy
+
+ i=3115
+ i=2034
+ i=78
+ i=2004
+
+
+
+ RedundancySupport
+
+ i=68
+ i=78
+ i=2012
+
+
+
+ Namespaces
+
+ i=11645
+ i=80
+ i=2004
+
+
+
+ GetMonitoredItems
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.1
+
+ i=11490
+ i=11491
+ i=80
+ i=2004
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11489
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11489
+
+
+
+
+
+ i=297
+
+
+
+ ServerHandles
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ClientHandles
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ ResendData
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.2
+
+ i=12872
+ i=80
+ i=2004
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12871
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ SetSubscriptionDurable
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.3
+
+ i=12747
+ i=12748
+ i=80
+ i=2004
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12746
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ LifetimeInHours
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12746
+
+
+
+
+
+ i=297
+
+
+
+ RevisedLifetimeInHours
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ RequestServerStateChange
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.4
+
+ i=12884
+ i=80
+ i=2004
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12883
+
+
+
+
+
+ i=297
+
+
+
+ State
+
+ i=852
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EstimatedReturnTime
+
+ i=13
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecondsTillShutdown
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Reason
+
+ i=21
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Restart
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ ServerCapabilitiesType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.2
+
+ i=2014
+ i=2016
+ i=2017
+ i=2732
+ i=2733
+ i=2734
+ i=3049
+ i=11549
+ i=11550
+ i=12910
+ i=11551
+ i=2019
+ i=2754
+ i=11562
+ i=16295
+ i=24088
+ i=24089
+ i=24090
+ i=24091
+ i=24103
+ i=24092
+ i=24093
+ i=31770
+ i=24094
+ i=58
+
+
+
+ ServerProfileArray
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ LocaleIdArray
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ MinSupportedSampleRate
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ MaxBrowseContinuationPoints
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ MaxQueryContinuationPoints
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ MaxHistoryContinuationPoints
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ SoftwareCertificates
+
+ i=68
+ i=78
+ i=2013
+
+
+
+ MaxArrayLength
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxStringLength
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxByteStringLength
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ OperationLimits
+
+ i=11564
+ i=80
+ i=2013
+
+
+
+ ModellingRules
+
+ i=61
+ i=78
+ i=2013
+
+
+
+ AggregateFunctions
+
+ i=61
+ i=78
+ i=2013
+
+
+
+ <VendorCapability>
+
+ i=2137
+ i=11508
+ i=2013
+
+
+
+ RoleSet
+
+ i=16296
+ i=16299
+ i=15607
+ i=80
+ i=2013
+
+
+
+ AddRole
+
+ i=16297
+ i=16298
+ i=78
+ i=16295
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16296
+
+
+
+
+
+ i=297
+
+
+
+ RoleName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NamespaceUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16296
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveRole
+
+ i=16300
+ i=78
+ i=16295
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16299
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ MaxSessions
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxSubscriptions
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxMonitoredItems
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxSubscriptionsPerSession
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxMonitoredItemsPerSubscription
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxSelectClauseParameters
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxWhereClauseParameters
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ MaxMonitoredItemsQueueSize
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ ConformanceUnits
+
+ i=68
+ i=80
+ i=2013
+
+
+
+ ServerDiagnosticsType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.3
+
+ i=2021
+ i=2022
+ i=2023
+ i=2744
+ i=2025
+ i=58
+
+
+
+ ServerDiagnosticsSummary
+
+ i=3116
+ i=3117
+ i=3118
+ i=3119
+ i=3120
+ i=3121
+ i=3122
+ i=3124
+ i=3125
+ i=3126
+ i=3127
+ i=3128
+ i=2150
+ i=78
+ i=2020
+
+
+
+ ServerViewCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ CurrentSessionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ CumulatedSessionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ SecurityRejectedSessionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ RejectedSessionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ SessionTimeoutCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ SessionAbortCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ PublishingIntervalCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ CurrentSubscriptionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ CumulatedSubscriptionCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ SecurityRejectedRequestsCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ RejectedRequestsCount
+
+ i=63
+ i=78
+ i=2021
+
+
+
+ SamplingIntervalDiagnosticsArray
+
+ i=2164
+ i=80
+ i=2020
+
+
+
+ SubscriptionDiagnosticsArray
+
+ i=2171
+ i=78
+ i=2020
+
+
+
+ SessionsDiagnosticsSummary
+
+ i=3129
+ i=3130
+ i=2026
+ i=78
+ i=2020
+
+
+
+ SessionDiagnosticsArray
+
+ i=2196
+ i=78
+ i=2744
+
+
+
+ SessionSecurityDiagnosticsArray
+
+ i=2243
+ i=78
+ i=2744
+
+
+
+ EnabledFlag
+
+ i=68
+ i=78
+ i=2020
+
+
+
+ SessionsDiagnosticsSummaryType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.4
+
+ i=2027
+ i=2028
+ i=12097
+ i=58
+
+
+
+ SessionDiagnosticsArray
+
+ i=2196
+ i=78
+ i=2026
+
+
+
+ SessionSecurityDiagnosticsArray
+
+ i=2243
+ i=78
+ i=2026
+
+
+
+ <ClientName>
+
+ i=12098
+ i=12142
+ i=12152
+ i=2029
+ i=11508
+ i=2026
+
+
+
+ SessionDiagnostics
+
+ i=12099
+ i=12100
+ i=12101
+ i=12102
+ i=12103
+ i=12104
+ i=12105
+ i=12106
+ i=12107
+ i=12108
+ i=12109
+ i=12110
+ i=12111
+ i=12112
+ i=12113
+ i=12114
+ i=12115
+ i=12116
+ i=12117
+ i=12118
+ i=12119
+ i=12120
+ i=12121
+ i=12122
+ i=12123
+ i=12124
+ i=12125
+ i=12126
+ i=12127
+ i=12128
+ i=12129
+ i=12130
+ i=12131
+ i=12132
+ i=12133
+ i=12134
+ i=12135
+ i=12136
+ i=12137
+ i=12138
+ i=12139
+ i=12140
+ i=12141
+ i=2197
+ i=78
+ i=12097
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ SessionName
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ClientDescription
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ServerUri
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ EndpointUrl
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ LocaleIds
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ActualSessionTimeout
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ MaxResponseMessageSize
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ClientConnectionTime
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ClientLastContactTime
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CurrentSubscriptionsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CurrentMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CurrentPublishRequestsInQueue
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ TotalRequestCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ UnauthorizedRequestCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ReadCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ HistoryReadCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ WriteCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ HistoryUpdateCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CallCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CreateMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ModifyMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ SetMonitoringModeCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ SetTriggeringCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ DeleteMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ CreateSubscriptionCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ ModifySubscriptionCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ SetPublishingModeCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ PublishCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ RepublishCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ TransferSubscriptionsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ DeleteSubscriptionsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ AddNodesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ AddReferencesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ DeleteNodesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ DeleteReferencesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ BrowseCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ BrowseNextCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ TranslateBrowsePathsToNodeIdsCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ QueryFirstCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ QueryNextCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ RegisterNodesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ UnregisterNodesCount
+
+ i=63
+ i=78
+ i=12098
+
+
+
+ SessionSecurityDiagnostics
+
+ i=12143
+ i=12144
+ i=12145
+ i=12146
+ i=12147
+ i=12148
+ i=12149
+ i=12150
+ i=12151
+ i=2244
+ i=78
+ i=12097
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ ClientUserIdOfSession
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ ClientUserIdHistory
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ AuthenticationMechanism
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ Encoding
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ TransportProtocol
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ SecurityMode
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ SecurityPolicyUri
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ ClientCertificate
+
+ i=63
+ i=78
+ i=12142
+
+
+
+ SubscriptionDiagnosticsArray
+
+ i=2171
+ i=78
+ i=12097
+
+
+
+ SessionDiagnosticsObjectType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.5
+
+ i=2030
+ i=2031
+ i=2032
+ i=58
+
+
+
+ SessionDiagnostics
+
+ i=3131
+ i=3132
+ i=3133
+ i=3134
+ i=3135
+ i=3136
+ i=3137
+ i=3138
+ i=3139
+ i=3140
+ i=3141
+ i=3142
+ i=3143
+ i=8898
+ i=11891
+ i=3151
+ i=3152
+ i=3153
+ i=3154
+ i=3155
+ i=3156
+ i=3157
+ i=3158
+ i=3159
+ i=3160
+ i=3161
+ i=3162
+ i=3163
+ i=3164
+ i=3165
+ i=3166
+ i=3167
+ i=3168
+ i=3169
+ i=3170
+ i=3171
+ i=3172
+ i=3173
+ i=3174
+ i=3175
+ i=3176
+ i=3177
+ i=3178
+ i=2197
+ i=78
+ i=2029
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ SessionName
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ClientDescription
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ServerUri
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ EndpointUrl
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ LocaleIds
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ActualSessionTimeout
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ MaxResponseMessageSize
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ClientConnectionTime
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ClientLastContactTime
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CurrentSubscriptionsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CurrentMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CurrentPublishRequestsInQueue
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ TotalRequestCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ UnauthorizedRequestCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ReadCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ HistoryReadCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ WriteCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ HistoryUpdateCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CallCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CreateMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ModifyMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ SetMonitoringModeCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ SetTriggeringCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ DeleteMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ CreateSubscriptionCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ ModifySubscriptionCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ SetPublishingModeCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ PublishCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ RepublishCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ TransferSubscriptionsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ DeleteSubscriptionsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ AddNodesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ AddReferencesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ DeleteNodesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ DeleteReferencesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ BrowseCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ BrowseNextCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ TranslateBrowsePathsToNodeIdsCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ QueryFirstCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ QueryNextCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ RegisterNodesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ UnregisterNodesCount
+
+ i=63
+ i=78
+ i=2030
+
+
+
+ SessionSecurityDiagnostics
+
+ i=3179
+ i=3180
+ i=3181
+ i=3182
+ i=3183
+ i=3184
+ i=3185
+ i=3186
+ i=3187
+ i=2244
+ i=78
+ i=2029
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ ClientUserIdOfSession
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ ClientUserIdHistory
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ AuthenticationMechanism
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ Encoding
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ TransportProtocol
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ SecurityMode
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ SecurityPolicyUri
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ ClientCertificate
+
+ i=63
+ i=78
+ i=2031
+
+
+
+ SubscriptionDiagnosticsArray
+
+ i=2171
+ i=78
+ i=2029
+
+
+
+ VendorServerInfoType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.6
+
+ i=58
+
+
+
+ ServerRedundancyType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.7
+
+ i=2035
+ i=58
+
+
+
+ RedundancySupport
+
+ i=68
+ i=78
+ i=2034
+
+
+
+ TransparentRedundancyType
+ Redundancy Server Transparent
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.8
+
+ i=2037
+ i=2038
+ i=2034
+
+
+
+ CurrentServerId
+
+ i=68
+ i=78
+ i=2036
+
+
+
+ RedundantServerArray
+
+ i=68
+ i=78
+ i=2036
+
+
+
+ NonTransparentRedundancyType
+ Redundancy Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.9
+
+ i=2040
+ i=2034
+
+
+
+ ServerUriArray
+
+ i=68
+ i=78
+ i=2039
+
+
+
+ NonTransparentNetworkRedundancyType
+ Redundancy Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.10
+
+ i=11948
+ i=2039
+
+
+
+ ServerNetworkGroups
+
+ i=68
+ i=78
+ i=11945
+
+
+
+ OperationLimitsType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.11
+
+ i=11565
+ i=12161
+ i=12162
+ i=11567
+ i=12163
+ i=12164
+ i=11569
+ i=11570
+ i=11571
+ i=11572
+ i=11573
+ i=11574
+ i=61
+
+
+
+ MaxNodesPerRead
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerHistoryReadData
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerHistoryReadEvents
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerWrite
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerHistoryUpdateData
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerHistoryUpdateEvents
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerMethodCall
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerBrowse
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerRegisterNodes
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerTranslateBrowsePathsToNodeIds
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxNodesPerNodeManagement
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ MaxMonitoredItemsPerCall
+
+ i=68
+ i=80
+ i=11564
+
+
+
+ FileType
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.1
+
+ i=11576
+ i=12686
+ i=12687
+ i=11579
+ i=13341
+ i=24244
+ i=25200
+ i=11580
+ i=11583
+ i=11585
+ i=11588
+ i=11590
+ i=11593
+ i=58
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=11575
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=11575
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=11575
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=11575
+
+
+
+ MimeType
+
+ i=68
+ i=80
+ i=11575
+
+
+
+ MaxByteStringLength
+
+ i=68
+ i=80
+ i=11575
+
+
+
+ LastModifiedTime
+
+ i=68
+ i=80
+ i=11575
+
+
+
+ Open
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.2
+
+ i=11581
+ i=11582
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11580
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11580
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.3
+
+ i=11584
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11583
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.4
+
+ i=11586
+ i=11587
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11585
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11585
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.5
+
+ i=11589
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11588
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.6
+
+ i=11591
+ i=11592
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11590
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11590
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.7
+
+ i=11594
+ i=78
+ i=11575
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11593
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ AddressSpaceFileType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.12
+
+ i=11615
+ i=11575
+
+
+
+ ExportNamespace
+
+ i=80
+ i=11595
+
+
+
+ NamespaceMetadataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.13
+
+ i=11617
+ i=11618
+ i=11619
+ i=11620
+ i=11621
+ i=11622
+ i=11623
+ i=11624
+ i=16137
+ i=16138
+ i=16139
+ i=25267
+ i=58
+
+
+
+ NamespaceUri
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ NamespaceVersion
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ NamespacePublicationDate
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ IsNamespaceSubset
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ StaticNodeIdTypes
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ StaticNumericNodeIdRange
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ StaticStringNodeIdPattern
+
+ i=68
+ i=78
+ i=11616
+
+
+
+ NamespaceFile
+
+ i=11625
+ i=12690
+ i=12691
+ i=11628
+ i=11629
+ i=11632
+ i=11634
+ i=11637
+ i=11639
+ i=11642
+ i=11595
+ i=80
+ i=11616
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=11624
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=11624
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=11624
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=11624
+
+
+
+ Open
+
+ i=11630
+ i=11631
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11629
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11629
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=11633
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11632
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=11635
+ i=11636
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11634
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11634
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=11638
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11637
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=11640
+ i=11641
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11639
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=11639
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=11643
+ i=78
+ i=11624
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=11642
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ DefaultRolePermissions
+
+ i=68
+ i=80
+ i=11616
+
+
+
+ DefaultUserRolePermissions
+
+ i=68
+ i=80
+ i=11616
+
+
+
+ DefaultAccessRestrictions
+
+ i=68
+ i=80
+ i=11616
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=80
+ i=11616
+
+
+
+ NamespacesType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.3.14
+
+ i=11646
+ i=58
+
+
+
+ <NamespaceIdentifier>
+
+ i=11647
+ i=11648
+ i=11649
+ i=11650
+ i=11651
+ i=11652
+ i=11653
+ i=11616
+ i=11508
+ i=11645
+
+
+
+ NamespaceUri
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ NamespaceVersion
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ NamespacePublicationDate
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ IsNamespaceSubset
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ StaticNodeIdTypes
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ StaticNumericNodeIdRange
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ StaticStringNodeIdPattern
+
+ i=68
+ i=78
+ i=11646
+
+
+
+ BaseEventType
+ Address Space Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.2
+
+ i=2042
+ i=2043
+ i=2044
+ i=2045
+ i=2046
+ i=2047
+ i=3190
+ i=2050
+ i=2051
+ i=31771
+ i=31772
+ i=31773
+ i=31774
+ i=58
+
+
+
+ EventId
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ EventType
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ SourceNode
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ SourceName
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ Time
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ ReceiveTime
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ LocalTime
+
+ i=68
+ i=80
+ i=2041
+
+
+
+ Message
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ Severity
+
+ i=68
+ i=78
+ i=2041
+
+
+
+ ConditionClassId
+
+ i=68
+ i=80
+ i=2041
+
+
+
+ ConditionClassName
+
+ i=68
+ i=80
+ i=2041
+
+
+
+ ConditionSubClassId
+
+ i=68
+ i=80
+ i=2041
+
+
+
+ ConditionSubClassName
+
+ i=68
+ i=80
+ i=2041
+
+
+
+ AuditEventType
+ Auditing Connections
+ Auditing NodeManagement
+ Auditing History Services
+ Auditing Write
+ Auditing Method
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.3
+
+ i=2053
+ i=2054
+ i=2055
+ i=2056
+ i=2057
+ i=2041
+
+
+
+ ActionTimeStamp
+
+ i=68
+ i=78
+ i=2052
+
+
+
+ Status
+
+ i=68
+ i=78
+ i=2052
+
+
+
+ ServerId
+
+ i=68
+ i=78
+ i=2052
+
+
+
+ ClientAuditEntryId
+
+ i=68
+ i=78
+ i=2052
+
+
+
+ ClientUserId
+
+ i=68
+ i=78
+ i=2052
+
+
+
+ AuditSecurityEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.4
+
+ i=17615
+ i=2052
+
+
+
+ StatusCodeId
+
+ i=68
+ i=80
+ i=2058
+
+
+
+ AuditChannelEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.5
+
+ i=2745
+ i=2058
+
+
+
+ SecureChannelId
+
+ i=68
+ i=78
+ i=2059
+
+
+
+ AuditOpenSecureChannelEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.6
+
+ i=2061
+ i=2746
+ i=2062
+ i=2063
+ i=2065
+ i=2066
+ i=24135
+ i=2059
+
+
+
+ ClientCertificate
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ ClientCertificateThumbprint
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ RequestType
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ SecurityMode
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ RequestedLifetime
+
+ i=68
+ i=78
+ i=2060
+
+
+
+ CertificateErrorEventId
+
+ i=68
+ i=80
+ i=2060
+
+
+
+ AuditSessionEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.7
+
+ i=2070
+ i=2058
+
+
+
+ SessionId
+
+ i=68
+ i=78
+ i=2069
+
+
+
+ AuditCreateSessionEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.8
+
+ i=2072
+ i=2073
+ i=2747
+ i=2074
+ i=2069
+
+
+
+ SecureChannelId
+
+ i=68
+ i=78
+ i=2071
+
+
+
+ ClientCertificate
+
+ i=68
+ i=78
+ i=2071
+
+
+
+ ClientCertificateThumbprint
+
+ i=68
+ i=78
+ i=2071
+
+
+
+ RevisedSessionTimeout
+
+ i=68
+ i=78
+ i=2071
+
+
+
+ AuditUrlMismatchEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.9
+
+ i=2749
+ i=2071
+
+
+
+ EndpointUrl
+
+ i=68
+ i=78
+ i=2748
+
+
+
+ AuditActivateSessionEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.10
+
+ i=2076
+ i=2077
+ i=11485
+ i=2069
+
+
+
+ ClientSoftwareCertificates
+
+ i=68
+ i=78
+ i=2075
+
+
+
+ UserIdentityToken
+
+ i=68
+ i=78
+ i=2075
+
+
+
+ SecureChannelId
+
+ i=68
+ i=78
+ i=2075
+
+
+
+ AuditCancelEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.11
+
+ i=2079
+ i=2069
+
+
+
+ RequestHandle
+
+ i=68
+ i=78
+ i=2078
+
+
+
+ AuditCertificateEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.12
+
+ i=2081
+ i=2058
+
+
+
+ Certificate
+
+ i=68
+ i=78
+ i=2080
+
+
+
+ AuditCertificateDataMismatchEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.13
+
+ i=2083
+ i=2084
+ i=2080
+
+
+
+ InvalidHostname
+
+ i=68
+ i=78
+ i=2082
+
+
+
+ InvalidUri
+
+ i=68
+ i=78
+ i=2082
+
+
+
+ AuditCertificateExpiredEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.14
+
+ i=2080
+
+
+
+ AuditCertificateInvalidEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.15
+
+ i=2080
+
+
+
+ AuditCertificateUntrustedEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.16
+
+ i=2080
+
+
+
+ AuditCertificateRevokedEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.17
+
+ i=2080
+
+
+
+ AuditCertificateMismatchEventType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.18
+
+ i=2080
+
+
+
+ AuditNodeManagementEventType
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.19
+
+ i=2052
+
+
+
+ AuditAddNodesEventType
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.20
+
+ i=2092
+ i=2090
+
+
+
+ NodesToAdd
+
+ i=68
+ i=78
+ i=2091
+
+
+
+ AuditDeleteNodesEventType
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.21
+
+ i=2094
+ i=2090
+
+
+
+ NodesToDelete
+
+ i=68
+ i=78
+ i=2093
+
+
+
+ AuditAddReferencesEventType
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.22
+
+ i=2096
+ i=2090
+
+
+
+ ReferencesToAdd
+
+ i=68
+ i=78
+ i=2095
+
+
+
+ AuditDeleteReferencesEventType
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.23
+
+ i=2098
+ i=2090
+
+
+
+ ReferencesToDelete
+
+ i=68
+ i=78
+ i=2097
+
+
+
+ AuditUpdateEventType
+ Auditing History Services
+ Auditing Write
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.24
+
+ i=2052
+
+
+
+ AuditWriteUpdateEventType
+ Auditing Write
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.25
+
+ i=2750
+ i=2101
+ i=2102
+ i=2103
+ i=2099
+
+
+
+ AttributeId
+
+ i=68
+ i=78
+ i=2100
+
+
+
+ IndexRange
+
+ i=68
+ i=78
+ i=2100
+
+
+
+ OldValue
+
+ i=68
+ i=78
+ i=2100
+
+
+
+ NewValue
+
+ i=68
+ i=78
+ i=2100
+
+
+
+ AuditHistoryUpdateEventType
+ Auditing History Services
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.26
+
+ i=2751
+ i=2099
+
+
+
+ ParameterDataTypeId
+
+ i=68
+ i=78
+ i=2104
+
+
+
+ AuditUpdateMethodEventType
+ Auditing Method
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.27
+
+ i=2128
+ i=2129
+ i=2052
+
+
+
+ MethodId
+
+ i=68
+ i=78
+ i=2127
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=2127
+
+
+
+ SystemEventType
+ Base Info Device Failure
+ Base Info System Status Underlying System
+ Base Info System Status
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.28
+
+ i=2041
+
+
+
+ DeviceFailureEventType
+ Base Info Device Failure
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.29
+
+ i=2130
+
+
+
+ SystemStatusChangeEventType
+ Base Info System Status Underlying System
+ Base Info System Status
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.30
+
+ i=11696
+ i=2130
+
+
+
+ SystemState
+
+ i=68
+ i=78
+ i=11446
+
+
+
+ BaseModelChangeEventType
+ Base Info Model Change
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.31
+
+ i=2041
+
+
+
+ GeneralModelChangeEventType
+ Base Info Model Change General
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.32
+
+ i=2134
+ i=2132
+
+
+
+ Changes
+
+ i=68
+ i=78
+ i=2133
+
+
+
+ SemanticChangeEventType
+ Base Info SemanticChange
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.33
+
+ i=2739
+ i=2041
+
+
+
+ Changes
+
+ i=68
+ i=78
+ i=2738
+
+
+
+ EventQueueOverflowEventType
+ Base Info EventQueueOverflow EventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.34
+
+ i=2041
+
+
+
+ ProgressEventType
+ Base Info Progress Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.35
+
+ i=12502
+ i=12503
+ i=2041
+
+
+
+ Context
+
+ i=68
+ i=78
+ i=11436
+
+
+
+ Progress
+
+ i=68
+ i=78
+ i=11436
+
+
+
+ AuditClientEventType
+ Base Info Client Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.36
+
+ i=23908
+ i=2052
+
+
+
+ ServerUri
+
+ i=68
+ i=78
+ i=23606
+
+
+
+ AuditClientUpdateMethodResultEventType
+ Base Info Client Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.4.37
+
+ i=23994
+ i=23995
+ i=23998
+ i=23999
+ i=25684
+ i=23606
+
+
+
+ ObjectId
+
+ i=68
+ i=78
+ i=23926
+
+
+
+ MethodId
+
+ i=68
+ i=78
+ i=23926
+
+
+
+ StatusCodeId
+
+ i=68
+ i=78
+ i=23926
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23926
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23926
+
+
+
+ AggregateFunctionType
+ Historical Access Aggregates
+ https://reference.opcfoundation.org/v105/Core/docs/Part13/4.2.2/#4.2.2.2
+
+ i=58
+
+
+
+ ServerVendorCapabilityType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.5
+
+ i=63
+
+
+
+ ServerStatusType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.6
+
+ i=2139
+ i=2140
+ i=2141
+ i=2142
+ i=2752
+ i=2753
+ i=63
+
+
+
+ StartTime
+
+ i=63
+ i=78
+ i=2138
+
+
+
+ CurrentTime
+
+ i=63
+ i=78
+ i=2138
+
+
+
+ State
+
+ i=63
+ i=78
+ i=2138
+
+
+
+ BuildInfo
+
+ i=3698
+ i=3699
+ i=3700
+ i=3701
+ i=3702
+ i=3703
+ i=3051
+ i=78
+ i=2138
+
+
+
+ ProductUri
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ ManufacturerName
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ ProductName
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ SoftwareVersion
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ BuildNumber
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ BuildDate
+
+ i=63
+ i=78
+ i=2142
+
+
+
+ SecondsTillShutdown
+
+ i=63
+ i=78
+ i=2138
+
+
+
+ ShutdownReason
+
+ i=63
+ i=78
+ i=2138
+
+
+
+ BuildInfoType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.7
+
+ i=3052
+ i=3053
+ i=3054
+ i=3055
+ i=3056
+ i=3057
+ i=63
+
+
+
+ ProductUri
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ ManufacturerName
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ ProductName
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ SoftwareVersion
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ BuildNumber
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ BuildDate
+
+ i=63
+ i=78
+ i=3051
+
+
+
+ ServerDiagnosticsSummaryType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.8
+
+ i=2151
+ i=2152
+ i=2153
+ i=2154
+ i=2155
+ i=2156
+ i=2157
+ i=2159
+ i=2160
+ i=2161
+ i=2162
+ i=2163
+ i=63
+
+
+
+ ServerViewCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ CurrentSessionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ CumulatedSessionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ SecurityRejectedSessionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ RejectedSessionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ SessionTimeoutCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ SessionAbortCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ PublishingIntervalCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ CurrentSubscriptionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ CumulatedSubscriptionCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ SecurityRejectedRequestsCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ RejectedRequestsCount
+
+ i=63
+ i=78
+ i=2150
+
+
+
+ SamplingIntervalDiagnosticsArrayType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.9
+
+ i=12779
+ i=63
+
+
+
+ SamplingIntervalDiagnostics
+
+ i=12780
+ i=12781
+ i=12782
+ i=12783
+ i=2165
+ i=83
+ i=2164
+
+
+
+ SamplingInterval
+
+ i=63
+ i=78
+ i=12779
+
+
+
+ SampledMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12779
+
+
+
+ MaxSampledMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12779
+
+
+
+ DisabledMonitoredItemsSamplingCount
+
+ i=63
+ i=78
+ i=12779
+
+
+
+ SamplingIntervalDiagnosticsType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.10
+
+ i=2166
+ i=11697
+ i=11698
+ i=11699
+ i=63
+
+
+
+ SamplingInterval
+
+ i=63
+ i=78
+ i=2165
+
+
+
+ SampledMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2165
+
+
+
+ MaxSampledMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2165
+
+
+
+ DisabledMonitoredItemsSamplingCount
+
+ i=63
+ i=78
+ i=2165
+
+
+
+ SubscriptionDiagnosticsArrayType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.11
+
+ i=12784
+ i=63
+
+
+
+ SubscriptionDiagnostics
+
+ i=12785
+ i=12786
+ i=12787
+ i=12788
+ i=12789
+ i=12790
+ i=12791
+ i=12792
+ i=12793
+ i=12794
+ i=12795
+ i=12796
+ i=12797
+ i=12798
+ i=12799
+ i=12800
+ i=12801
+ i=12802
+ i=12803
+ i=12804
+ i=12805
+ i=12806
+ i=12807
+ i=12808
+ i=12809
+ i=12810
+ i=12811
+ i=12812
+ i=12813
+ i=12814
+ i=12815
+ i=2172
+ i=83
+ i=2171
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ SubscriptionId
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ Priority
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ PublishingInterval
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ MaxKeepAliveCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ MaxLifetimeCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ MaxNotificationsPerPublish
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ PublishingEnabled
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ ModifyCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ EnableCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ DisableCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ RepublishRequestCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ RepublishMessageRequestCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ RepublishMessageCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ TransferRequestCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ TransferredToAltClientCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ TransferredToSameClientCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ PublishRequestCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ DataChangeNotificationsCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ EventNotificationsCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ NotificationsCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ LatePublishRequestCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ CurrentKeepAliveCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ CurrentLifetimeCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ UnacknowledgedMessageCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ DiscardedMessageCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ MonitoredItemCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ DisabledMonitoredItemCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ MonitoringQueueOverflowCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ NextSequenceNumber
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ EventQueueOverflowCount
+
+ i=63
+ i=78
+ i=12784
+
+
+
+ SubscriptionDiagnosticsType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.12
+
+ i=2173
+ i=2174
+ i=2175
+ i=2176
+ i=2177
+ i=8888
+ i=2179
+ i=2180
+ i=2181
+ i=2182
+ i=2183
+ i=2184
+ i=2185
+ i=2186
+ i=2187
+ i=2188
+ i=2189
+ i=2190
+ i=2191
+ i=2998
+ i=2193
+ i=8889
+ i=8890
+ i=8891
+ i=8892
+ i=8893
+ i=8894
+ i=8895
+ i=8896
+ i=8897
+ i=8902
+ i=63
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ SubscriptionId
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ Priority
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ PublishingInterval
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ MaxKeepAliveCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ MaxLifetimeCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ MaxNotificationsPerPublish
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ PublishingEnabled
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ ModifyCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ EnableCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ DisableCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ RepublishRequestCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ RepublishMessageRequestCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ RepublishMessageCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ TransferRequestCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ TransferredToAltClientCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ TransferredToSameClientCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ PublishRequestCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ DataChangeNotificationsCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ EventNotificationsCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ NotificationsCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ LatePublishRequestCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ CurrentKeepAliveCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ CurrentLifetimeCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ UnacknowledgedMessageCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ DiscardedMessageCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ MonitoredItemCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ DisabledMonitoredItemCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ MonitoringQueueOverflowCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ NextSequenceNumber
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ EventQueueOverflowCount
+
+ i=63
+ i=78
+ i=2172
+
+
+
+ SessionDiagnosticsArrayType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.13
+
+ i=12816
+ i=63
+
+
+
+ SessionDiagnostics
+
+ i=12817
+ i=12818
+ i=12819
+ i=12820
+ i=12821
+ i=12822
+ i=12823
+ i=12824
+ i=12825
+ i=12826
+ i=12827
+ i=12828
+ i=12829
+ i=12830
+ i=12831
+ i=12832
+ i=12833
+ i=12834
+ i=12835
+ i=12836
+ i=12837
+ i=12838
+ i=12839
+ i=12840
+ i=12841
+ i=12842
+ i=12843
+ i=12844
+ i=12845
+ i=12846
+ i=12847
+ i=12848
+ i=12849
+ i=12850
+ i=12851
+ i=12852
+ i=12853
+ i=12854
+ i=12855
+ i=12856
+ i=12857
+ i=12858
+ i=12859
+ i=2197
+ i=83
+ i=2196
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ SessionName
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ClientDescription
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ServerUri
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ EndpointUrl
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ LocaleIds
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ActualSessionTimeout
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ MaxResponseMessageSize
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ClientConnectionTime
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ClientLastContactTime
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CurrentSubscriptionsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CurrentMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CurrentPublishRequestsInQueue
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ TotalRequestCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ UnauthorizedRequestCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ReadCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ HistoryReadCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ WriteCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ HistoryUpdateCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CallCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CreateMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ModifyMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ SetMonitoringModeCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ SetTriggeringCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ DeleteMonitoredItemsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ CreateSubscriptionCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ ModifySubscriptionCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ SetPublishingModeCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ PublishCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ RepublishCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ TransferSubscriptionsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ DeleteSubscriptionsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ AddNodesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ AddReferencesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ DeleteNodesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ DeleteReferencesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ BrowseCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ BrowseNextCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ TranslateBrowsePathsToNodeIdsCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ QueryFirstCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ QueryNextCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ RegisterNodesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ UnregisterNodesCount
+
+ i=63
+ i=78
+ i=12816
+
+
+
+ SessionDiagnosticsVariableType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.14
+
+ i=2198
+ i=2199
+ i=2200
+ i=2201
+ i=2202
+ i=2203
+ i=2204
+ i=3050
+ i=2205
+ i=2206
+ i=2207
+ i=2208
+ i=2209
+ i=8900
+ i=11892
+ i=2217
+ i=2218
+ i=2219
+ i=2220
+ i=2221
+ i=2222
+ i=2223
+ i=2224
+ i=2225
+ i=2226
+ i=2227
+ i=2228
+ i=2229
+ i=2230
+ i=2231
+ i=2232
+ i=2233
+ i=2234
+ i=2235
+ i=2236
+ i=2237
+ i=2238
+ i=2239
+ i=2240
+ i=2241
+ i=2242
+ i=2730
+ i=2731
+ i=63
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ SessionName
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ClientDescription
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ServerUri
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ EndpointUrl
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ LocaleIds
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ActualSessionTimeout
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ MaxResponseMessageSize
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ClientConnectionTime
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ClientLastContactTime
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CurrentSubscriptionsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CurrentMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CurrentPublishRequestsInQueue
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ TotalRequestCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ UnauthorizedRequestCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ReadCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ HistoryReadCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ WriteCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ HistoryUpdateCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CallCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CreateMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ModifyMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ SetMonitoringModeCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ SetTriggeringCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ DeleteMonitoredItemsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ CreateSubscriptionCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ ModifySubscriptionCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ SetPublishingModeCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ PublishCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ RepublishCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ TransferSubscriptionsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ DeleteSubscriptionsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ AddNodesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ AddReferencesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ DeleteNodesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ DeleteReferencesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ BrowseCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ BrowseNextCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ TranslateBrowsePathsToNodeIdsCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ QueryFirstCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ QueryNextCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ RegisterNodesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ UnregisterNodesCount
+
+ i=63
+ i=78
+ i=2197
+
+
+
+ SessionSecurityDiagnosticsArrayType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.15
+
+ i=12860
+ i=63
+
+
+
+ SessionSecurityDiagnostics
+
+ i=12861
+ i=12862
+ i=12863
+ i=12864
+ i=12865
+ i=12866
+ i=12867
+ i=12868
+ i=12869
+ i=2244
+ i=83
+ i=2243
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ ClientUserIdOfSession
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ ClientUserIdHistory
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ AuthenticationMechanism
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ Encoding
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ TransportProtocol
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ SecurityMode
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ SecurityPolicyUri
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ ClientCertificate
+
+ i=63
+ i=78
+ i=12860
+
+
+
+ SessionSecurityDiagnosticsType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.16
+
+ i=2245
+ i=2246
+ i=2247
+ i=2248
+ i=2249
+ i=2250
+ i=2251
+ i=2252
+ i=3058
+ i=63
+
+
+
+ SessionId
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ ClientUserIdOfSession
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ ClientUserIdHistory
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ AuthenticationMechanism
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ Encoding
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ TransportProtocol
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ SecurityMode
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ SecurityPolicyUri
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ ClientCertificate
+
+ i=63
+ i=78
+ i=2244
+
+
+
+ OptionSetType
+ Base Info OptionSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.17
+
+ i=11488
+ i=11701
+ i=63
+
+
+
+ OptionSetValues
+
+ i=68
+ i=78
+ i=11487
+
+
+
+ BitMask
+
+ i=68
+ i=80
+ i=11487
+
+
+
+ SelectionListType
+ Base Info Selection List
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.18
+
+ i=17632
+ i=17633
+ i=16312
+ i=63
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=16309
+
+
+
+ SelectionDescriptions
+
+ i=68
+ i=80
+ i=16309
+
+
+
+ RestrictToList
+
+ i=68
+ i=80
+ i=16309
+
+
+
+ AudioVariableType
+ Base Info Audio Type
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.19
+
+ i=17988
+ i=17989
+ i=17990
+ i=63
+
+
+
+ ListId
+
+ i=68
+ i=80
+ i=17986
+
+
+
+ AgencyId
+
+ i=68
+ i=80
+ i=17986
+
+
+
+ VersionId
+
+ i=68
+ i=80
+ i=17986
+
+
+
+ EventTypes
+ Address Space Events 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.10
+
+ i=86
+ i=2041
+ i=61
+
+
+
+ Locations
+ Base Info Locations Object
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.12
+
+ i=85
+ i=61
+
+
+
+ Server
+ Base Info Core Structure 2
+ Address Space Events 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.3.2
+
+ i=2254
+ i=2255
+ i=15004
+ i=2256
+ i=2267
+ i=2994
+ i=12885
+ i=17634
+ i=2268
+ i=2274
+ i=2295
+ i=2296
+ i=11715
+ i=11492
+ i=12873
+ i=12749
+ i=12886
+ i=85
+ i=2004
+
+
+
+ ServerArray
+
+ i=68
+ i=2253
+
+
+
+ NamespaceArray
+
+ i=68
+ i=2253
+
+
+
+ UrisVersion
+
+ i=68
+ i=2253
+
+
+
+ ServerStatus
+
+ i=2257
+ i=2258
+ i=2259
+ i=2260
+ i=2992
+ i=2993
+ i=2138
+ i=2253
+
+
+
+ StartTime
+
+ i=63
+ i=2256
+
+
+
+ CurrentTime
+
+ i=63
+ i=2256
+
+
+
+ State
+
+ i=63
+ i=2256
+
+
+
+ BuildInfo
+
+ i=2262
+ i=2263
+ i=2261
+ i=2264
+ i=2265
+ i=2266
+ i=3051
+ i=2256
+
+
+
+ ProductUri
+
+ i=63
+ i=2260
+
+
+
+ ManufacturerName
+
+ i=63
+ i=2260
+
+
+
+ ProductName
+
+ i=63
+ i=2260
+
+
+
+ SoftwareVersion
+
+ i=63
+ i=2260
+
+
+
+ BuildNumber
+
+ i=63
+ i=2260
+
+
+
+ BuildDate
+
+ i=63
+ i=2260
+
+
+
+ SecondsTillShutdown
+
+ i=63
+ i=2256
+
+
+
+ ShutdownReason
+
+ i=63
+ i=2256
+
+
+
+ ServiceLevel
+
+ i=68
+ i=2253
+
+
+
+ Auditing
+
+ i=68
+ i=2253
+
+
+
+ EstimatedReturnTime
+
+ i=68
+ i=2253
+
+
+
+ LocalTime
+
+ i=68
+ i=2253
+
+
+
+ ServerCapabilities
+
+ i=2269
+ i=2271
+ i=2272
+ i=2735
+ i=2736
+ i=2737
+ i=3704
+ i=11702
+ i=11703
+ i=12911
+ i=11704
+ i=2996
+ i=2997
+ i=15606
+ i=24095
+ i=24096
+ i=24097
+ i=24098
+ i=24104
+ i=24099
+ i=24100
+ i=31916
+ i=24101
+ i=2013
+ i=2253
+
+
+
+ ServerProfileArray
+
+ i=68
+ i=2268
+
+
+
+ LocaleIdArray
+
+ i=68
+ i=2268
+
+
+
+ MinSupportedSampleRate
+
+ i=68
+ i=2268
+
+
+
+ MaxBrowseContinuationPoints
+
+ i=68
+ i=2268
+
+
+
+ MaxQueryContinuationPoints
+
+ i=68
+ i=2268
+
+
+
+ MaxHistoryContinuationPoints
+
+ i=68
+ i=2268
+
+
+
+ SoftwareCertificates
+
+ i=68
+ i=2268
+
+
+
+ MaxArrayLength
+
+ i=68
+ i=2268
+
+
+
+ MaxStringLength
+
+ i=68
+ i=2268
+
+
+
+ MaxByteStringLength
+
+ i=68
+ i=2268
+
+
+
+ OperationLimits
+
+ i=11705
+ i=12165
+ i=12166
+ i=11707
+ i=12167
+ i=12168
+ i=11709
+ i=11710
+ i=11711
+ i=11712
+ i=11713
+ i=11714
+ i=11564
+ i=2268
+
+
+
+ MaxNodesPerRead
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerHistoryReadData
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerHistoryReadEvents
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerWrite
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerHistoryUpdateData
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerHistoryUpdateEvents
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerMethodCall
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerBrowse
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerRegisterNodes
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerTranslateBrowsePathsToNodeIds
+
+ i=68
+ i=11704
+
+
+
+ MaxNodesPerNodeManagement
+
+ i=68
+ i=11704
+
+
+
+ MaxMonitoredItemsPerCall
+
+ i=68
+ i=11704
+
+
+
+ ModellingRules
+
+ i=61
+ i=2268
+
+
+
+ AggregateFunctions
+ Historical Access Aggregates
+ https://reference.opcfoundation.org/v105/Core/docs/Part13/4.2.2/#4.2.2.1
+
+ i=61
+ i=2268
+
+
+
+ RoleSet
+ Security Role Server Base 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.3
+
+ i=16301
+ i=16304
+ i=15607
+ i=2268
+
+
+
+ AddRole
+
+ i=16302
+ i=16303
+ i=15606
+
+
+
+ InputArguments
+
+ i=68
+ i=16301
+
+
+
+
+
+ i=297
+
+
+
+ RoleName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NamespaceUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=16301
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveRole
+
+ i=16305
+ i=15606
+
+
+
+ InputArguments
+
+ i=68
+ i=16304
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ MaxSessions
+
+ i=68
+ i=2268
+
+
+
+ MaxSubscriptions
+
+ i=68
+ i=2268
+
+
+
+ MaxMonitoredItems
+
+ i=68
+ i=2268
+
+
+
+ MaxSubscriptionsPerSession
+
+ i=68
+ i=2268
+
+
+
+ MaxMonitoredItemsPerSubscription
+
+ i=68
+ i=2268
+
+
+
+ MaxSelectClauseParameters
+
+ i=68
+ i=2268
+
+
+
+ MaxWhereClauseParameters
+
+ i=68
+ i=2268
+
+
+
+ MaxMonitoredItemsQueueSize
+
+ i=68
+ i=2268
+
+
+
+ ConformanceUnits
+
+ i=68
+ i=2268
+
+
+
+ ServerDiagnostics
+
+ i=2275
+ i=2289
+ i=2290
+ i=3706
+ i=2294
+ i=2020
+ i=2253
+
+
+
+ ServerDiagnosticsSummary
+
+ i=2276
+ i=2277
+ i=2278
+ i=2279
+ i=3705
+ i=2281
+ i=2282
+ i=2284
+ i=2285
+ i=2286
+ i=2287
+ i=2288
+ i=2150
+ i=2274
+
+
+
+ ServerViewCount
+
+ i=63
+ i=2275
+
+
+
+ CurrentSessionCount
+
+ i=63
+ i=2275
+
+
+
+ CumulatedSessionCount
+
+ i=63
+ i=2275
+
+
+
+ SecurityRejectedSessionCount
+
+ i=63
+ i=2275
+
+
+
+ RejectedSessionCount
+
+ i=63
+ i=2275
+
+
+
+ SessionTimeoutCount
+
+ i=63
+ i=2275
+
+
+
+ SessionAbortCount
+
+ i=63
+ i=2275
+
+
+
+ PublishingIntervalCount
+
+ i=63
+ i=2275
+
+
+
+ CurrentSubscriptionCount
+
+ i=63
+ i=2275
+
+
+
+ CumulatedSubscriptionCount
+
+ i=63
+ i=2275
+
+
+
+ SecurityRejectedRequestsCount
+
+ i=63
+ i=2275
+
+
+
+ RejectedRequestsCount
+
+ i=63
+ i=2275
+
+
+
+ SamplingIntervalDiagnosticsArray
+
+ i=2164
+ i=2274
+
+
+
+ SubscriptionDiagnosticsArray
+
+ i=2171
+ i=2274
+
+
+
+ SessionsDiagnosticsSummary
+
+ i=3707
+ i=3708
+ i=2026
+ i=2274
+
+
+
+ SessionDiagnosticsArray
+
+ i=2196
+ i=3706
+
+
+
+ SessionSecurityDiagnosticsArray
+
+ i=2243
+ i=3706
+
+
+
+ EnabledFlag
+
+ i=68
+ i=2274
+
+
+
+ VendorServerInfo
+
+ i=2033
+ i=2253
+
+
+
+ ServerRedundancy
+
+ i=3709
+ i=2034
+ i=2253
+
+
+
+ RedundancySupport
+
+ i=68
+ i=2296
+
+
+
+ Namespaces
+
+ i=11645
+ i=2253
+
+
+
+ GetMonitoredItems
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.1
+
+ i=11493
+ i=11494
+ i=2253
+
+
+
+ InputArguments
+
+ i=68
+ i=11492
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=11492
+
+
+
+
+
+ i=297
+
+
+
+ ServerHandles
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ClientHandles
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ ResendData
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.2
+
+ i=12874
+ i=2253
+
+
+
+ InputArguments
+
+ i=68
+ i=12873
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ SetSubscriptionDurable
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.3
+
+ i=12750
+ i=12751
+ i=2253
+
+
+
+ InputArguments
+
+ i=68
+ i=12749
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ LifetimeInHours
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12749
+
+
+
+
+
+ i=297
+
+
+
+ RevisedLifetimeInHours
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ RequestServerStateChange
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/9.4
+
+ i=12887
+ i=2253
+
+
+
+ InputArguments
+
+ i=68
+ i=12886
+
+
+
+
+
+ i=297
+
+
+
+ State
+
+ i=852
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EstimatedReturnTime
+
+ i=13
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecondsTillShutdown
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Reason
+
+ i=21
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Restart
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CurrentServerId
+
+ i=68
+
+
+
+ RedundantServerArray
+
+ i=68
+
+
+
+ ServerUriArray
+
+ i=68
+
+
+
+ ServerNetworkGroups
+
+ i=68
+
+
+
+ HistoryServerCapabilities
+
+ i=11193
+ i=11242
+ i=11273
+ i=11274
+ i=11196
+ i=11197
+ i=11198
+ i=11199
+ i=11200
+ i=11281
+ i=11282
+ i=11283
+ i=11502
+ i=11275
+ i=11201
+ i=19091
+ i=2268
+ i=2330
+
+
+
+ AccessHistoryDataCapability
+
+ i=68
+ i=11192
+
+
+
+ AccessHistoryEventsCapability
+
+ i=68
+ i=11192
+
+
+
+ MaxReturnDataValues
+
+ i=68
+ i=11192
+
+
+
+ MaxReturnEventValues
+
+ i=68
+ i=11192
+
+
+
+ InsertDataCapability
+
+ i=68
+ i=11192
+
+
+
+ ReplaceDataCapability
+
+ i=68
+ i=11192
+
+
+
+ UpdateDataCapability
+
+ i=68
+ i=11192
+
+
+
+ DeleteRawCapability
+
+ i=68
+ i=11192
+
+
+
+ DeleteAtTimeCapability
+
+ i=68
+ i=11192
+
+
+
+ InsertEventCapability
+
+ i=68
+ i=11192
+
+
+
+ ReplaceEventCapability
+
+ i=68
+ i=11192
+
+
+
+ UpdateEventCapability
+
+ i=68
+ i=11192
+
+
+
+ DeleteEventCapability
+
+ i=68
+ i=11192
+
+
+
+ InsertAnnotationCapability
+
+ i=68
+ i=11192
+
+
+
+ AggregateFunctions
+
+ i=61
+ i=11192
+
+
+
+ ServerTimestampSupported
+
+ i=68
+ i=11192
+
+
+
+ IsDeprecated
+ Base Info Deprecated Information
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.22
+
+ i=32
+
+ Deprecates
+
+
+ BitFieldMaskDataType
+ Base Info BitFieldMaskDataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.18
+
+ i=9
+
+
+
+ SemanticVersionString
+ Base Info SemanticVersionString
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.41
+
+ i=12
+
+
+
+ KeyValuePair
+ Base Info KeyValuePair
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.21
+
+ i=22
+
+
+
+
+
+
+
+ AdditionalParametersType
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.1
+
+ i=22
+
+
+
+
+
+
+ EphemeralKeyType
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.15
+
+ i=22
+
+
+
+
+
+
+
+ EndpointType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+ Handle
+ Base Info Handle DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.42
+
+ i=7
+
+
+
+ TrimmedString
+ Base Info TrimmedString
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.43
+
+ i=12
+
+
+
+ StateMachineType
+ Base Info State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.2
+
+ i=2769
+ i=2770
+ i=58
+
+
+
+ CurrentState
+
+ i=3720
+ i=2755
+ i=78
+ i=2299
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2769
+
+
+
+ LastTransition
+
+ i=3724
+ i=2762
+ i=80
+ i=2299
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2770
+
+
+
+ StateVariableType
+ Base Info State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.3
+
+ i=2756
+ i=2757
+ i=2758
+ i=2759
+ i=63
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2755
+
+
+
+ Name
+
+ i=68
+ i=80
+ i=2755
+
+
+
+ Number
+
+ i=68
+ i=80
+ i=2755
+
+
+
+ EffectiveDisplayName
+
+ i=68
+ i=80
+ i=2755
+
+
+
+ TransitionVariableType
+ Base Info State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.4
+
+ i=2763
+ i=2764
+ i=2765
+ i=2766
+ i=11456
+ i=63
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2762
+
+
+
+ Name
+
+ i=68
+ i=80
+ i=2762
+
+
+
+ Number
+
+ i=68
+ i=80
+ i=2762
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=2762
+
+
+
+ EffectiveTransitionTime
+
+ i=68
+ i=80
+ i=2762
+
+
+
+ FiniteStateMachineType
+ Base Info Finite State Machine Instance
+ Base Info Available States and Transitions
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.5
+
+ i=2772
+ i=2773
+ i=17635
+ i=17636
+ i=2299
+
+
+
+ CurrentState
+
+ i=3728
+ i=2760
+ i=78
+ i=2771
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2772
+
+
+
+ LastTransition
+
+ i=3732
+ i=2767
+ i=80
+ i=2771
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2773
+
+
+
+ AvailableStates
+
+ i=63
+ i=80
+ i=2771
+
+
+
+ AvailableTransitions
+
+ i=63
+ i=80
+ i=2771
+
+
+
+ FiniteStateVariableType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.6
+
+ i=2761
+ i=2755
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2760
+
+
+
+ FiniteTransitionVariableType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.7
+
+ i=2768
+ i=2762
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2767
+
+
+
+ StateType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.8
+
+ i=2308
+ i=58
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2307
+
+
+
+ InitialStateType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.9
+
+ i=2307
+
+
+
+ TransitionType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.10
+
+ i=2312
+ i=58
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2310
+
+
+
+ ChoiceStateType
+ Base Info Choice States
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.6.2
+
+ i=2307
+
+
+
+ HasGuard
+ Base Info Choice States
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.6.3
+
+ i=47
+
+ GuardOf
+
+
+ GuardVariableType
+ Base Info Choice States
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.6.4
+
+ i=63
+
+
+
+ ExpressionGuardVariableType
+ Base Info Choice States
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.6.5
+
+ i=15129
+ i=15113
+
+
+
+ Expression
+
+ i=68
+ i=78
+ i=15128
+
+
+
+ ElseGuardVariableType
+ Base Info Choice States
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.6.6
+
+ i=15113
+
+
+
+ RationalNumberType
+ Base Info Rational Number
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.20
+
+ i=17712
+ i=17713
+ i=63
+
+
+
+ Numerator
+
+ i=63
+ i=78
+ i=17709
+
+
+
+ Denominator
+
+ i=63
+ i=78
+ i=17709
+
+
+
+ VectorType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.21
+
+ i=17715
+ i=63
+
+
+
+ VectorUnit
+
+ i=68
+ i=80
+ i=17714
+
+
+
+ 3DVectorType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.22
+
+ i=18769
+ i=18770
+ i=18771
+ i=17714
+
+
+
+ X
+
+ i=63
+ i=78
+ i=17716
+
+
+
+ Y
+
+ i=63
+ i=78
+ i=17716
+
+
+
+ Z
+
+ i=63
+ i=78
+ i=17716
+
+
+
+ CartesianCoordinatesType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.23
+
+ i=18773
+ i=63
+
+
+
+ LengthUnit
+
+ i=68
+ i=80
+ i=18772
+
+
+
+ 3DCartesianCoordinatesType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.24
+
+ i=18776
+ i=18777
+ i=18778
+ i=18772
+
+
+
+ X
+
+ i=63
+ i=78
+ i=18774
+
+
+
+ Y
+
+ i=63
+ i=78
+ i=18774
+
+
+
+ Z
+
+ i=63
+ i=78
+ i=18774
+
+
+
+ OrientationType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.25
+
+ i=18780
+ i=63
+
+
+
+ AngleUnit
+
+ i=68
+ i=80
+ i=18779
+
+
+
+ 3DOrientationType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.26
+
+ i=18783
+ i=18784
+ i=18785
+ i=18779
+
+
+
+ A
+
+ i=63
+ i=78
+ i=18781
+
+
+
+ B
+
+ i=63
+ i=78
+ i=18781
+
+
+
+ C
+
+ i=63
+ i=78
+ i=18781
+
+
+
+ FrameType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.27
+
+ i=18801
+ i=18787
+ i=18788
+ i=18789
+ i=18790
+ i=63
+
+
+
+ CartesianCoordinates
+
+ i=18772
+ i=78
+ i=18786
+
+
+
+ Orientation
+
+ i=18779
+ i=78
+ i=18786
+
+
+
+ Constant
+
+ i=68
+ i=80
+ i=18786
+
+
+
+ BaseFrame
+
+ i=63
+ i=80
+ i=18786
+
+
+
+ FixedBase
+
+ i=68
+ i=80
+ i=18786
+
+
+
+ 3DFrameType
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/7.28
+
+ i=18796
+ i=18792
+ i=18786
+
+
+
+ CartesianCoordinates
+
+ i=18798
+ i=18799
+ i=18800
+ i=18774
+ i=78
+ i=18791
+
+
+
+ X
+
+ i=63
+ i=78
+ i=18796
+
+
+
+ Y
+
+ i=63
+ i=78
+ i=18796
+
+
+
+ Z
+
+ i=63
+ i=78
+ i=18796
+
+
+
+ Orientation
+
+ i=19074
+ i=19075
+ i=19076
+ i=18781
+ i=78
+ i=18791
+
+
+
+ A
+
+ i=63
+ i=78
+ i=18792
+
+
+
+ B
+
+ i=63
+ i=78
+ i=18792
+
+
+
+ C
+
+ i=63
+ i=78
+ i=18792
+
+
+
+ RationalNumber
+ Base Info Rational Number
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.22
+
+ i=22
+
+
+
+
+
+
+
+ Vector
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.23
+
+ i=22
+
+
+
+
+ 3DVector
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.24
+
+ i=18807
+
+
+
+
+
+
+
+
+ CartesianCoordinates
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.25
+
+ i=22
+
+
+
+
+ 3DCartesianCoordinates
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.26
+
+ i=18809
+
+
+
+
+
+
+
+
+ Orientation
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.27
+
+ i=22
+
+
+
+
+ 3DOrientation
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.28
+
+ i=18811
+
+
+
+
+
+
+
+
+ Frame
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.29
+
+ i=22
+
+
+
+
+ 3DFrame
+ Base Info Spatial Data
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.30
+
+ i=18813
+
+
+
+
+
+
+
+ TransitionEventType
+ Base Info Finite State Machine Instance
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.16
+
+ i=2774
+ i=2775
+ i=2776
+ i=2041
+
+
+
+ Transition
+
+ i=3754
+ i=2762
+ i=78
+ i=2311
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2774
+
+
+
+ FromState
+
+ i=3746
+ i=2755
+ i=78
+ i=2311
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2775
+
+
+
+ ToState
+
+ i=3750
+ i=2755
+ i=78
+ i=2311
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=2776
+
+
+
+ AuditUpdateStateEventType
+ Auditing UpdateStates
+ https://reference.opcfoundation.org/v105/Core/docs/Part16/4.4.17
+
+ i=2777
+ i=2778
+ i=2127
+
+
+
+ OldStateId
+
+ i=68
+ i=78
+ i=2315
+
+
+
+ NewStateId
+
+ i=68
+ i=78
+ i=2315
+
+
+
+ OpenFileMode
+
+ i=11940
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumValues
+
+ i=68
+ i=11939
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Read
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Write
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ EraseExisting
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ Append
+
+
+
+
+
+
+
+
+ FileDirectoryType
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.1
+
+ i=13354
+ i=13366
+ i=13387
+ i=13390
+ i=13393
+ i=13395
+ i=61
+
+
+
+ <FileDirectoryName>
+
+ i=13355
+ i=13358
+ i=17718
+ i=13363
+ i=13353
+ i=11508
+ i=13353
+
+
+
+ CreateDirectory
+
+ i=13356
+ i=13357
+ i=78
+ i=13354
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13355
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13355
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ CreateFile
+
+ i=13359
+ i=13360
+ i=78
+ i=13354
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13358
+
+
+
+
+
+ i=297
+
+
+
+ FileName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestFileOpen
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13358
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Delete
+
+ i=17719
+ i=78
+ i=13354
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17718
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToDelete
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ MoveOrCopy
+
+ i=13364
+ i=13365
+ i=78
+ i=13354
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13363
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToMoveOrCopy
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetDirectory
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CreateCopy
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NewName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13363
+
+
+
+
+
+ i=297
+
+
+
+ NewNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ <FileName>
+
+ i=13367
+ i=13368
+ i=13369
+ i=13370
+ i=13372
+ i=13375
+ i=13377
+ i=13380
+ i=13382
+ i=13385
+ i=11575
+ i=11508
+ i=13353
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13366
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13366
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13366
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13366
+
+
+
+ Open
+
+ i=13373
+ i=13374
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13372
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13372
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13376
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13375
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13378
+ i=13379
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13377
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13377
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13381
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13380
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13383
+ i=13384
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13382
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13382
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13386
+ i=78
+ i=13366
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13385
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ CreateDirectory
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.3
+
+ i=13388
+ i=13389
+ i=78
+ i=13353
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13387
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13387
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ CreateFile
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.4
+
+ i=13391
+ i=13392
+ i=78
+ i=13353
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13390
+
+
+
+
+
+ i=297
+
+
+
+ FileName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestFileOpen
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13390
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Delete
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.5
+
+ i=13394
+ i=78
+ i=13353
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13393
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToDelete
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ MoveOrCopy
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.6
+
+ i=13396
+ i=13397
+ i=78
+ i=13353
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13395
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToMoveOrCopy
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetDirectory
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CreateCopy
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NewName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13395
+
+
+
+
+
+ i=297
+
+
+
+ NewNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ FileSystem
+
+ i=16348
+ i=16351
+ i=16354
+ i=16356
+ i=13353
+
+
+
+ CreateDirectory
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.3
+
+ i=16349
+ i=16350
+ i=16314
+
+
+
+ InputArguments
+
+ i=68
+ i=16348
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=16348
+
+
+
+
+
+ i=297
+
+
+
+ DirectoryNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ CreateFile
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.4
+
+ i=16352
+ i=16353
+ i=16314
+
+
+
+ InputArguments
+
+ i=68
+ i=16351
+
+
+
+
+
+ i=297
+
+
+
+ FileName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestFileOpen
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=16351
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Delete
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.5
+
+ i=16355
+ i=16314
+
+
+
+ InputArguments
+
+ i=68
+ i=16354
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToDelete
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ MoveOrCopy
+ Base Info FileDirectoryType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.3.6
+
+ i=16357
+ i=16358
+ i=16314
+
+
+
+ InputArguments
+
+ i=68
+ i=16356
+
+
+
+
+
+ i=297
+
+
+
+ ObjectToMoveOrCopy
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetDirectory
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CreateCopy
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NewName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=16356
+
+
+
+
+
+ i=297
+
+
+
+ NewNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ TemporaryFileTransferType
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.4.1
+
+ i=15745
+ i=15746
+ i=15749
+ i=15751
+ i=15754
+ i=58
+
+
+
+ ClientProcessingTimeout
+
+ i=68
+ i=78
+ i=15744
+
+
+
+ GenerateFileForRead
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.4.3
+
+ i=15747
+ i=15748
+ i=78
+ i=15744
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15746
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15746
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ GenerateFileForWrite
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.4.4
+
+ i=16359
+ i=15750
+ i=78
+ i=15744
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15749
+
+
+
+
+
+ i=297
+
+
+
+ GenerateOptions
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15749
+
+
+
+
+
+ i=297
+
+
+
+ FileNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndCommit
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.4.5
+
+ i=15752
+ i=15753
+ i=78
+ i=15744
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15751
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15751
+
+
+
+
+
+ i=297
+
+
+
+ CompletionStateMachine
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ <TransferState>
+
+ i=15755
+ i=15794
+ i=15803
+ i=11508
+ i=15744
+
+
+
+ CurrentState
+
+ i=15756
+ i=2760
+ i=78
+ i=15754
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=15755
+
+
+
+ Reset
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.6
+
+ i=78
+ i=15754
+
+
+
+ FileTransferStateMachineType
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.4.6
+
+ i=15815
+ i=15817
+ i=15819
+ i=15821
+ i=15823
+ i=15825
+ i=15827
+ i=15829
+ i=15831
+ i=15833
+ i=15835
+ i=15837
+ i=15839
+ i=15841
+ i=15843
+ i=2771
+
+
+
+ Idle
+
+ i=15816
+ i=15825
+ i=15829
+ i=15831
+ i=15833
+ i=15841
+ i=2309
+ i=15803
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=15815
+
+
+ 1
+
+
+
+ ReadPrepare
+
+ i=15818
+ i=15825
+ i=15827
+ i=15835
+ i=2307
+ i=15803
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=15817
+
+
+ 2
+
+
+
+ ReadTransfer
+
+ i=15820
+ i=15827
+ i=15829
+ i=15837
+ i=2307
+ i=15803
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=15819
+
+
+ 3
+
+
+
+ ApplyWrite
+
+ i=15822
+ i=15831
+ i=15833
+ i=15839
+ i=2307
+ i=15803
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=15821
+
+
+ 4
+
+
+
+ Error
+
+ i=15824
+ i=15835
+ i=15837
+ i=15839
+ i=15841
+ i=2307
+ i=15803
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=15823
+
+
+ 5
+
+
+
+ IdleToReadPrepare
+
+ i=15826
+ i=15815
+ i=15817
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15825
+
+
+ 12
+
+
+
+ ReadPrepareToReadTransfer
+
+ i=15828
+ i=15817
+ i=15819
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15827
+
+
+ 23
+
+
+
+ ReadTransferToIdle
+
+ i=15830
+ i=15819
+ i=15815
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15829
+
+
+ 31
+
+
+
+ IdleToApplyWrite
+
+ i=15832
+ i=15815
+ i=15821
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15831
+
+
+ 14
+
+
+
+ ApplyWriteToIdle
+
+ i=15834
+ i=15821
+ i=15815
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15833
+
+
+ 41
+
+
+
+ ReadPrepareToError
+
+ i=15836
+ i=15817
+ i=15823
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15835
+
+
+ 25
+
+
+
+ ReadTransferToError
+
+ i=15838
+ i=15819
+ i=15823
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15837
+
+
+ 35
+
+
+
+ ApplyWriteToError
+
+ i=15840
+ i=15821
+ i=15823
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15839
+
+
+ 45
+
+
+
+ ErrorToIdle
+
+ i=15842
+ i=15823
+ i=15815
+ i=2311
+ i=2310
+ i=15803
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=15841
+
+
+ 51
+
+
+
+ Reset
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/1
+
+ i=78
+ i=15803
+
+
+
+ RoleSetType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.2.1
+
+ i=15608
+ i=15997
+ i=16000
+ i=58
+
+
+
+ <RoleName>
+
+ i=16162
+ i=15620
+ i=11508
+ i=15607
+
+
+
+ Identities
+
+ i=68
+ i=78
+ i=15608
+
+
+
+ AddRole
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.2.2
+
+ i=15998
+ i=15999
+ i=78
+ i=15607
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15997
+
+
+
+
+
+ i=297
+
+
+
+ RoleName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NamespaceUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15997
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveRole
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.2.3
+
+ i=16001
+ i=78
+ i=15607
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16000
+
+
+
+
+
+ i=297
+
+
+
+ RoleNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RoleType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.1
+
+ i=16173
+ i=15410
+ i=16174
+ i=15411
+ i=16175
+ i=24139
+ i=15624
+ i=15626
+ i=16176
+ i=16178
+ i=16180
+ i=16182
+ i=58
+
+
+
+ Identities
+
+ i=68
+ i=78
+ i=15620
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=80
+ i=15620
+
+
+
+ Applications
+
+ i=68
+ i=80
+ i=15620
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=80
+ i=15620
+
+
+
+ Endpoints
+
+ i=68
+ i=80
+ i=15620
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=80
+ i=15620
+
+
+
+ AddIdentity
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.5
+
+ i=15625
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15624
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.6
+
+ i=15627
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15626
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.7
+
+ i=16177
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16176
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.8
+
+ i=16179
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16178
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.9
+
+ i=16181
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16180
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.10
+
+ i=16183
+ i=80
+ i=15620
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16182
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ IdentityCriteriaType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.4
+
+ i=15633
+ i=29
+
+
+
+ The rule specifies a UserName from a UserNameIdentityToken.
+
+
+ The rule specifies the Thumbprint of a user or CA Certificate.
+
+
+ The rule is a Role specified in an Access Token.
+
+
+ The rule is a user group specified in the Access Token.
+
+
+ The rule specifies Anonymous UserIdentityToken.
+
+
+ The rule specifies any non Anonymous UserIdentityToken.
+
+
+ The rule specifies the combination of an application identity and an Anonymous UserIdentityToken.
+
+
+ The rule specifies the X509 subject name of a user or CA Certificate.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=15632
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ UserName
+
+
+ The rule specifies a UserName from a UserNameIdentityToken.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Thumbprint
+
+
+ The rule specifies the Thumbprint of a user or CA Certificate.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Role
+
+
+ The rule is a Role specified in an Access Token.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ GroupId
+
+
+ The rule is a user group specified in the Access Token.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 5
+
+ Anonymous
+
+
+ The rule specifies Anonymous UserIdentityToken.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 6
+
+ AuthenticatedUser
+
+
+ The rule specifies any non Anonymous UserIdentityToken.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 7
+
+ Application
+
+
+ The rule specifies the combination of an application identity and an Anonymous UserIdentityToken.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ X509Subject
+
+
+ The rule specifies the X509 subject name of a user or CA Certificate.
+
+
+
+
+
+
+
+
+ IdentityMappingRuleType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.4.3
+
+ i=22
+
+
+
+
+
+
+
+ RoleMappingRuleChangedAuditEventType
+ Security Role Server Base Eventing
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/4.5
+
+ i=2127
+
+
+
+ Anonymous
+ The Role has very limited access for use when a Session has anonymous credentials.
+
+ i=16192
+ i=15412
+ i=16193
+ i=15413
+ i=16194
+ i=15648
+ i=15650
+ i=16195
+ i=16197
+ i=16199
+ i=16201
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15644
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15644
+
+
+
+ Applications
+
+ i=68
+ i=15644
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15644
+
+
+
+ Endpoints
+
+ i=68
+ i=15644
+
+
+
+ AddIdentity
+
+ i=15649
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=15648
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15651
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=15650
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16196
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=16195
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16198
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=16197
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16200
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=16199
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16202
+ i=15644
+
+
+
+ InputArguments
+
+ i=68
+ i=16201
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ AuthenticatedUser
+ The Role has limited access for use when a Session has valid non-anonymous credentials but has not been explicity granted access to a Role.
+
+ i=16203
+ i=15414
+ i=16204
+ i=15415
+ i=16205
+ i=24141
+ i=15660
+ i=15662
+ i=16206
+ i=16208
+ i=16210
+ i=16212
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15656
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15656
+
+
+
+ Applications
+
+ i=68
+ i=15656
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15656
+
+
+
+ Endpoints
+
+ i=68
+ i=15656
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15656
+
+
+
+ AddIdentity
+
+ i=15661
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=15660
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15663
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=15662
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16207
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=16206
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16209
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=16208
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16211
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=16210
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16213
+ i=15656
+
+
+
+ InputArguments
+
+ i=68
+ i=16212
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ Observer
+ The Role is allowed to browse, read live data, read historical data/events or subscribe to data/events.
+
+ i=16214
+ i=15416
+ i=16215
+ i=15417
+ i=16216
+ i=24142
+ i=15672
+ i=15674
+ i=16217
+ i=16219
+ i=16221
+ i=16223
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15668
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15668
+
+
+
+ Applications
+
+ i=68
+ i=15668
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15668
+
+
+
+ Endpoints
+
+ i=68
+ i=15668
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15668
+
+
+
+ AddIdentity
+
+ i=15673
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=15672
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15675
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=15674
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16218
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=16217
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16220
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=16219
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16222
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=16221
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16224
+ i=15668
+
+
+
+ InputArguments
+
+ i=68
+ i=16223
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ Operator
+ The Role is allowed to browse, read live data, read historical data/events or subscribe to data/events.
+
+ i=16225
+ i=15418
+ i=16226
+ i=15423
+ i=16227
+ i=24143
+ i=15684
+ i=15686
+ i=16228
+ i=16230
+ i=16232
+ i=16234
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15680
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15680
+
+
+
+ Applications
+
+ i=68
+ i=15680
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15680
+
+
+
+ Endpoints
+
+ i=68
+ i=15680
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15680
+
+
+
+ AddIdentity
+
+ i=15685
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=15684
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15687
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=15686
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16229
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=16228
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16231
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=16230
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16233
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=16232
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16235
+ i=15680
+
+
+
+ InputArguments
+
+ i=68
+ i=16234
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ Engineer
+ The Role is allowed to browse, read live data, read and update historical data/events, call methods or subscribe to data/events.
+
+ i=16236
+ i=15424
+ i=16237
+ i=15425
+ i=16238
+ i=24144
+ i=16041
+ i=16043
+ i=16239
+ i=16241
+ i=16243
+ i=16245
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=16036
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=16036
+
+
+
+ Applications
+
+ i=68
+ i=16036
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=16036
+
+
+
+ Endpoints
+
+ i=68
+ i=16036
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=16036
+
+
+
+ AddIdentity
+
+ i=16042
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16041
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=16044
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16043
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16240
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16239
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16242
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16241
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16244
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16243
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16246
+ i=16036
+
+
+
+ InputArguments
+
+ i=68
+ i=16245
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ Supervisor
+ The Role is allowed to browse, read live data, read and historical data/events, call methods or subscribe to data/events.
+
+ i=16247
+ i=15426
+ i=16248
+ i=15427
+ i=16249
+ i=24145
+ i=15696
+ i=15698
+ i=16250
+ i=16252
+ i=16254
+ i=16256
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15692
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15692
+
+
+
+ Applications
+
+ i=68
+ i=15692
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15692
+
+
+
+ Endpoints
+
+ i=68
+ i=15692
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15692
+
+
+
+ AddIdentity
+
+ i=15697
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=15696
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15699
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=15698
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16251
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=16250
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16253
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=16252
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16255
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=16254
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16257
+ i=15692
+
+
+
+ InputArguments
+
+ i=68
+ i=16256
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ ConfigureAdmin
+ The Role is allowed to change the non-security related configuration settings.
+
+ i=16269
+ i=15428
+ i=16270
+ i=15429
+ i=16271
+ i=24146
+ i=15720
+ i=15722
+ i=16272
+ i=16274
+ i=16276
+ i=16278
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15716
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15716
+
+
+
+ Applications
+
+ i=68
+ i=15716
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15716
+
+
+
+ Endpoints
+
+ i=68
+ i=15716
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15716
+
+
+
+ AddIdentity
+
+ i=15721
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=15720
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15723
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=15722
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16273
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=16272
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16275
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=16274
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16277
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=16276
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16279
+ i=15716
+
+
+
+ InputArguments
+
+ i=68
+ i=16278
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityAdmin
+ The Role is allowed to change security related settings.
+
+ i=16258
+ i=15430
+ i=16259
+ i=15527
+ i=16260
+ i=24147
+ i=15708
+ i=15710
+ i=16261
+ i=16263
+ i=16265
+ i=16267
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=15704
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=15704
+
+
+
+ Applications
+
+ i=68
+ i=15704
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=15704
+
+
+
+ Endpoints
+
+ i=68
+ i=15704
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=15704
+
+
+
+ AddIdentity
+
+ i=15709
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=15708
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=15711
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=15710
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=16262
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=16261
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=16264
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=16263
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=16266
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=16265
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=16268
+ i=15704
+
+
+
+ InputArguments
+
+ i=68
+ i=16267
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityKeyServerAdmin
+ This Role allows an administrator to manage SecurityGroups and PushTargets on a SKS. This includes executing methods related to management of SecurityGroups and PushTargets on an SKS.
+
+ i=25566
+ i=25567
+ i=25568
+ i=25569
+ i=25570
+ i=25571
+ i=25572
+ i=25574
+ i=25576
+ i=25578
+ i=25580
+ i=25582
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=25565
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=25565
+
+
+
+ Applications
+
+ i=68
+ i=25565
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=25565
+
+
+
+ Endpoints
+
+ i=68
+ i=25565
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=25565
+
+
+
+ AddIdentity
+
+ i=25573
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25572
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=25575
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25574
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=25577
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25576
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=25579
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25578
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=25581
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25580
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=25583
+ i=25565
+
+
+
+ InputArguments
+
+ i=68
+ i=25582
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityKeyServerAccess
+
+ This Role allows a PubSub Application to access an SKS to pull keys. It is the default Role for pull but it is expected that different custom Roles are used for different SecurityGroups.
+
+
+ i=25604
+ i=25605
+ i=25606
+ i=25607
+ i=25608
+ i=25609
+ i=25610
+ i=25612
+ i=25614
+ i=25616
+ i=25618
+ i=25620
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=25603
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=25603
+
+
+
+ Applications
+
+ i=68
+ i=25603
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=25603
+
+
+
+ Endpoints
+
+ i=68
+ i=25603
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=25603
+
+
+
+ AddIdentity
+
+ i=25611
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25610
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=25613
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25612
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=25615
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25614
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=25617
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25616
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=25619
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25618
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=25621
+ i=25603
+
+
+
+ InputArguments
+
+ i=68
+ i=25620
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityKeyServerPush
+
+ This Role allows an SKS to push security keys to PubSub Applications. This includes executing methods related to PubSub security.
+
+
+ i=25585
+ i=25586
+ i=25587
+ i=25588
+ i=25589
+ i=25590
+ i=25591
+ i=25593
+ i=25595
+ i=25597
+ i=25599
+ i=25601
+ i=15606
+ i=15620
+
+
+
+ Identities
+
+ i=68
+ i=25584
+
+
+
+ ApplicationsExclude
+
+ i=68
+ i=25584
+
+
+
+ Applications
+
+ i=68
+ i=25584
+
+
+
+ EndpointsExclude
+
+ i=68
+ i=25584
+
+
+
+ Endpoints
+
+ i=68
+ i=25584
+
+
+
+ CustomConfiguration
+
+ i=68
+ i=25584
+
+
+
+ AddIdentity
+
+ i=25592
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25591
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveIdentity
+
+ i=25594
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25593
+
+
+
+
+
+ i=297
+
+
+
+ Rule
+
+ i=15634
+
+ -1
+
+
+
+
+
+
+
+
+ AddApplication
+
+ i=25596
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25595
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveApplication
+
+ i=25598
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25597
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ AddEndpoint
+
+ i=25600
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25599
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveEndpoint
+
+ i=25602
+ i=25584
+
+
+
+ InputArguments
+
+ i=68
+ i=25601
+
+
+
+
+
+ i=297
+
+
+
+ Endpoint
+
+ i=15528
+
+ -1
+
+
+
+
+
+
+
+
+ DictionaryEntryType
+ Address Space Dictionary Entries
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/5.1
+
+ i=17590
+ i=58
+
+
+
+ <DictionaryEntryName>
+
+ i=17589
+ i=11508
+ i=17589
+
+
+
+ DictionaryFolderType
+ Address Space Dictionary Entries
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/5.2
+
+ i=17592
+ i=17593
+ i=61
+
+
+
+ <DictionaryFolderName>
+
+ i=17591
+ i=11508
+ i=17591
+
+
+
+ <DictionaryEntryName>
+
+ i=17589
+ i=11508
+ i=17591
+
+
+
+ Dictionaries
+ Address Space Dictionary Entries
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/8.1
+
+ i=2253
+ i=17591
+
+
+
+ HasDictionaryEntry
+ Address Space Dictionary Entries
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/6.1
+
+ i=32
+
+ DictionaryEntryOf
+
+
+ IrdiDictionaryEntryType
+ Address Space Dictionary IRDI
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/5.3
+
+ i=17589
+
+
+
+ UriDictionaryEntryType
+ Address Space Dictionary URI
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/5.4
+
+ i=17589
+
+
+
+ BaseInterfaceType
+ Address Space Interfaces
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.9
+
+ i=58
+
+
+
+ InterfaceTypes
+ Address Space Interfaces
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/8.2.11
+
+ i=17602
+ i=86
+ i=61
+
+
+
+ HasInterface
+ Address Space Interfaces
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.20
+
+ i=32
+
+ InterfaceOf
+
+
+ HasAddIn
+ Address Space AddIn Reference
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/11.21
+
+ i=47
+
+ AddInOf
+
+
+ CurrencyUnitType
+ Base Info Currency
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+ CurrencyUnit
+
+ i=68
+
+
+
+ IOrderedObjectType
+ Base Info OrderedList
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.11
+
+ i=23517
+ i=17602
+
+
+
+ NumberInList
+
+ i=68
+ i=78
+ i=23513
+
+
+
+ OrderedListType
+ Base Info OrderedList
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/6.10
+
+ i=23519
+ i=23525
+ i=2133
+ i=58
+
+
+
+ <OrderedObject>
+
+ i=23521
+ i=23513
+ i=58
+ i=11508
+ i=23518
+
+
+
+ NumberInList
+
+ i=68
+ i=78
+ i=23519
+
+
+
+ NodeVersion
+
+ i=68
+ i=80
+ i=23518
+
+
+
+ DataItemType
+ Data Access DataItems
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.1
+
+ i=2366
+ i=2367
+ i=63
+
+
+
+ Definition
+
+ i=68
+ i=80
+ i=2365
+
+
+
+ ValuePrecision
+
+ i=68
+ i=80
+ i=2365
+
+
+
+ BaseAnalogType
+ Data Access BaseAnalogType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.2/#5.3.2.2
+
+ i=17567
+ i=17568
+ i=17569
+ i=2365
+
+
+
+ InstrumentRange
+
+ i=68
+ i=80
+ i=15318
+
+
+
+ EURange
+
+ i=68
+ i=80
+ i=15318
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=80
+ i=15318
+
+
+
+ AnalogItemType
+ Data Access AnalogItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.2/#5.3.2.3
+
+ i=2369
+ i=15318
+
+
+
+ EURange
+
+ i=68
+ i=78
+ i=2368
+
+
+
+ AnalogUnitType
+ Data Access AnalogUnitType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.2/#5.3.2.4
+
+ i=17502
+ i=15318
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=17497
+
+
+
+ AnalogUnitRangeType
+ Data Access AnalogUnitRangeType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.2/#5.3.2.5
+
+ i=17575
+ i=2368
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=17570
+
+
+
+ DiscreteItemType
+ Data Access DiscreteItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.3/#5.3.3.1
+
+ i=2365
+
+
+
+ TwoStateDiscreteType
+ Data Access TwoState
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.3/#5.3.3.2
+
+ i=2374
+ i=2375
+ i=2372
+
+
+
+ FalseState
+
+ i=68
+ i=78
+ i=2373
+
+
+
+ TrueState
+
+ i=68
+ i=78
+ i=2373
+
+
+
+ MultiStateDiscreteType
+ Data Access MultiState
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.3/#5.3.3.3
+
+ i=2377
+ i=2372
+
+
+
+ EnumStrings
+
+ i=68
+ i=78
+ i=2376
+
+
+
+ MultiStateValueDiscreteType
+ Data Access MultiStateValueDiscrete
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.3/#5.3.3.4
+
+ i=11241
+ i=11461
+ i=2372
+
+
+
+ EnumValues
+
+ i=68
+ i=78
+ i=11238
+
+
+
+ ValueAsText
+
+ i=68
+ i=78
+ i=11238
+
+
+
+ ArrayItemType
+ Data Access ArrayItem2Type
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.1
+
+ i=12024
+ i=12025
+ i=12026
+ i=12027
+ i=12028
+ i=2365
+
+
+
+ InstrumentRange
+
+ i=68
+ i=80
+ i=12021
+
+
+
+ EURange
+
+ i=68
+ i=78
+ i=12021
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=12021
+
+
+
+ Title
+
+ i=68
+ i=78
+ i=12021
+
+
+
+ AxisScaleType
+
+ i=68
+ i=78
+ i=12021
+
+
+
+ YArrayItemType
+ Data Access YArrayItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.2
+
+ i=12037
+ i=12021
+
+
+
+ XAxisDefinition
+
+ i=68
+ i=78
+ i=12029
+
+
+
+ XYArrayItemType
+ Data Access XYArrayItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.3
+
+ i=12046
+ i=12021
+
+
+
+ XAxisDefinition
+
+ i=68
+ i=78
+ i=12038
+
+
+
+ ImageItemType
+ Data Access ImageItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.4
+
+ i=12055
+ i=12056
+ i=12021
+
+
+
+ XAxisDefinition
+
+ i=68
+ i=78
+ i=12047
+
+
+
+ YAxisDefinition
+
+ i=68
+ i=78
+ i=12047
+
+
+
+ CubeItemType
+ Data Access CubeItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.5
+
+ i=12065
+ i=12066
+ i=12067
+ i=12021
+
+
+
+ XAxisDefinition
+
+ i=68
+ i=78
+ i=12057
+
+
+
+ YAxisDefinition
+
+ i=68
+ i=78
+ i=12057
+
+
+
+ ZAxisDefinition
+
+ i=68
+ i=78
+ i=12057
+
+
+
+ NDimensionArrayItemType
+ Data Access NDimensionArrayItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.3.4/#5.3.4.6
+
+ i=12076
+ i=12021
+
+
+
+ AxisDefinition
+
+ i=68
+ i=78
+ i=12068
+
+
+
+ TwoStateVariableType
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.2
+
+ i=8996
+ i=9000
+ i=9001
+ i=11110
+ i=11111
+ i=2755
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=8995
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=8995
+
+
+
+ EffectiveTransitionTime
+
+ i=68
+ i=80
+ i=8995
+
+
+
+ TrueState
+
+ i=68
+ i=80
+ i=8995
+
+
+
+ FalseState
+
+ i=68
+ i=80
+ i=8995
+
+
+
+ ConditionVariableType
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.3
+
+ i=9003
+ i=63
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=9002
+
+
+
+ HasTrueSubState
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.4.2
+
+ i=32
+
+ IsTrueSubStateOf
+
+
+ HasFalseSubState
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.4.3
+
+ i=32
+
+ IsFalseSubStateOf
+
+
+ HasAlarmSuppressionGroup
+ A & C Suppression Group
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.4.4
+
+ i=47
+
+ IsAlarmSuppressionGroupOf
+
+
+ AlarmGroupMember
+ A & C Suppression Group
+ A & C First in Group Alarm
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.4.5
+
+ i=35
+
+ MemberOfAlarmGroup
+
+
+ AlarmSuppressionGroupMember
+ A & C Suppression Group
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.4.6
+
+ i=16362
+
+ MemberOfAlarmSuppressionGroup
+
+
+ ConditionType
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.2
+
+ i=11112
+ i=11113
+ i=9009
+ i=9010
+ i=3874
+ i=32060
+ i=9011
+ i=9020
+ i=9022
+ i=9024
+ i=9026
+ i=9028
+ i=9027
+ i=9029
+ i=3875
+ i=12912
+ i=2041
+
+
+
+ ConditionClassId
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ ConditionClassName
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ ConditionName
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ BranchId
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ Retain
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ SupportsFilteredRetain
+
+ i=68
+ i=2782
+
+
+
+ EnabledState
+
+ i=9012
+ i=9015
+ i=9016
+ i=9017
+ i=9018
+ i=9019
+ i=8995
+ i=78
+ i=2782
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9011
+
+
+
+ EffectiveDisplayName
+
+ i=68
+ i=80
+ i=9011
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9011
+
+
+
+ EffectiveTransitionTime
+
+ i=68
+ i=80
+ i=9011
+
+
+
+ TrueState
+
+ i=68
+ i=9011
+
+
+
+ en
+ Enabled
+
+
+
+
+ FalseState
+
+ i=68
+ i=9011
+
+
+
+ en
+ Disabled
+
+
+
+
+ Quality
+
+ i=9021
+ i=9002
+ i=78
+ i=2782
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=9020
+
+
+
+ LastSeverity
+
+ i=9023
+ i=9002
+ i=78
+ i=2782
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=9022
+
+
+
+ Comment
+
+ i=9025
+ i=9002
+ i=78
+ i=2782
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=9024
+
+
+
+ ClientUserId
+
+ i=68
+ i=78
+ i=2782
+
+
+
+ Disable
+ A & C Enable
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.4
+
+ i=2803
+ i=78
+ i=2782
+
+
+
+ Enable
+ A & C Enable
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.5
+
+ i=2803
+ i=78
+ i=2782
+
+
+
+ AddComment
+ A & C Comment
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.6
+
+ i=9030
+ i=2829
+ i=78
+ i=2782
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=9029
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ ConditionRefresh
+ A & C Refresh
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.7
+
+ i=3876
+ i=2787
+ i=2788
+ i=2782
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=3875
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=288
+
+ -1
+
+
+ The identifier for the subscription to refresh.
+
+
+
+
+
+
+
+
+ ConditionRefresh2
+ A & C Refresh2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.5.8
+
+ i=12913
+ i=2787
+ i=2788
+ i=2782
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12912
+
+
+
+
+
+ i=297
+
+
+
+ SubscriptionId
+
+ i=288
+
+ -1
+
+
+ The identifier for the subscription to refresh.
+
+
+
+
+
+
+ i=297
+
+
+
+ MonitoredItemId
+
+ i=288
+
+ -1
+
+
+ The identifier for the monitored item to refresh.
+
+
+
+
+
+
+
+
+ DialogConditionType
+ A & C Dialog
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.6.2
+
+ i=9035
+ i=9055
+ i=2831
+ i=9064
+ i=9065
+ i=9066
+ i=9067
+ i=9068
+ i=9069
+ i=24312
+ i=2782
+
+
+
+ EnabledState
+
+ i=9036
+ i=9055
+ i=8995
+ i=78
+ i=2830
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9035
+
+
+
+ DialogState
+
+ i=9056
+ i=9060
+ i=9062
+ i=9063
+ i=9035
+ i=8995
+ i=78
+ i=2830
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9055
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9055
+
+
+
+ TrueState
+
+ i=68
+ i=9055
+
+
+
+ en
+ Active
+
+
+
+
+ FalseState
+
+ i=68
+ i=9055
+
+
+
+ en
+ Inactive
+
+
+
+
+ Prompt
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ ResponseOptionSet
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ DefaultResponse
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ OkResponse
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ CancelResponse
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ LastResponse
+
+ i=68
+ i=78
+ i=2830
+
+
+
+ Respond
+ A & C Dialog
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.6.3
+
+ i=9070
+ i=8927
+ i=78
+ i=2830
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=9069
+
+
+
+
+
+ i=297
+
+
+
+ SelectedResponse
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ Respond2
+ A & C Dialog2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.6.4
+
+ i=24313
+ i=8927
+ i=80
+ i=2830
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24312
+
+
+
+
+
+ i=297
+
+
+
+ SelectedResponse
+
+ i=6
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ AcknowledgeableConditionType
+ A & C Acknowledge
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.7.2
+
+ i=9073
+ i=9093
+ i=9102
+ i=9111
+ i=9113
+ i=2782
+
+
+
+ EnabledState
+
+ i=9074
+ i=9093
+ i=9102
+ i=8995
+ i=78
+ i=2881
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9073
+
+
+
+ AckedState
+
+ i=9094
+ i=9098
+ i=9100
+ i=9101
+ i=9073
+ i=8995
+ i=78
+ i=2881
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9093
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9093
+
+
+
+ TrueState
+
+ i=68
+ i=9093
+
+
+
+ en
+ Acknowledged
+
+
+
+
+ FalseState
+
+ i=68
+ i=9093
+
+
+
+ en
+ Unacknowledged
+
+
+
+
+ ConfirmedState
+
+ i=9103
+ i=9107
+ i=9109
+ i=9110
+ i=9073
+ i=8995
+ i=80
+ i=2881
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9102
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9102
+
+
+
+ TrueState
+
+ i=68
+ i=9102
+
+
+
+ en
+ Confirmed
+
+
+
+
+ FalseState
+
+ i=68
+ i=9102
+
+
+
+ en
+ Unconfirmed
+
+
+
+
+ Acknowledge
+ A & C Acknowledge
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.7.3
+
+ i=9112
+ i=8944
+ i=78
+ i=2881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=9111
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ Confirm
+ A & C Confirm
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.7.4
+
+ i=9114
+ i=8961
+ i=80
+ i=2881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=9113
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ AlarmConditionType
+ A & C Alarm
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.2
+
+ i=9118
+ i=9160
+ i=11120
+ i=9169
+ i=16371
+ i=9178
+ i=9215
+ i=9216
+ i=16389
+ i=16390
+ i=16380
+ i=16395
+ i=16396
+ i=16397
+ i=16398
+ i=18190
+ i=16399
+ i=16400
+ i=16401
+ i=16402
+ i=16403
+ i=24316
+ i=17868
+ i=24318
+ i=17869
+ i=24320
+ i=17870
+ i=24322
+ i=18199
+ i=24324
+ i=24744
+ i=2881
+
+
+
+ EnabledState
+
+ i=9119
+ i=9160
+ i=9169
+ i=9178
+ i=8995
+ i=78
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9118
+
+
+
+ ActiveState
+
+ i=9161
+ i=9164
+ i=9165
+ i=9166
+ i=9167
+ i=9168
+ i=9118
+ i=8995
+ i=78
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9160
+
+
+
+ EffectiveDisplayName
+
+ i=68
+ i=80
+ i=9160
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9160
+
+
+
+ EffectiveTransitionTime
+
+ i=68
+ i=80
+ i=9160
+
+
+
+ TrueState
+
+ i=68
+ i=9160
+
+
+
+ en
+ Active
+
+
+
+
+ FalseState
+
+ i=68
+ i=9160
+
+
+
+ en
+ Inactive
+
+
+
+
+ InputNode
+
+ i=68
+ i=78
+ i=2915
+
+
+
+ SuppressedState
+
+ i=9170
+ i=9174
+ i=9176
+ i=9177
+ i=9118
+ i=8995
+ i=80
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9169
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9169
+
+
+
+ TrueState
+
+ i=68
+ i=9169
+
+
+
+ en
+ Suppressed
+
+
+
+
+ FalseState
+
+ i=68
+ i=9169
+
+
+
+ en
+ Unsuppressed
+
+
+
+
+ OutOfServiceState
+
+ i=16372
+ i=16376
+ i=16378
+ i=16379
+ i=8995
+ i=80
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=16371
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=16371
+
+
+
+ TrueState
+
+ i=68
+ i=16371
+
+
+
+ en
+ Out of Service
+
+
+
+
+ FalseState
+
+ i=68
+ i=16371
+
+
+
+ en
+ In Service
+
+
+
+
+ ShelvingState
+
+ i=9179
+ i=9184
+ i=9189
+ i=9213
+ i=9211
+ i=9212
+ i=9118
+ i=2929
+ i=80
+ i=2915
+
+
+
+ CurrentState
+
+ i=9180
+ i=2760
+ i=78
+ i=9178
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9179
+
+
+
+ LastTransition
+
+ i=9185
+ i=9188
+ i=2767
+ i=80
+ i=9178
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9184
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9184
+
+
+
+ UnshelveTime
+
+ i=68
+ i=78
+ i=9178
+
+
+
+ TimedShelve
+
+ i=9214
+ i=11093
+ i=78
+ i=9178
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=9213
+
+
+
+
+
+ i=297
+
+
+
+ ShelvingTime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ Unshelve
+
+ i=11093
+ i=78
+ i=9178
+
+
+
+ OneShotShelve
+
+ i=11093
+ i=78
+ i=9178
+
+
+
+ SuppressedOrShelved
+
+ i=68
+ i=78
+ i=2915
+
+
+
+ MaxTimeShelved
+
+ i=68
+ i=80
+ i=2915
+
+
+
+ AudibleEnabled
+
+ i=68
+ i=80
+ i=2915
+
+
+
+ AudibleSound
+
+ i=17986
+ i=80
+ i=2915
+
+
+
+ SilenceState
+
+ i=16381
+ i=16385
+ i=16387
+ i=16388
+ i=8995
+ i=80
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=16380
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=16380
+
+
+
+ TrueState
+
+ i=68
+ i=16380
+
+
+
+ en
+ Silenced
+
+
+
+
+ FalseState
+
+ i=68
+ i=16380
+
+
+
+ en
+ Not Silenced
+
+
+
+
+ OnDelay
+
+ i=68
+ i=80
+ i=2915
+
+
+
+ OffDelay
+
+ i=68
+ i=80
+ i=2915
+
+
+
+ FirstInGroupFlag
+
+ i=63
+ i=80
+ i=2915
+
+
+
+ FirstInGroup
+
+ i=16405
+ i=80
+ i=2915
+
+
+
+ LatchedState
+
+ i=18191
+ i=18195
+ i=18197
+ i=18198
+ i=8995
+ i=80
+ i=2915
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=18190
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=18190
+
+
+
+ TrueState
+
+ i=68
+ i=18190
+
+
+
+ en
+ Latched
+
+
+
+
+ FalseState
+
+ i=68
+ i=18190
+
+
+
+ en
+ Unlatched
+
+
+
+
+ <AlarmGroup>
+
+ i=16405
+ i=11508
+ i=2915
+
+
+
+ ReAlarmTime
+
+ i=68
+ i=80
+ i=2915
+
+
+
+ ReAlarmRepeatCount
+
+ i=63
+ i=80
+ i=2915
+
+
+
+ Silence
+ A & C Silencing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.7
+
+ i=17242
+ i=80
+ i=2915
+
+
+
+ Suppress
+ A & C Suppression by Operator
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.8
+
+ i=17225
+ i=80
+ i=2915
+
+
+
+ Suppress2
+ A & C Suppression2 by Operator
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.9
+
+ i=24317
+ i=17225
+ i=80
+ i=2915
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24316
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ Unsuppress
+ A & C Suppression by Operator
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.10
+
+ i=17225
+ i=80
+ i=2915
+
+
+
+ Unsuppress2
+ A & C Suppression2 by Operator
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.11
+
+ i=24319
+ i=17225
+ i=80
+ i=2915
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24318
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveFromService
+ A & C OutOfService
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.12
+
+ i=17259
+ i=80
+ i=2915
+
+
+
+ RemoveFromService2
+ A & C OutOfService2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.13
+
+ i=24321
+ i=17259
+ i=80
+ i=2915
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24320
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ PlaceInService
+ A & C OutOfService
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.14
+
+ i=17259
+ i=80
+ i=2915
+
+
+
+ PlaceInService2
+ A & C Out Of Service2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.15
+
+ i=24323
+ i=17259
+ i=80
+ i=2915
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24322
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ Reset
+ A & C Latched State
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.5
+
+ i=15013
+ i=80
+ i=2915
+
+
+
+ Reset2
+ A & C Latched State
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.6
+
+ i=24325
+ i=15013
+ i=80
+ i=2915
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24324
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ GetGroupMemberships
+ A & C GetGroupMemberships
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.16
+
+ i=25154
+ i=80
+ i=2915
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=24744
+
+
+
+
+
+ i=297
+
+
+
+ Groups
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AlarmGroupType
+ A & C First in Group Alarm
+ A & C Suppression Group
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.3
+
+ i=16406
+ i=61
+
+
+
+ <AlarmConditionInstance>
+
+ i=16407
+ i=16408
+ i=16409
+ i=16410
+ i=16411
+ i=16412
+ i=16414
+ i=16415
+ i=16416
+ i=16417
+ i=16420
+ i=16421
+ i=16422
+ i=16423
+ i=16432
+ i=16434
+ i=16436
+ i=16438
+ i=16439
+ i=16440
+ i=16441
+ i=16443
+ i=16461
+ i=16465
+ i=16474
+ i=16519
+ i=2915
+ i=11508
+ i=16405
+
+
+
+ EventId
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ EventType
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ SourceNode
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ SourceName
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ Time
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ ReceiveTime
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ Message
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ Severity
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ ConditionClassId
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ ConditionClassName
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ ConditionName
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ BranchId
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ Retain
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ EnabledState
+
+ i=16424
+ i=8995
+ i=78
+ i=16406
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=16423
+
+
+
+ Quality
+
+ i=16433
+ i=9002
+ i=78
+ i=16406
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=16432
+
+
+
+ LastSeverity
+
+ i=16435
+ i=9002
+ i=78
+ i=16406
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=16434
+
+
+
+ Comment
+
+ i=16437
+ i=9002
+ i=78
+ i=16406
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=16436
+
+
+
+ ClientUserId
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ Disable
+
+ i=2803
+ i=78
+ i=16406
+
+
+
+ Enable
+
+ i=2803
+ i=78
+ i=16406
+
+
+
+ AddComment
+
+ i=16442
+ i=2829
+ i=78
+ i=16406
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16441
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ AckedState
+
+ i=16444
+ i=8995
+ i=78
+ i=16406
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=16443
+
+
+
+ Acknowledge
+
+ i=16462
+ i=8944
+ i=78
+ i=16406
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16461
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ ActiveState
+
+ i=16466
+ i=16472
+ i=16473
+ i=8995
+ i=78
+ i=16406
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=16465
+
+
+
+ TrueState
+
+ i=68
+ i=16465
+
+
+
+ en
+ Active
+
+
+
+
+ FalseState
+
+ i=68
+ i=16465
+
+
+
+ en
+ Inactive
+
+
+
+
+ InputNode
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ SuppressedOrShelved
+
+ i=68
+ i=78
+ i=16406
+
+
+
+ AlarmSuppressionGroupType
+ A & C Suppression Group
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.4
+
+ i=32226
+ i=16405
+
+
+
+ <DigitalVariable>
+
+ i=63
+ i=11508
+ i=32064
+
+
+
+ ShelvedStateMachineType
+ A & C Shelving
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.1
+
+ i=9115
+ i=2930
+ i=2932
+ i=2933
+ i=2935
+ i=2936
+ i=2940
+ i=2942
+ i=2943
+ i=2945
+ i=2949
+ i=24756
+ i=2947
+ i=24758
+ i=2948
+ i=24760
+ i=2771
+
+
+
+ UnshelveTime
+
+ i=68
+ i=78
+ i=2929
+
+
+
+ Unshelved
+
+ i=6098
+ i=2935
+ i=2936
+ i=2940
+ i=2943
+ i=2307
+ i=2929
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2930
+
+
+ 1
+
+
+
+ TimedShelved
+
+ i=6100
+ i=2935
+ i=2940
+ i=2942
+ i=2945
+ i=2307
+ i=2929
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2932
+
+
+ 2
+
+
+
+ OneShotShelved
+
+ i=6101
+ i=2936
+ i=2942
+ i=2943
+ i=2945
+ i=2307
+ i=2929
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2933
+
+
+ 3
+
+
+
+ UnshelvedToTimedShelved
+
+ i=11322
+ i=2930
+ i=2932
+ i=2915
+ i=2949
+ i=24756
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2935
+
+
+ 12
+
+
+
+ UnshelvedToOneShotShelved
+
+ i=11323
+ i=2930
+ i=2933
+ i=2915
+ i=2948
+ i=24760
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2936
+
+
+ 13
+
+
+
+ TimedShelvedToUnshelved
+
+ i=11324
+ i=2932
+ i=2930
+ i=2915
+ i=2947
+ i=24758
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2940
+
+
+ 21
+
+
+
+ TimedShelvedToOneShotShelved
+
+ i=11325
+ i=2932
+ i=2933
+ i=2915
+ i=2948
+ i=24760
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2942
+
+
+ 23
+
+
+
+ OneShotShelvedToUnshelved
+
+ i=11326
+ i=2933
+ i=2930
+ i=2915
+ i=2947
+ i=24758
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2943
+
+
+ 31
+
+
+
+ OneShotShelvedToTimedShelved
+
+ i=11327
+ i=2933
+ i=2932
+ i=2915
+ i=2949
+ i=24756
+ i=2310
+ i=2929
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2945
+
+
+ 32
+
+
+
+ TimedShelve
+ A & C Shelving
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.4
+
+ i=2991
+ i=2935
+ i=2945
+ i=11093
+ i=78
+ i=2929
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=2949
+
+
+
+
+
+ i=297
+
+
+
+ ShelvingTime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ TimedShelve2
+ A & C Shelving2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.5
+
+ i=24757
+ i=2935
+ i=2945
+ i=11093
+ i=80
+ i=2929
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24756
+
+
+
+
+
+ i=297
+
+
+
+ ShelvingTime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ Unshelve
+ A & C Shelving
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.2
+
+ i=2940
+ i=2943
+ i=11093
+ i=78
+ i=2929
+
+
+
+ Unshelve2
+ A & C Shelving2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.3
+
+ i=24759
+ i=2940
+ i=2943
+ i=11093
+ i=80
+ i=2929
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24758
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ OneShotShelve
+ A & C Shelving
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.6
+
+ i=2936
+ i=2942
+ i=11093
+ i=78
+ i=2929
+
+
+
+ OneShotShelve2
+ A & C Shelving2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.17/#5.8.17.7
+
+ i=24761
+ i=2936
+ i=2942
+ i=11093
+ i=80
+ i=2929
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24760
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+
+
+
+
+
+
+ LimitAlarmType
+ A & C Exclusive Limit
+ A & C Non-Exclusive Limit
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.18
+
+ i=11124
+ i=11125
+ i=11126
+ i=11127
+ i=16572
+ i=16573
+ i=16574
+ i=16575
+ i=24770
+ i=24771
+ i=24772
+ i=24773
+ i=24774
+ i=24775
+ i=24776
+ i=24777
+ i=2915
+
+
+
+ HighHighLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ HighLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ LowLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ LowLowLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ BaseHighHighLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ BaseHighLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ BaseLowLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ BaseLowLowLimit
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ SeverityHighHigh
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ SeverityHigh
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ SeverityLow
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ SeverityLowLow
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ HighHighDeadband
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ HighDeadband
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ LowDeadband
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ LowLowDeadband
+
+ i=68
+ i=80
+ i=2955
+
+
+
+ ExclusiveLimitStateMachineType
+ A & C Exclusive Limit
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.19/#5.8.19.2
+
+ i=9329
+ i=9331
+ i=9333
+ i=9335
+ i=9337
+ i=9338
+ i=9339
+ i=9340
+ i=2771
+
+
+
+ HighHigh
+
+ i=9330
+ i=9339
+ i=9340
+ i=2307
+ i=9318
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=9329
+
+
+ 1
+
+
+
+ High
+
+ i=9332
+ i=9339
+ i=9340
+ i=2307
+ i=9318
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=9331
+
+
+ 2
+
+
+
+ Low
+
+ i=9334
+ i=9337
+ i=9338
+ i=2307
+ i=9318
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=9333
+
+
+ 3
+
+
+
+ LowLow
+
+ i=9336
+ i=9337
+ i=9338
+ i=2307
+ i=9318
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=9335
+
+
+ 4
+
+
+
+ LowLowToLow
+
+ i=11340
+ i=9335
+ i=9333
+ i=2915
+ i=2310
+ i=9318
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=9337
+
+
+ 43
+
+
+
+ LowToLowLow
+
+ i=11341
+ i=9333
+ i=9335
+ i=2915
+ i=2310
+ i=9318
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=9338
+
+
+ 34
+
+
+
+ HighHighToHigh
+
+ i=11342
+ i=9329
+ i=9331
+ i=2915
+ i=2310
+ i=9318
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=9339
+
+
+ 12
+
+
+
+ HighToHighHigh
+
+ i=11343
+ i=9331
+ i=9329
+ i=2915
+ i=2310
+ i=9318
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=9340
+
+
+ 21
+
+
+
+ ExclusiveLimitAlarmType
+ A & C Exclusive Limit
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.19/#5.8.19.3
+
+ i=9398
+ i=9455
+ i=2955
+
+
+
+ ActiveState
+
+ i=9399
+ i=9455
+ i=8995
+ i=78
+ i=9341
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9398
+
+
+
+ LimitState
+
+ i=9456
+ i=9461
+ i=9398
+ i=9318
+ i=78
+ i=9341
+
+
+
+ CurrentState
+
+ i=9457
+ i=2760
+ i=78
+ i=9455
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9456
+
+
+
+ LastTransition
+
+ i=9462
+ i=9465
+ i=2767
+ i=80
+ i=9455
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9461
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=9461
+
+
+
+ NonExclusiveLimitAlarmType
+ A & C Non-Exclusive Limit
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.20
+
+ i=9963
+ i=10020
+ i=10029
+ i=10038
+ i=10047
+ i=2955
+
+
+
+ ActiveState
+
+ i=9964
+ i=10020
+ i=10029
+ i=10038
+ i=10047
+ i=8995
+ i=78
+ i=9906
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=9963
+
+
+
+ HighHighState
+
+ i=10021
+ i=10025
+ i=10027
+ i=10028
+ i=9963
+ i=8995
+ i=80
+ i=9906
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=10020
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=10020
+
+
+
+ TrueState
+
+ i=68
+ i=10020
+
+
+
+ en
+ HighHigh active
+
+
+
+
+ FalseState
+
+ i=68
+ i=10020
+
+
+
+ en
+ HighHigh inactive
+
+
+
+
+ HighState
+
+ i=10030
+ i=10034
+ i=10036
+ i=10037
+ i=9963
+ i=8995
+ i=80
+ i=9906
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=10029
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=10029
+
+
+
+ TrueState
+
+ i=68
+ i=10029
+
+
+
+ en
+ High active
+
+
+
+
+ FalseState
+
+ i=68
+ i=10029
+
+
+
+ en
+ High inactive
+
+
+
+
+ LowState
+
+ i=10039
+ i=10043
+ i=10045
+ i=10046
+ i=9963
+ i=8995
+ i=80
+ i=9906
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=10038
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=10038
+
+
+
+ TrueState
+
+ i=68
+ i=10038
+
+
+
+ en
+ Low active
+
+
+
+
+ FalseState
+
+ i=68
+ i=10038
+
+
+
+ en
+ Low inactive
+
+
+
+
+ LowLowState
+
+ i=10048
+ i=10052
+ i=10054
+ i=10055
+ i=9963
+ i=8995
+ i=80
+ i=9906
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=10047
+
+
+
+ TransitionTime
+
+ i=68
+ i=80
+ i=10047
+
+
+
+ TrueState
+
+ i=68
+ i=10047
+
+
+
+ en
+ LowLow active
+
+
+
+
+ FalseState
+
+ i=68
+ i=10047
+
+
+
+ en
+ LowLow inactive
+
+
+
+
+ NonExclusiveLevelAlarmType
+ A & C Non-Exclusive Level
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.21/#5.8.21.2
+
+ i=9906
+
+
+
+ ExclusiveLevelAlarmType
+ A & C Exclusive Level
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.21/#5.8.21.3
+
+ i=9341
+
+
+
+ NonExclusiveDeviationAlarmType
+ A & C Non-Exclusive Deviation
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.22/#5.8.22.2
+
+ i=10522
+ i=16776
+ i=9906
+
+
+
+ SetpointNode
+
+ i=68
+ i=78
+ i=10368
+
+
+
+ BaseSetpointNode
+
+ i=68
+ i=80
+ i=10368
+
+
+
+ NonExclusiveRateOfChangeAlarmType
+ A & C Non-Exclusive RateOfChange
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.23/#5.8.23.2
+
+ i=16858
+ i=9906
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=80
+ i=10214
+
+
+
+ ExclusiveDeviationAlarmType
+ A & C Exclusive Deviation
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.22/#5.8.22.3
+
+ i=9905
+ i=16817
+ i=9341
+
+
+
+ SetpointNode
+
+ i=68
+ i=78
+ i=9764
+
+
+
+ BaseSetpointNode
+
+ i=68
+ i=80
+ i=9764
+
+
+
+ ExclusiveRateOfChangeAlarmType
+ A & C Exclusive RateOfChange
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.23/#5.8.23.3
+
+ i=16899
+ i=9341
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=80
+ i=9623
+
+
+
+ DiscreteAlarmType
+ A & C Discrete
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.1
+
+ i=2915
+
+
+
+ OffNormalAlarmType
+ A & C OffNormal
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.2
+
+ i=11158
+ i=10523
+
+
+
+ NormalState
+
+ i=68
+ i=78
+ i=10637
+
+
+
+ SystemOffNormalAlarmType
+ A & C SystemOffNormal
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.3
+
+ i=10637
+
+
+
+ TripAlarmType
+ A & C Trip
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.4
+
+ i=10637
+
+
+
+ InstrumentDiagnosticAlarmType
+ A & C InstrumentDiagnostic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.5
+
+ i=10637
+
+
+
+ SystemDiagnosticAlarmType
+ A & C SystemDiagnostic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.6
+
+ i=10637
+
+
+
+ CertificateExpirationAlarmType
+ A & C CertificateExpiration
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.24/#5.8.24.7
+
+ i=13325
+ i=14900
+ i=13326
+ i=13327
+ i=11753
+
+
+
+ ExpirationDate
+
+ i=68
+ i=78
+ i=13225
+
+
+
+ ExpirationLimit
+
+ i=68
+ i=80
+ i=13225
+
+
+
+ CertificateType
+
+ i=68
+ i=78
+ i=13225
+
+
+
+ Certificate
+
+ i=68
+ i=78
+ i=13225
+
+
+
+ DiscrepancyAlarmType
+ A & C Discrepancy
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.8.25
+
+ i=17215
+ i=17216
+ i=17217
+ i=2915
+
+
+
+ TargetValueNode
+
+ i=68
+ i=78
+ i=17080
+
+
+
+ ExpectedTime
+
+ i=68
+ i=78
+ i=17080
+
+
+
+ Tolerance
+
+ i=68
+ i=80
+ i=17080
+
+
+
+ BaseConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.2
+
+ i=58
+
+
+
+ ProcessConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.3
+
+ i=11163
+
+
+
+ MaintenanceConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.4
+
+ i=11163
+
+
+
+ SystemConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.5
+
+ i=11163
+
+
+
+ SafetyConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.6
+
+ i=11163
+
+
+
+ HighlyManagedAlarmConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.7
+
+ i=11163
+
+
+
+ TrainingConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.8
+
+ i=11163
+
+
+
+ StatisticalConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.9
+
+ i=11163
+
+
+
+ TestingConditionClassType
+ A & C ConditionClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.9.10
+
+ i=11163
+
+
+
+ AuditConditionEventType
+ A & C Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.2
+
+ i=2127
+
+
+
+ AuditConditionEnableEventType
+ A & C Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.3
+
+ i=2790
+
+
+
+ AuditConditionCommentEventType
+ A & C Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.4
+
+ i=17222
+ i=11851
+ i=2790
+
+
+
+ ConditionEventId
+
+ i=68
+ i=78
+ i=2829
+
+
+
+ Comment
+
+ i=68
+ i=78
+ i=2829
+
+
+
+ AuditConditionRespondEventType
+ A & C Dialog Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.5
+
+ i=11852
+ i=2790
+
+
+
+ SelectedResponse
+
+ i=68
+ i=78
+ i=8927
+
+
+
+ AuditConditionAcknowledgeEventType
+ A & C Acknowledge Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.6
+
+ i=17223
+ i=11853
+ i=2790
+
+
+
+ ConditionEventId
+
+ i=68
+ i=78
+ i=8944
+
+
+
+ Comment
+
+ i=68
+ i=78
+ i=8944
+
+
+
+ AuditConditionConfirmEventType
+ A & C Confirm Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.7
+
+ i=17224
+ i=11854
+ i=2790
+
+
+
+ ConditionEventId
+
+ i=68
+ i=78
+ i=8961
+
+
+
+ Comment
+
+ i=68
+ i=78
+ i=8961
+
+
+
+ AuditConditionShelvingEventType
+ A & C Shelving Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.8
+
+ i=11855
+ i=2790
+
+
+
+ ShelvingTime
+
+ i=68
+ i=80
+ i=11093
+
+
+
+ AuditConditionSuppressionEventType
+ A & C Suppression Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.9
+
+ i=2790
+
+
+
+ AuditConditionSilenceEventType
+ A & C Silencing Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.10
+
+ i=2790
+
+
+
+ AuditConditionResetEventType
+ A & C Latching Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.11
+
+ i=2790
+
+
+
+ AuditConditionOutOfServiceEventType
+ A & C OutOfService Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.10.12
+
+ i=2790
+
+
+
+ RefreshStartEventType
+ A & C Refresh
+ A & C Refresh2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.11.2
+
+ i=2130
+
+
+
+ RefreshEndEventType
+ A & C Refresh
+ A & C Refresh2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.11.3
+
+ i=2130
+
+
+
+ RefreshRequiredEventType
+ A & C Refresh
+ A & C Refresh2
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.11.4
+
+ i=2130
+
+
+
+ HasCondition
+ A & C Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/5.12
+
+ i=32
+
+ IsConditionOf
+
+
+ HasEffectDisable
+ A & C StateMachine Trigger
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/7.2
+
+ i=54
+
+ MayBeDisabledBy
+
+
+ HasEffectEnable
+ A & C Statemachine Trigger
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/7.3
+
+ i=54
+
+ MayBeEnabledBy
+
+
+ HasEffectSuppressed
+ A & C Statemachine Suppression Trigger
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/7.4
+
+ i=54
+
+ MayBeSuppressedBy
+
+
+ HasEffectUnsuppressed
+ A & C Statemachine Suppression Trigger
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/7.5
+
+ i=54
+
+ MayBeUnsuppressedBy
+
+
+ AlarmMetricsType
+ A & C Alarm Metrics
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/9.2
+
+ i=17280
+ i=17991
+ i=17281
+ i=17282
+ i=17284
+ i=17286
+ i=17283
+ i=17288
+ i=18666
+ i=58
+
+
+
+ AlarmCount
+
+ i=63
+ i=78
+ i=17279
+
+
+
+ StartTime
+
+ i=63
+ i=78
+ i=17279
+
+
+
+ MaximumActiveState
+
+ i=63
+ i=78
+ i=17279
+
+
+
+ MaximumUnAck
+
+ i=63
+ i=78
+ i=17279
+
+
+
+ CurrentAlarmRate
+
+ i=17285
+ i=17277
+ i=78
+ i=17279
+
+
+
+ Rate
+
+ i=68
+ i=78
+ i=17284
+
+
+
+ MaximumAlarmRate
+
+ i=17287
+ i=17277
+ i=78
+ i=17279
+
+
+
+ Rate
+
+ i=68
+ i=78
+ i=17286
+
+
+
+ MaximumReAlarmCount
+
+ i=63
+ i=78
+ i=17279
+
+
+
+ AverageAlarmRate
+
+ i=17289
+ i=17277
+ i=78
+ i=17279
+
+
+
+ Rate
+
+ i=68
+ i=78
+ i=17288
+
+
+
+ Reset
+ A & C Alarm Metrics
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/9.4
+
+ i=2127
+ i=78
+ i=17279
+
+
+
+ AlarmRateVariableType
+ A & C Alarm Metrics
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/9.3
+
+ i=17278
+ i=63
+
+
+
+ Rate
+
+ i=68
+ i=78
+ i=17277
+
+
+
+ AlarmStateVariableType
+ A & C Summary
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/8.2
+
+ i=32245
+ i=32246
+ i=32247
+ i=32248
+ i=32249
+ i=32250
+ i=63
+
+
+
+ HighestActiveSeverity
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ HighestUnackSeverity
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ ActiveCount
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ UnacknowledgedCount
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ UnconfirmedCount
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ Filter
+
+ i=68
+ i=78
+ i=32244
+
+
+
+ AlarmMask
+ A & C Summary
+ https://reference.opcfoundation.org/v105/Core/docs/Part9/8.3
+
+ i=32252
+ i=5
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=32251
+
+
+
+
+ Active
+
+
+ Unacknowledged
+
+
+ Unconfirmed
+
+
+
+
+
+ ProgramStateMachineType
+ Program Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/5.2.1
+
+ i=3830
+ i=3835
+ i=2392
+ i=2393
+ i=2394
+ i=2395
+ i=2396
+ i=2397
+ i=2398
+ i=2399
+ i=3850
+ i=2406
+ i=2400
+ i=2402
+ i=2404
+ i=2408
+ i=2410
+ i=2412
+ i=2414
+ i=2416
+ i=2418
+ i=2420
+ i=2422
+ i=2424
+ i=2426
+ i=2427
+ i=2428
+ i=2429
+ i=2430
+ i=2771
+
+
+
+ CurrentState
+
+ i=3831
+ i=3833
+ i=2760
+ i=78
+ i=2391
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=3830
+
+
+
+ Number
+
+ i=68
+ i=78
+ i=3830
+
+
+
+ LastTransition
+
+ i=3836
+ i=3838
+ i=3839
+ i=2767
+ i=78
+ i=2391
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=3835
+
+
+
+ Number
+
+ i=68
+ i=78
+ i=3835
+
+
+
+ TransitionTime
+
+ i=68
+ i=78
+ i=3835
+
+
+
+ Creatable
+
+ i=68
+ i=2391
+
+
+
+ Deletable
+
+ i=68
+ i=78
+ i=2391
+
+
+
+ AutoDelete
+
+ i=68
+ i=78
+ i=2391
+
+
+
+ RecycleCount
+
+ i=68
+ i=78
+ i=2391
+
+
+
+ InstanceCount
+
+ i=68
+ i=2391
+
+
+
+ MaxInstanceCount
+
+ i=68
+ i=2391
+
+
+
+ MaxRecycleCount
+
+ i=68
+ i=2391
+
+
+
+ ProgramDiagnostic
+
+ i=3840
+ i=3841
+ i=3842
+ i=3843
+ i=3844
+ i=3845
+ i=3846
+ i=3847
+ i=15038
+ i=15040
+ i=3848
+ i=3849
+ i=15383
+ i=80
+ i=2391
+
+
+
+ CreateSessionId
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ CreateClientName
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ InvocationCreationTime
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastTransitionTime
+
+ i=68
+ i=78
+ i=2399
+
+
+
+ LastMethodCall
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodSessionId
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodInputArguments
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodOutputArguments
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodInputValues
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodOutputValues
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodCallTime
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ LastMethodReturnStatus
+
+ i=63
+ i=78
+ i=2399
+
+
+
+ FinalResultData
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/A.2.6/#A.2.6.2
+
+ i=58
+ i=80
+ i=2391
+
+
+
+ Halted
+
+ i=2407
+ i=2408
+ i=2412
+ i=2420
+ i=2424
+ i=2307
+ i=2391
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2406
+
+
+ 11
+
+
+
+ Ready
+
+ i=2401
+ i=2408
+ i=2410
+ i=2414
+ i=2422
+ i=2424
+ i=2307
+ i=2391
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2400
+
+
+ 12
+
+
+
+ Running
+
+ i=2403
+ i=2410
+ i=2412
+ i=2414
+ i=2416
+ i=2418
+ i=2307
+ i=2391
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2402
+
+
+ 13
+
+
+
+ Suspended
+
+ i=2405
+ i=2416
+ i=2418
+ i=2420
+ i=2422
+ i=2307
+ i=2391
+
+
+
+ StateNumber
+
+ i=68
+ i=78
+ i=2404
+
+
+ 14
+
+
+
+ HaltedToReady
+
+ i=2409
+ i=2406
+ i=2400
+ i=2430
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2408
+
+
+ 1
+
+
+
+ ReadyToRunning
+
+ i=2411
+ i=2400
+ i=2402
+ i=2426
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2410
+
+
+ 2
+
+
+
+ RunningToHalted
+
+ i=2413
+ i=2402
+ i=2406
+ i=2429
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2412
+
+
+ 3
+
+
+
+ RunningToReady
+
+ i=2415
+ i=2402
+ i=2400
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2414
+
+
+ 4
+
+
+
+ RunningToSuspended
+
+ i=2417
+ i=2402
+ i=2404
+ i=2427
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2416
+
+
+ 5
+
+
+
+ SuspendedToRunning
+
+ i=2419
+ i=2404
+ i=2402
+ i=2428
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2418
+
+
+ 6
+
+
+
+ SuspendedToHalted
+
+ i=2421
+ i=2404
+ i=2406
+ i=2429
+ i=2430
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2420
+
+
+ 7
+
+
+
+ SuspendedToReady
+
+ i=2423
+ i=2404
+ i=2400
+ i=2378
+ i=11856
+ i=2430
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2422
+
+
+ 8
+
+
+
+ ReadyToHalted
+
+ i=2425
+ i=2400
+ i=2406
+ i=2429
+ i=2378
+ i=11856
+ i=2310
+ i=2391
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=2424
+
+
+ 9
+
+
+
+ Start
+
+ i=2410
+ i=11508
+ i=2391
+
+
+
+ Suspend
+
+ i=2416
+ i=11508
+ i=2391
+
+
+
+ Resume
+
+ i=2418
+ i=11508
+ i=2391
+
+
+
+ Halt
+
+ i=2412
+ i=2420
+ i=2424
+ i=11508
+ i=2391
+
+
+
+ Reset
+
+ i=2408
+ i=2420
+ i=2422
+ i=11508
+ i=2391
+
+
+
+ ProgramTransitionEventType
+ Program Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/5.2.5/#5.2.5.2
+
+ i=2379
+ i=2311
+
+
+
+ IntermediateResult
+
+ i=63
+ i=78
+ i=2378
+
+
+
+ AuditProgramTransitionEventType
+ Program Auditing
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/5.2.6
+
+ i=11875
+ i=2315
+
+
+
+ TransitionNumber
+
+ i=68
+ i=78
+ i=11856
+
+
+
+ ProgramTransitionAuditEventType
+
+ i=3825
+ i=2315
+
+
+
+ Transition
+
+ i=3826
+ i=2767
+ i=78
+ i=3806
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=3825
+
+
+
+ ProgramDiagnosticType
+
+ i=2381
+ i=2382
+ i=2383
+ i=2384
+ i=2385
+ i=2386
+ i=2387
+ i=2388
+ i=2389
+ i=2390
+ i=63
+
+
+
+ CreateSessionId
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ CreateClientName
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ InvocationCreationTime
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastTransitionTime
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodCall
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodSessionId
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodInputArguments
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodOutputArguments
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodCallTime
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ LastMethodReturnStatus
+
+ i=68
+ i=78
+ i=2380
+
+
+
+ ProgramDiagnostic2Type
+ Program Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/5.2.9
+
+ i=15384
+ i=15385
+ i=15386
+ i=15387
+ i=15388
+ i=15389
+ i=15390
+ i=15391
+ i=15392
+ i=15393
+ i=15394
+ i=15395
+ i=63
+
+
+
+ CreateSessionId
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ CreateClientName
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ InvocationCreationTime
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastTransitionTime
+
+ i=68
+ i=78
+ i=15383
+
+
+
+ LastMethodCall
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodSessionId
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodInputArguments
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodOutputArguments
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodInputValues
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodOutputValues
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodCallTime
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ LastMethodReturnStatus
+
+ i=63
+ i=78
+ i=15383
+
+
+
+ Annotations
+
+ i=68
+
+
+
+ HistoricalDataConfigurationType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.2.2
+
+ i=3059
+ i=11876
+ i=2323
+ i=2324
+ i=2325
+ i=2326
+ i=2327
+ i=2328
+ i=11499
+ i=11500
+ i=19092
+ i=58
+
+
+
+ AggregateConfiguration
+
+ i=11168
+ i=11169
+ i=11170
+ i=11171
+ i=11187
+ i=78
+ i=2318
+
+
+
+ TreatUncertainAsBad
+
+ i=68
+ i=78
+ i=3059
+
+
+
+ PercentDataBad
+
+ i=68
+ i=78
+ i=3059
+
+
+
+ PercentDataGood
+
+ i=68
+ i=78
+ i=3059
+
+
+
+ UseSlopedExtrapolation
+
+ i=68
+ i=78
+ i=3059
+
+
+
+ AggregateFunctions
+
+ i=61
+ i=80
+ i=2318
+
+
+
+ Stepped
+
+ i=68
+ i=78
+ i=2318
+
+
+
+ Definition
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ MaxTimeInterval
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ MinTimeInterval
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ ExceptionDeviation
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ ExceptionDeviationFormat
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ StartOfArchive
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ StartOfOnlineArchive
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ ServerTimestampSupported
+
+ i=68
+ i=80
+ i=2318
+
+
+
+ HA Configuration
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.2.4
+
+ i=11203
+ i=11208
+ i=2318
+
+
+
+ AggregateConfiguration
+
+ i=11204
+ i=11205
+ i=11206
+ i=11207
+ i=11187
+ i=11202
+
+
+
+ TreatUncertainAsBad
+
+ i=68
+ i=11203
+
+
+
+ PercentDataBad
+
+ i=68
+ i=11203
+
+
+
+ PercentDataGood
+
+ i=68
+ i=11203
+
+
+
+ UseSlopedExtrapolation
+
+ i=68
+ i=11203
+
+
+
+ Stepped
+
+ i=68
+ i=11202
+
+
+
+ HistoricalEventFilter
+
+ i=68
+
+
+
+ HistoryServerCapabilitiesType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.4.2
+
+ i=2331
+ i=2332
+ i=11268
+ i=11269
+ i=2334
+ i=2335
+ i=2336
+ i=2337
+ i=2338
+ i=11278
+ i=11279
+ i=11280
+ i=11501
+ i=11270
+ i=11172
+ i=19094
+ i=58
+
+
+
+ AccessHistoryDataCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ AccessHistoryEventsCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ MaxReturnDataValues
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ MaxReturnEventValues
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ InsertDataCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ ReplaceDataCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ UpdateDataCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ DeleteRawCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ DeleteAtTimeCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ InsertEventCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ ReplaceEventCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ UpdateEventCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ DeleteEventCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ InsertAnnotationCapability
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ AggregateFunctions
+
+ i=61
+ i=78
+ i=2330
+
+
+
+ ServerTimestampSupported
+
+ i=68
+ i=78
+ i=2330
+
+
+
+ AuditHistoryEventUpdateEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.2
+
+ i=3025
+ i=3028
+ i=3003
+ i=3029
+ i=3030
+ i=2104
+
+
+
+ UpdatedNode
+
+ i=68
+ i=78
+ i=2999
+
+
+
+ PerformInsertReplace
+
+ i=68
+ i=78
+ i=2999
+
+
+
+ Filter
+
+ i=68
+ i=78
+ i=2999
+
+
+
+ NewValues
+
+ i=68
+ i=78
+ i=2999
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=2999
+
+
+
+ AuditHistoryValueUpdateEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.3
+
+ i=3026
+ i=3031
+ i=3032
+ i=3033
+ i=2104
+
+
+
+ UpdatedNode
+
+ i=68
+ i=78
+ i=3006
+
+
+
+ PerformInsertReplace
+
+ i=68
+ i=78
+ i=3006
+
+
+
+ NewValues
+
+ i=68
+ i=78
+ i=3006
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=3006
+
+
+
+ AuditHistoryAnnotationUpdateEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.4
+
+ i=19293
+ i=19294
+ i=19295
+ i=2104
+
+
+
+ PerformInsertReplace
+
+ i=68
+ i=78
+ i=19095
+
+
+
+ NewValues
+
+ i=68
+ i=78
+ i=19095
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=19095
+
+
+
+ AuditHistoryDeleteEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.5
+
+ i=3027
+ i=2104
+
+
+
+ UpdatedNode
+
+ i=68
+ i=78
+ i=3012
+
+
+
+ AuditHistoryRawModifyDeleteEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.6
+
+ i=3015
+ i=3016
+ i=3017
+ i=3034
+ i=3012
+
+
+
+ IsDeleteModified
+
+ i=68
+ i=78
+ i=3014
+
+
+
+ StartTime
+
+ i=68
+ i=78
+ i=3014
+
+
+
+ EndTime
+
+ i=68
+ i=78
+ i=3014
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=3014
+
+
+
+ AuditHistoryAtTimeDeleteEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.7
+
+ i=3020
+ i=3021
+ i=3012
+
+
+
+ ReqTimes
+
+ i=68
+ i=78
+ i=3019
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=3019
+
+
+
+ AuditHistoryEventDeleteEventType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.6.8
+
+ i=3023
+ i=3024
+ i=3012
+
+
+
+ EventIds
+
+ i=68
+ i=78
+ i=3022
+
+
+
+ OldValues
+
+ i=68
+ i=78
+ i=3022
+
+
+
+ TrustListType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.1
+
+ i=12542
+ i=19296
+ i=32254
+ i=23563
+ i=12543
+ i=12546
+ i=12548
+ i=12550
+ i=11575
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=12522
+
+
+
+ UpdateFrequency
+
+ i=68
+ i=80
+ i=12522
+
+
+
+ ActivityTimeout
+
+ i=68
+ i=80
+ i=12522
+
+
+
+ DefaultValidationOptions
+
+ i=68
+ i=80
+ i=12522
+
+
+
+ OpenWithMasks
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.2
+
+ i=12544
+ i=12545
+ i=78
+ i=12522
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12543
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12543
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.3
+
+ i=12705
+ i=12547
+ i=78
+ i=12522
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12546
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12546
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.4
+
+ i=12549
+ i=78
+ i=12522
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12548
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.5
+
+ i=12551
+ i=78
+ i=12522
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12550
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ TrustListValidationOptions
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.8
+
+ i=23565
+ i=7
+
+
+
+ Ignore errors related to the validity time of the Certificate.
+
+
+ Ignore mismatches between the host name or ApplicationUri.
+
+
+ Ignore errors if the revocation list cannot be found for the issuer of the Certificate.
+
+
+ Ignore errors if an issuer has an expired Certificate.
+
+
+ Ignore errors if the revocation list cannot be found for any issuer of issuer Certificates.
+
+
+ Check the revocation status online.
+
+
+ Check the revocation status offline.
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=23564
+
+
+
+
+ SuppressCertificateExpired
+
+
+ SuppressHostNameInvalid
+
+
+ SuppressRevocationStatusUnknown
+
+
+ SuppressIssuerCertificateExpired
+
+
+ SuppressIssuerRevocationStatusUnknown
+
+
+ CheckRevocationStatusOnline
+
+
+ CheckRevocationStatusOffline
+
+
+
+
+
+ TrustListMasks
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.7
+
+ i=12553
+ i=29
+
+
+
+ No fields are provided.
+
+
+ The TrustedCertificates are provided.
+
+
+ The TrustedCrls are provided.
+
+
+ The IssuerCertificates are provided.
+
+
+ The IssuerCrls are provided.
+
+
+ All fields are provided.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=12552
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ None
+
+
+ No fields are provided.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ TrustedCertificates
+
+
+ The TrustedCertificates are provided.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ TrustedCrls
+
+
+ The TrustedCrls are provided.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ IssuerCertificates
+
+
+ The IssuerCertificates are provided.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ IssuerCrls
+
+
+ The IssuerCrls are provided.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 15
+
+ All
+
+
+ All fields are provided.
+
+
+
+
+
+
+
+
+ TrustListDataType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.6
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ TrustListOutOfDateAlarmType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.9
+
+ i=19446
+ i=19447
+ i=19448
+ i=11753
+
+
+
+ TrustListId
+
+ i=68
+ i=78
+ i=19297
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=19297
+
+
+
+ UpdateFrequency
+
+ i=68
+ i=78
+ i=19297
+
+
+
+ CertificateGroupType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.3/#7.8.3.1
+
+ i=13599
+ i=13631
+ i=23526
+ i=19450
+ i=20143
+ i=13225
+ i=58
+
+
+
+ TrustList
+
+ i=13600
+ i=13601
+ i=13602
+ i=13603
+ i=13605
+ i=13608
+ i=13610
+ i=13613
+ i=13615
+ i=13618
+ i=13620
+ i=13621
+ i=13624
+ i=13627
+ i=13629
+ i=12522
+ i=78
+ i=12555
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13599
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13599
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13599
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13599
+
+
+
+ Open
+
+ i=13606
+ i=13607
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13605
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13605
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13609
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13608
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13611
+ i=13612
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13610
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13610
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13614
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13613
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13616
+ i=13617
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13615
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13615
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13619
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13618
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13599
+
+
+
+ OpenWithMasks
+
+ i=13622
+ i=13623
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13621
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13621
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13625
+ i=13626
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13624
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13624
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13628
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13627
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13630
+ i=78
+ i=13599
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13629
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=12555
+
+
+
+ GetRejectedList
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.3/#7.8.3.2
+
+ i=23527
+ i=80
+ i=12555
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23526
+
+
+
+
+
+ i=297
+
+
+
+ Certificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CertificateExpired
+
+ i=19451
+ i=19452
+ i=19453
+ i=19454
+ i=19455
+ i=19456
+ i=19458
+ i=19459
+ i=19460
+ i=19461
+ i=19464
+ i=19465
+ i=19466
+ i=19467
+ i=19476
+ i=19478
+ i=19480
+ i=19482
+ i=19483
+ i=19484
+ i=19485
+ i=19487
+ i=19505
+ i=19509
+ i=19518
+ i=20101
+ i=20138
+ i=20139
+ i=20141
+ i=20142
+ i=13225
+ i=80
+ i=12555
+
+
+
+ EventId
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ EventType
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ SourceNode
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ SourceName
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Time
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ ReceiveTime
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Message
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Severity
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ ConditionClassId
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ ConditionClassName
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ ConditionName
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ BranchId
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Retain
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ EnabledState
+
+ i=19468
+ i=8995
+ i=78
+ i=19450
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=19467
+
+
+
+ Quality
+
+ i=19477
+ i=9002
+ i=78
+ i=19450
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=19476
+
+
+
+ LastSeverity
+
+ i=19479
+ i=9002
+ i=78
+ i=19450
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=19478
+
+
+
+ Comment
+
+ i=19481
+ i=9002
+ i=78
+ i=19450
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=19480
+
+
+
+ ClientUserId
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Disable
+
+ i=2803
+ i=78
+ i=19450
+
+
+
+ Enable
+
+ i=2803
+ i=78
+ i=19450
+
+
+
+ AddComment
+
+ i=19486
+ i=2829
+ i=78
+ i=19450
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=19485
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ AckedState
+
+ i=19488
+ i=8995
+ i=78
+ i=19450
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=19487
+
+
+
+ Acknowledge
+
+ i=19506
+ i=8944
+ i=78
+ i=19450
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=19505
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ ActiveState
+
+ i=19510
+ i=8995
+ i=78
+ i=19450
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=19509
+
+
+
+ InputNode
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ SuppressedOrShelved
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ NormalState
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ ExpirationDate
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ CertificateType
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ Certificate
+
+ i=68
+ i=78
+ i=19450
+
+
+
+ TrustListOutOfDate
+
+ i=20144
+ i=20145
+ i=20146
+ i=20147
+ i=20148
+ i=20149
+ i=20151
+ i=20152
+ i=20153
+ i=20154
+ i=20157
+ i=20158
+ i=20159
+ i=20160
+ i=20169
+ i=20171
+ i=20173
+ i=20175
+ i=20176
+ i=20177
+ i=20178
+ i=20180
+ i=20198
+ i=20202
+ i=20211
+ i=20249
+ i=20286
+ i=20287
+ i=20288
+ i=20289
+ i=19297
+ i=80
+ i=12555
+
+
+
+ EventId
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ EventType
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ SourceNode
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ SourceName
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ Time
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ ReceiveTime
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ Message
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ Severity
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ ConditionClassId
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ ConditionClassName
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ ConditionName
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ BranchId
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ Retain
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ EnabledState
+
+ i=20161
+ i=8995
+ i=78
+ i=20143
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=20160
+
+
+
+ Quality
+
+ i=20170
+ i=9002
+ i=78
+ i=20143
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=20169
+
+
+
+ LastSeverity
+
+ i=20172
+ i=9002
+ i=78
+ i=20143
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=20171
+
+
+
+ Comment
+
+ i=20174
+ i=9002
+ i=78
+ i=20143
+
+
+
+ SourceTimestamp
+
+ i=68
+ i=78
+ i=20173
+
+
+
+ ClientUserId
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ Disable
+
+ i=2803
+ i=78
+ i=20143
+
+
+
+ Enable
+
+ i=2803
+ i=78
+ i=20143
+
+
+
+ AddComment
+
+ i=20179
+ i=2829
+ i=78
+ i=20143
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=20178
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ AckedState
+
+ i=20181
+ i=8995
+ i=78
+ i=20143
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=20180
+
+
+
+ Acknowledge
+
+ i=20199
+ i=8944
+ i=78
+ i=20143
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=20198
+
+
+
+
+
+ i=297
+
+
+
+ EventId
+
+ i=15
+
+ -1
+
+
+ The identifier for the event to comment.
+
+
+
+
+
+
+ i=297
+
+
+
+ Comment
+
+ i=21
+
+ -1
+
+
+ The comment to add to the condition.
+
+
+
+
+
+
+
+
+ ActiveState
+
+ i=20203
+ i=8995
+ i=78
+ i=20143
+
+
+
+ Id
+
+ i=68
+ i=78
+ i=20202
+
+
+
+ InputNode
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ SuppressedOrShelved
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ NormalState
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ TrustListId
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ UpdateFrequency
+
+ i=68
+ i=78
+ i=20143
+
+
+
+ CertificateGroupFolderType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.3/#7.8.3.3
+
+ i=13814
+ i=13848
+ i=13882
+ i=13916
+ i=61
+
+
+
+ DefaultApplicationGroup
+
+ i=13815
+ i=13847
+ i=13225
+ i=12555
+ i=78
+ i=13813
+
+
+
+ TrustList
+
+ i=13816
+ i=13817
+ i=13818
+ i=13819
+ i=13821
+ i=13824
+ i=13826
+ i=13829
+ i=13831
+ i=13834
+ i=13836
+ i=13837
+ i=13840
+ i=13843
+ i=13845
+ i=12522
+ i=78
+ i=13814
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13815
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13815
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13815
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13815
+
+
+
+ Open
+
+ i=13822
+ i=13823
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13821
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13821
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13825
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13824
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13827
+ i=13828
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13826
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13826
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13830
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13829
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13832
+ i=13833
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13831
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13831
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13835
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13834
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13815
+
+
+
+ OpenWithMasks
+
+ i=13838
+ i=13839
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13837
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13837
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13841
+ i=13842
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13840
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13840
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13844
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13843
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13846
+ i=78
+ i=13815
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13845
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=13814
+
+
+
+ DefaultHttpsGroup
+
+ i=13849
+ i=13881
+ i=13225
+ i=12555
+ i=80
+ i=13813
+
+
+
+ TrustList
+
+ i=13850
+ i=13851
+ i=13852
+ i=13853
+ i=13855
+ i=13858
+ i=13860
+ i=13863
+ i=13865
+ i=13868
+ i=13870
+ i=13871
+ i=13874
+ i=13877
+ i=13879
+ i=12522
+ i=78
+ i=13848
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13849
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13849
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13849
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13849
+
+
+
+ Open
+
+ i=13856
+ i=13857
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13855
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13855
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13859
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13858
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13861
+ i=13862
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13860
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13860
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13864
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13863
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13866
+ i=13867
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13865
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13865
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13869
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13868
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13849
+
+
+
+ OpenWithMasks
+
+ i=13872
+ i=13873
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13871
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13871
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13875
+ i=13876
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13874
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13874
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13878
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13877
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13880
+ i=78
+ i=13849
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13879
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=13848
+
+
+
+ DefaultUserTokenGroup
+
+ i=13883
+ i=13915
+ i=13225
+ i=12555
+ i=80
+ i=13813
+
+
+
+ TrustList
+
+ i=13884
+ i=13885
+ i=13886
+ i=13887
+ i=13889
+ i=13892
+ i=13894
+ i=13897
+ i=13899
+ i=13902
+ i=13904
+ i=13905
+ i=13908
+ i=13911
+ i=13913
+ i=12522
+ i=78
+ i=13882
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13883
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13883
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13883
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13883
+
+
+
+ Open
+
+ i=13890
+ i=13891
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13889
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13889
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13893
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13892
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13895
+ i=13896
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13894
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13894
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13898
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13897
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13900
+ i=13901
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13899
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13899
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13903
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13902
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13883
+
+
+
+ OpenWithMasks
+
+ i=13906
+ i=13907
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13905
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13905
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13909
+ i=13910
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13908
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13908
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13912
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13911
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13914
+ i=78
+ i=13883
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13913
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=13882
+
+
+
+ <AdditionalGroup>
+
+ i=13917
+ i=13949
+ i=13225
+ i=12555
+ i=11508
+ i=13813
+
+
+
+ TrustList
+
+ i=13918
+ i=13919
+ i=13920
+ i=13921
+ i=13923
+ i=13926
+ i=13928
+ i=13931
+ i=13933
+ i=13936
+ i=13938
+ i=13939
+ i=13942
+ i=13945
+ i=13947
+ i=12522
+ i=78
+ i=13916
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13917
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13917
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13917
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13917
+
+
+
+ Open
+
+ i=13924
+ i=13925
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13923
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13923
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13927
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13926
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13929
+ i=13930
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13928
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13928
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13932
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13931
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13934
+ i=13935
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13933
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13933
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13937
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13936
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13917
+
+
+
+ OpenWithMasks
+
+ i=13940
+ i=13941
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13939
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13939
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13943
+ i=13944
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13942
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13942
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13946
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13945
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13948
+ i=78
+ i=13917
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13947
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=13916
+
+
+
+ CertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.1
+
+ i=58
+
+
+
+ ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.2
+
+ i=12556
+
+
+
+ HttpsCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.3
+
+ i=12556
+
+
+
+ UserCredentialCertificateType
+
+ i=12556
+
+
+
+ RsaMinApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.4
+
+ i=12557
+
+
+
+ RsaSha256ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.5
+
+ i=12557
+
+
+
+ EccApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.6
+
+ i=12557
+
+
+
+ EccNistP256ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.7
+
+ i=23537
+
+
+
+ EccNistP384ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.8
+
+ i=23537
+
+
+
+ EccBrainpoolP256r1ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.9
+
+ i=23537
+
+
+
+ EccBrainpoolP384r1ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.10
+
+ i=23537
+
+
+
+ EccCurve25519ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.11
+
+ i=23537
+
+
+
+ EccCurve448ApplicationCertificateType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.4/#7.8.4.12
+
+ i=23537
+
+
+
+ TrustListUpdateRequestedAuditEventType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.10
+
+ i=2127
+
+
+
+ TrustListUpdatedAuditEventType
+ GDS Certificate Manager Pull Model
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.2/#7.8.2.11
+
+ i=32281
+ i=2052
+
+
+
+ TrustListId
+
+ i=68
+ i=78
+ i=12561
+
+
+
+ TransactionErrorType
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.12
+
+ i=22
+
+
+
+
+
+
+
+
+ TransactionDiagnosticsType
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.11
+
+ i=32287
+ i=32288
+ i=32289
+ i=32290
+ i=32291
+ i=32292
+ i=58
+
+
+
+ StartTime
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ EndTime
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ Result
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ AffectedTrustLists
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ AffectedCertificateGroups
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ Errors
+
+ i=68
+ i=78
+ i=32286
+
+
+
+ ServerConfigurationType
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.3
+
+ i=13950
+ i=25696
+ i=25724
+ i=25697
+ i=12708
+ i=12583
+ i=12584
+ i=12585
+ i=23593
+ i=12616
+ i=32296
+ i=12734
+ i=25698
+ i=12731
+ i=12775
+ i=25699
+ i=32299
+ i=58
+
+
+
+ CertificateGroups
+
+ i=13951
+ i=13813
+ i=78
+ i=12581
+
+
+
+ DefaultApplicationGroup
+
+ i=13952
+ i=13984
+ i=13225
+ i=12555
+ i=78
+ i=13950
+
+
+
+ TrustList
+
+ i=13953
+ i=13954
+ i=13955
+ i=13956
+ i=13958
+ i=13961
+ i=13963
+ i=13966
+ i=13968
+ i=13971
+ i=13973
+ i=13974
+ i=13977
+ i=13980
+ i=13982
+ i=12522
+ i=78
+ i=13951
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=13952
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=13952
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=13952
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=13952
+
+
+
+ Open
+
+ i=13959
+ i=13960
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13958
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13958
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=13962
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13961
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=13964
+ i=13965
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13963
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13963
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=13967
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13966
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=13969
+ i=13970
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13968
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13968
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=13972
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13971
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=13952
+
+
+
+ OpenWithMasks
+
+ i=13975
+ i=13976
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13974
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13974
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=13978
+ i=13979
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13977
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=13977
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=13981
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13980
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=13983
+ i=78
+ i=13952
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=13982
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=13951
+
+
+
+ ApplicationUri
+
+ i=68
+ i=80
+ i=12581
+
+
+
+ ProductUri
+
+ i=68
+ i=80
+ i=12581
+
+
+
+ ApplicationType
+
+ i=68
+ i=80
+ i=12581
+
+
+
+ ServerCapabilities
+
+ i=68
+ i=78
+ i=12581
+
+
+
+ SupportedPrivateKeyFormats
+
+ i=68
+ i=78
+ i=12581
+
+
+
+ MaxTrustListSize
+
+ i=68
+ i=78
+ i=12581
+
+
+
+ MulticastDnsEnabled
+
+ i=68
+ i=78
+ i=12581
+
+
+
+ HasSecureElement
+
+ i=68
+ i=80
+ i=12581
+
+
+
+ UpdateCertificate
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.4
+
+ i=12617
+ i=12618
+ i=78
+ i=12581
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12616
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IssuerCertificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKeyFormat
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12616
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ GetCertificates
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.5
+
+ i=32297
+ i=32298
+ i=80
+ i=12581
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=32296
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=32296
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ Certificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ ApplyChanges
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.6
+
+ i=78
+ i=12581
+
+
+
+ CancelChanges
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.8
+
+ i=80
+ i=12581
+
+
+
+ CreateSigningRequest
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.7
+
+ i=12732
+ i=12733
+ i=78
+ i=12581
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=12731
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SubjectName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RegeneratePrivateKey
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Nonce
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12731
+
+
+
+
+
+ i=297
+
+
+
+ CertificateRequest
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetRejectedList
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.9
+
+ i=12776
+ i=78
+ i=12581
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=12775
+
+
+
+
+
+ i=297
+
+
+
+ Certificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ ResetToServerDefaults
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.10
+
+ i=80
+ i=12581
+
+
+
+ TransactionDiagnostics
+
+ i=32300
+ i=32301
+ i=32302
+ i=32303
+ i=32304
+ i=32305
+ i=32286
+ i=80
+ i=12581
+
+
+
+ StartTime
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ EndTime
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ Result
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ AffectedTrustLists
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ AffectedCertificateGroups
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ Errors
+
+ i=68
+ i=78
+ i=32299
+
+
+
+ CertificateUpdateRequestedAuditEventType
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.13
+
+ i=2127
+
+
+
+ CertificateUpdatedAuditEventType
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.14
+
+ i=13735
+ i=13736
+ i=2052
+
+
+
+ CertificateGroup
+
+ i=68
+ i=78
+ i=12620
+
+
+
+ CertificateType
+
+ i=68
+ i=78
+ i=12620
+
+
+
+ ServerConfiguration
+ Push Model for Global Certificate and TrustList Management
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.2
+
+ i=14053
+ i=25706
+ i=25725
+ i=25707
+ i=12710
+ i=12639
+ i=12640
+ i=12641
+ i=23597
+ i=13737
+ i=12740
+ i=25708
+ i=12737
+ i=12777
+ i=25709
+ i=25710
+ i=2253
+ i=12581
+
+
+
+ CertificateGroups
+
+ i=14156
+ i=14088
+ i=14122
+ i=13813
+ i=12637
+
+
+
+ DefaultApplicationGroup
+
+ i=12642
+ i=14161
+ i=13225
+ i=12555
+ i=14053
+
+
+
+ TrustList
+
+ i=12643
+ i=14157
+ i=14158
+ i=12646
+ i=12647
+ i=12650
+ i=12652
+ i=12655
+ i=12657
+ i=12660
+ i=12662
+ i=12663
+ i=12666
+ i=12668
+ i=12670
+ i=12522
+ i=14156
+
+
+
+ Size
+
+ i=68
+ i=12642
+
+
+
+ Writable
+
+ i=68
+ i=12642
+
+
+
+ UserWritable
+
+ i=68
+ i=12642
+
+
+
+ OpenCount
+
+ i=68
+ i=12642
+
+
+
+ Open
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.2
+
+ i=12648
+ i=12649
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12647
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12647
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.3
+
+ i=12651
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12650
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.4
+
+ i=12653
+ i=12654
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12652
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12652
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.5
+
+ i=12656
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12655
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.6
+
+ i=12658
+ i=12659
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12657
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12657
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+ Base Info FileType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/4.2.7
+
+ i=12661
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12660
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=12642
+
+
+
+ OpenWithMasks
+
+ i=12664
+ i=12665
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12663
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12663
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=14160
+ i=12667
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12666
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12666
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=12669
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12668
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=12671
+ i=12642
+
+
+
+ InputArguments
+
+ i=68
+ i=12670
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=14156
+
+
+
+ DefaultHttpsGroup
+
+ i=14089
+ i=14121
+ i=13225
+ i=12555
+ i=14053
+
+
+
+ TrustList
+
+ i=14090
+ i=14091
+ i=14092
+ i=14093
+ i=14095
+ i=14098
+ i=14100
+ i=14103
+ i=14105
+ i=14108
+ i=14110
+ i=14111
+ i=14114
+ i=14117
+ i=14119
+ i=12522
+ i=14088
+
+
+
+ Size
+
+ i=68
+ i=14089
+
+
+
+ Writable
+
+ i=68
+ i=14089
+
+
+
+ UserWritable
+
+ i=68
+ i=14089
+
+
+
+ OpenCount
+
+ i=68
+ i=14089
+
+
+
+ Open
+
+ i=14096
+ i=14097
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14095
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14095
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=14099
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14098
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=14101
+ i=14102
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14100
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14100
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=14104
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14103
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=14106
+ i=14107
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14105
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14105
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=14109
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14108
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=14089
+
+
+
+ OpenWithMasks
+
+ i=14112
+ i=14113
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14111
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14111
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=14115
+ i=14116
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14114
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14114
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=14118
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14117
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=14120
+ i=14089
+
+
+
+ InputArguments
+
+ i=68
+ i=14119
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=14088
+
+
+
+ DefaultUserTokenGroup
+
+ i=14123
+ i=14155
+ i=13225
+ i=12555
+ i=14053
+
+
+
+ TrustList
+
+ i=14124
+ i=14125
+ i=14126
+ i=14127
+ i=14129
+ i=14132
+ i=14134
+ i=14137
+ i=14139
+ i=14142
+ i=14144
+ i=14145
+ i=14148
+ i=14151
+ i=14153
+ i=12522
+ i=14122
+
+
+
+ Size
+
+ i=68
+ i=14123
+
+
+
+ Writable
+
+ i=68
+ i=14123
+
+
+
+ UserWritable
+
+ i=68
+ i=14123
+
+
+
+ OpenCount
+
+ i=68
+ i=14123
+
+
+
+ Open
+
+ i=14130
+ i=14131
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14129
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14129
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=14133
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14132
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=14135
+ i=14136
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14134
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14134
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=14138
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14137
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=14140
+ i=14141
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14139
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14139
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=14143
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14142
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=14123
+
+
+
+ OpenWithMasks
+
+ i=14146
+ i=14147
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14145
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14145
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=14149
+ i=14150
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14148
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=14148
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=14152
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14151
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=14154
+ i=14123
+
+
+
+ InputArguments
+
+ i=68
+ i=14153
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=14122
+
+
+
+ ApplicationUri
+
+ i=68
+ i=12637
+
+
+
+ ProductUri
+
+ i=68
+ i=12637
+
+
+
+ ApplicationType
+
+ i=68
+ i=12637
+
+
+
+ ServerCapabilities
+
+ i=68
+ i=12637
+
+
+
+ SupportedPrivateKeyFormats
+
+ i=68
+ i=12637
+
+
+
+ MaxTrustListSize
+
+ i=68
+ i=12637
+
+
+
+ MulticastDnsEnabled
+
+ i=68
+ i=12637
+
+
+
+ HasSecureElement
+
+ i=68
+ i=12637
+
+
+
+ UpdateCertificate
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.4
+
+ i=13738
+ i=13739
+ i=12637
+
+
+
+ InputArguments
+
+ i=68
+ i=13737
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IssuerCertificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKeyFormat
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=13737
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ ApplyChanges
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.6
+
+ i=12637
+
+
+
+ CancelChanges
+
+ i=12637
+
+
+
+ CreateSigningRequest
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.7
+
+ i=12738
+ i=12739
+ i=12637
+
+
+
+ InputArguments
+
+ i=68
+ i=12737
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SubjectName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RegeneratePrivateKey
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Nonce
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=12737
+
+
+
+
+
+ i=297
+
+
+
+ CertificateRequest
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetRejectedList
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.9
+
+ i=12778
+ i=12637
+
+
+
+ OutputArguments
+
+ i=68
+ i=12777
+
+
+
+
+
+ i=297
+
+
+
+ Certificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ ResetToServerDefaults
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.10.10
+
+ i=12637
+
+
+
+ SetAdminPassword
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/7.8.10
+
+ i=12637
+
+
+
+ KeyCredentialConfigurationFolderType
+ GDS Key Credential Service Push Model
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.1
+
+ i=17511
+ i=17522
+ i=61
+
+
+
+ <ServiceName>
+
+ i=17512
+ i=17513
+ i=18001
+ i=11508
+ i=17496
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=17511
+
+
+
+ ProfileUri
+
+ i=68
+ i=78
+ i=17511
+
+
+
+ CreateCredential
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.2
+
+ i=17523
+ i=17524
+ i=80
+ i=17496
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17522
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ResourceUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ProfileUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrls
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17522
+
+
+
+
+
+ i=297
+
+
+
+ CredentialNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ KeyCredentialConfiguration
+ GDS Key Credential Service Push Model
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.3
+
+ i=12637
+ i=17496
+
+
+
+ KeyCredentialConfigurationType
+ GDS Key Credential Service Push Model
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.4
+
+ i=18069
+ i=18165
+ i=18004
+ i=18005
+ i=17534
+ i=18006
+ i=18008
+ i=58
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=18001
+
+
+
+ ProfileUri
+
+ i=68
+ i=78
+ i=18001
+
+
+
+ EndpointUrls
+
+ i=68
+ i=80
+ i=18001
+
+
+
+ ServiceStatus
+
+ i=68
+ i=80
+ i=18001
+
+
+
+ GetEncryptingKey
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.5
+
+ i=17535
+ i=17536
+ i=80
+ i=18001
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17534
+
+
+
+
+
+ i=297
+
+
+
+ CredentialId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedSecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17534
+
+
+
+
+
+ i=297
+
+
+
+ PublicKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RevisedSecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ UpdateCredential
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.6
+
+ i=18007
+ i=80
+ i=18001
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=18006
+
+
+
+
+
+ i=297
+
+
+
+ CredentialId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CredentialSecret
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateThumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ DeleteCredential
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.7
+
+ i=80
+ i=18001
+
+
+
+ KeyCredentialAuditEventType
+ GDS Key Credential Service Pull Model
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.5.8
+
+ i=18028
+ i=2127
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=18011
+
+
+
+ KeyCredentialUpdatedAuditEventType
+ Push Model for KeyCredential Service
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.8
+
+ i=18011
+
+
+
+ KeyCredentialDeletedAuditEventType
+ GDS Key Credential Service Push Model
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/8.6.9
+
+ i=18064
+ i=18011
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=18047
+
+
+
+ AuthorizationServicesConfigurationFolderType
+ Authorization Service Configuration Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/9.7.2
+
+ i=23557
+ i=61
+
+
+
+ <ServiceName>
+
+ i=23558
+ i=23559
+ i=23560
+ i=17852
+ i=11508
+ i=23556
+
+
+
+ ServiceUri
+
+ i=68
+ i=78
+ i=23557
+
+
+
+ ServiceCertificate
+
+ i=68
+ i=78
+ i=23557
+
+
+
+ IssuerEndpointUrl
+
+ i=68
+ i=78
+ i=23557
+
+
+
+ AuthorizationServices
+ Authorization Service Configuration Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/9.7.3
+
+ i=12637
+ i=61
+
+
+
+ AuthorizationServiceConfigurationType
+ Authorization Service Configuration Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part12/9.7.4
+
+ i=18072
+ i=17860
+ i=18073
+ i=58
+
+
+
+ ServiceUri
+
+ i=68
+ i=78
+ i=17852
+
+
+
+ ServiceCertificate
+
+ i=68
+ i=78
+ i=17852
+
+
+
+ IssuerEndpointUrl
+
+ i=68
+ i=78
+ i=17852
+
+
+
+ AggregateConfigurationType
+ Aggregate Master Configuration
+ https://reference.opcfoundation.org/v105/Core/docs/Part13/4.2.1/#4.2.1.2
+
+ i=11188
+ i=11189
+ i=11190
+ i=11191
+ i=58
+
+
+
+ TreatUncertainAsBad
+
+ i=68
+ i=78
+ i=11187
+
+
+
+ PercentDataBad
+
+ i=68
+ i=78
+ i=11187
+
+
+
+ PercentDataGood
+
+ i=68
+ i=78
+ i=11187
+
+
+
+ UseSlopedExtrapolation
+
+ i=68
+ i=78
+ i=11187
+
+
+
+ Interpolative
+
+ i=2340
+
+
+
+ Average
+
+ i=2340
+
+
+
+ TimeAverage
+
+ i=2340
+
+
+
+ TimeAverage2
+
+ i=2340
+
+
+
+ Total
+
+ i=2340
+
+
+
+ Total2
+
+ i=2340
+
+
+
+ Minimum
+
+ i=2340
+
+
+
+ Maximum
+
+ i=2340
+
+
+
+ MinimumActualTime
+
+ i=2340
+
+
+
+ MaximumActualTime
+
+ i=2340
+
+
+
+ Range
+
+ i=2340
+
+
+
+ Minimum2
+
+ i=2340
+
+
+
+ Maximum2
+
+ i=2340
+
+
+
+ MinimumActualTime2
+
+ i=2340
+
+
+
+ MaximumActualTime2
+
+ i=2340
+
+
+
+ Range2
+
+ i=2340
+
+
+
+ AnnotationCount
+
+ i=2340
+
+
+
+ Count
+
+ i=2340
+
+
+
+ DurationInStateZero
+
+ i=2340
+
+
+
+ DurationInStateNonZero
+
+ i=2340
+
+
+
+ NumberOfTransitions
+
+ i=2340
+
+
+
+ Start
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/A.2.6/#A.2.6.2
+
+ i=2340
+
+
+
+ End
+
+ i=2340
+
+
+
+ Delta
+
+ i=2340
+
+
+
+ StartBound
+
+ i=2340
+
+
+
+ EndBound
+
+ i=2340
+
+
+
+ DeltaBounds
+
+ i=2340
+
+
+
+ DurationGood
+
+ i=2340
+
+
+
+ DurationBad
+
+ i=2340
+
+
+
+ PercentGood
+
+ i=2340
+
+
+
+ PercentBad
+
+ i=2340
+
+
+
+ WorstQuality
+
+ i=2340
+
+
+
+ WorstQuality2
+
+ i=2340
+
+
+
+ StandardDeviationSample
+
+ i=2340
+
+
+
+ StandardDeviationPopulation
+
+ i=2340
+
+
+
+ VarianceSample
+
+ i=2340
+
+
+
+ VariancePopulation
+
+ i=2340
+
+
+
+ DataTypeSchemaHeader
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.31
+
+ i=22
+
+
+
+
+
+
+
+
+
+ DataTypeDescription
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.32
+
+ i=22
+
+
+
+
+
+
+
+ StructureDescription
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.33
+
+ i=14525
+
+
+
+
+
+
+ EnumDescription
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.34
+
+ i=14525
+
+
+
+
+
+
+
+ SimpleTypeDescription
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.35
+
+ i=14525
+
+
+
+
+
+
+
+ UABinaryFileDataType
+ Base Info UaBinary File
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.36
+
+ i=15534
+
+
+
+
+
+
+
+
+ PortableQualifiedName
+ Base Info Portable IDs
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.37
+
+ i=22
+
+
+
+
+
+
+
+ PortableNodeId
+ Base Info Portable IDs
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.38
+
+ i=22
+
+
+
+
+
+
+
+ UnsignedRationalNumber
+ Base Info Rational Number
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.40
+
+ i=22
+
+
+
+
+
+
+
+ PubSubState
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.1
+
+ i=14648
+ i=29
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=14647
+
+
+
+
+ Disabled
+
+
+ Paused
+
+
+ Operational
+
+
+ Error
+
+
+ PreOperational
+
+
+
+
+
+ DataSetMetaDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.2.2
+
+ i=15534
+
+
+
+
+
+
+
+
+
+
+ FieldMetaData
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.2.3
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DataSetFieldFlags
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.2.4
+
+ i=15577
+ i=5
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15904
+
+
+
+
+ PromotedField
+
+
+
+
+
+ ConfigurationVersionDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.2.5
+
+ i=22
+
+
+
+
+
+
+
+ PublishedDataSetDataType
+ PubSub Parameters PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.5
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ PublishedDataSetSourceDataType
+ PubSub Parameters PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.6
+
+ i=22
+
+
+
+
+ PublishedVariableDataType
+ PubSub Parameters PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.7.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PublishedDataItemsDataType
+ PubSub Parameters PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.7.2
+
+ i=15580
+
+
+
+
+
+
+ PublishedEventsDataType
+ PubSub Parameters PublishedDataSet Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.8.4
+
+ i=15580
+
+
+
+
+
+
+
+
+ PublishedDataSetCustomSourceDataType
+ PubSub Parameters PublishedDataSet Custom
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.3/#6.2.3.9.2
+
+ i=15580
+
+
+
+
+
+
+ DataSetFieldContentMask
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.4/#6.2.4.2
+
+ i=15584
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15583
+
+
+
+
+ StatusCode
+
+
+ SourceTimestamp
+
+
+ ServerTimestamp
+
+
+ SourcePicoSeconds
+
+
+ ServerPicoSeconds
+
+
+ RawData
+
+
+
+
+
+ DataSetWriterDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.4/#6.2.4.5.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DataSetWriterTransportDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.4/#6.2.4.5.2
+
+ i=22
+
+
+
+
+ DataSetWriterMessageDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.4/#6.2.4.5.3
+
+ i=22
+
+
+
+
+ PubSubGroupDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.5/#6.2.5.7
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+ WriterGroupDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.6/#6.2.6.7.1
+
+ i=15609
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WriterGroupTransportDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.6/#6.2.6.7.2
+
+ i=22
+
+
+
+
+ WriterGroupMessageDataType
+ PubSub Parameters Discovery
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.6/#6.2.6.7.3
+
+ i=22
+
+
+
+
+ PubSubConnectionDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.7/#6.2.7.5.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ConnectionTransportDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.7/#6.2.7.5.2
+
+ i=22
+
+
+
+
+ NetworkAddressDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.7/#6.2.7.5.3
+
+ i=22
+
+
+
+
+
+
+ NetworkAddressUrlDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.7/#6.2.7.5.4
+
+ i=15502
+
+
+
+
+
+
+ ReaderGroupDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.8/#6.2.8.2.1
+
+ i=15609
+
+
+
+
+
+
+
+
+ ReaderGroupTransportDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.8/#6.2.8.2.2
+
+ i=22
+
+
+
+
+ ReaderGroupMessageDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.8/#6.2.8.2.3
+
+ i=22
+
+
+
+
+ DataSetReaderDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.9/#6.2.9.13.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DataSetReaderTransportDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.9/#6.2.9.13.2
+
+ i=22
+
+
+
+
+ DataSetReaderMessageDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.9/#6.2.9.13.3
+
+ i=22
+
+
+
+
+ SubscribedDataSetDataType
+ PubSub Parameters Discovery Extended
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.1
+
+ i=22
+
+
+
+
+ TargetVariablesDataType
+ PubSub Parameters SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.2.2
+
+ i=15630
+
+
+
+
+
+
+ FieldTargetDataType
+ PubSub Parameters SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.2.3
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+ OverrideValueHandling
+ PubSub Parameters SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.2.4
+
+ i=15875
+ i=29
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=15874
+
+
+
+
+ Disabled
+
+
+ LastUsableValue
+
+
+ OverrideValue
+
+
+
+
+
+ SubscribedDataSetMirrorDataType
+ PubSub Parameters SubscribedDataSet Mirror
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.3.4
+
+ i=15630
+
+
+
+
+
+
+
+ PubSubConfigurationDataType
+ PubSub Parameters Configuration
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.12/#6.2.12.1
+
+ i=22
+
+
+
+
+
+
+
+
+ StandaloneSubscribedDataSetRefDataType
+ PubSub Parameters SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.4
+
+ i=15630
+
+
+
+
+
+
+ StandaloneSubscribedDataSetDataType
+ PubSub Parameters SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.10/#6.2.10.5
+
+ i=15630
+
+
+
+
+
+
+
+
+
+ SecurityGroupDataType
+ PubSub Parameters Configuration2
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.12/#6.2.12.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PubSubKeyPushTargetDataType
+ PubSub Parameters Configuration2
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.12/#6.2.12.3
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PubSubConfiguration2DataType
+ PubSub Parameters Configuration2
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.2.12/#6.2.12.4
+
+ i=15530
+
+
+
+
+
+
+
+
+
+
+
+
+ DataSetOrderingType
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.1.3
+
+ i=15641
+ i=29
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=20408
+
+
+
+
+ Undefined
+
+
+ AscendingWriterId
+
+
+ AscendingWriterIdSingle
+
+
+
+
+
+ UadpNetworkMessageContentMask
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.1.4
+
+ i=15643
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15642
+
+
+
+
+ PublisherId
+
+
+ GroupHeader
+
+
+ WriterGroupId
+
+
+ GroupVersion
+
+
+ NetworkMessageNumber
+
+
+ SequenceNumber
+
+
+ PayloadHeader
+
+
+ Timestamp
+
+
+ PicoSeconds
+
+
+ DataSetClassId
+
+
+ PromotedFields
+
+
+
+
+
+ UadpWriterGroupMessageDataType
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.1.7
+
+ i=15616
+
+
+
+
+
+
+
+
+
+
+ UadpDataSetMessageContentMask
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.3.2
+
+ i=15647
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15646
+
+
+
+
+ Timestamp
+
+
+ PicoSeconds
+
+
+ Status
+
+
+ MajorVersion
+
+
+ MinorVersion
+
+
+ SequenceNumber
+
+
+
+
+
+ UadpDataSetWriterMessageDataType
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.3.6
+
+ i=15605
+
+
+
+
+
+
+
+
+
+ UadpDataSetReaderMessageDataType
+ PubSub Parameters UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.1/#6.3.1.4.10
+
+ i=15629
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ JsonNetworkMessageContentMask
+ PubSub Parameters JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.2/#6.3.2.1.1
+
+ i=15655
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15654
+
+
+
+
+ NetworkMessageHeader
+
+
+ DataSetMessageHeader
+
+
+ SingleDataSetMessage
+
+
+ PublisherId
+
+
+ DataSetClassId
+
+
+ ReplyTo
+
+
+
+
+
+ JsonWriterGroupMessageDataType
+ PubSub Parameters JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.2/#6.3.2.1.2
+
+ i=15616
+
+
+
+
+
+
+ JsonDataSetMessageContentMask
+ PubSub Parameters JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.2/#6.3.2.3.1
+
+ i=15659
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15658
+
+
+
+
+ DataSetWriterId
+
+
+ MetaDataVersion
+
+
+ SequenceNumber
+
+
+ Timestamp
+
+
+ Status
+
+
+ MessageType
+
+
+ DataSetWriterName
+
+
+ ReversibleFieldEncoding
+
+
+
+
+
+ JsonDataSetWriterMessageDataType
+ PubSub Parameters JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.2/#6.3.2.3.2
+
+ i=15605
+
+
+
+
+
+
+ JsonDataSetReaderMessageDataType
+ PubSub Parameters JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.3.2/#6.3.2.4.3
+
+ i=15629
+
+
+
+
+
+
+
+ QosDataType
+ PubSub Parameters QoS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.1.2
+
+ i=22
+
+
+
+
+ TransmitQosDataType
+ PubSub Parameters QoS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.1.3
+
+ i=23603
+
+
+
+
+ TransmitQosPriorityDataType
+ PubSub Parameters QoS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.1.4.2
+
+ i=23604
+
+
+
+
+
+
+ ReceiveQosDataType
+ PubSub Parameters QoS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.1.5
+
+ i=23603
+
+
+
+
+ ReceiveQosPriorityDataType
+ PubSub Parameters QoS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.1.6.2
+
+ i=23608
+
+
+
+
+
+
+ DatagramConnectionTransportDataType
+ PubSub Parameters Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.2.2
+
+ i=15618
+
+
+
+
+
+
+ DatagramConnectionTransport2DataType
+ PubSub Parameters Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.2.7
+
+ i=17467
+
+
+
+
+
+
+
+
+
+ DatagramWriterGroupTransportDataType
+ PubSub Parameters Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.3.3
+
+ i=15611
+
+
+
+
+
+
+
+ DatagramWriterGroupTransport2DataType
+ PubSub Parameters Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.3.9
+
+ i=15532
+
+
+
+
+
+
+
+
+
+
+ DatagramDataSetReaderTransportDataType
+ PubSub Parameters Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.1/#6.4.1.6.5
+
+ i=15628
+
+
+
+
+
+
+
+
+
+ BrokerConnectionTransportDataType
+ PubSub Parameters Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.2/#6.4.2.2.3
+
+ i=15618
+
+
+
+
+
+
+
+ BrokerTransportQualityOfService
+ PubSub Parameters Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.2/#6.4.2.1
+
+ i=15009
+ i=29
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=15008
+
+
+
+
+ NotSpecified
+
+
+ BestEffort
+
+
+ AtLeastOnce
+
+
+ AtMostOnce
+
+
+ ExactlyOnce
+
+
+
+
+
+ BrokerWriterGroupTransportDataType
+ PubSub Parameters Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.2/#6.4.2.3.5
+
+ i=15611
+
+
+
+
+
+
+
+
+
+ BrokerDataSetWriterTransportDataType
+ PubSub Parameters Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.2/#6.4.2.5.7
+
+ i=15598
+
+
+
+
+
+
+
+
+
+
+
+ BrokerDataSetReaderTransportDataType
+ PubSub Parameters Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/6.4.2/#6.4.2.6.6
+
+ i=15628
+
+
+
+
+
+
+
+
+
+
+ PubSubKeyServiceType
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.3.1
+
+ i=15907
+ i=15910
+ i=15913
+ i=25277
+ i=58
+
+
+
+ GetSecurityKeys
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.3.2
+
+ i=15908
+ i=15909
+ i=80
+ i=15906
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15907
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ StartingTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15907
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FirstTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Keys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ GetSecurityGroup
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.3.3
+
+ i=15911
+ i=15912
+ i=80
+ i=15906
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15910
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15910
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityGroups
+
+ i=15914
+ i=15917
+ i=15452
+ i=80
+ i=15906
+
+
+
+ AddSecurityGroup
+
+ i=15915
+ i=15916
+ i=78
+ i=15913
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15914
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxFutureKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxPastKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15914
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroup
+
+ i=15918
+ i=78
+ i=15913
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15917
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ KeyPushTargets
+
+ i=25278
+ i=25281
+ i=25346
+ i=80
+ i=15906
+
+
+
+ AddPushTarget
+
+ i=25279
+ i=25280
+ i=78
+ i=25277
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25278
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrl
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserTokenType
+
+ i=304
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RetryInterval
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25278
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTarget
+
+ i=25282
+ i=78
+ i=25277
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25281
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityGroupFolderType
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.5.1
+
+ i=15453
+ i=15459
+ i=15461
+ i=15464
+ i=25312
+ i=25315
+ i=25317
+ i=61
+
+
+
+ <SecurityGroupFolderName>
+
+ i=15454
+ i=15457
+ i=25293
+ i=25296
+ i=25298
+ i=15452
+ i=11508
+ i=15452
+
+
+
+ AddSecurityGroup
+
+ i=15455
+ i=15456
+ i=78
+ i=15453
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15454
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxFutureKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxPastKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15454
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroup
+
+ i=15458
+ i=78
+ i=15453
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15457
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddSecurityGroupFolder
+
+ i=25294
+ i=25295
+ i=80
+ i=15453
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25293
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25293
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroupFolder
+
+ i=25297
+ i=80
+ i=15453
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25296
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SupportedSecurityPolicyUris
+
+ i=68
+ i=80
+ i=15453
+
+
+
+ <SecurityGroupName>
+
+ i=15460
+ i=15010
+ i=15011
+ i=15012
+ i=15043
+ i=15471
+ i=11508
+ i=15452
+
+
+
+ SecurityGroupId
+
+ i=68
+ i=78
+ i=15459
+
+
+
+ KeyLifetime
+
+ i=68
+ i=78
+ i=15459
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=15459
+
+
+
+ MaxFutureKeyCount
+
+ i=68
+ i=78
+ i=15459
+
+
+
+ MaxPastKeyCount
+
+ i=68
+ i=78
+ i=15459
+
+
+
+ AddSecurityGroup
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.5.2
+
+ i=15462
+ i=15463
+ i=78
+ i=15452
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15461
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxFutureKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxPastKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15461
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroup
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.5.3
+
+ i=15465
+ i=78
+ i=15452
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15464
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddSecurityGroupFolder
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.5.4
+
+ i=25313
+ i=25314
+ i=80
+ i=15452
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25312
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25312
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroupFolder
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.5.5
+
+ i=25316
+ i=80
+ i=15452
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25315
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SupportedSecurityPolicyUris
+
+ i=68
+ i=80
+ i=15452
+
+
+
+ SecurityGroupType
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.4.1
+
+ i=15472
+ i=15046
+ i=15047
+ i=15048
+ i=15056
+ i=25624
+ i=25625
+ i=58
+
+
+
+ SecurityGroupId
+
+ i=68
+ i=78
+ i=15471
+
+
+
+ KeyLifetime
+
+ i=68
+ i=78
+ i=15471
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=15471
+
+
+
+ MaxFutureKeyCount
+
+ i=68
+ i=78
+ i=15471
+
+
+
+ MaxPastKeyCount
+
+ i=68
+ i=78
+ i=15471
+
+
+
+ InvalidateKeys
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.4.2
+
+ i=80
+ i=15471
+
+
+
+ ForceKeyRotation
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.4.3
+
+ i=80
+ i=15471
+
+
+
+ HasPushedSecurityGroup
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.6
+
+ i=33
+
+ HasPushTarget
+
+
+ PubSubKeyPushTargetType
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.1
+
+ i=25626
+ i=25634
+ i=25635
+ i=25340
+ i=25636
+ i=25637
+ i=25638
+ i=25639
+ i=25640
+ i=25641
+ i=25644
+ i=25647
+ i=58
+
+
+
+ <SecurityGroupName>
+
+ i=25627
+ i=25628
+ i=25629
+ i=25630
+ i=25631
+ i=15471
+ i=11508
+ i=25337
+
+
+
+ SecurityGroupId
+
+ i=68
+ i=78
+ i=25626
+
+
+
+ KeyLifetime
+
+ i=68
+ i=78
+ i=25626
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=25626
+
+
+
+ MaxFutureKeyCount
+
+ i=68
+ i=78
+ i=25626
+
+
+
+ MaxPastKeyCount
+
+ i=68
+ i=78
+ i=25626
+
+
+
+ ApplicationUri
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ EndpointUrl
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ UserTokenType
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ RequestedKeyCount
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ RetryInterval
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ LastPushExecutionTime
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ LastPushErrorTime
+
+ i=68
+ i=78
+ i=25337
+
+
+
+ ConnectSecurityGroups
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.3
+
+ i=25642
+ i=25643
+ i=78
+ i=25337
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25641
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25641
+
+
+
+
+
+ i=297
+
+
+
+ ConnectResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ DisconnectSecurityGroups
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.4
+
+ i=25645
+ i=25646
+ i=78
+ i=25337
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25644
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25644
+
+
+
+
+
+ i=297
+
+
+
+ DisconnectResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ TriggerKeyUpdate
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.6
+
+ i=78
+ i=25337
+
+
+
+ PubSubKeyPushTargetFolderType
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.7.1
+
+ i=25347
+ i=25358
+ i=25366
+ i=25369
+ i=25371
+ i=25374
+ i=61
+
+
+
+ <PushTargetFolderName>
+
+ i=25348
+ i=25351
+ i=25353
+ i=25356
+ i=25346
+ i=11508
+ i=25346
+
+
+
+ AddPushTarget
+
+ i=25349
+ i=25350
+ i=78
+ i=25347
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25348
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrl
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserTokenType
+
+ i=304
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RetryInterval
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25348
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTarget
+
+ i=25352
+ i=78
+ i=25347
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25351
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddPushTargetFolder
+
+ i=25354
+ i=25355
+ i=80
+ i=25347
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25353
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25353
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTargetFolder
+
+ i=25357
+ i=80
+ i=25347
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25356
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ <PushTargetName>
+
+ i=25648
+ i=25649
+ i=25361
+ i=25650
+ i=25651
+ i=25652
+ i=25653
+ i=25654
+ i=25655
+ i=25658
+ i=25661
+ i=25337
+ i=11508
+ i=25346
+
+
+
+ ApplicationUri
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ EndpointUrl
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ SecurityPolicyUri
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ UserTokenType
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ RequestedKeyCount
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ RetryInterval
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ LastPushExecutionTime
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ LastPushErrorTime
+
+ i=68
+ i=78
+ i=25358
+
+
+
+ ConnectSecurityGroups
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.3
+
+ i=25656
+ i=25657
+ i=78
+ i=25358
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25655
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25655
+
+
+
+
+
+ i=297
+
+
+
+ ConnectResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ DisconnectSecurityGroups
+
+ i=25659
+ i=25660
+ i=78
+ i=25358
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25658
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupIds
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25658
+
+
+
+
+
+ i=297
+
+
+
+ DisconnectResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ TriggerKeyUpdate
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.6.6
+
+ i=78
+ i=25358
+
+
+
+ AddPushTarget
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.7.2
+
+ i=25367
+ i=25368
+ i=78
+ i=25346
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25366
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrl
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserTokenType
+
+ i=304
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RetryInterval
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25366
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTarget
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.7.3
+
+ i=25370
+ i=78
+ i=25346
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25369
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddPushTargetFolder
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.7.4
+
+ i=25372
+ i=25373
+ i=80
+ i=25346
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25371
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25371
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTargetFolder
+ PubSub Model SKS Push
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.7.5
+
+ i=25375
+ i=80
+ i=25346
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25374
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ PublishSubscribeType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.2
+
+ i=14417
+ i=17296
+ i=16598
+ i=14432
+ i=14434
+ i=23622
+ i=25403
+ i=15844
+ i=18715
+ i=23642
+ i=23649
+ i=17479
+ i=25432
+ i=25433
+ i=32396
+ i=32397
+ i=15906
+
+
+
+ <ConnectionName>
+
+ i=14418
+ i=17292
+ i=17478
+ i=14423
+ i=14419
+ i=14209
+ i=11508
+ i=14416
+
+
+
+ PublisherId
+
+ i=68
+ i=78
+ i=14417
+
+
+
+ TransportProfileUri
+
+ i=17706
+ i=16309
+ i=78
+ i=14417
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=17292
+
+
+
+ ConnectionProperties
+
+ i=68
+ i=78
+ i=14417
+
+
+
+ Address
+
+ i=15533
+ i=21145
+ i=78
+ i=14417
+
+
+
+ NetworkInterface
+
+ i=17503
+ i=16309
+ i=78
+ i=14423
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=15533
+
+
+
+ Status
+
+ i=14420
+ i=14643
+ i=78
+ i=14417
+
+
+
+ State
+
+ i=63
+ i=78
+ i=14419
+
+
+
+ SetSecurityKeys
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.3
+
+ i=17297
+ i=80
+ i=14416
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17296
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FutureKeys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ AddConnection
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.4
+
+ i=16599
+ i=16600
+ i=80
+ i=14416
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16598
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15617
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16598
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveConnection
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.5
+
+ i=14433
+ i=80
+ i=14416
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14432
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ PublishedDataSets
+
+ i=14477
+ i=78
+ i=14416
+
+
+
+ SubscribedDataSets
+
+ i=23795
+ i=80
+ i=14416
+
+
+
+ PubSubConfiguration
+
+ i=25404
+ i=25405
+ i=25406
+ i=25407
+ i=25411
+ i=25414
+ i=25416
+ i=25419
+ i=25421
+ i=25424
+ i=25426
+ i=25429
+ i=25482
+ i=80
+ i=14416
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=25403
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=25403
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=25403
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=25403
+
+
+
+ Open
+
+ i=25412
+ i=25413
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25411
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25411
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=25415
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25414
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=25417
+ i=25418
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25416
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25416
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=25420
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25419
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=25422
+ i=25423
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25421
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25421
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=25425
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25424
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ ReserveIds
+
+ i=25427
+ i=25428
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25426
+
+
+
+
+
+ i=297
+
+
+
+ TransportProfileUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqWriterGroupIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqDataSetWriterIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25426
+
+
+
+
+
+ i=297
+
+
+
+ DefaultPublisherId
+
+ i=24
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ WriterGroupIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=25430
+ i=25431
+ i=78
+ i=25403
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25429
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequireCompleteUpdate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationReferences
+
+ i=25519
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25429
+
+
+
+
+
+ i=297
+
+
+
+ ChangesApplied
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferencesResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationValues
+
+ i=25520
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationObjects
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ Status
+
+ i=15845
+ i=14643
+ i=78
+ i=14416
+
+
+
+ State
+
+ i=63
+ i=78
+ i=15844
+
+
+
+ Diagnostics
+
+ i=18716
+ i=18717
+ i=18722
+ i=18727
+ i=18728
+ i=18729
+ i=18760
+ i=19732
+ i=80
+ i=14416
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=18715
+
+
+
+ TotalInformation
+
+ i=18718
+ i=18719
+ i=18720
+ i=19725
+ i=78
+ i=18715
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18717
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18717
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18717
+
+
+
+ TotalError
+
+ i=18723
+ i=18724
+ i=18725
+ i=19725
+ i=78
+ i=18715
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18722
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18722
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18722
+
+
+
+ Reset
+
+ i=78
+ i=18715
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=18715
+
+
+
+ Counters
+
+ i=18730
+ i=18735
+ i=18740
+ i=18745
+ i=18750
+ i=18755
+ i=58
+ i=78
+ i=18715
+
+
+
+ StateError
+
+ i=18731
+ i=18732
+ i=18733
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18730
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18730
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18730
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=18736
+ i=18737
+ i=18738
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18735
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18735
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18735
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=18741
+ i=18742
+ i=18743
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18740
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18740
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18740
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=18746
+ i=18747
+ i=18748
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18745
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18745
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18745
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=18751
+ i=18752
+ i=18753
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18750
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18750
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18750
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=18756
+ i=18757
+ i=18758
+ i=19725
+ i=78
+ i=18729
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=18755
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=18755
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18755
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=18761
+ i=18763
+ i=18765
+ i=18767
+ i=58
+ i=78
+ i=18715
+
+
+
+ ConfiguredDataSetWriters
+
+ i=18762
+ i=63
+ i=78
+ i=18760
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18761
+
+
+ 0
+
+
+
+ ConfiguredDataSetReaders
+
+ i=18764
+ i=63
+ i=78
+ i=18760
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18763
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=18766
+ i=63
+ i=78
+ i=18760
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18765
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=18768
+ i=63
+ i=78
+ i=18760
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=18767
+
+
+ 0
+
+
+
+ PubSubCapablities
+
+ i=23643
+ i=23644
+ i=23645
+ i=23646
+ i=23647
+ i=23648
+ i=23832
+ i=80
+ i=14416
+
+
+
+ MaxPubSubConnections
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ MaxWriterGroups
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ MaxReaderGroups
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ MaxDataSetWriters
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ MaxDataSetReaders
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ MaxFieldsPerDataSet
+
+ i=68
+ i=78
+ i=23642
+
+
+
+ DataSetClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.2
+
+ i=24009
+ i=61
+ i=80
+ i=14416
+
+
+
+ <DataSetName>
+
+ i=63
+ i=11508
+ i=23649
+
+
+
+ SupportedTransportProfiles
+
+ i=68
+ i=78
+ i=14416
+
+
+
+ DefaultDatagramPublisherId
+
+ i=68
+ i=80
+ i=14416
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=80
+ i=14416
+
+
+
+ DefaultSecurityKeyServices
+
+ i=68
+ i=80
+ i=14416
+
+
+
+ ConfigurationProperties
+
+ i=68
+ i=80
+ i=14416
+
+
+
+ PublishSubscribe
+ PubSub Model SKS
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/8.2
+
+ i=15215
+ i=15440
+ i=15443
+ i=25440
+ i=17364
+ i=17366
+ i=17369
+ i=17371
+ i=23658
+ i=25451
+ i=17405
+ i=17409
+ i=23678
+ i=23685
+ i=17481
+ i=25480
+ i=25481
+ i=32403
+ i=32404
+ i=2253
+ i=14416
+
+
+
+ GetSecurityKeys
+
+ i=15216
+ i=15217
+ i=14443
+
+
+
+ InputArguments
+
+ i=68
+ i=15215
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ StartingTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=15215
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FirstTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Keys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ GetSecurityGroup
+
+ i=15441
+ i=15442
+ i=14443
+
+
+
+ InputArguments
+
+ i=68
+ i=15440
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=15440
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityGroups
+
+ i=15444
+ i=15447
+ i=15452
+ i=14443
+
+
+
+ AddSecurityGroup
+
+ i=15445
+ i=15446
+ i=15443
+
+
+
+ InputArguments
+
+ i=68
+ i=15444
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxFutureKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxPastKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=15444
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroup
+
+ i=15448
+ i=15443
+
+
+
+ InputArguments
+
+ i=68
+ i=15447
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ KeyPushTargets
+
+ i=25441
+ i=25444
+ i=25346
+ i=14443
+
+
+
+ AddPushTarget
+
+ i=25442
+ i=25443
+ i=25440
+
+
+
+ InputArguments
+
+ i=68
+ i=25441
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrl
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserTokenType
+
+ i=304
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RetryInterval
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25441
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTarget
+
+ i=25445
+ i=25440
+
+
+
+ InputArguments
+
+ i=68
+ i=25444
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SetSecurityKeys
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.3
+
+ i=17365
+ i=14443
+
+
+
+ InputArguments
+
+ i=68
+ i=17364
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FutureKeys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ AddConnection
+
+ i=17367
+ i=17368
+ i=14443
+
+
+
+ InputArguments
+
+ i=68
+ i=17366
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15617
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=17366
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveConnection
+
+ i=17370
+ i=14443
+
+
+
+ InputArguments
+
+ i=68
+ i=17369
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ PublishedDataSets
+
+ i=14477
+ i=14443
+
+
+
+ SubscribedDataSets
+
+ i=23795
+ i=14443
+
+
+
+ PubSubConfiguration
+
+ i=25452
+ i=25453
+ i=25454
+ i=25455
+ i=25459
+ i=25462
+ i=25464
+ i=25467
+ i=25469
+ i=25472
+ i=25474
+ i=25477
+ i=25482
+ i=14443
+
+
+
+ Size
+
+ i=68
+ i=25451
+
+
+
+ Writable
+
+ i=68
+ i=25451
+
+
+
+ UserWritable
+
+ i=68
+ i=25451
+
+
+
+ OpenCount
+
+ i=68
+ i=25451
+
+
+
+ Open
+
+ i=25460
+ i=25461
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25459
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25459
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=25463
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25462
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=25465
+ i=25466
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25464
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25464
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=25468
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25467
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=25470
+ i=25471
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25469
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25469
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=25473
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25472
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ ReserveIds
+
+ i=25475
+ i=25476
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25474
+
+
+
+
+
+ i=297
+
+
+
+ TransportProfileUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqWriterGroupIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqDataSetWriterIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25474
+
+
+
+
+
+ i=297
+
+
+
+ DefaultPublisherId
+
+ i=24
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ WriterGroupIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=25478
+ i=25479
+ i=25451
+
+
+
+ InputArguments
+
+ i=68
+ i=25477
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequireCompleteUpdate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationReferences
+
+ i=25519
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=25477
+
+
+
+
+
+ i=297
+
+
+
+ ChangesApplied
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferencesResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationValues
+
+ i=25520
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationObjects
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ Status
+ https://reference.opcfoundation.org/v104/Core/docs/Part14/9.1.10/#9.1.10.4
+
+ i=17406
+ i=14643
+ i=14443
+
+
+
+ State
+
+ i=63
+ i=17405
+
+
+
+ Diagnostics
+
+ i=17410
+ i=17411
+ i=17416
+ i=17421
+ i=17422
+ i=17423
+ i=17457
+ i=19732
+ i=14443
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=17409
+
+
+
+ TotalInformation
+
+ i=17412
+ i=17413
+ i=17414
+ i=19725
+ i=17409
+
+
+
+ Active
+
+ i=68
+ i=17411
+
+
+
+ Classification
+
+ i=68
+ i=17411
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17411
+
+
+
+ TotalError
+
+ i=17417
+ i=17418
+ i=17419
+ i=19725
+ i=17409
+
+
+
+ Active
+
+ i=68
+ i=17416
+
+
+
+ Classification
+
+ i=68
+ i=17416
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17416
+
+
+
+ Reset
+ Base Info TemporaryFileTransferType Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part20/1
+
+ i=17409
+
+
+
+ SubError
+
+ i=63
+ i=17409
+
+
+
+ Counters
+
+ i=17424
+ i=17431
+ i=17436
+ i=17441
+ i=17446
+ i=17451
+ i=58
+ i=17409
+
+
+
+ StateError
+
+ i=17425
+ i=17426
+ i=17429
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17424
+
+
+
+ Classification
+
+ i=68
+ i=17424
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17424
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=17432
+ i=17433
+ i=17434
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17431
+
+
+
+ Classification
+
+ i=68
+ i=17431
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17431
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=17437
+ i=17438
+ i=17439
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17436
+
+
+
+ Classification
+
+ i=68
+ i=17436
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17436
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=17442
+ i=17443
+ i=17444
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17441
+
+
+
+ Classification
+
+ i=68
+ i=17441
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17441
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=17447
+ i=17448
+ i=17449
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17446
+
+
+
+ Classification
+
+ i=68
+ i=17446
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17446
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=17452
+ i=17453
+ i=17454
+ i=19725
+ i=17423
+
+
+
+ Active
+
+ i=68
+ i=17451
+
+
+
+ Classification
+
+ i=68
+ i=17451
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17451
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=17458
+ i=17460
+ i=17462
+ i=17464
+ i=58
+ i=17409
+
+
+
+ ConfiguredDataSetWriters
+
+ i=17459
+ i=63
+ i=17457
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17458
+
+
+ 0
+
+
+
+ ConfiguredDataSetReaders
+
+ i=17461
+ i=63
+ i=17457
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17460
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=17463
+ i=63
+ i=17457
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17462
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=17466
+ i=63
+ i=17457
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=17464
+
+
+ 0
+
+
+
+ PubSubCapablities
+
+ i=23679
+ i=23680
+ i=23681
+ i=23682
+ i=23683
+ i=23684
+ i=23832
+ i=14443
+
+
+
+ MaxPubSubConnections
+
+ i=68
+ i=23678
+
+
+
+ MaxWriterGroups
+
+ i=68
+ i=23678
+
+
+
+ MaxReaderGroups
+
+ i=68
+ i=23678
+
+
+
+ MaxDataSetWriters
+
+ i=68
+ i=23678
+
+
+
+ MaxDataSetReaders
+
+ i=68
+ i=23678
+
+
+
+ MaxFieldsPerDataSet
+
+ i=68
+ i=23678
+
+
+
+ DataSetClasses
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.2
+
+ i=61
+ i=14443
+
+
+
+ SupportedTransportProfiles
+
+ i=68
+ i=14443
+
+
+
+ DefaultDatagramPublisherId
+
+ i=68
+ i=14443
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=14443
+
+
+
+ DefaultSecurityKeyServices
+
+ i=68
+ i=14443
+
+
+
+ ConfigurationProperties
+
+ i=68
+ i=14443
+
+
+
+ DataSetClasses
+
+ i=32406
+ i=32409
+ i=32412
+ i=32424
+ i=32508
+ i=32510
+ i=32513
+ i=32515
+ i=32535
+ i=32546
+ i=32575
+ i=32579
+ i=32633
+ i=32644
+ i=32646
+ i=32647
+ i=32648
+ i=2253
+ i=14416
+
+
+
+ GetSecurityKeys
+
+ i=32407
+ i=32408
+ i=32405
+
+
+
+ InputArguments
+
+ i=68
+ i=32406
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ StartingTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32406
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FirstTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Keys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ GetSecurityGroup
+
+ i=32410
+ i=32411
+ i=32405
+
+
+
+ InputArguments
+
+ i=68
+ i=32409
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32409
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SecurityGroups
+
+ i=32413
+ i=32416
+ i=15452
+ i=32405
+
+
+
+ AddSecurityGroup
+
+ i=32414
+ i=32415
+ i=32412
+
+
+
+ InputArguments
+
+ i=68
+ i=32413
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxFutureKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ MaxPastKeyCount
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32413
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSecurityGroup
+
+ i=32417
+ i=32412
+
+
+
+ InputArguments
+
+ i=68
+ i=32416
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ KeyPushTargets
+
+ i=32425
+ i=32428
+ i=25346
+ i=32405
+
+
+
+ AddPushTarget
+
+ i=32426
+ i=32427
+ i=32424
+
+
+
+ InputArguments
+
+ i=68
+ i=32425
+
+
+
+
+
+ i=297
+
+
+
+ ApplicationUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EndpointUrl
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserTokenType
+
+ i=304
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequestedKeyCount
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RetryInterval
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32425
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePushTarget
+
+ i=32429
+ i=32424
+
+
+
+ InputArguments
+
+ i=68
+ i=32428
+
+
+
+
+
+ i=297
+
+
+
+ PushTargetId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ SetSecurityKeys
+
+ i=32509
+ i=32405
+
+
+
+ InputArguments
+
+ i=68
+ i=32508
+
+
+
+
+
+ i=297
+
+
+
+ SecurityGroupId
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SecurityPolicyUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentTokenId
+
+ i=288
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CurrentKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FutureKeys
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ TimeToNextKey
+
+ i=290
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ KeyLifetime
+
+ i=290
+
+ -1
+
+
+
+
+
+
+
+
+ AddConnection
+
+ i=32511
+ i=32512
+ i=32405
+
+
+
+ InputArguments
+
+ i=68
+ i=32510
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15617
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32510
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveConnection
+
+ i=32514
+ i=32405
+
+
+
+ InputArguments
+
+ i=68
+ i=32513
+
+
+
+
+
+ i=297
+
+
+
+ ConnectionId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ PublishedDataSets
+
+ i=14477
+ i=32405
+
+
+
+ SubscribedDataSets
+
+ i=23795
+ i=32405
+
+
+
+ PubSubConfiguration
+
+ i=32547
+ i=32548
+ i=32549
+ i=32550
+ i=32554
+ i=32557
+ i=32559
+ i=32562
+ i=32564
+ i=32567
+ i=32569
+ i=32572
+ i=25482
+ i=32405
+
+
+
+ Size
+
+ i=68
+ i=32546
+
+
+
+ Writable
+
+ i=68
+ i=32546
+
+
+
+ UserWritable
+
+ i=68
+ i=32546
+
+
+
+ OpenCount
+
+ i=68
+ i=32546
+
+
+
+ Open
+
+ i=32555
+ i=32556
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32554
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32554
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=32558
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32557
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=32560
+ i=32561
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32559
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32559
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=32563
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32562
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=32565
+ i=32566
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32564
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32564
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=32568
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32567
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ ReserveIds
+
+ i=32570
+ i=32571
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32569
+
+
+
+
+
+ i=297
+
+
+
+ TransportProfileUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqWriterGroupIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqDataSetWriterIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32569
+
+
+
+
+
+ i=297
+
+
+
+ DefaultPublisherId
+
+ i=24
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ WriterGroupIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=32573
+ i=32574
+ i=32546
+
+
+
+ InputArguments
+
+ i=68
+ i=32572
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequireCompleteUpdate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationReferences
+
+ i=25519
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=32572
+
+
+
+
+
+ i=297
+
+
+
+ ChangesApplied
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferencesResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationValues
+
+ i=25520
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationObjects
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ Status
+
+ i=32576
+ i=14643
+ i=32405
+
+
+
+ State
+
+ i=63
+ i=32575
+
+
+
+ Diagnostics
+
+ i=32580
+ i=32581
+ i=32586
+ i=32591
+ i=32592
+ i=32593
+ i=32624
+ i=19732
+ i=32405
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=32579
+
+
+
+ TotalInformation
+
+ i=32582
+ i=32583
+ i=32584
+ i=19725
+ i=32579
+
+
+
+ Active
+
+ i=68
+ i=32581
+
+
+
+ Classification
+
+ i=68
+ i=32581
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32581
+
+
+
+ TotalError
+
+ i=32587
+ i=32588
+ i=32589
+ i=19725
+ i=32579
+
+
+
+ Active
+
+ i=68
+ i=32586
+
+
+
+ Classification
+
+ i=68
+ i=32586
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32586
+
+
+
+ Reset
+
+ i=32579
+
+
+
+ SubError
+
+ i=63
+ i=32579
+
+
+
+ Counters
+
+ i=32594
+ i=32599
+ i=32604
+ i=32609
+ i=32614
+ i=32619
+ i=58
+ i=32579
+
+
+
+ StateError
+
+ i=32595
+ i=32596
+ i=32597
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32594
+
+
+
+ Classification
+
+ i=68
+ i=32594
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32594
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=32600
+ i=32601
+ i=32602
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32599
+
+
+
+ Classification
+
+ i=68
+ i=32599
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32599
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=32605
+ i=32606
+ i=32607
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32604
+
+
+
+ Classification
+
+ i=68
+ i=32604
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32604
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=32610
+ i=32611
+ i=32612
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32609
+
+
+
+ Classification
+
+ i=68
+ i=32609
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32609
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=32615
+ i=32616
+ i=32617
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32614
+
+
+
+ Classification
+
+ i=68
+ i=32614
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32614
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=32620
+ i=32621
+ i=32622
+ i=19725
+ i=32593
+
+
+
+ Active
+
+ i=68
+ i=32619
+
+
+
+ Classification
+
+ i=68
+ i=32619
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32619
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=32625
+ i=32627
+ i=32629
+ i=32631
+ i=58
+ i=32579
+
+
+
+ ConfiguredDataSetWriters
+
+ i=32626
+ i=63
+ i=32624
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32625
+
+
+ 0
+
+
+
+ ConfiguredDataSetReaders
+
+ i=32628
+ i=63
+ i=32624
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32627
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=32630
+ i=63
+ i=32624
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32629
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=32632
+ i=63
+ i=32624
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=32631
+
+
+ 0
+
+
+
+ PubSubCapablities
+
+ i=32634
+ i=32635
+ i=32636
+ i=32637
+ i=32638
+ i=32656
+ i=23832
+ i=32405
+
+
+
+ MaxPubSubConnections
+
+ i=68
+ i=32633
+
+
+
+ MaxWriterGroups
+
+ i=68
+ i=32633
+
+
+
+ MaxReaderGroups
+
+ i=68
+ i=32633
+
+
+
+ MaxDataSetWriters
+
+ i=68
+ i=32633
+
+
+
+ MaxDataSetReaders
+
+ i=68
+ i=32633
+
+
+
+ MaxFieldsPerDataSet
+
+ i=68
+ i=32633
+
+
+
+ DataSetClasses
+
+ i=61
+ i=32405
+
+
+
+ SupportedTransportProfiles
+
+ i=68
+ i=32405
+
+
+
+ DefaultDatagramPublisherId
+
+ i=68
+ i=32405
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=32405
+
+
+
+ HasPubSubConnection
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.6
+
+ i=47
+
+ PubSubConnectionOf
+
+
+ PubSubConfigurationType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.1
+
+ i=25505
+ i=25508
+ i=11575
+
+
+
+ ReserveIds
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.5
+
+ i=25506
+ i=25507
+ i=78
+ i=25482
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25505
+
+
+
+
+
+ i=297
+
+
+
+ TransportProfileUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqWriterGroupIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NumReqDataSetWriterIds
+
+ i=5
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25505
+
+
+
+
+
+ i=297
+
+
+
+ DefaultPublisherId
+
+ i=24
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ WriterGroupIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterIds
+
+ i=5
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.6
+
+ i=25509
+ i=25510
+ i=78
+ i=25482
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25508
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RequireCompleteUpdate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationReferences
+
+ i=25519
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=25508
+
+
+
+
+
+ i=297
+
+
+
+ ChangesApplied
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferencesResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationValues
+
+ i=25520
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationObjects
+
+ i=17
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ PubSubConfigurationRefMask
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.2
+
+ i=25518
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=25517
+
+
+
+
+ ElementAdd
+
+
+ ElementMatch
+
+
+ ElementModify
+
+
+ ElementRemove
+
+
+ ReferenceWriter
+
+
+ ReferenceReader
+
+
+ ReferenceWriterGroup
+
+
+ ReferenceReaderGroup
+
+
+ ReferenceConnection
+
+
+ ReferencePubDataset
+
+
+ ReferenceSubDataset
+
+
+ ReferenceSecurityGroup
+
+
+ ReferencePushTarget
+
+
+
+
+
+ PubSubConfigurationRefDataType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.3
+
+ i=22
+
+
+
+
+
+
+
+
+
+ PubSubConfigurationValueDataType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.3/#9.1.3.7.4
+
+ i=22
+
+
+
+
+
+
+
+
+ PublishedDataSetType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.2.1
+
+ i=15222
+ i=14519
+ i=15229
+ i=16759
+ i=25521
+ i=15481
+ i=58
+
+
+
+ <DataSetWriterName>
+
+ i=16720
+ i=16721
+ i=17482
+ i=15223
+ i=15298
+ i=11508
+ i=14509
+
+
+
+ DataSetWriterId
+
+ i=68
+ i=78
+ i=15222
+
+
+
+ DataSetFieldContentMask
+
+ i=68
+ i=78
+ i=15222
+
+
+
+ DataSetWriterProperties
+
+ i=68
+ i=78
+ i=15222
+
+
+
+ Status
+
+ i=15224
+ i=14643
+ i=78
+ i=15222
+
+
+
+ State
+
+ i=63
+ i=78
+ i=15223
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=78
+ i=14509
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=14509
+
+
+
+ DataSetClassId
+
+ i=68
+ i=80
+ i=14509
+
+
+
+ CyclicDataSet
+
+ i=68
+ i=80
+ i=14509
+
+
+
+ ExtensionFields
+
+ i=15482
+ i=15485
+ i=15489
+ i=80
+ i=14509
+
+
+
+ AddExtensionField
+
+ i=15483
+ i=15484
+ i=78
+ i=15481
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15482
+
+
+
+
+
+ i=297
+
+
+
+ FieldName
+
+ i=20
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldValue
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15482
+
+
+
+
+
+ i=297
+
+
+
+ FieldId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveExtensionField
+
+ i=15486
+ i=78
+ i=15481
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15485
+
+
+
+
+
+ i=297
+
+
+
+ FieldId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ ExtensionFieldsType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.2.2
+
+ i=15490
+ i=15491
+ i=15494
+ i=58
+
+
+
+ <ExtensionFieldName>
+
+ i=68
+ i=11508
+ i=15489
+
+
+
+ AddExtensionField
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.2.3
+
+ i=15492
+ i=15493
+ i=78
+ i=15489
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15491
+
+
+
+
+
+ i=297
+
+
+
+ FieldName
+
+ i=20
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldValue
+
+ i=24
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15491
+
+
+
+
+
+ i=297
+
+
+
+ FieldId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveExtensionField
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.2.4
+
+ i=15495
+ i=78
+ i=15489
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15494
+
+
+
+
+
+ i=297
+
+
+
+ FieldId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ DataSetToWriter
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.2.5
+
+ i=33
+
+ WriterToDataSet
+
+
+ PublishedDataItemsType
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.3.1
+
+ i=14548
+ i=14555
+ i=14558
+ i=14509
+
+
+
+ PublishedData
+
+ i=68
+ i=78
+ i=14534
+
+
+
+ AddVariables
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.3.2
+
+ i=14556
+ i=14557
+ i=80
+ i=14534
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14555
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ PromotedFields
+
+ i=1
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToAdd
+
+ i=14273
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14555
+
+
+
+
+
+ i=297
+
+
+
+ NewConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ RemoveVariables
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.3.3
+
+ i=14559
+ i=14560
+ i=80
+ i=14534
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14558
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToRemove
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14558
+
+
+
+
+
+ i=297
+
+
+
+ NewConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RemoveResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ PublishedEventsType
+ PubSub Model PublishedDataSet Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.4.1
+
+ i=14586
+ i=14587
+ i=14588
+ i=15052
+ i=14509
+
+
+
+ EventNotifier
+
+ i=68
+ i=78
+ i=14572
+
+
+
+ SelectedFields
+
+ i=68
+ i=78
+ i=14572
+
+
+
+ Filter
+
+ i=68
+ i=78
+ i=14572
+
+
+
+ ModifyFieldSelection
+ PubSub Model PublishedDataSet Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.4.2
+
+ i=15053
+ i=15517
+ i=80
+ i=14572
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15052
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ PromotedFields
+
+ i=1
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ SelectedFields
+
+ i=601
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15052
+
+
+
+
+
+ i=297
+
+
+
+ NewConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+
+
+ DataSetFolderType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.1
+
+ i=14478
+ i=14487
+ i=14493
+ i=14496
+ i=16935
+ i=16960
+ i=14499
+ i=16994
+ i=16997
+ i=61
+
+
+
+ <DataSetFolderName>
+
+ i=14479
+ i=14482
+ i=16842
+ i=16881
+ i=14485
+ i=16884
+ i=16923
+ i=14477
+ i=11508
+ i=14477
+
+
+
+ AddPublishedDataItems
+
+ i=14480
+ i=14481
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14479
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldFlags
+
+ i=15904
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToAdd
+
+ i=14273
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14479
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AddPublishedEvents
+
+ i=14483
+ i=14484
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14482
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EventNotifier
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldFlags
+
+ i=15904
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ SelectedFields
+
+ i=601
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ Filter
+
+ i=586
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14482
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddPublishedDataItemsTemplate
+
+ i=16843
+ i=16853
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16842
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetMetaData
+
+ i=14523
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToAdd
+
+ i=14273
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16842
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AddPublishedEventsTemplate
+
+ i=16882
+ i=16883
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16881
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetMetaData
+
+ i=14523
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EventNotifier
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SelectedFields
+
+ i=601
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ Filter
+
+ i=586
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16881
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePublishedDataSet
+
+ i=14486
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14485
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddDataSetFolder
+
+ i=16894
+ i=16922
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16884
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16884
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetFolder
+
+ i=16924
+ i=80
+ i=14478
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16923
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ <PublishedDataSetName>
+
+ i=14489
+ i=15221
+ i=14509
+ i=11508
+ i=14477
+
+
+
+ ConfigurationVersion
+
+ i=68
+ i=78
+ i=14487
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=14487
+
+
+
+ AddPublishedDataItems
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.2
+
+ i=14494
+ i=14495
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14493
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldFlags
+
+ i=15904
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToAdd
+
+ i=14273
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14493
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AddPublishedEvents
+ PubSub Model PublishedDataSet Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.3
+
+ i=14497
+ i=14498
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14496
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EventNotifier
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldNameAliases
+
+ i=12
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ FieldFlags
+
+ i=15904
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ SelectedFields
+
+ i=601
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ Filter
+
+ i=586
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=14496
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddPublishedDataItemsTemplate
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.4
+
+ i=16958
+ i=16959
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16935
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetMetaData
+
+ i=14523
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ VariablesToAdd
+
+ i=14273
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16935
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AddPublishedEventsTemplate
+ PubSub Model PublishedDataSet Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.5
+
+ i=16961
+ i=16971
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16960
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ DataSetMetaData
+
+ i=14523
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ EventNotifier
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SelectedFields
+
+ i=601
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ Filter
+
+ i=586
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16960
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemovePublishedDataSet
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.6
+
+ i=14500
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14499
+
+
+
+
+
+ i=297
+
+
+
+ DataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddDataSetFolder
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.7
+
+ i=16995
+ i=16996
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16994
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=16994
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetFolder
+ PubSub Model PublishedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.4/#9.1.4.5.8
+
+ i=17007
+ i=80
+ i=14477
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=16997
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ PubSubConnectionType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.2
+
+ i=14595
+ i=17306
+ i=17485
+ i=14221
+ i=17203
+ i=17310
+ i=17325
+ i=14600
+ i=19241
+ i=17427
+ i=17465
+ i=14225
+ i=58
+
+
+
+ PublisherId
+
+ i=68
+ i=78
+ i=14209
+
+
+
+ TransportProfileUri
+
+ i=17710
+ i=16309
+ i=78
+ i=14209
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=17306
+
+
+
+ ConnectionProperties
+
+ i=68
+ i=78
+ i=14209
+
+
+
+ Address
+
+ i=17202
+ i=21145
+ i=78
+ i=14209
+
+
+
+ NetworkInterface
+
+ i=17576
+ i=16309
+ i=78
+ i=14221
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=17202
+
+
+
+ TransportSettings
+
+ i=17721
+ i=80
+ i=14209
+
+
+
+ <WriterGroupName>
+
+ i=17311
+ i=17204
+ i=17486
+ i=17314
+ i=17214
+ i=17318
+ i=17319
+ i=17321
+ i=17322
+ i=17558
+ i=17725
+ i=11508
+ i=14209
+
+
+
+ SecurityMode
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ MaxNetworkMessageSize
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ GroupProperties
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ Status
+
+ i=17315
+ i=14643
+ i=78
+ i=17310
+
+
+
+ State
+
+ i=63
+ i=78
+ i=17314
+
+
+
+ WriterGroupId
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ PublishingInterval
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ KeepAliveTime
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ Priority
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ LocaleIds
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ HeaderLayoutUri
+
+ i=68
+ i=78
+ i=17310
+
+
+
+ <ReaderGroupName>
+
+ i=17326
+ i=17302
+ i=17487
+ i=17329
+ i=17999
+ i=11508
+ i=14209
+
+
+
+ SecurityMode
+
+ i=68
+ i=78
+ i=17325
+
+
+
+ MaxNetworkMessageSize
+
+ i=68
+ i=78
+ i=17325
+
+
+
+ GroupProperties
+
+ i=68
+ i=78
+ i=17325
+
+
+
+ Status
+
+ i=17330
+ i=14643
+ i=78
+ i=17325
+
+
+
+ State
+
+ i=63
+ i=78
+ i=17329
+
+
+
+ Status
+
+ i=14601
+ i=14643
+ i=78
+ i=14209
+
+
+
+ State
+
+ i=63
+ i=78
+ i=14600
+
+
+
+ Diagnostics
+
+ i=19242
+ i=19243
+ i=19248
+ i=19253
+ i=19254
+ i=19255
+ i=19286
+ i=19786
+ i=80
+ i=14209
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=19241
+
+
+
+ TotalInformation
+
+ i=19244
+ i=19245
+ i=19246
+ i=19725
+ i=78
+ i=19241
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19243
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19243
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19243
+
+
+
+ TotalError
+
+ i=19249
+ i=19250
+ i=19251
+ i=19725
+ i=78
+ i=19241
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19248
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19248
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19248
+
+
+
+ Reset
+
+ i=78
+ i=19241
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=19241
+
+
+
+ Counters
+
+ i=19256
+ i=19261
+ i=19266
+ i=19271
+ i=19276
+ i=19281
+ i=58
+ i=78
+ i=19241
+
+
+
+ StateError
+
+ i=19257
+ i=19258
+ i=19259
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19256
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19256
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19256
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=19262
+ i=19263
+ i=19264
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19261
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19261
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19261
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=19267
+ i=19268
+ i=19269
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19266
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19266
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19266
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=19272
+ i=19273
+ i=19274
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19271
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19271
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19271
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=19277
+ i=19278
+ i=19279
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19276
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19276
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19276
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=19282
+ i=19283
+ i=19284
+ i=19725
+ i=78
+ i=19255
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19281
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19281
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19281
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=19287
+ i=58
+ i=78
+ i=19241
+
+
+
+ ResolvedAddress
+
+ i=19288
+ i=63
+ i=78
+ i=19286
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19287
+
+
+ 0
+
+
+
+ AddWriterGroup
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.3
+
+ i=17428
+ i=17456
+ i=80
+ i=14209
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17427
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15480
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17427
+
+
+
+
+
+ i=297
+
+
+
+ GroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddReaderGroup
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.4
+
+ i=17507
+ i=17508
+ i=80
+ i=14209
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17465
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15520
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17465
+
+
+
+
+
+ i=297
+
+
+
+ GroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveGroup
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.5
+
+ i=14226
+ i=80
+ i=14209
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=14225
+
+
+
+
+
+ i=297
+
+
+
+ GroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ ConnectionTransportType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.8
+
+ i=58
+
+
+
+ PubSubGroupType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.2
+
+ i=15926
+ i=15927
+ i=15928
+ i=17724
+ i=17488
+ i=15265
+ i=58
+
+
+
+ SecurityMode
+
+ i=68
+ i=78
+ i=14232
+
+
+
+ SecurityGroupId
+
+ i=68
+ i=80
+ i=14232
+
+
+
+ SecurityKeyServices
+
+ i=68
+ i=80
+ i=14232
+
+
+
+ MaxNetworkMessageSize
+
+ i=68
+ i=78
+ i=14232
+
+
+
+ GroupProperties
+
+ i=68
+ i=78
+ i=14232
+
+
+
+ Status
+
+ i=15266
+ i=14643
+ i=78
+ i=14232
+
+
+
+ State
+
+ i=63
+ i=78
+ i=15265
+
+
+
+ WriterGroupType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.3
+
+ i=17736
+ i=17737
+ i=17738
+ i=17739
+ i=17740
+ i=17559
+ i=17741
+ i=17742
+ i=17743
+ i=17812
+ i=17969
+ i=17992
+ i=14232
+
+
+
+ WriterGroupId
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ PublishingInterval
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ KeepAliveTime
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ Priority
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ LocaleIds
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ HeaderLayoutUri
+
+ i=68
+ i=78
+ i=17725
+
+
+
+ TransportSettings
+
+ i=17997
+ i=80
+ i=17725
+
+
+
+ MessageSettings
+
+ i=17998
+ i=80
+ i=17725
+
+
+
+ <DataSetWriterName>
+
+ i=17744
+ i=17745
+ i=17490
+ i=17749
+ i=15298
+ i=11508
+ i=17725
+
+
+
+ DataSetWriterId
+
+ i=68
+ i=78
+ i=17743
+
+
+
+ DataSetFieldContentMask
+
+ i=68
+ i=78
+ i=17743
+
+
+
+ DataSetWriterProperties
+
+ i=68
+ i=78
+ i=17743
+
+
+
+ Status
+
+ i=17750
+ i=14643
+ i=78
+ i=17743
+
+
+
+ State
+
+ i=63
+ i=78
+ i=17749
+
+
+
+ Diagnostics
+
+ i=17813
+ i=17814
+ i=17819
+ i=17824
+ i=17825
+ i=17826
+ i=17858
+ i=19834
+ i=80
+ i=17725
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=17812
+
+
+
+ TotalInformation
+
+ i=17815
+ i=17816
+ i=17817
+ i=19725
+ i=78
+ i=17812
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17814
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17814
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17814
+
+
+
+ TotalError
+
+ i=17820
+ i=17821
+ i=17822
+ i=19725
+ i=78
+ i=17812
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17819
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17819
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17819
+
+
+
+ Reset
+
+ i=78
+ i=17812
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=17812
+
+
+
+ Counters
+
+ i=17827
+ i=17832
+ i=17837
+ i=17842
+ i=17847
+ i=17853
+ i=17859
+ i=17874
+ i=17900
+ i=58
+ i=78
+ i=17812
+
+
+
+ StateError
+
+ i=17828
+ i=17829
+ i=17830
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17827
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17827
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17827
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=17833
+ i=17834
+ i=17835
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17832
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17832
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17832
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=17838
+ i=17839
+ i=17840
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17837
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17837
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17837
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=17843
+ i=17844
+ i=17845
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17842
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17842
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17842
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=17848
+ i=17849
+ i=17850
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17847
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17847
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17847
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=17854
+ i=17855
+ i=17856
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17853
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17853
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17853
+
+
+ 0
+
+
+
+ SentNetworkMessages
+
+ i=17864
+ i=17871
+ i=17872
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17859
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17859
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17859
+
+
+ 0
+
+
+
+ FailedTransmissions
+
+ i=17878
+ i=17885
+ i=17892
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17874
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17874
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17874
+
+
+ 0
+
+
+
+ EncryptionErrors
+
+ i=17901
+ i=17902
+ i=17903
+ i=19725
+ i=78
+ i=17826
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=17900
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=17900
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17900
+
+
+ 1
+
+
+
+ LiveValues
+
+ i=17913
+ i=17927
+ i=58
+ i=78
+ i=17812
+
+
+
+ ConfiguredDataSetWriters
+
+ i=17920
+ i=63
+ i=78
+ i=17858
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17913
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=17934
+ i=63
+ i=78
+ i=17858
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=17927
+
+
+ 0
+
+
+
+ AddDataSetWriter
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.4
+
+ i=17976
+ i=17987
+ i=80
+ i=17725
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17969
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15597
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17969
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetWriter
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.5
+
+ i=17993
+ i=80
+ i=17725
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17992
+
+
+
+
+
+ i=297
+
+
+
+ DataSetWriterNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ HasDataSetWriter
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.6
+
+ i=47
+
+ IsWriterInGroup
+
+
+ HasWriterGroup
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.9
+
+ i=47
+
+ IsWriterGroupOf
+
+
+ WriterGroupTransportType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.7
+
+ i=58
+
+
+
+ WriterGroupMessageType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.8
+
+ i=58
+
+
+
+ ReaderGroupType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.9
+
+ i=18076
+ i=21015
+ i=21080
+ i=21081
+ i=21082
+ i=21085
+ i=14232
+
+
+
+ <DataSetReaderName>
+
+ i=18077
+ i=18078
+ i=18079
+ i=18080
+ i=18081
+ i=18082
+ i=17560
+ i=17562
+ i=17492
+ i=18088
+ i=21006
+ i=15306
+ i=11508
+ i=17999
+
+
+
+ PublisherId
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ WriterGroupId
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ DataSetWriterId
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ DataSetFieldContentMask
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ MessageReceiveTimeout
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ KeyFrameCount
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ HeaderLayoutUri
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ DataSetReaderProperties
+
+ i=68
+ i=78
+ i=18076
+
+
+
+ Status
+
+ i=18089
+ i=14643
+ i=78
+ i=18076
+
+
+
+ State
+
+ i=63
+ i=78
+ i=18088
+
+
+
+ SubscribedDataSet
+
+ i=15108
+ i=78
+ i=18076
+
+
+
+ Diagnostics
+
+ i=21016
+ i=21017
+ i=21022
+ i=21027
+ i=21028
+ i=21029
+ i=21060
+ i=19903
+ i=80
+ i=17999
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=21015
+
+
+
+ TotalInformation
+
+ i=21018
+ i=21019
+ i=21020
+ i=19725
+ i=78
+ i=21015
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21017
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21017
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21017
+
+
+
+ TotalError
+
+ i=21023
+ i=21024
+ i=21025
+ i=19725
+ i=78
+ i=21015
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21022
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21022
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21022
+
+
+
+ Reset
+
+ i=78
+ i=21015
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=21015
+
+
+
+ Counters
+
+ i=21030
+ i=21035
+ i=21040
+ i=21045
+ i=21050
+ i=21055
+ i=21061
+ i=58
+ i=78
+ i=21015
+
+
+
+ StateError
+
+ i=21031
+ i=21032
+ i=21033
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21030
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21030
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21030
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=21036
+ i=21037
+ i=21038
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21035
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21035
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21035
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=21041
+ i=21042
+ i=21043
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21040
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21040
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21040
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=21046
+ i=21047
+ i=21048
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21045
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21045
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21045
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=21051
+ i=21052
+ i=21053
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21050
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21050
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21050
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=21056
+ i=21057
+ i=21058
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21055
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21055
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21055
+
+
+ 0
+
+
+
+ ReceivedNetworkMessages
+
+ i=21062
+ i=21063
+ i=21064
+ i=19725
+ i=78
+ i=21029
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=21061
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=21061
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21061
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=21076
+ i=21078
+ i=58
+ i=78
+ i=21015
+
+
+
+ ConfiguredDataSetReaders
+
+ i=21077
+ i=63
+ i=78
+ i=21060
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21076
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=21079
+ i=63
+ i=78
+ i=21060
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=21078
+
+
+ 0
+
+
+
+ TransportSettings
+
+ i=21090
+ i=80
+ i=17999
+
+
+
+ MessageSettings
+
+ i=21091
+ i=80
+ i=17999
+
+
+
+ AddDataSetReader
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.10
+
+ i=21083
+ i=21084
+ i=80
+ i=17999
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=21082
+
+
+
+
+
+ i=297
+
+
+
+ Configuration
+
+ i=15623
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=21082
+
+
+
+
+
+ i=297
+
+
+
+ DataSetReaderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetReader
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.11
+
+ i=21086
+ i=80
+ i=17999
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=21085
+
+
+
+
+
+ i=297
+
+
+
+ DataSetReaderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ HasDataSetReader
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.12
+
+ i=47
+
+ IsReaderInGroup
+
+
+ HasReaderGroup
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.10
+
+ i=47
+
+ IsReaderGroupOf
+
+
+ ReaderGroupTransportType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.13
+
+ i=58
+
+
+
+ ReaderGroupMessageType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.6/#9.1.6.14
+
+ i=58
+
+
+
+ DataSetWriterType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.7/#9.1.7.2
+
+ i=21092
+ i=21093
+ i=21094
+ i=17493
+ i=15303
+ i=21095
+ i=15299
+ i=19550
+ i=58
+
+
+
+ DataSetWriterId
+
+ i=68
+ i=78
+ i=15298
+
+
+
+ DataSetFieldContentMask
+
+ i=68
+ i=78
+ i=15298
+
+
+
+ KeyFrameCount
+
+ i=68
+ i=80
+ i=15298
+
+
+
+ DataSetWriterProperties
+
+ i=68
+ i=78
+ i=15298
+
+
+
+ TransportSettings
+
+ i=15305
+ i=80
+ i=15298
+
+
+
+ MessageSettings
+
+ i=21096
+ i=80
+ i=15298
+
+
+
+ Status
+
+ i=15300
+ i=14643
+ i=78
+ i=15298
+
+
+
+ State
+
+ i=63
+ i=78
+ i=15299
+
+
+
+ Diagnostics
+
+ i=19551
+ i=19552
+ i=19557
+ i=19562
+ i=19563
+ i=19564
+ i=19595
+ i=19968
+ i=80
+ i=15298
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=19550
+
+
+
+ TotalInformation
+
+ i=19553
+ i=19554
+ i=19555
+ i=19725
+ i=78
+ i=19550
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19552
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19552
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19552
+
+
+
+ TotalError
+
+ i=19558
+ i=19559
+ i=19560
+ i=19725
+ i=78
+ i=19550
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19557
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19557
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19557
+
+
+
+ Reset
+
+ i=78
+ i=19550
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=19550
+
+
+
+ Counters
+
+ i=19565
+ i=19570
+ i=19575
+ i=19580
+ i=19585
+ i=19590
+ i=19596
+ i=58
+ i=78
+ i=19550
+
+
+
+ StateError
+
+ i=19566
+ i=19567
+ i=19568
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19565
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19565
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19565
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=19571
+ i=19572
+ i=19573
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19570
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19570
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19570
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=19576
+ i=19577
+ i=19578
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19575
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19575
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19575
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=19581
+ i=19582
+ i=19583
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19580
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19580
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19580
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=19586
+ i=19587
+ i=19588
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19585
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19585
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19585
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=19591
+ i=19592
+ i=19593
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19590
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19590
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19590
+
+
+ 0
+
+
+
+ FailedDataSetMessages
+
+ i=19597
+ i=19598
+ i=19599
+ i=19725
+ i=78
+ i=19564
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19596
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19596
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19596
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=58
+ i=78
+ i=19550
+
+
+
+ DataSetWriterTransportType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.7/#9.1.7.3
+
+ i=58
+
+
+
+ DataSetWriterMessageType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.7/#9.1.7.4
+
+ i=58
+
+
+
+ DataSetReaderType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.8/#9.1.8.2
+
+ i=21097
+ i=21098
+ i=21099
+ i=21100
+ i=21101
+ i=21102
+ i=17563
+ i=17564
+ i=15932
+ i=15933
+ i=15934
+ i=17494
+ i=15311
+ i=21103
+ i=15307
+ i=19609
+ i=15316
+ i=17386
+ i=17389
+ i=58
+
+
+
+ PublisherId
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ WriterGroupId
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ DataSetWriterId
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ DataSetFieldContentMask
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ MessageReceiveTimeout
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ KeyFrameCount
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ HeaderLayoutUri
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ SecurityMode
+
+ i=68
+ i=80
+ i=15306
+
+
+
+ SecurityGroupId
+
+ i=68
+ i=80
+ i=15306
+
+
+
+ SecurityKeyServices
+
+ i=68
+ i=80
+ i=15306
+
+
+
+ DataSetReaderProperties
+
+ i=68
+ i=78
+ i=15306
+
+
+
+ TransportSettings
+
+ i=15319
+ i=80
+ i=15306
+
+
+
+ MessageSettings
+
+ i=21104
+ i=80
+ i=15306
+
+
+
+ Status
+
+ i=15308
+ i=14643
+ i=78
+ i=15306
+
+
+
+ State
+
+ i=63
+ i=78
+ i=15307
+
+
+
+ Diagnostics
+
+ i=19610
+ i=19611
+ i=19616
+ i=19621
+ i=19622
+ i=19623
+ i=19654
+ i=20027
+ i=80
+ i=15306
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=19609
+
+
+
+ TotalInformation
+
+ i=19612
+ i=19613
+ i=19614
+ i=19725
+ i=78
+ i=19609
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19611
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19611
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19611
+
+
+
+ TotalError
+
+ i=19617
+ i=19618
+ i=19619
+ i=19725
+ i=78
+ i=19609
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19616
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19616
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19616
+
+
+
+ Reset
+
+ i=78
+ i=19609
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=19609
+
+
+
+ Counters
+
+ i=19624
+ i=19629
+ i=19634
+ i=19639
+ i=19644
+ i=19649
+ i=19655
+ i=58
+ i=78
+ i=19609
+
+
+
+ StateError
+
+ i=19625
+ i=19626
+ i=19627
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19624
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19624
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19624
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=19630
+ i=19631
+ i=19632
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19629
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19629
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19629
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=19635
+ i=19636
+ i=19637
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19634
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19634
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19634
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=19640
+ i=19641
+ i=19642
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19639
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19639
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19639
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=19645
+ i=19646
+ i=19647
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19644
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19644
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19644
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=19650
+ i=19651
+ i=19652
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19649
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19649
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19649
+
+
+ 0
+
+
+
+ FailedDataSetMessages
+
+ i=19656
+ i=19657
+ i=19658
+ i=19725
+ i=78
+ i=19623
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19655
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19655
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19655
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=58
+ i=78
+ i=19609
+
+
+
+ SubscribedDataSet
+
+ i=15108
+ i=78
+ i=15306
+
+
+
+ CreateTargetVariables
+ PubSub Model SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.8/#9.1.8.5
+
+ i=17387
+ i=17388
+ i=80
+ i=15306
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17386
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetVariablesToAdd
+
+ i=14744
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17386
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ CreateDataSetMirror
+ PubSub Model SubscribedDataSet Mirror
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.8/#9.1.8.6
+
+ i=17390
+ i=17391
+ i=80
+ i=15306
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=17389
+
+
+
+
+
+ i=297
+
+
+
+ ParentNodeName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RolePermissions
+
+ i=96
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=17389
+
+
+
+
+
+ i=297
+
+
+
+ ParentNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ DataSetReaderTransportType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.8/#9.1.8.3
+
+ i=58
+
+
+
+ DataSetReaderMessageType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.8/#9.1.8.4
+
+ i=58
+
+
+
+ SubscribedDataSetType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.1
+
+ i=58
+
+
+
+ TargetVariablesType
+ PubSub Model SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.2.1
+
+ i=15114
+ i=15115
+ i=15118
+ i=15108
+
+
+
+ TargetVariables
+
+ i=68
+ i=78
+ i=15111
+
+
+
+ AddTargetVariables
+ PubSub Model SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.2.2
+
+ i=15116
+ i=15117
+ i=80
+ i=15111
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15115
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetVariablesToAdd
+
+ i=14744
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15115
+
+
+
+
+
+ i=297
+
+
+
+ AddResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ RemoveTargetVariables
+ PubSub Model SubscribedDataSet
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.2.3
+
+ i=15119
+ i=15120
+ i=80
+ i=15111
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=15118
+
+
+
+
+
+ i=297
+
+
+
+ ConfigurationVersion
+
+ i=14593
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ TargetsToRemove
+
+ i=7
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=15118
+
+
+
+
+
+ i=297
+
+
+
+ RemoveResults
+
+ i=19
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ SubscribedDataSetMirrorType
+ PubSub Model SubscribedDataSet Mirror
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.3
+
+ i=15108
+
+
+
+ SubscribedDataSetFolderType
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.4.1
+
+ i=23796
+ i=23807
+ i=23811
+ i=23814
+ i=23816
+ i=23819
+ i=61
+
+
+
+ <SubscribedDataSetFolderName>
+
+ i=23797
+ i=23800
+ i=23802
+ i=23805
+ i=23795
+ i=11508
+ i=23795
+
+
+
+ AddSubscribedDataSet
+
+ i=23798
+ i=23799
+ i=80
+ i=23796
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23797
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSet
+
+ i=23600
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23797
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSubscribedDataSet
+
+ i=23801
+ i=80
+ i=23796
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23800
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddDataSetFolder
+
+ i=23803
+ i=23804
+ i=80
+ i=23796
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23802
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23802
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetFolder
+
+ i=23806
+ i=80
+ i=23796
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23805
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ <StandaloneSubscribedDataSetName>
+
+ i=23808
+ i=23809
+ i=23810
+ i=23828
+ i=11508
+ i=23795
+
+
+
+ SubscribedDataSet
+
+ i=15108
+ i=78
+ i=23807
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=23807
+
+
+
+ IsConnected
+
+ i=68
+ i=78
+ i=23807
+
+
+
+ AddSubscribedDataSet
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.4.2
+
+ i=23812
+ i=23813
+ i=80
+ i=23795
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23811
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSet
+
+ i=23600
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23811
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveSubscribedDataSet
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.4.3
+
+ i=23815
+ i=80
+ i=23795
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23814
+
+
+
+
+
+ i=297
+
+
+
+ SubscribedDataSetNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ AddDataSetFolder
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.4.4
+
+ i=23817
+ i=23818
+ i=80
+ i=23795
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23816
+
+
+
+
+
+ i=297
+
+
+
+ Name
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23816
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveDataSetFolder
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.4.5
+
+ i=23820
+ i=80
+ i=23795
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23819
+
+
+
+
+
+ i=297
+
+
+
+ DataSetFolderNodeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ StandaloneSubscribedDataSetType
+ PubSub Model SubscribedDataSet Standalone
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.9/#9.1.9.5
+
+ i=23829
+ i=23830
+ i=23831
+ i=58
+
+
+
+ SubscribedDataSet
+
+ i=15108
+ i=78
+ i=23828
+
+
+
+ DataSetMetaData
+
+ i=68
+ i=78
+ i=23828
+
+
+
+ IsConnected
+
+ i=68
+ i=78
+ i=23828
+
+
+
+ PubSubStatusType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.10/#9.1.10.1
+
+ i=14644
+ i=14645
+ i=14646
+ i=58
+
+
+
+ State
+
+ i=63
+ i=78
+ i=14643
+
+
+
+ Enable
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.10/#9.1.10.2
+
+ i=80
+ i=14643
+
+
+
+ Disable
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.10/#9.1.10.3
+
+ i=80
+ i=14643
+
+
+
+ PubSubDiagnosticsType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.2
+
+ i=19678
+ i=19679
+ i=19684
+ i=19689
+ i=19690
+ i=19691
+ i=19722
+ i=58
+
+
+
+ DiagnosticsLevel
+
+ i=63
+ i=78
+ i=19677
+
+
+
+ TotalInformation
+
+ i=19680
+ i=19681
+ i=19682
+ i=19725
+ i=78
+ i=19677
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19679
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19679
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19679
+
+
+
+ TotalError
+
+ i=19685
+ i=19686
+ i=19687
+ i=19725
+ i=78
+ i=19677
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19684
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19684
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19684
+
+
+
+ Reset
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.3
+
+ i=78
+ i=19677
+
+
+
+ SubError
+
+ i=63
+ i=78
+ i=19677
+
+
+
+ Counters
+
+ i=19692
+ i=19697
+ i=19702
+ i=19707
+ i=19712
+ i=19717
+ i=58
+ i=78
+ i=19677
+
+
+
+ StateError
+
+ i=19693
+ i=19694
+ i=19695
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19692
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19692
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19692
+
+
+ 0
+
+
+
+ StateOperationalByMethod
+
+ i=19698
+ i=19699
+ i=19700
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19697
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19697
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19697
+
+
+ 0
+
+
+
+ StateOperationalByParent
+
+ i=19703
+ i=19704
+ i=19705
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19702
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19702
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19702
+
+
+ 0
+
+
+
+ StateOperationalFromError
+
+ i=19708
+ i=19709
+ i=19710
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19707
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19707
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19707
+
+
+ 0
+
+
+
+ StatePausedByParent
+
+ i=19713
+ i=19714
+ i=19715
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19712
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19712
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19712
+
+
+ 0
+
+
+
+ StateDisabledByMethod
+
+ i=19718
+ i=19719
+ i=19720
+ i=19725
+ i=78
+ i=19691
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19717
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19717
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19717
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=58
+ i=78
+ i=19677
+
+
+
+ DiagnosticsLevel
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.4
+
+ i=19724
+ i=29
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=19723
+
+
+
+
+ Basic
+
+
+ Advanced
+
+
+ Info
+
+
+ Log
+
+
+ Debug
+
+
+
+
+
+ PubSubDiagnosticsCounterType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.5
+
+ i=19726
+ i=19727
+ i=19728
+ i=19729
+ i=63
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19725
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19725
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19725
+
+
+
+ TimeFirstChange
+
+ i=68
+ i=80
+ i=19725
+
+
+
+ PubSubDiagnosticsCounterClassification
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.6
+
+ i=19731
+ i=29
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=19730
+
+
+
+
+ Information
+
+
+ Error
+
+
+
+
+
+ PubSubDiagnosticsRootType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.7
+
+ i=19777
+ i=19677
+
+
+
+ LiveValues
+
+ i=19778
+ i=19780
+ i=19782
+ i=19784
+ i=58
+ i=78
+ i=19732
+
+
+
+ ConfiguredDataSetWriters
+
+ i=19779
+ i=63
+ i=78
+ i=19777
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19778
+
+
+ 0
+
+
+
+ ConfiguredDataSetReaders
+
+ i=19781
+ i=63
+ i=78
+ i=19777
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19780
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=19783
+ i=63
+ i=78
+ i=19777
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19782
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=19785
+ i=63
+ i=78
+ i=19777
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19784
+
+
+ 0
+
+
+
+ PubSubDiagnosticsConnectionType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.8
+
+ i=19831
+ i=19677
+
+
+
+ LiveValues
+
+ i=19832
+ i=58
+ i=78
+ i=19786
+
+
+
+ ResolvedAddress
+
+ i=19833
+ i=63
+ i=78
+ i=19831
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19832
+
+
+ 0
+
+
+
+ PubSubDiagnosticsWriterGroupType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.9
+
+ i=19848
+ i=19879
+ i=19677
+
+
+
+ Counters
+
+ i=19880
+ i=19885
+ i=19890
+ i=58
+ i=78
+ i=19834
+
+
+
+ SentNetworkMessages
+
+ i=19881
+ i=19882
+ i=19883
+ i=19725
+ i=78
+ i=19848
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19880
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19880
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19880
+
+
+ 0
+
+
+
+ FailedTransmissions
+
+ i=19886
+ i=19887
+ i=19888
+ i=19725
+ i=78
+ i=19848
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19885
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19885
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19885
+
+
+ 0
+
+
+
+ EncryptionErrors
+
+ i=19891
+ i=19892
+ i=19893
+ i=19725
+ i=78
+ i=19848
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19890
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19890
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19890
+
+
+ 1
+
+
+
+ LiveValues
+
+ i=19895
+ i=19897
+ i=19899
+ i=19901
+ i=58
+ i=78
+ i=19834
+
+
+
+ ConfiguredDataSetWriters
+
+ i=19896
+ i=63
+ i=78
+ i=19879
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19895
+
+
+ 0
+
+
+
+ OperationalDataSetWriters
+
+ i=19898
+ i=63
+ i=78
+ i=19879
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19897
+
+
+ 0
+
+
+
+ SecurityTokenID
+
+ i=19900
+ i=63
+ i=80
+ i=19879
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19899
+
+
+ 2
+
+
+
+ TimeToNextTokenID
+
+ i=19902
+ i=63
+ i=80
+ i=19879
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19901
+
+
+ 2
+
+
+
+ PubSubDiagnosticsReaderGroupType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.10
+
+ i=19917
+ i=19948
+ i=19677
+
+
+
+ Counters
+
+ i=19949
+ i=19954
+ i=19959
+ i=58
+ i=78
+ i=19903
+
+
+
+ ReceivedNetworkMessages
+
+ i=19950
+ i=19951
+ i=19952
+ i=19725
+ i=78
+ i=19917
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19949
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19949
+
+
+ 0
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19949
+
+
+ 0
+
+
+
+ ReceivedInvalidNetworkMessages
+
+ i=19955
+ i=19956
+ i=19957
+ i=19725
+ i=80
+ i=19917
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19954
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19954
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19954
+
+
+ 1
+
+
+
+ DecryptionErrors
+
+ i=19960
+ i=19961
+ i=19962
+ i=19725
+ i=80
+ i=19917
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=19959
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=19959
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19959
+
+
+ 1
+
+
+
+ LiveValues
+
+ i=19964
+ i=19966
+ i=58
+ i=78
+ i=19903
+
+
+
+ ConfiguredDataSetReaders
+
+ i=19965
+ i=63
+ i=78
+ i=19948
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19964
+
+
+ 0
+
+
+
+ OperationalDataSetReaders
+
+ i=19967
+ i=63
+ i=78
+ i=19948
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=19966
+
+
+ 0
+
+
+
+ PubSubDiagnosticsDataSetWriterType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.11
+
+ i=19982
+ i=20013
+ i=19677
+
+
+
+ Counters
+
+ i=20014
+ i=58
+ i=78
+ i=19968
+
+
+
+ FailedDataSetMessages
+
+ i=20015
+ i=20016
+ i=20017
+ i=19725
+ i=78
+ i=19982
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=20014
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=20014
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20014
+
+
+ 0
+
+
+
+ LiveValues
+
+ i=20019
+ i=20021
+ i=20023
+ i=20025
+ i=58
+ i=78
+ i=19968
+
+
+
+ MessageSequenceNumber
+
+ i=20020
+ i=63
+ i=80
+ i=20013
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20019
+
+
+ 2
+
+
+
+ StatusCode
+
+ i=20022
+ i=63
+ i=80
+ i=20013
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20021
+
+
+ 2
+
+
+
+ MajorVersion
+
+ i=20024
+ i=63
+ i=80
+ i=20013
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20023
+
+
+ 2
+
+
+
+ MinorVersion
+
+ i=20026
+ i=63
+ i=80
+ i=20013
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20025
+
+
+ 2
+
+
+
+ PubSubDiagnosticsDataSetReaderType
+ PubSub Model Diagnostics
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.11/#9.1.11.12
+
+ i=20041
+ i=20072
+ i=19677
+
+
+
+ Counters
+
+ i=20073
+ i=20078
+ i=58
+ i=78
+ i=20027
+
+
+
+ FailedDataSetMessages
+
+ i=20074
+ i=20075
+ i=20076
+ i=19725
+ i=78
+ i=20041
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=20073
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=20073
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20073
+
+
+ 0
+
+
+
+ DecryptionErrors
+
+ i=20079
+ i=20080
+ i=20081
+ i=19725
+ i=80
+ i=20041
+
+
+
+ Active
+
+ i=68
+ i=78
+ i=20078
+
+
+
+ Classification
+
+ i=68
+ i=78
+ i=20078
+
+
+ 1
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20078
+
+
+ 1
+
+
+
+ LiveValues
+
+ i=20083
+ i=20085
+ i=20087
+ i=20089
+ i=20091
+ i=20093
+ i=58
+ i=78
+ i=20027
+
+
+
+ MessageSequenceNumber
+
+ i=20084
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20083
+
+
+ 2
+
+
+
+ StatusCode
+
+ i=20086
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20085
+
+
+ 2
+
+
+
+ MajorVersion
+
+ i=20088
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20087
+
+
+ 2
+
+
+
+ MinorVersion
+
+ i=20090
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20089
+
+
+ 2
+
+
+
+ SecurityTokenID
+
+ i=20092
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20091
+
+
+ 2
+
+
+
+ TimeToNextTokenID
+
+ i=20094
+ i=63
+ i=80
+ i=20072
+
+
+
+ DiagnosticsLevel
+
+ i=68
+ i=78
+ i=20093
+
+
+ 2
+
+
+
+ PubSubCapabilitiesType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.12
+
+ i=23833
+ i=23834
+ i=23835
+ i=23836
+ i=23837
+ i=23838
+ i=32651
+ i=32652
+ i=32653
+ i=32654
+ i=32655
+ i=58
+
+
+
+ MaxPubSubConnections
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxWriterGroups
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxReaderGroups
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxDataSetWriters
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxDataSetReaders
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxFieldsPerDataSet
+
+ i=68
+ i=78
+ i=23832
+
+
+
+ MaxDataSetWritersPerGroup
+
+ i=68
+ i=80
+ i=23832
+
+
+
+ MaxNetworkMessageSizeDatagram
+
+ i=68
+ i=80
+ i=23832
+
+
+
+ MaxNetworkMessageSizeBroker
+
+ i=68
+ i=80
+ i=23832
+
+
+
+ SupportSecurityKeyPull
+
+ i=68
+ i=80
+ i=23832
+
+
+
+ SupportSecurityKeyPush
+
+ i=68
+ i=80
+ i=23832
+
+
+
+ PubSubStatusEventType
+ PubSub Model Status Event
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.13/#9.1.13.1
+
+ i=15545
+ i=15546
+ i=15547
+ i=2130
+
+
+
+ ConnectionId
+
+ i=68
+ i=78
+ i=15535
+
+
+
+ GroupId
+
+ i=68
+ i=78
+ i=15535
+
+
+
+ State
+
+ i=68
+ i=78
+ i=15535
+
+
+
+ PubSubTransportLimitsExceedEventType
+ PubSub Model Diagnostics Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.13/#9.1.13.2
+
+ i=15561
+ i=15562
+ i=15535
+
+
+
+ Actual
+
+ i=68
+ i=78
+ i=15548
+
+
+
+ Maximum
+
+ i=68
+ i=78
+ i=15548
+
+
+
+ PubSubCommunicationFailureEventType
+ PubSub Model Diagnostics Events
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.13/#9.1.13.3
+
+ i=15576
+ i=15535
+
+
+
+ Error
+
+ i=68
+ i=78
+ i=15563
+
+
+
+ UadpWriterGroupMessageType
+ PubSub Model UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.1/#9.2.1.1
+
+ i=21106
+ i=21107
+ i=21108
+ i=21109
+ i=21110
+ i=17998
+
+
+
+ GroupVersion
+
+ i=68
+ i=78
+ i=21105
+
+
+
+ DataSetOrdering
+
+ i=68
+ i=78
+ i=21105
+
+
+
+ NetworkMessageContentMask
+
+ i=68
+ i=78
+ i=21105
+
+
+
+ SamplingOffset
+
+ i=68
+ i=80
+ i=21105
+
+
+
+ PublishingOffset
+
+ i=68
+ i=78
+ i=21105
+
+
+
+ UadpDataSetWriterMessageType
+ PubSub Model UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.1/#9.2.1.2
+
+ i=21112
+ i=21113
+ i=21114
+ i=21115
+ i=21096
+
+
+
+ DataSetMessageContentMask
+
+ i=68
+ i=78
+ i=21111
+
+
+
+ ConfiguredSize
+
+ i=68
+ i=78
+ i=21111
+
+
+
+ NetworkMessageNumber
+
+ i=68
+ i=78
+ i=21111
+
+
+
+ DataSetOffset
+
+ i=68
+ i=78
+ i=21111
+
+
+
+ UadpDataSetReaderMessageType
+ PubSub Model UADP
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.1/#9.2.1.3
+
+ i=21117
+ i=21119
+ i=17477
+ i=21120
+ i=21121
+ i=21122
+ i=21123
+ i=21124
+ i=21125
+ i=21104
+
+
+
+ GroupVersion
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ NetworkMessageNumber
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ DataSetOffset
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ DataSetClassId
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ NetworkMessageContentMask
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ DataSetMessageContentMask
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ PublishingInterval
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ ProcessingOffset
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ ReceiveOffset
+
+ i=68
+ i=78
+ i=21116
+
+
+
+ JsonWriterGroupMessageType
+ PubSub Model JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.2/#9.2.2.1
+
+ i=21127
+ i=17998
+
+
+
+ NetworkMessageContentMask
+
+ i=68
+ i=78
+ i=21126
+
+
+
+ JsonDataSetWriterMessageType
+ PubSub Model JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.2/#9.2.2.2
+
+ i=21129
+ i=21096
+
+
+
+ DataSetMessageContentMask
+
+ i=68
+ i=78
+ i=21128
+
+
+
+ JsonDataSetReaderMessageType
+ PubSub Model JSON
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.2.2/#9.2.2.3
+
+ i=21131
+ i=21132
+ i=21104
+
+
+
+ NetworkMessageContentMask
+
+ i=68
+ i=78
+ i=21130
+
+
+
+ DataSetMessageContentMask
+
+ i=68
+ i=78
+ i=21130
+
+
+
+ DatagramConnectionTransportType
+ PubSub Model Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.1/#9.3.1.1
+
+ i=15072
+ i=23839
+ i=23840
+ i=25525
+ i=25526
+ i=17721
+
+
+
+ DiscoveryAddress
+
+ i=15154
+ i=21145
+ i=78
+ i=15064
+
+
+
+ NetworkInterface
+
+ i=17579
+ i=16309
+ i=78
+ i=15072
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=15154
+
+
+
+ DiscoveryAnnounceRate
+
+ i=68
+ i=80
+ i=15064
+
+
+
+ DiscoveryMaxMessageSize
+
+ i=68
+ i=80
+ i=15064
+
+
+
+ QosCategory
+
+ i=68
+ i=80
+ i=15064
+
+
+
+ DatagramQos
+
+ i=68
+ i=80
+ i=15064
+
+
+
+ DatagramWriterGroupTransportType
+ PubSub Model Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.1/#9.3.1.2
+
+ i=21134
+ i=21135
+ i=23842
+ i=25527
+ i=23847
+ i=23848
+ i=23849
+ i=17997
+
+
+
+ MessageRepeatCount
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ MessageRepeatDelay
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ Address
+
+ i=23843
+ i=21145
+ i=80
+ i=21133
+
+
+
+ NetworkInterface
+
+ i=23844
+ i=16309
+ i=78
+ i=23842
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=23843
+
+
+
+ QosCategory
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ DatagramQos
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ DiscoveryAnnounceRate
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ Topic
+
+ i=68
+ i=80
+ i=21133
+
+
+
+ DatagramDataSetReaderTransportType
+ PubSub Model Datagram
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.1/#9.3.1.4
+
+ i=24017
+ i=25528
+ i=24022
+ i=24023
+ i=15319
+
+
+
+ Address
+
+ i=24018
+ i=21145
+ i=80
+ i=24016
+
+
+
+ NetworkInterface
+
+ i=24019
+ i=16309
+ i=78
+ i=24017
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=24018
+
+
+
+ QosCategory
+
+ i=68
+ i=80
+ i=24016
+
+
+
+ DatagramQos
+
+ i=68
+ i=80
+ i=24016
+
+
+
+ Topic
+
+ i=68
+ i=80
+ i=24016
+
+
+
+ BrokerConnectionTransportType
+ PubSub Model Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.2/#9.3.2.1
+
+ i=15156
+ i=15178
+ i=17721
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=15155
+
+
+
+ AuthenticationProfileUri
+
+ i=68
+ i=78
+ i=15155
+
+
+
+ BrokerWriterGroupTransportType
+ PubSub Model Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.2/#9.3.2.2
+
+ i=21137
+ i=15246
+ i=15247
+ i=15249
+ i=17997
+
+
+
+ QueueName
+
+ i=68
+ i=78
+ i=21136
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=21136
+
+
+
+ AuthenticationProfileUri
+
+ i=68
+ i=78
+ i=21136
+
+
+
+ RequestedDeliveryGuarantee
+
+ i=68
+ i=78
+ i=21136
+
+
+
+ BrokerDataSetWriterTransportType
+ PubSub Model Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.2/#9.3.2.3
+
+ i=21139
+ i=21140
+ i=15250
+ i=15251
+ i=15330
+ i=21141
+ i=15305
+
+
+
+ QueueName
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ MetaDataQueueName
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ AuthenticationProfileUri
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ RequestedDeliveryGuarantee
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ MetaDataUpdateTime
+
+ i=68
+ i=78
+ i=21138
+
+
+
+ BrokerDataSetReaderTransportType
+ PubSub Model Broker
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.3.2/#9.3.2.4
+
+ i=21143
+ i=15334
+ i=15419
+ i=15420
+ i=21144
+ i=15319
+
+
+
+ QueueName
+
+ i=68
+ i=78
+ i=21142
+
+
+
+ ResourceUri
+
+ i=68
+ i=78
+ i=21142
+
+
+
+ AuthenticationProfileUri
+
+ i=68
+ i=78
+ i=21142
+
+
+
+ RequestedDeliveryGuarantee
+
+ i=68
+ i=78
+ i=21142
+
+
+
+ MetaDataQueueName
+
+ i=68
+ i=78
+ i=21142
+
+
+
+ NetworkAddressType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.6
+
+ i=21146
+ i=58
+
+
+
+ NetworkInterface
+
+ i=17582
+ i=16309
+ i=78
+ i=21145
+
+
+
+ Selections
+
+ i=68
+ i=78
+ i=21146
+
+
+
+ NetworkAddressUrlType
+ PubSub Model Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part14/9.1.5/#9.1.5.7
+
+ i=21149
+ i=21145
+
+
+
+ Url
+
+ i=63
+ i=78
+ i=21147
+
+
+
+ AliasNameType
+ AliasName Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/6.2
+
+ i=58
+
+
+
+ AliasNameCategoryType
+ AliasName Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/6.3.1
+
+ i=23457
+ i=23458
+ i=23462
+ i=61
+
+
+
+ <Alias>
+
+ i=23455
+ i=11508
+ i=23456
+
+
+
+ <SubAliasNameCategories>
+
+ i=23459
+ i=23456
+ i=11508
+ i=23456
+
+
+
+ FindAlias
+
+ i=23460
+ i=23461
+ i=78
+ i=23458
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23459
+
+
+
+
+
+ i=297
+
+
+
+ AliasNameSearchPattern
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferenceTypeFilter
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23459
+
+
+
+
+
+ i=297
+
+
+
+ AliasNodeList
+
+ i=23468
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ FindAlias
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/6.3.2
+
+ i=23463
+ i=23464
+ i=78
+ i=23456
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=23462
+
+
+
+
+
+ i=297
+
+
+
+ AliasNameSearchPattern
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferenceTypeFilter
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=23462
+
+
+
+
+
+ i=297
+
+
+
+ AliasNodeList
+
+ i=23468
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ AliasNameDataType
+ AliasName Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/7.2
+
+ i=22
+
+
+
+
+
+
+
+ AliasFor
+ AliasName Base
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/8.2
+
+ i=32
+
+ HasAlias
+
+
+ Aliases
+ AliasName Hierarchy
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/9.2
+
+ i=23476
+ i=85
+ i=23456
+
+
+
+ FindAlias
+
+ i=23477
+ i=23478
+ i=23470
+
+
+
+ InputArguments
+
+ i=68
+ i=23476
+
+
+
+
+
+ i=297
+
+
+
+ AliasNameSearchPattern
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferenceTypeFilter
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=23476
+
+
+
+
+
+ i=297
+
+
+
+ AliasNodeList
+
+ i=23468
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ TagVariables
+ AliasName Category Tags
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/9.3
+
+ i=23485
+ i=23470
+ i=23456
+
+
+
+ FindAlias
+
+ i=23486
+ i=23487
+ i=23479
+
+
+
+ InputArguments
+
+ i=68
+ i=23485
+
+
+
+
+
+ i=297
+
+
+
+ AliasNameSearchPattern
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferenceTypeFilter
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=23485
+
+
+
+
+
+ i=297
+
+
+
+ AliasNodeList
+
+ i=23468
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ Topics
+ AliasName Category Topics
+ https://reference.opcfoundation.org/v105/Core/docs/Part17/9.4
+
+ i=23494
+ i=23470
+ i=23456
+
+
+
+ FindAlias
+
+ i=23495
+ i=23496
+ i=23488
+
+
+
+ InputArguments
+
+ i=68
+ i=23494
+
+
+
+
+
+ i=297
+
+
+
+ AliasNameSearchPattern
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ReferenceTypeFilter
+
+ i=17
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=23494
+
+
+
+
+
+ i=297
+
+
+
+ AliasNodeList
+
+ i=23468
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ UserManagementType
+ Security User Management Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.1
+
+ i=24265
+ i=24266
+ i=24267
+ i=24268
+ i=24269
+ i=24271
+ i=24273
+ i=24275
+ i=58
+
+
+
+ Users
+
+ i=68
+ i=78
+ i=24264
+
+
+
+ PasswordLength
+
+ i=68
+ i=78
+ i=24264
+
+
+
+ PasswordOptions
+
+ i=68
+ i=78
+ i=24264
+
+
+
+ PasswordRestrictions
+
+ i=68
+ i=80
+ i=24264
+
+
+
+ AddUser
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.5
+
+ i=24270
+ i=78
+ i=24264
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24269
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Password
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserConfiguration
+
+ i=24279
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Description
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ ModifyUser
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.6
+
+ i=24272
+ i=78
+ i=24264
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24271
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyPassword
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Password
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyUserConfiguration
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserConfiguration
+
+ i=24279
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyDescription
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Description
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveUser
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.7
+
+ i=24274
+ i=78
+ i=24264
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24273
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ ChangePassword
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.8
+
+ i=24276
+ i=78
+ i=24264
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=24275
+
+
+
+
+
+ i=297
+
+
+
+ OldPassword
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NewPassword
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ PasswordOptionsMask
+ Security User Management Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.2
+
+ i=24278
+ i=7
+
+
+
+ Indicates if the server supports the feature to require a password change after the creation of the user.
+
+
+ Indicates if the server supports to disable a user.
+
+
+ Indicates if the server supports the configuration NoDelete for a user.
+
+
+ Indicates if the server supports the configuration NoChangeByUser for a user.
+
+
+ Indicates if the server supports to management of a description for the user.
+
+
+ Indicates if a upper case ASCII character is required in a password.
+
+
+ Indicates if a lower case ASCII character is required in a password.
+
+
+ Indicates if a digit ASCII character is required in a password.
+
+
+ Indicates if a special character is required in a password.
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=24277
+
+
+
+
+ SupportInitialPasswordChange
+
+
+ SupportDisableUser
+
+
+ SupportDisableDeleteForUser
+
+
+ SupportNoChangeForUser
+
+
+ SupportDescriptionForUser
+
+
+ RequiresUpperCaseCharacters
+
+
+ RequiresLowerCaseCharacters
+
+
+ RequiresDigitCharacters
+
+
+ RequiresSpecialCharacters
+
+
+
+
+
+ UserConfigurationMask
+ Security User Management Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.3
+
+ i=24280
+ i=7
+
+
+
+ The user cannot be deleted.
+
+
+ The user is disabled.
+
+
+ The user cannot change the password.
+
+
+ The user must change the password to get the assigned roles. If the password is not changed, the user has only the Role Anonymous.
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=24279
+
+
+
+
+ NoDelete
+
+
+ Disabled
+
+
+ NoChangeByUser
+
+
+ MustChangePassword
+
+
+
+
+
+ UserManagementDataType
+ Security User Management Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/5.2.4
+
+ i=22
+
+
+
+
+
+
+
+
+ UserManagement
+ Security User Management Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part18/1
+
+ i=24301
+ i=24302
+ i=24303
+ i=24291
+ i=24304
+ i=24306
+ i=24308
+ i=24310
+ i=12637
+ i=24264
+
+
+
+ Users
+
+ i=68
+ i=24290
+
+
+
+ PasswordLength
+
+ i=68
+ i=24290
+
+
+
+ PasswordOptions
+
+ i=68
+ i=24290
+
+
+
+ PasswordRestrictions
+
+ i=68
+ i=24290
+
+
+
+ AddUser
+
+ i=24305
+ i=24290
+
+
+
+ InputArguments
+
+ i=68
+ i=24304
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Password
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserConfiguration
+
+ i=24279
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Description
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ ModifyUser
+
+ i=24307
+ i=24290
+
+
+
+ InputArguments
+
+ i=68
+ i=24306
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyPassword
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Password
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyUserConfiguration
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ UserConfiguration
+
+ i=24279
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ ModifyDescription
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Description
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveUser
+
+ i=24309
+ i=24290
+
+
+
+ InputArguments
+
+ i=68
+ i=24308
+
+
+
+
+
+ i=297
+
+
+
+ UserName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ ChangePassword
+
+ i=24311
+ i=24290
+
+
+
+ InputArguments
+
+ i=68
+ i=24310
+
+
+
+
+
+ i=297
+
+
+
+ OldPassword
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ NewPassword
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ MultiStateDictionaryEntryDiscreteBaseType
+ Data Access MultiStateDictionaryEntryDBT
+ Data Access ValueAsDictionaryEntries Property
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/7.1
+
+ i=19082
+ i=19083
+ i=11238
+
+
+
+ EnumDictionaryEntries
+
+ i=68
+ i=78
+ i=19077
+
+
+
+ ValueAsDictionaryEntries
+
+ i=68
+ i=80
+ i=19077
+
+
+
+ MultiStateDictionaryEntryDiscreteType
+ Data Access MultiStateDictionaryEntryDBT
+ https://reference.opcfoundation.org/v105/Core/docs/Part19/7.2
+
+ i=19090
+ i=19077
+
+
+
+ ValueAsDictionaryEntries
+
+ i=68
+ i=78
+ i=19084
+
+
+
+ EncodedTicket
+ Onboarding Ticket Reader
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/8.2.1
+
+ i=12
+
+
+
+ ApplicationConfigurationType
+ Onboarding Server PushManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.6
+
+ i=26850
+ i=26851
+ i=26852
+ i=26849
+ i=12581
+
+
+
+ ApplicationUri
+
+ i=68
+ i=78
+ i=25731
+
+
+
+ ProductUri
+
+ i=68
+ i=78
+ i=25731
+
+
+
+ ApplicationType
+
+ i=68
+ i=78
+ i=25731
+
+
+
+ Enabled
+
+ i=68
+ i=78
+ i=25731
+
+
+
+ ProvisionableDeviceType
+ Onboarding Server PushManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.3
+
+ i=26872
+ i=26873
+ i=26875
+ i=26878
+ i=58
+
+
+
+ IsSingleton
+
+ i=68
+ i=78
+ i=26871
+
+
+
+ RequestTickets
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.4
+
+ i=26874
+ i=78
+ i=26871
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26873
+
+
+
+
+
+ i=297
+
+
+
+ Tickets
+
+ i=25726
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ SetRegistrarEndpoints
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.5
+
+ i=26876
+ i=80
+ i=26871
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26875
+
+
+
+
+
+ i=297
+
+
+
+ Registrars
+
+ i=308
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ <ApplicationName>
+
+ i=26879
+ i=27997
+ i=27998
+ i=27999
+ i=28000
+ i=28001
+ i=28002
+ i=28003
+ i=28005
+ i=28008
+ i=28010
+ i=28013
+ i=27996
+ i=25731
+ i=11508
+ i=26871
+
+
+
+ CertificateGroups
+
+ i=26880
+ i=13813
+ i=78
+ i=26878
+
+
+
+ DefaultApplicationGroup
+
+ i=26881
+ i=26917
+ i=12555
+ i=78
+ i=26879
+
+
+
+ TrustList
+
+ i=26882
+ i=26883
+ i=26884
+ i=26885
+ i=26889
+ i=26892
+ i=26894
+ i=26897
+ i=26899
+ i=26902
+ i=26904
+ i=26907
+ i=26910
+ i=26913
+ i=26915
+ i=12522
+ i=78
+ i=26880
+
+
+
+ Size
+
+ i=68
+ i=78
+ i=26881
+
+
+
+ Writable
+
+ i=68
+ i=78
+ i=26881
+
+
+
+ UserWritable
+
+ i=68
+ i=78
+ i=26881
+
+
+
+ OpenCount
+
+ i=68
+ i=78
+ i=26881
+
+
+
+ Open
+
+ i=26890
+ i=26891
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26889
+
+
+
+
+
+ i=297
+
+
+
+ Mode
+
+ i=3
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26889
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Close
+
+ i=26893
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26892
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ Read
+
+ i=26895
+ i=26896
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26894
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Length
+
+ i=6
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26894
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ Write
+
+ i=26898
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26897
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Data
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetPosition
+
+ i=26900
+ i=26901
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26899
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26899
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ SetPosition
+
+ i=26903
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26902
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Position
+
+ i=9
+
+ -1
+
+
+
+
+
+
+
+
+ LastUpdateTime
+
+ i=68
+ i=78
+ i=26881
+
+
+
+ OpenWithMasks
+
+ i=26908
+ i=26909
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26907
+
+
+
+
+
+ i=297
+
+
+
+ Masks
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26907
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ CloseAndUpdate
+
+ i=26911
+ i=26912
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26910
+
+
+
+
+
+ i=297
+
+
+
+ FileHandle
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=26910
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ AddCertificate
+
+ i=26914
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26913
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ RemoveCertificate
+
+ i=26916
+ i=78
+ i=26881
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=26915
+
+
+
+
+
+ i=297
+
+
+
+ Thumbprint
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IsTrustedCertificate
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ CertificateTypes
+
+ i=68
+ i=78
+ i=26880
+
+
+
+ ApplicationUri
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ ProductUri
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ ApplicationType
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ ServerCapabilities
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ SupportedPrivateKeyFormats
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ MaxTrustListSize
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ MulticastDnsEnabled
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ UpdateCertificate
+
+ i=28006
+ i=28007
+ i=78
+ i=26878
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=28005
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Certificate
+
+ i=15
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ IssuerCertificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKeyFormat
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PrivateKey
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=28005
+
+
+
+
+
+ i=297
+
+
+
+ ApplyChangesRequired
+
+ i=1
+
+ -1
+
+
+
+
+
+
+
+
+ ApplyChanges
+
+ i=78
+ i=26878
+
+
+
+ CreateSigningRequest
+
+ i=28011
+ i=28012
+ i=78
+ i=26878
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=28010
+
+
+
+
+
+ i=297
+
+
+
+ CertificateGroupId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ CertificateTypeId
+
+ i=17
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ SubjectName
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ RegeneratePrivateKey
+
+ i=1
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ Nonce
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=28010
+
+
+
+
+
+ i=297
+
+
+
+ CertificateRequest
+
+ i=15
+
+ -1
+
+
+
+
+
+
+
+
+ GetRejectedList
+
+ i=28014
+ i=78
+ i=26878
+
+
+
+ OutputArguments
+
+ i=68
+ i=78
+ i=28013
+
+
+
+
+
+ i=297
+
+
+
+ Certificates
+
+ i=15
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ Enabled
+
+ i=68
+ i=78
+ i=26878
+
+
+
+ ProvisionableDevice
+ Onboarding Server PushManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part21/9.3.2
+
+ i=29879
+ i=29880
+ i=24226
+ i=26871
+
+
+
+ IsSingleton
+
+ i=68
+ i=29878
+
+
+
+ RequestTickets
+
+ i=29881
+ i=29878
+
+
+
+ OutputArguments
+
+ i=68
+ i=29880
+
+
+
+
+
+ i=297
+
+
+
+ Tickets
+
+ i=25726
+
+ 1
+
+ 0
+
+
+
+
+
+
+
+
+ IIetfBaseNetworkInterfaceType
+ BNM Ethernet Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.1
+
+ i=24149
+ i=24150
+ i=24151
+ i=24152
+ i=17602
+
+
+
+ AdminStatus
+
+ i=63
+ i=78
+ i=24148
+
+
+
+ OperStatus
+
+ i=63
+ i=78
+ i=24148
+
+
+
+ PhysAddress
+
+ i=63
+ i=80
+ i=24148
+
+
+
+ Speed
+
+ i=24157
+ i=17497
+ i=78
+ i=24148
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=24152
+
+
+
+
+ i=888
+
+
+
+ http://www.opcfoundation.org/UA/units/un/cefact
+ 4337968
+
+ en
+ bit/s
+
+
+ en
+ bit per second
+
+
+
+
+
+
+
+ IIeeeBaseEthernetPortType
+ BNM Ethernet Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.2
+
+ i=24159
+ i=24165
+ i=24166
+ i=17602
+
+
+
+ Speed
+
+ i=24164
+ i=17497
+ i=78
+ i=24158
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=24159
+
+
+
+
+ i=888
+
+
+
+ http://www.opcfoundation.org/UA/units/un/cefact
+ 4534832
+
+ en
+ Mbit/s
+
+
+ en
+ megabit per second
+
+
+
+
+
+
+
+ Duplex
+
+ i=63
+ i=78
+ i=24158
+
+
+
+ MaxFrameLength
+
+ i=63
+ i=78
+ i=24158
+
+
+
+ IIeeeAutoNegotiationStatusType
+ BNM AutoNeg
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.3
+
+ i=24234
+ i=17602
+
+
+
+ NegotiationStatus
+
+ i=63
+ i=78
+ i=24233
+
+
+
+ IBaseEthernetCapabilitiesType
+ BNM VLAN Capabilities
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.4
+
+ i=24168
+ i=17602
+
+
+
+ VlanTagCapable
+
+ i=63
+ i=78
+ i=24167
+
+
+
+ IVlanIdType
+ BNM IETF Interface Vlan Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.5
+
+ i=25219
+ i=17602
+
+
+
+ VlanId
+
+ i=63
+ i=78
+ i=25218
+
+
+
+ ISrClassType
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.6
+
+ i=24170
+ i=24171
+ i=24172
+ i=17602
+
+
+
+ Id
+
+ i=63
+ i=78
+ i=24169
+
+
+
+ Priority
+
+ i=63
+ i=78
+ i=24169
+
+
+
+ Vid
+
+ i=63
+ i=78
+ i=24169
+
+
+
+ IIeeeBaseTsnStreamType
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.7
+
+ i=24174
+ i=24175
+ i=24176
+ i=24177
+ i=24178
+ i=17602
+
+
+
+ StreamId
+
+ i=63
+ i=78
+ i=24173
+
+
+
+ StreamName
+
+ i=63
+ i=78
+ i=24173
+
+
+
+ State
+
+ i=63
+ i=78
+ i=24173
+
+
+
+ AccumulatedLatency
+
+ i=63
+ i=80
+ i=24173
+
+
+
+ SrClassId
+
+ i=63
+ i=80
+ i=24173
+
+
+
+ IIeeeBaseTsnTrafficSpecificationType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.8
+
+ i=24180
+ i=24181
+ i=24182
+ i=17602
+
+
+
+ MaxIntervalFrames
+
+ i=63
+ i=78
+ i=24179
+
+
+
+ MaxFrameSize
+
+ i=63
+ i=78
+ i=24179
+
+
+
+ Interval
+
+ i=63
+ i=78
+ i=24179
+
+
+
+ IIeeeBaseTsnStatusStreamType
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.9
+
+ i=24184
+ i=24185
+ i=24186
+ i=24187
+ i=17602
+
+
+
+ TalkerStatus
+
+ i=63
+ i=80
+ i=24183
+
+
+
+ ListenerStatus
+
+ i=63
+ i=80
+ i=24183
+
+
+
+ FailureCode
+
+ i=63
+ i=78
+ i=24183
+
+
+
+ FailureSystemIdentifier
+
+ i=63
+ i=78
+ i=24183
+
+
+
+ IIeeeTsnInterfaceConfigurationType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.10
+
+ i=24189
+ i=24190
+ i=17602
+
+
+
+ MacAddress
+
+ i=63
+ i=78
+ i=24188
+
+
+
+ InterfaceName
+
+ i=63
+ i=80
+ i=24188
+
+
+
+ IIeeeTsnInterfaceConfigurationTalkerType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.11
+
+ i=24194
+ i=24188
+
+
+
+ TimeAwareOffset
+
+ i=63
+ i=80
+ i=24191
+
+
+
+ IIeeeTsnInterfaceConfigurationListenerType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.12
+
+ i=24198
+ i=24188
+
+
+
+ ReceiveOffset
+
+ i=63
+ i=80
+ i=24195
+
+
+
+ IIeeeTsnMacAddressType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.13
+
+ i=24200
+ i=24201
+ i=17602
+
+
+
+ DestinationAddress
+
+ i=63
+ i=78
+ i=24199
+
+
+
+ SourceAddress
+
+ i=63
+ i=80
+ i=24199
+
+
+
+ IIeeeTsnVlanTagType
+ BNM TSN Config
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.14
+
+ i=24203
+ i=24204
+ i=17602
+
+
+
+ VlanId
+
+ i=63
+ i=78
+ i=24202
+
+
+
+ PriorityCodePoint
+
+ i=63
+ i=78
+ i=24202
+
+
+
+ IPriorityMappingEntryType
+ BNM Priority Mapping
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.2.15
+
+ i=24206
+ i=24207
+ i=24208
+ i=24209
+ i=17602
+
+
+
+ MappingUri
+
+ i=63
+ i=78
+ i=24205
+
+
+
+ PriorityLabel
+
+ i=63
+ i=78
+ i=24205
+
+
+
+ PriorityValue_PCP
+
+ i=63
+ i=80
+ i=24205
+
+
+
+ PriorityValue_DSCP
+
+ i=63
+ i=80
+ i=24205
+
+
+
+ Duplex
+ BNM Ethernet Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.1
+
+ i=24235
+ i=29
+
+
+
+ Full duplex.
+
+
+ Half duplex.
+
+
+ Link is currently disconnected or initializing.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24210
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ Full
+
+
+ Full duplex.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Half
+
+
+ Half duplex.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Unknown
+
+
+ Link is currently disconnected or initializing.
+
+
+
+
+
+
+
+
+ InterfaceAdminStatus
+ BNM Ethernet Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.2
+
+ i=24236
+ i=29
+
+
+
+ Ready to pass packets.
+
+
+ Not ready to pass packets and not in some test mode.
+
+
+ In some test mode.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24212
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ Up
+
+
+ Ready to pass packets.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Down
+
+
+ Not ready to pass packets and not in some test mode.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Testing
+
+
+ In some test mode.
+
+
+
+
+
+
+
+
+ InterfaceOperStatus
+ BNM Ethernet Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.3
+
+ i=24237
+ i=29
+
+
+
+ Ready to pass packets.
+
+
+ The interface does not pass any packets.
+
+
+ In some test mode. No operational packets can be passed.
+
+
+ Status cannot be determined for some reason.
+
+
+ Waiting for some external event.
+
+
+ Some component (typically hardware) is missing.
+
+
+ Down due to state of lower-layer interface(s).
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24214
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ Up
+
+
+ Ready to pass packets.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Down
+
+
+ The interface does not pass any packets.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Testing
+
+
+ In some test mode. No operational packets can be passed.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Unknown
+
+
+ Status cannot be determined for some reason.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ Dormant
+
+
+ Waiting for some external event.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 5
+
+ NotPresent
+
+
+ Some component (typically hardware) is missing.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 6
+
+ LowerLayerDown
+
+
+ Down due to state of lower-layer interface(s).
+
+
+
+
+
+
+
+
+ NegotiationStatus
+ BNM AutoNeg
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.4
+
+ i=24238
+ i=29
+
+
+
+ The auto-negotiation protocol is running and negotiation is currently in-progress.
+
+
+ The auto-negotiation protocol has completed successfully.
+
+
+ The auto-negotiation protocol has failed.
+
+
+ The auto-negotiation status is not currently known, this could be because it is still negotiating or the protocol cannot run (e.g., if no medium is present).
+
+
+ No auto-negotiation is executed. The auto-negotiation function is either not supported on this interface or has not been enabled.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24216
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ InProgress
+
+
+ The auto-negotiation protocol is running and negotiation is currently in-progress.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Complete
+
+
+ The auto-negotiation protocol has completed successfully.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Failed
+
+
+ The auto-negotiation protocol has failed.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Unknown
+
+
+ The auto-negotiation status is not currently known, this could be because it is still negotiating or the protocol cannot run (e.g., if no medium is present).
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ NoNegotiation
+
+
+ No auto-negotiation is executed. The auto-negotiation function is either not supported on this interface or has not been enabled.
+
+
+
+
+
+
+
+
+ TsnFailureCode
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.5
+
+ i=24239
+ i=29
+
+
+
+ No failure
+
+
+ Insufficient bandwidth
+
+
+ Insufficient bridge resources
+
+
+ Insufficient bandwidth for Traffic Class
+
+
+ StreamID in use by another Talker
+
+
+ Stream destination address already in use
+
+
+ Stream pre-empted by higher rank
+
+
+ Reported latency has changed
+
+
+ Egress port is not AVBCapable
+
+
+ Use a different destination address
+
+
+ Out of MSRP resources
+
+
+ Out of MMRP resources
+
+
+ Cannot store destination address
+
+
+ Requested priority is not an SR Class priority
+
+
+ MaxFrameSize is too large for media
+
+
+ MaxFanInPorts limit has been reached
+
+
+ Changes in FirstValue for a registered StreamID
+
+
+ VLAN is blocked on this egress port (Registration Forbidden)
+
+
+ VLAN tagging is disabled on this egress port (untagged set)
+
+
+ SR class priority mismatch
+
+
+ Enhanced feature cannot be propagated to original Port
+
+
+ MaxLatency exceeded
+
+
+ Nearest Bridge cannot provide network identification for stream transformation
+
+
+ Stream transformation not supported
+
+
+ Stream identification type not supported for stream transformation
+
+
+ Enhanced feature cannot be supported without a CNC
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24218
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ NoFailure
+
+
+ No failure
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ InsufficientBandwidth
+
+
+ Insufficient bandwidth
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ InsufficientResources
+
+
+ Insufficient bridge resources
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ InsufficientTrafficClassBandwidth
+
+
+ Insufficient bandwidth for Traffic Class
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ StreamIdInUse
+
+
+ StreamID in use by another Talker
+
+
+
+
+
+
+ i=7616
+
+
+
+ 5
+
+ StreamDestinationAddressInUse
+
+
+ Stream destination address already in use
+
+
+
+
+
+
+ i=7616
+
+
+
+ 6
+
+ StreamPreemptedByHigherRank
+
+
+ Stream pre-empted by higher rank
+
+
+
+
+
+
+ i=7616
+
+
+
+ 7
+
+ LatencyHasChanged
+
+
+ Reported latency has changed
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ EgressPortNotAvbCapable
+
+
+ Egress port is not AVBCapable
+
+
+
+
+
+
+ i=7616
+
+
+
+ 9
+
+ UseDifferentDestinationAddress
+
+
+ Use a different destination address
+
+
+
+
+
+
+ i=7616
+
+
+
+ 10
+
+ OutOfMsrpResources
+
+
+ Out of MSRP resources
+
+
+
+
+
+
+ i=7616
+
+
+
+ 11
+
+ OutOfMmrpResources
+
+
+ Out of MMRP resources
+
+
+
+
+
+
+ i=7616
+
+
+
+ 12
+
+ CannotStoreDestinationAddress
+
+
+ Cannot store destination address
+
+
+
+
+
+
+ i=7616
+
+
+
+ 13
+
+ PriorityIsNotAnSrcClass
+
+
+ Requested priority is not an SR Class priority
+
+
+
+
+
+
+ i=7616
+
+
+
+ 14
+
+ MaxFrameSizeTooLarge
+
+
+ MaxFrameSize is too large for media
+
+
+
+
+
+
+ i=7616
+
+
+
+ 15
+
+ MaxFanInPortsLimitReached
+
+
+ MaxFanInPorts limit has been reached
+
+
+
+
+
+
+ i=7616
+
+
+
+ 16
+
+ FirstValueChangedForStreamId
+
+
+ Changes in FirstValue for a registered StreamID
+
+
+
+
+
+
+ i=7616
+
+
+
+ 17
+
+ VlanBlockedOnEgress
+
+
+ VLAN is blocked on this egress port (Registration Forbidden)
+
+
+
+
+
+
+ i=7616
+
+
+
+ 18
+
+ VlanTaggingDisabledOnEgress
+
+
+ VLAN tagging is disabled on this egress port (untagged set)
+
+
+
+
+
+
+ i=7616
+
+
+
+ 19
+
+ SrClassPriorityMismatch
+
+
+ SR class priority mismatch
+
+
+
+
+
+
+ i=7616
+
+
+
+ 20
+
+ FeatureNotPropagated
+
+
+ Enhanced feature cannot be propagated to original Port
+
+
+
+
+
+
+ i=7616
+
+
+
+ 21
+
+ MaxLatencyExceeded
+
+
+ MaxLatency exceeded
+
+
+
+
+
+
+ i=7616
+
+
+
+ 22
+
+ BridgeDoesNotProvideNetworkId
+
+
+ Nearest Bridge cannot provide network identification for stream transformation
+
+
+
+
+
+
+ i=7616
+
+
+
+ 23
+
+ StreamTransformNotSupported
+
+
+ Stream transformation not supported
+
+
+
+
+
+
+ i=7616
+
+
+
+ 24
+
+ StreamIdTypeNotSupported
+
+
+ Stream identification type not supported for stream transformation
+
+
+
+
+
+
+ i=7616
+
+
+
+ 25
+
+ FeatureNotSupported
+
+
+ Enhanced feature cannot be supported without a CNC
+
+
+
+
+
+
+
+
+ TsnStreamState
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.6
+
+ i=24240
+ i=29
+
+
+
+ The related TSN Stream is currently disabled.
+
+
+ The related TSN Stream is in the process of receiving configuration parameters from the TSN Control Layer.
+
+
+ The related TSN Stream has successfully received and applied the configuration from the TSN Control Layer. The related TSN Stream is not fully operational as long as local preconditions (e.g. synchronization state) are not valid.
+
+
+ The related TSN Stream object is configured and all other required preconditions (e.g. synchronization state) for sending / receiving data are valid.
+
+
+ The related TSN Stream object is in an error state.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24220
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ Disabled
+
+
+ The related TSN Stream is currently disabled.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Configuring
+
+
+ The related TSN Stream is in the process of receiving configuration parameters from the TSN Control Layer.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Ready
+
+
+ The related TSN Stream has successfully received and applied the configuration from the TSN Control Layer. The related TSN Stream is not fully operational as long as local preconditions (e.g. synchronization state) are not valid.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Operational
+
+
+ The related TSN Stream object is configured and all other required preconditions (e.g. synchronization state) for sending / receiving data are valid.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ Error
+
+
+ The related TSN Stream object is in an error state.
+
+
+
+
+
+
+
+
+ TsnTalkerStatus
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.7
+
+ i=24241
+ i=29
+
+
+
+ No Talker detected.
+
+
+ Talker ready (configured).
+
+
+ Talker failed.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24222
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ None
+
+
+ No Talker detected.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Ready
+
+
+ Talker ready (configured).
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Failed
+
+
+ Talker failed.
+
+
+
+
+
+
+
+
+ TsnListenerStatus
+ BNM TSN Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.1/#5.3.1.8
+
+ i=24242
+ i=29
+
+
+
+ No Listener detected.
+
+
+ Listener ready (configured).
+
+
+ One or more Listeners ready, and one or more Listeners failed.
+
+
+ Listener failed.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=24224
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ None
+
+
+ No Listener detected.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Ready
+
+
+ Listener ready (configured).
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ PartialFailed
+
+
+ One or more Listeners ready, and one or more Listeners failed.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Failed
+
+
+ Listener failed.
+
+
+
+
+
+
+
+
+ PriorityMappingEntryType
+ BNM Priority Mapping 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.3.2/#5.3.2.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+ Resources
+ BNM Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.1
+
+ i=2253
+ i=61
+
+
+
+ Communication
+ BNM Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.2
+
+ i=24226
+ i=61
+
+
+
+ MappingTables
+ BNM Mapping Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.3
+
+ i=24227
+ i=61
+
+
+
+ NetworkInterfaces
+ BNM Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.4
+
+ i=24227
+ i=61
+
+
+
+ Streams
+ BNM TSN Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.5
+
+ i=24227
+ i=61
+
+
+
+ TalkerStreams
+ BNM TSN Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.6
+
+ i=24230
+ i=61
+
+
+
+ ListenerStreams
+ BNM TSN Entry Points
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.4.7
+
+ i=24230
+ i=61
+
+
+
+ IetfBaseNetworkInterfaceType
+ BNM IETF Interface Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.5.1/#5.5.1.2
+
+ i=25222
+ i=25223
+ i=25224
+ i=25225
+ i=25226
+ i=24148
+ i=58
+
+
+
+ AdminStatus
+
+ i=63
+ i=78
+ i=25221
+
+
+
+ OperStatus
+
+ i=63
+ i=78
+ i=25221
+
+
+
+ PhysAddress
+
+ i=63
+ i=80
+ i=25221
+
+
+
+ Speed
+
+ i=25252
+ i=17497
+ i=78
+ i=25221
+
+
+
+ EngineeringUnits
+
+ i=68
+ i=78
+ i=25225
+
+
+
+
+ i=888
+
+
+
+ http://www.opcfoundation.org/UA/units/un/cefact
+ 4337968
+
+ en
+ bit/s
+
+
+ en
+ bit per second
+
+
+
+
+
+
+
+ <InterfaceName>
+
+ i=24148
+ i=58
+ i=11508
+ i=25221
+
+
+
+ PriorityMappingTableType
+ BNM Priority Mapping 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.5.2/#5.5.2.2
+
+ i=25228
+ i=25229
+ i=25231
+ i=58
+
+
+
+ PriorityMapppingEntries
+
+ i=68
+ i=78
+ i=25227
+
+
+
+ AddPriorityMappingEntry
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.5.2/#5.5.2.3
+
+ i=25230
+ i=80
+ i=25227
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25229
+
+
+
+
+
+ i=297
+
+
+
+ MappingUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PriorityLabel
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PriorityValue_PCP
+
+ i=3
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PriorityValue_DSCP
+
+ i=7
+
+ -1
+
+
+
+
+
+
+
+
+ DeletePriorityMappingEntry
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.5.2/#5.5.2.4
+
+ i=25232
+ i=80
+ i=25227
+
+
+
+ InputArguments
+
+ i=68
+ i=78
+ i=25231
+
+
+
+
+
+ i=297
+
+
+
+ MappingUri
+
+ i=12
+
+ -1
+
+
+
+
+
+
+ i=297
+
+
+
+ PriorityLabel
+
+ i=12
+
+ -1
+
+
+
+
+
+
+
+
+ UsesPriorityMappingTable
+ BNM Priority Mapping 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.6.1
+
+ i=32
+
+ UsedByNetworkInterface
+
+
+ HasLowerLayerInterface
+ BNM IETF Interface Base Info
+ https://reference.opcfoundation.org/v105/Core/docs/Part22/5.6.2
+
+ i=33
+
+ HasHigherLayerInterface
+
+
+ IsExecutableOn
+ Base Info IsExecutableOn
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.2.2
+
+ i=32
+
+ CanExecute
+
+
+ Controls
+ Base Info Controls
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.4.2
+
+ i=33
+
+ IsControlledBy
+
+
+ Utilizes
+ Base Info Utilizes
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.5.2
+
+ i=32
+
+ IsUtilizedBy
+
+
+ IsExecutingOn
+ Base Info IsExecutingOn
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.3.2
+
+ i=25255
+
+ Executes
+
+
+ Requires
+ Base Info Requires
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.6.2
+
+ i=33
+
+ IsRequiredBy
+
+
+ IsPhysicallyConnectedTo
+ Base Info IsPhysicallyConnectedTo
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.7.2
+
+ i=32
+
+
+
+ RepresentsSameEntityAs
+ Base Info RepresentsSameEntityAs
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.8.2
+
+ i=32
+
+
+
+ RepresentsSameHardwareAs
+ Base Info RepresentsSameHardwareAs
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.9.2
+
+ i=25258
+
+
+
+ RepresentsSameFunctionalityAs
+ Base Info RepresentsSameFunctionalityAs
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.10.2
+
+ i=25258
+
+
+
+ IsHostedBy
+ Base Info IsHostedBy
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.11.2
+
+ i=25255
+
+ Hosts
+
+
+ HasPhysicalComponent
+ Base Info HasPhysicalComponent
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.12.2
+
+ i=47
+
+ PhysicalComponentOf
+
+
+ HasContainedComponent
+ Base Info HasContainedComponent
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.13.2
+
+ i=25262
+
+ ContainedComponentOf
+
+
+ HasAttachedComponent
+ Base Info HasAttachedComponent
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/4.14.2
+
+ i=25262
+
+ AttachedComponentOf
+
+
+ HasReferenceDescription
+ Base Info ReferenceDescription
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/5.4.1
+
+ i=34
+
+ ReferenceDescriptionOf
+
+
+ ReferenceDescriptionVariableType
+ Base Info ReferenceDescription
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/5.3.1
+
+ i=32658
+ i=63
+
+
+
+ ReferenceRefinement
+
+ i=68
+ i=80
+ i=32657
+
+
+
+ ReferenceDescriptionDataType
+ Base Info ReferenceDescription
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/5.5.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+ ReferenceListEntryDataType
+ Base Info ReferenceDescription
+ https://reference.opcfoundation.org/v105/Core/docs/Part23/5.5.2
+
+ i=22
+
+
+
+
+
+
+
+
+ IdType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.5/#12.2.5.1
+
+ i=7591
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=256
+
+
+
+
+ Numeric
+
+
+ String
+
+
+ Guid
+
+
+ Opaque
+
+
+
+
+
+ NodeClass
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.5/#12.2.5.2
+
+ i=11878
+ i=29
+
+
+
+ No value is specified.
+
+
+ The Node is an Object.
+
+
+ The Node is a Variable.
+
+
+ The Node is a Method.
+
+
+ The Node is an ObjectType.
+
+
+ The Node is a VariableType.
+
+
+ The Node is a ReferenceType.
+
+
+ The Node is a DataType.
+
+
+ The Node is a View.
+
+
+
+
+ EnumValues
+
+ i=68
+ i=257
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ Unspecified
+
+
+ No value is specified.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Object
+
+
+ The Node is an Object.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Variable
+
+
+ The Node is a Variable.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ Method
+
+
+ The Node is a Method.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ ObjectType
+
+
+ The Node is an ObjectType.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 16
+
+ VariableType
+
+
+ The Node is a VariableType.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 32
+
+ ReferenceType
+
+
+ The Node is a ReferenceType.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 64
+
+ DataType
+
+
+ The Node is a DataType.
+
+
+
+
+
+
+ i=7616
+
+
+
+ 128
+
+ View
+
+
+ The Node is a View.
+
+
+
+
+
+
+
+
+ PermissionType
+ https://reference.opcfoundation.org/v105/Core/docs/Part3/8.55
+
+ i=15030
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=94
+
+
+
+
+ Browse
+
+
+ ReadRolePermissions
+
+
+ WriteAttribute
+
+
+ WriteRolePermissions
+
+
+ WriteHistorizing
+
+
+ Read
+
+
+ Write
+
+
+ ReadHistory
+
+
+ InsertHistory
+
+
+ ModifyHistory
+
+
+ DeleteHistory
+
+
+ ReceiveEvents
+
+
+ Call
+
+
+ AddReference
+
+
+ RemoveReference
+
+
+ DeleteNode
+
+
+ AddNode
+
+
+
+
+
+ AccessLevelType
+ https://reference.opcfoundation.org/v105/Core/docs/Part3/8.57
+
+ i=15032
+ i=3
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15031
+
+
+
+
+ CurrentRead
+
+
+ CurrentWrite
+
+
+ HistoryRead
+
+
+ HistoryWrite
+
+
+ SemanticChange
+
+
+ StatusWrite
+
+
+ TimestampWrite
+
+
+
+
+
+ AccessLevelExType
+ https://reference.opcfoundation.org/v105/Core/docs/Part3/8.58
+
+ i=15407
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15406
+
+
+
+
+ CurrentRead
+
+
+ CurrentWrite
+
+
+ HistoryRead
+
+
+ HistoryWrite
+
+
+ SemanticChange
+
+
+ StatusWrite
+
+
+ TimestampWrite
+
+
+ Reserved
+
+
+ NonatomicRead
+
+
+ NonatomicWrite
+
+
+ WriteFullArrayOnly
+
+
+ NoSubDataTypes
+
+
+ NonVolatile
+
+
+ Constant
+
+
+
+
+
+ EventNotifierType
+ https://reference.opcfoundation.org/v105/Core/docs/Part3/8.59
+
+ i=15034
+ i=3
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=15033
+
+
+
+
+ SubscribeToEvents
+
+
+ Reserved
+
+
+ HistoryRead
+
+
+ HistoryWrite
+
+
+
+
+
+ AccessRestrictionType
+ Security Role Server Base 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.13
+
+ i=15035
+ i=5
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=95
+
+
+
+
+ SigningRequired
+
+
+ EncryptionRequired
+
+
+ SessionRequired
+
+
+ ApplyRestrictionsToBrowse
+
+
+
+
+
+ RolePermissionType
+ Security Role Server Base 2
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.9
+
+ i=22
+
+
+
+
+
+
+
+ DataTypeDefinition
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.3
+
+ i=22
+
+
+
+
+ StructureType
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.5/#12.2.5.3
+
+ i=14528
+ i=29
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=98
+
+
+
+
+ Structure
+
+
+ StructureWithOptionalFields
+
+
+ Union
+
+
+ StructureWithSubtypedValues
+
+
+ UnionWithSubtypedValues
+
+
+
+
+
+ StructureField
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.10
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+ StructureDefinition
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.5
+
+ i=97
+
+
+
+
+
+
+
+
+
+ EnumDefinition
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.4
+
+ i=97
+
+
+
+
+
+
+ Argument
+ Base Info Method Argument DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ EnumValueType
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.6
+
+ i=22
+
+
+
+
+
+
+
+
+ EnumField
+ Address Space DataTypeDefinition Attribute
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.7
+
+ i=7594
+
+
+
+
+
+
+ OptionSet
+ Base Info OptionSet DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.8
+
+ i=22
+
+
+
+
+
+
+
+ NormalizedString
+ Base Info NormalizedString DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.2
+
+ i=12
+
+
+
+ DecimalString
+ Base Info DecimalString DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.3
+
+ i=12
+
+
+
+ DurationString
+ Base Info Date DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.4
+
+ i=12
+
+
+
+ TimeString
+ Base Info Date DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.5
+
+ i=12
+
+
+
+ DateString
+ Base Info Date DataTypes
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.6
+
+ i=12
+
+
+
+ Duration
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.9/#12.2.9.3
+
+ i=11
+
+
+
+ UtcTime
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.4/#12.2.4.1
+
+ i=13
+
+
+
+ LocaleId
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.11/#12.2.11.1
+
+ i=12
+
+
+
+ TimeZoneDataType
+ Base Info LocalTime
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.2.12/#12.2.12.11
+
+ i=22
+
+
+
+
+
+
+
+ Index
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.18
+
+ i=7
+
+
+
+ IntegerId
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.19
+
+ i=7
+
+
+
+ ApplicationType
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.4
+
+ i=7597
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=307
+
+
+
+
+ Server
+
+
+ Client
+
+
+ ClientAndServer
+
+
+ DiscoveryServer
+
+
+
+
+
+ ApplicationDescription
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.3
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+ VersionTime
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.16
+
+ i=7
+
+
+
+ ServerOnNetwork
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/5.4.3/#5.4.3.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+ ApplicationInstanceCertificate
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.3
+
+ i=15
+
+
+
+ MessageSecurityMode
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.10
+
+ i=7595
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=302
+
+
+
+
+ Invalid
+
+
+ None
+
+
+ Sign
+
+
+ SignAndEncrypt
+
+
+
+
+
+ UserTokenType
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.43
+
+ i=7596
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=303
+
+
+
+
+ Anonymous
+
+
+ UserName
+
+
+ Certificate
+
+
+ IssuedToken
+
+
+
+
+
+ UserTokenPolicy
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.42
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ EndpointDescription
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.14
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RegisteredServer
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.32
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DiscoveryConfiguration
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.13.1
+
+ i=22
+
+
+
+
+ MdnsDiscoveryConfiguration
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.13.2
+
+ i=12890
+
+
+
+
+
+
+
+ SecurityTokenRequestType
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.12
+
+ i=7598
+ i=29
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=315
+
+
+
+
+ Issue
+
+
+ Renew
+
+
+
+
+
+ SignedSoftwareCertificate
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.13
+
+ i=22
+
+
+
+
+
+
+
+ SessionAuthenticationToken
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.36
+
+ i=17
+
+
+
+ UserIdentityToken
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.15
+
+ i=22
+
+
+
+
+
+
+ AnonymousIdentityToken
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.15/#12.3.15.1
+
+ i=316
+
+
+
+
+ UserNameIdentityToken
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.15/#12.3.15.3
+
+ i=316
+
+
+
+
+
+
+
+
+ X509IdentityToken
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.15/#12.3.15.4
+
+ i=316
+
+
+
+
+
+
+ IssuedIdentityToken
+ Auditing Connections
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.15/#12.3.15.2
+
+ i=316
+
+
+
+
+
+
+
+ NodeAttributesMask
+
+ i=11881
+ i=29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EnumValues
+
+ i=68
+ i=348
+
+
+
+
+
+ i=7616
+
+
+
+ 0
+
+ None
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ AccessLevel
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ ArrayDimensions
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ BrowseName
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8
+
+ ContainsNoLoops
+
+
+
+
+
+
+ i=7616
+
+
+
+ 16
+
+ DataType
+
+
+
+
+
+
+ i=7616
+
+
+
+ 32
+
+ Description
+
+
+
+
+
+
+ i=7616
+
+
+
+ 64
+
+ DisplayName
+
+
+
+
+
+
+ i=7616
+
+
+
+ 128
+
+ EventNotifier
+
+
+
+
+
+
+ i=7616
+
+
+
+ 256
+
+ Executable
+
+
+
+
+
+
+ i=7616
+
+
+
+ 512
+
+ Historizing
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1024
+
+ InverseName
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2048
+
+ IsAbstract
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4096
+
+ MinimumSamplingInterval
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8192
+
+ NodeClass
+
+
+
+
+
+
+ i=7616
+
+
+
+ 16384
+
+ NodeId
+
+
+
+
+
+
+ i=7616
+
+
+
+ 32768
+
+ Symmetric
+
+
+
+
+
+
+ i=7616
+
+
+
+ 65536
+
+ UserAccessLevel
+
+
+
+
+
+
+ i=7616
+
+
+
+ 131072
+
+ UserExecutable
+
+
+
+
+
+
+ i=7616
+
+
+
+ 262144
+
+ UserWriteMask
+
+
+
+
+
+
+ i=7616
+
+
+
+ 524288
+
+ ValueRank
+
+
+
+
+
+
+ i=7616
+
+
+
+ 1048576
+
+ WriteMask
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2097152
+
+ Value
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4194304
+
+ DataTypeDefinition
+
+
+
+
+
+
+ i=7616
+
+
+
+ 8388608
+
+ RolePermissions
+
+
+
+
+
+
+ i=7616
+
+
+
+ 16777216
+
+ AccessRestrictions
+
+
+
+
+
+
+ i=7616
+
+
+
+ 33554431
+
+ All
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26501220
+
+ BaseNode
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26501348
+
+ Object
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26503268
+
+ ObjectType
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26571383
+
+ Variable
+
+
+
+
+
+
+ i=7616
+
+
+
+ 28600438
+
+ VariableType
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26632548
+
+ Method
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26537060
+
+ ReferenceType
+
+
+
+
+
+
+ i=7616
+
+
+
+ 26501356
+
+ View
+
+
+
+
+
+
+
+
+ AddNodesItem
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+ AddReferencesItem
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+ DeleteNodesItem
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.6
+
+ i=22
+
+
+
+
+
+
+
+ DeleteReferencesItem
+ Auditing NodeManagement
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.7
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ AttributeWriteMask
+ https://reference.opcfoundation.org/v105/Core/docs/Part3/8.60
+
+ i=15036
+ i=7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OptionSetValues
+
+ i=68
+ i=347
+
+
+
+
+ AccessLevel
+
+
+ ArrayDimensions
+
+
+ BrowseName
+
+
+ ContainsNoLoops
+
+
+ DataType
+
+
+ Description
+
+
+ DisplayName
+
+
+ EventNotifier
+
+
+ Executable
+
+
+ Historizing
+
+
+ InverseName
+
+
+ IsAbstract
+
+
+ MinimumSamplingInterval
+
+
+ NodeClass
+
+
+ NodeId
+
+
+ Symmetric
+
+
+ UserAccessLevel
+
+
+ UserExecutable
+
+
+ UserWriteMask
+
+
+ ValueRank
+
+
+ WriteMask
+
+
+ ValueForVariableType
+
+
+ DataTypeDefinition
+
+
+ RolePermissions
+
+
+ AccessRestrictions
+
+
+ AccessLevelEx
+
+
+
+
+
+ ContinuationPoint
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.9
+
+ i=15
+
+
+
+ RelativePathElement
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.31
+
+ i=22
+
+
+
+
+
+
+
+
+
+ RelativePath
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.31
+
+ i=22
+
+
+
+
+
+
+ Counter
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.8
+
+ i=7
+
+
+
+ NumericRange
+ Base Info Base Types
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.11
+
+ i=12
+
+
+
+ EndpointConfiguration
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FilterOperator
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.3
+
+ i=7605
+ i=29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=576
+
+
+
+
+ Equals
+
+
+ IsNull
+
+
+ GreaterThan
+
+
+ LessThan
+
+
+ GreaterThanOrEqual
+
+
+ LessThanOrEqual
+
+
+ Like
+
+
+ Not
+
+
+ Between
+
+
+ InList
+
+
+ And
+
+
+ Or
+
+
+ Cast
+
+
+ InView
+
+
+ OfType
+
+
+ RelatedTo
+
+
+ BitwiseAnd
+
+
+ BitwiseOr
+
+
+
+
+
+ ContentFilterElement
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.1
+
+ i=22
+
+
+
+
+
+
+
+ ContentFilter
+ Base Info ContentFilter
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.3.4
+
+ i=22
+
+
+
+
+
+
+ FilterOperand
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.4
+
+ i=22
+
+
+
+
+ ElementOperand
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.4/#7.7.4.2
+
+ i=589
+
+
+
+
+
+
+ LiteralOperand
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.4/#7.7.4.3
+
+ i=589
+
+
+
+
+
+
+ AttributeOperand
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.4/#7.7.4.4
+
+ i=589
+
+
+
+
+
+
+
+
+
+
+ SimpleAttributeOperand
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.7.4/#7.7.4.5
+
+ i=589
+
+
+
+
+
+
+
+
+
+ HistoryEvent
+ https://reference.opcfoundation.org/v104/Core/docs/Part11/6.5.4
+
+ i=22
+
+
+
+
+
+
+ HistoryUpdateType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/6.6
+
+ i=11884
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumValues
+
+ i=68
+ i=11234
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Insert
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Replace
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Update
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ Delete
+
+
+
+
+
+
+
+
+ PerformUpdateType
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/6.7
+
+ i=11885
+ i=29
+
+
+
+
+
+
+
+
+
+ EnumValues
+
+ i=68
+ i=11293
+
+
+
+
+
+ i=7616
+
+
+
+ 1
+
+ Insert
+
+
+
+
+
+
+ i=7616
+
+
+
+ 2
+
+ Replace
+
+
+
+
+
+
+ i=7616
+
+
+
+ 3
+
+ Update
+
+
+
+
+
+
+ i=7616
+
+
+
+ 4
+
+ Remove
+
+
+
+
+
+
+
+
+ MonitoringFilter
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.22.1
+
+ i=22
+
+
+
+
+ EventFilter
+ https://reference.opcfoundation.org/v105/Core/docs/Part4/7.22.3
+
+ i=719
+
+
+
+
+
+
+
+ AggregateConfiguration
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/6.4.4/#6.4.4.1
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ HistoryEventFieldList
+
+ i=22
+
+
+
+
+
+
+ BuildInfo
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.4
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+ RedundancySupport
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.5
+
+ i=7611
+ i=29
+
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=851
+
+
+
+
+ None
+
+
+ Cold
+
+
+ Warm
+
+
+ Hot
+
+
+ Transparent
+
+
+ HotAndMirrored
+
+
+
+
+
+ ServerState
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.6
+
+ i=7612
+ i=29
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=852
+
+
+
+
+ Running
+
+
+ Failed
+
+
+ NoConfiguration
+
+
+ Suspended
+
+
+ Shutdown
+
+
+ Test
+
+
+ CommunicationFault
+
+
+ Unknown
+
+
+
+
+
+ RedundantServerDataType
+ Redundancy Server Transparent
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.7
+
+ i=22
+
+
+
+
+
+
+
+
+ EndpointUrlListDataType
+ Redundancy Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.20
+
+ i=22
+
+
+
+
+
+
+ NetworkGroupDataType
+ Redundancy Server
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.19
+
+ i=22
+
+
+
+
+
+
+
+ SamplingIntervalDiagnosticsDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.8
+
+ i=22
+
+
+
+
+
+
+
+
+
+ ServerDiagnosticsSummaryDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.9
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ServerStatusDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.10
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+ SessionDiagnosticsDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.11
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SessionSecurityDiagnosticsDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.12
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ServiceCounterDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.13
+
+ i=22
+
+
+
+
+
+
+
+ StatusResult
+ Base Info StatusResult DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.14
+
+ i=22
+
+
+
+
+
+
+
+ SubscriptionDiagnosticsDataType
+ Base Info ServerType
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.15
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ModelChangeStructureDataType
+ Base Info Model Change General
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.16
+
+ i=22
+
+
+
+
+
+
+
+
+ SemanticChangeStructureDataType
+ Base Info SemanticChange
+ https://reference.opcfoundation.org/v105/Core/docs/Part5/12.17
+
+ i=22
+
+
+
+
+
+
+
+ Range
+ Base Info Range DataType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.2
+
+ i=22
+
+
+
+
+
+
+
+ EUInformation
+ Base Info EUInformation
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.3/#5.6.3.2
+
+ i=22
+
+
+
+
+
+
+
+
+
+ AxisScaleEnumeration
+ Data Access ArrayItem2Type
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.7
+
+ i=12078
+ i=29
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=12077
+
+
+
+
+ Linear
+
+
+ Log
+
+
+ Ln
+
+
+
+
+
+ ComplexNumberType
+ Data Access Complex Number
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.4
+
+ i=22
+
+
+
+
+
+
+
+ DoubleComplexNumberType
+ Data Access DoubleComplex Number
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.5
+
+ i=22
+
+
+
+
+
+
+
+ AxisInformation
+ Data Access AxisInformationType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.6
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+ XVType
+ Data Access XYArrayItemType
+ https://reference.opcfoundation.org/v105/Core/docs/Part8/5.6.8
+
+ i=22
+
+
+
+
+
+
+
+ ProgramDiagnosticDataType
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ProgramDiagnostic2DataType
+ Program Basic
+ https://reference.opcfoundation.org/v105/Core/docs/Part10/5.2.8
+
+ i=22
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Annotation
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.5
+
+ i=22
+
+
+
+
+
+
+
+
+ ExceptionDeviationFormat
+ https://reference.opcfoundation.org/v105/Core/docs/Part11/5.2.2
+
+ i=7614
+ i=29
+
+
+
+
+
+
+
+
+
+
+ EnumStrings
+
+ i=68
+ i=890
+
+
+
+
+ AbsoluteValue
+
+
+ PercentOfValue
+
+
+ PercentOfRange
+
+
+ PercentOfEURange
+
+
+ Unknown
+
+
+
+
+
+ Default Binary
+
+ i=12756
+ i=12770
+ i=76
+
+
+
+ Default Binary
+
+ i=14533
+ i=14873
+ i=76
+
+
+
+ Default Binary
+
+ i=16313
+ i=17538
+ i=76
+
+
+
+ Default Binary
+
+ i=17548
+ i=17550
+ i=76
+
+
+
+ Default Binary
+
+ i=15528
+ i=15734
+ i=76
+
+
+
+ Default Binary
+
+ i=18806
+ i=18824
+ i=76
+
+
+
+ Default Binary
+
+ i=18807
+ i=18827
+ i=76
+
+
+
+ Default Binary
+
+ i=18808
+ i=18830
+ i=76
+
+
+
+ Default Binary
+
+ i=18809
+ i=18833
+ i=76
+
+
+
+ Default Binary
+
+ i=18810
+ i=18836
+ i=76
+
+
+
+ Default Binary
+
+ i=18811
+ i=18839
+ i=76
+
+
+
+ Default Binary
+
+ i=18812
+ i=18842
+ i=76
+
+
+
+ Default Binary
+
+ i=18813
+ i=18845
+ i=76
+
+
+
+ Default Binary
+
+ i=18814
+ i=18848
+ i=76
+
+
+
+ Default Binary
+
+ i=15634
+ i=15738
+ i=76
+
+
+
+ Default Binary
+
+ i=23498
+ i=23514
+ i=76
+
+
+
+ Default Binary
+
+ i=12554
+ i=12681
+ i=76
+
+
+
+ Default Binary
+
+ i=32285
+ i=32383
+ i=76
+
+
+
+ Default Binary
+
+ i=15534
+ i=15741
+ i=76
+
+
+
+ Default Binary
+
+ i=14525
+ i=14855
+ i=76
+
+
+
+ Default Binary
+
+ i=15487
+ i=15599
+ i=76
+
+
+
+ Default Binary
+
+ i=15488
+ i=15602
+ i=76
+
+
+
+ Default Binary
+
+ i=15005
+ i=15501
+ i=76
+
+
+
+ Default Binary
+
+ i=15006
+ i=15521
+ i=76
+
+
+
+ Default Binary
+
+ i=24105
+ i=24111
+ i=76
+
+
+
+ Default Binary
+
+ i=24106
+ i=24114
+ i=76
+
+
+
+ Default Binary
+
+ i=24107
+ i=24117
+ i=76
+
+
+
+ Default Binary
+
+ i=14523
+ i=14849
+ i=76
+
+
+
+ Default Binary
+
+ i=14524
+ i=14852
+ i=76
+
+
+
+ Default Binary
+
+ i=14593
+ i=14876
+ i=76
+
+
+
+ Default Binary
+
+ i=15578
+ i=15766
+ i=76
+
+
+
+ Default Binary
+
+ i=15580
+ i=15769
+ i=76
+
+
+
+ Default Binary
+
+ i=14273
+ i=14324
+ i=76
+
+
+
+ Default Binary
+
+ i=15581
+ i=15772
+ i=76
+
+
+
+ Default Binary
+
+ i=15582
+ i=15775
+ i=76
+
+
+
+ Default Binary
+
+ i=25269
+ i=25533
+ i=76
+
+
+
+ Default Binary
+
+ i=15597
+ i=15778
+ i=76
+
+
+
+ Default Binary
+
+ i=15598
+ i=15781
+ i=76
+
+
+
+ Default Binary
+
+ i=15605
+ i=15784
+ i=76
+
+
+
+ Default Binary
+
+ i=15609
+ i=15787
+ i=76
+
+
+
+ Default Binary
+
+ i=15480
+ i=21156
+ i=76
+
+
+
+ Default Binary
+
+ i=15611
+ i=15793
+ i=76
+
+
+
+ Default Binary
+
+ i=15616
+ i=15854
+ i=76
+
+
+
+ Default Binary
+
+ i=15617
+ i=15857
+ i=76
+
+
+
+ Default Binary
+
+ i=15618
+ i=15860
+ i=76
+
+
+
+ Default Binary
+
+ i=15502
+ i=21159
+ i=76
+
+
+
+ Default Binary
+
+ i=15510
+ i=21162
+ i=76
+
+
+
+ Default Binary
+
+ i=15520
+ i=21165
+ i=76
+
+
+
+ Default Binary
+
+ i=15621
+ i=15866
+ i=76
+
+
+
+ Default Binary
+
+ i=15622
+ i=15869
+ i=76
+
+
+
+ Default Binary
+
+ i=15623
+ i=15872
+ i=76
+
+
+
+ Default Binary
+
+ i=15628
+ i=15877
+ i=76
+
+
+
+ Default Binary
+
+ i=15629
+ i=15880
+ i=76
+
+
+
+ Default Binary
+
+ i=15630
+ i=15883
+ i=76
+
+
+
+ Default Binary
+
+ i=15631
+ i=15886
+ i=76
+
+
+
+ Default Binary
+
+ i=14744
+ i=21002
+ i=76
+
+
+
+ Default Binary
+
+ i=15635
+ i=15889
+ i=76
+
+
+
+ Default Binary
+
+ i=15530
+ i=21168
+ i=76
+
+
+
+ Default Binary
+
+ i=23599
+ i=23870
+ i=76
+
+
+
+ Default Binary
+
+ i=23600
+ i=23873
+ i=76
+
+
+
+ Default Binary
+
+ i=23601
+ i=23876
+ i=76
+
+
+
+ Default Binary
+
+ i=25270
+ i=25536
+ i=76
+
+
+
+ Default Binary
+
+ i=23602
+ i=23879
+ i=76
+
+
+
+ Default Binary
+
+ i=15645
+ i=15895
+ i=76
+
+
+
+ Default Binary
+
+ i=15652
+ i=15898
+ i=76
+
+
+
+ Default Binary
+
+ i=15653
+ i=15919
+ i=76
+
+
+
+ Default Binary
+
+ i=15657
+ i=15922
+ i=76
+
+
+
+ Default Binary
+
+ i=15664
+ i=15925
+ i=76
+
+
+
+ Default Binary
+
+ i=15665
+ i=15931
+ i=76
+
+
+
+ Default Binary
+
+ i=23603
+ i=23882
+ i=76
+
+
+
+ Default Binary
+
+ i=23604
+ i=23885
+ i=76
+
+
+
+ Default Binary
+
+ i=23605
+ i=23888
+ i=76
+
+
+
+ Default Binary
+
+ i=23608
+ i=23897
+ i=76
+
+
+
+ Default Binary
+
+ i=23609
+ i=23900
+ i=76
+
+
+
+ Default Binary
+
+ i=17467
+ i=17469
+ i=76
+
+
+
+ Default Binary
+
+ i=23612
+ i=23909
+ i=76
+
+
+
+ Default Binary
+
+ i=15532
+ i=21171
+ i=76
+
+
+
+ Default Binary
+
+ i=23613
+ i=23912
+ i=76
+
+
+
+ Default Binary
+
+ i=23614
+ i=23915
+ i=76
+
+
+
+ Default Binary
+
+ i=15007
+ i=15524
+ i=76
+
+
+
+ Default Binary
+
+ i=15667
+ i=15940
+ i=76
+
+
+
+ Default Binary
+
+ i=15669
+ i=15943
+ i=76
+
+
+
+ Default Binary
+
+ i=15670
+ i=15946
+ i=76
+
+
+
+ Default Binary
+
+ i=25519
+ i=25539
+ i=76
+
+
+
+ Default Binary
+
+ i=25520
+ i=25542
+ i=76
+
+
+
+ Default Binary
+
+ i=23468
+ i=23502
+ i=76
+
+
+
+ Default Binary
+
+ i=24281
+ i=24293
+ i=76
+
+
+
+ Default Binary
+
+ i=25220
+ i=25240
+ i=76
+
+
+
+ Default Binary
+
+ i=32659
+ i=32663
+ i=76
+
+
+
+ Default Binary
+
+ i=32660
+ i=32666
+ i=76
+
+
+
+ Default Binary
+
+ i=96
+ i=16131
+ i=76
+
+
+
+ Default Binary
+
+ i=97
+ i=18178
+ i=76
+
+
+
+ Default Binary
+
+ i=101
+ i=18181
+ i=76
+
+
+
+ Default Binary
+
+ i=99
+ i=18184
+ i=76
+
+
+
+ Default Binary
+
+ i=100
+ i=18187
+ i=76
+
+
+
+ Default Binary
+
+ i=296
+ i=7650
+ i=76
+
+
+
+ Default Binary
+
+ i=7594
+ i=7656
+ i=76
+
+
+
+ Default Binary
+
+ i=102
+ i=14870
+ i=76
+
+
+
+ Default Binary
+
+ i=12755
+ i=12767
+ i=76
+
+
+
+ Default Binary
+
+ i=8912
+ i=8914
+ i=76
+
+
+
+ Default Binary
+
+ i=308
+ i=7665
+ i=76
+
+
+
+ Default Binary
+
+ i=12189
+ i=12213
+ i=76
+
+
+
+ Default Binary
+
+ i=304
+ i=7662
+ i=76
+
+
+
+ Default Binary
+
+ i=312
+ i=7668
+ i=76
+
+
+
+ Default Binary
+
+ i=432
+ i=7782
+ i=76
+
+
+
+ Default Binary
+
+ i=12890
+ i=12902
+ i=76
+
+
+
+ Default Binary
+
+ i=12891
+ i=12905
+ i=76
+
+
+
+ Default Binary
+
+ i=344
+ i=7698
+ i=76
+
+
+
+ Default Binary
+
+ i=316
+ i=7671
+ i=76
+
+
+
+ Default Binary
+
+ i=319
+ i=7674
+ i=76
+
+
+
+ Default Binary
+
+ i=322
+ i=7677
+ i=76
+
+
+
+ Default Binary
+
+ i=325
+ i=7680
+ i=76
+
+
+
+ Default Binary
+
+ i=938
+ i=7683
+ i=76
+
+
+
+ Default Binary
+
+ i=376
+ i=7728
+ i=76
+
+
+
+ Default Binary
+
+ i=379
+ i=7731
+ i=76
+
+
+
+ Default Binary
+
+ i=382
+ i=7734
+ i=76
+
+
+
+ Default Binary
+
+ i=385
+ i=7737
+ i=76
+
+
+
+ Default Binary
+
+ i=537
+ i=12718
+ i=76
+
+
+
+ Default Binary
+
+ i=540
+ i=12721
+ i=76
+
+
+
+ Default Binary
+
+ i=331
+ i=7686
+ i=76
+
+
+
+ Default Binary
+
+ i=583
+ i=7929
+ i=76
+
+
+
+ Default Binary
+
+ i=586
+ i=7932
+ i=76
+
+
+
+ Default Binary
+
+ i=589
+ i=7935
+ i=76
+
+
+
+ Default Binary
+
+ i=592
+ i=7938
+ i=76
+
+
+
+ Default Binary
+
+ i=595
+ i=7941
+ i=76
+
+
+
+ Default Binary
+
+ i=598
+ i=7944
+ i=76
+
+
+
+ Default Binary
+
+ i=601
+ i=7947
+ i=76
+
+
+
+ Default Binary
+
+ i=659
+ i=8004
+ i=76
+
+
+
+ Default Binary
+
+ i=719
+ i=8067
+ i=76
+
+
+
+ Default Binary
+
+ i=725
+ i=8073
+ i=76
+
+
+
+ Default Binary
+
+ i=948
+ i=8076
+ i=76
+
+
+
+ Default Binary
+
+ i=920
+ i=8172
+ i=76
+
+
+
+ Default Binary
+
+ i=338
+ i=7692
+ i=76
+
+
+
+ Default Binary
+
+ i=853
+ i=8208
+ i=76
+
+
+
+ Default Binary
+
+ i=11943
+ i=11959
+ i=76
+
+
+
+ Default Binary
+
+ i=11944
+ i=11962
+ i=76
+
+
+
+ Default Binary
+
+ i=856
+ i=8211
+ i=76
+
+
+
+ Default Binary
+
+ i=859
+ i=8214
+ i=76
+
+
+
+ Default Binary
+
+ i=862
+ i=8217
+ i=76
+
+
+
+ Default Binary
+
+ i=865
+ i=8220
+ i=76
+
+
+
+ Default Binary
+
+ i=868
+ i=8223
+ i=76
+
+
+
+ Default Binary
+
+ i=871
+ i=8226
+ i=76
+
+
+
+ Default Binary
+
+ i=299
+ i=7659
+ i=76
+
+
+
+ Default Binary
+
+ i=874
+ i=8229
+ i=76
+
+
+
+ Default Binary
+
+ i=877
+ i=8232
+ i=76
+
+
+
+ Default Binary
+
+ i=897
+ i=8235
+ i=76
+
+
+
+ Default Binary
+
+ i=884
+ i=8238
+ i=76
+
+
+
+ Default Binary
+
+ i=887
+ i=8241
+ i=76
+
+
+
+ Default Binary
+
+ i=12171
+ i=12183
+ i=76
+
+
+
+ Default Binary
+
+ i=12172
+ i=12186
+ i=76
+
+
+
+ Default Binary
+
+ i=12079
+ i=12091
+ i=76
+
+
+
+ Default Binary
+
+ i=12080
+ i=12094
+ i=76
+
+
+
+ Default Binary
+
+ i=894
+ i=8247
+ i=76
+
+
+
+ Default Binary
+
+ i=24033
+ i=24035
+ i=76
+
+
+
+ Default Binary
+
+ i=891
+ i=8244
+ i=76
+
+
+
+ Opc.Ua
+
+ i=7619
+ i=15037
+ i=12770
+ i=14873
+ i=17538
+ i=17550
+ i=15734
+ i=18824
+ i=18827
+ i=18830
+ i=18833
+ i=18836
+ i=18839
+ i=18842
+ i=18845
+ i=18848
+ i=15738
+ i=23514
+ i=12681
+ i=32383
+ i=15741
+ i=14855
+ i=15599
+ i=15602
+ i=15501
+ i=15521
+ i=24111
+ i=24114
+ i=24117
+ i=14849
+ i=14852
+ i=14876
+ i=15766
+ i=15769
+ i=14324
+ i=15772
+ i=15775
+ i=25533
+ i=15778
+ i=15781
+ i=15784
+ i=15787
+ i=21156
+ i=15793
+ i=15854
+ i=15857
+ i=15860
+ i=21159
+ i=21162
+ i=21165
+ i=15866
+ i=15869
+ i=15872
+ i=15877
+ i=15880
+ i=15883
+ i=15886
+ i=21002
+ i=15889
+ i=21168
+ i=23870
+ i=23873
+ i=23876
+ i=25536
+ i=23879
+ i=15895
+ i=15898
+ i=15919
+ i=15922
+ i=15925
+ i=15931
+ i=23882
+ i=23885
+ i=23888
+ i=23897
+ i=23900
+ i=17469
+ i=23909
+ i=21171
+ i=23912
+ i=23915
+ i=15524
+ i=15940
+ i=15943
+ i=15946
+ i=25539
+ i=25542
+ i=23502
+ i=24293
+ i=25240
+ i=32663
+ i=32666
+ i=16131
+ i=18178
+ i=18181
+ i=18184
+ i=18187
+ i=7650
+ i=7656
+ i=14870
+ i=12767
+ i=8914
+ i=7665
+ i=12213
+ i=7662
+ i=7668
+ i=7782
+ i=12902
+ i=12905
+ i=7698
+ i=7671
+ i=7674
+ i=7677
+ i=7680
+ i=7683
+ i=7728
+ i=7731
+ i=7734
+ i=7737
+ i=12718
+ i=12721
+ i=7686
+ i=7929
+ i=7932
+ i=7935
+ i=7938
+ i=7941
+ i=7944
+ i=7947
+ i=8004
+ i=8067
+ i=8073
+ i=8076
+ i=8172
+ i=7692
+ i=8208
+ i=11959
+ i=11962
+ i=8211
+ i=8214
+ i=8217
+ i=8220
+ i=8223
+ i=8226
+ i=7659
+ i=8229
+ i=8232
+ i=8235
+ i=8238
+ i=8241
+ i=12183
+ i=12186
+ i=12091
+ i=12094
+ i=8247
+ i=24035
+ i=8244
+ i=93
+ i=72
+
+
+ PG9wYzpUeXBlRGljdGlvbmFyeQ0KICB4bWxuczpvcGM9Imh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9y
+Zy9CaW5hcnlTY2hlbWEvIg0KICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1M
+U2NoZW1hLWluc3RhbmNlIg0KICB4bWxuczp1YT0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VB
+LyINCiAgeG1sbnM6dG5zPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIg0KICBEZWZhdWx0
+Qnl0ZU9yZGVyPSJMaXR0bGVFbmRpYW4iDQogIFRhcmdldE5hbWVzcGFjZT0iaHR0cDovL29wY2Zv
+dW5kYXRpb24ub3JnL1VBLyINCj4NCg0KICA8b3BjOkltcG9ydCBOYW1lc3BhY2U9Imh0dHA6Ly9v
+cGNmb3VuZGF0aW9uLm9yZy9CaW5hcnlTY2hlbWEvIiAvPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iWG1sRWxlbWVudCI+DQogICAgPG9wYzpEb2N1bWVudGF0aW9uPkFuIFhNTCBlbGVt
+ZW50IGVuY29kZWQgYXMgYSBVVEYtOCBzdHJpbmcuPC9vcGM6RG9jdW1lbnRhdGlvbj4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ikxlbmd0aCIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlZhbHVlIiBUeXBlTmFtZT0ib3BjOkNoYXIiIExlbmd0aEZpZWxkPSJMZW5n
+dGgiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUg
+TmFtZT0iTm9kZUlkVHlwZSIgTGVuZ3RoSW5CaXRzPSI2Ij4NCiAgICA8b3BjOkRvY3VtZW50YXRp
+b24+VGhlIHBvc3NpYmxlIGVuY29kaW5ncyBmb3IgYSBOb2RlSWQgdmFsdWUuPC9vcGM6RG9jdW1l
+bnRhdGlvbj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUd29CeXRlIiBWYWx1ZT0i
+MCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJGb3VyQnl0ZSIgVmFsdWU9IjEi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTnVtZXJpYyIgVmFsdWU9IjIiIC8+
+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3RyaW5nIiBWYWx1ZT0iMyIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJHdWlkIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJCeXRlU3RyaW5nIiBWYWx1ZT0iNSIgLz4NCiAgPC9vcGM6
+RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUd29CeXRlTm9k
+ZUlkIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IklkZW50aWZpZXIiIFR5cGVOYW1lPSJvcGM6Qnl0
+ZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBO
+YW1lPSJGb3VyQnl0ZU5vZGVJZCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lc3BhY2VJbmRl
+eCIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSWRlbnRpZmll
+ciIgVHlwZU5hbWU9Im9wYzpVSW50MTYiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTnVtZXJpY05vZGVJZCI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOYW1lc3BhY2VJbmRleCIgVHlwZU5hbWU9Im9wYzpVSW50MTYiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJJZGVudGlmaWVyIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTdHJpbmdO
+b2RlSWQiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZXNwYWNlSW5kZXgiIFR5cGVOYW1lPSJv
+cGM6VUludDE2IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSWRlbnRpZmllciIgVHlwZU5hbWU9
+Im9wYzpDaGFyQXJyYXkiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iR3VpZE5vZGVJZCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1l
+c3BhY2VJbmRleCIgVHlwZU5hbWU9Im9wYzpVSW50MTYiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJJZGVudGlmaWVyIiBUeXBlTmFtZT0ib3BjOkd1aWQiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQnl0ZVN0cmluZ05vZGVJZCI+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lc3BhY2VJbmRleCIgVHlwZU5hbWU9Im9wYzpVSW50MTYi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJZGVudGlmaWVyIiBUeXBlTmFtZT0ib3BjOkJ5dGVT
+dHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iTm9kZUlkIj4NCiAgICA8b3BjOkRvY3VtZW50YXRpb24+QW4gaWRlbnRpZmllciBm
+b3IgYSBub2RlIGluIGEgVUEgc2VydmVyIGFkZHJlc3Mgc3BhY2UuPC9vcGM6RG9jdW1lbnRhdGlv
+bj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZFR5cGUiIFR5cGVOYW1lPSJ1YTpOb2RlSWRU
+eXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzZXJ2ZWQxIiBUeXBlTmFtZT0ib3BjOkJp
+dCIgTGVuZ3RoPSIyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVHdvQnl0ZSIgVHlwZU5hbWU9
+InVhOlR3b0J5dGVOb2RlSWQiIFN3aXRjaEZpZWxkPSJOb2RlSWRUeXBlIiBTd2l0Y2hWYWx1ZT0i
+MCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkZvdXJCeXRlIiBUeXBlTmFtZT0idWE6Rm91ckJ5
+dGVOb2RlSWQiIFN3aXRjaEZpZWxkPSJOb2RlSWRUeXBlIiBTd2l0Y2hWYWx1ZT0iMSIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik51bWVyaWMiIFR5cGVOYW1lPSJ1YTpOdW1lcmljTm9kZUlkIiBT
+d2l0Y2hGaWVsZD0iTm9kZUlkVHlwZSIgU3dpdGNoVmFsdWU9IjIiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJTdHJpbmciIFR5cGVOYW1lPSJ1YTpTdHJpbmdOb2RlSWQiIFN3aXRjaEZpZWxkPSJO
+b2RlSWRUeXBlIiBTd2l0Y2hWYWx1ZT0iMyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikd1aWQi
+IFR5cGVOYW1lPSJ1YTpHdWlkTm9kZUlkIiBTd2l0Y2hGaWVsZD0iTm9kZUlkVHlwZSIgU3dpdGNo
+VmFsdWU9IjQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJCeXRlU3RyaW5nIiBUeXBlTmFtZT0i
+dWE6Qnl0ZVN0cmluZ05vZGVJZCIgU3dpdGNoRmllbGQ9Ik5vZGVJZFR5cGUiIFN3aXRjaFZhbHVl
+PSI1IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IkV4cGFuZGVkTm9kZUlkIj4NCiAgICA8b3BjOkRvY3VtZW50YXRpb24+QW4gaWRlbnRp
+ZmllciBmb3IgYSBub2RlIGluIGEgVUEgc2VydmVyIGFkZHJlc3Mgc3BhY2UgcXVhbGlmaWVkIHdp
+dGggYSBjb21wbGV0ZSBuYW1lc3BhY2Ugc3RyaW5nLjwvb3BjOkRvY3VtZW50YXRpb24+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJOb2RlSWRUeXBlIiBUeXBlTmFtZT0idWE6Tm9kZUlkVHlwZSIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlckluZGV4U3BlY2lmaWVkIiBUeXBlTmFtZT0ib3Bj
+OkJpdCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWVzcGFjZVVSSVNwZWNpZmllZCIgVHlw
+ZU5hbWU9Im9wYzpCaXQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUd29CeXRlIiBUeXBlTmFt
+ZT0idWE6VHdvQnl0ZU5vZGVJZCIgU3dpdGNoRmllbGQ9Ik5vZGVJZFR5cGUiIFN3aXRjaFZhbHVl
+PSIwIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRm91ckJ5dGUiIFR5cGVOYW1lPSJ1YTpGb3Vy
+Qnl0ZU5vZGVJZCIgU3dpdGNoRmllbGQ9Ik5vZGVJZFR5cGUiIFN3aXRjaFZhbHVlPSIxIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTnVtZXJpYyIgVHlwZU5hbWU9InVhOk51bWVyaWNOb2RlSWQi
+IFN3aXRjaEZpZWxkPSJOb2RlSWRUeXBlIiBTd2l0Y2hWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlN0cmluZyIgVHlwZU5hbWU9InVhOlN0cmluZ05vZGVJZCIgU3dpdGNoRmllbGQ9
+Ik5vZGVJZFR5cGUiIFN3aXRjaFZhbHVlPSIzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iR3Vp
+ZCIgVHlwZU5hbWU9InVhOkd1aWROb2RlSWQiIFN3aXRjaEZpZWxkPSJOb2RlSWRUeXBlIiBTd2l0
+Y2hWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkJ5dGVTdHJpbmciIFR5cGVOYW1l
+PSJ1YTpCeXRlU3RyaW5nTm9kZUlkIiBTd2l0Y2hGaWVsZD0iTm9kZUlkVHlwZSIgU3dpdGNoVmFs
+dWU9IjUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lc3BhY2VVUkkiIFR5cGVOYW1lPSJv
+cGM6Q2hhckFycmF5IiBTd2l0Y2hGaWVsZD0iTmFtZXNwYWNlVVJJU3BlY2lmaWVkIi8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXJJbmRleCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFN3aXRj
+aEZpZWxkPSJTZXJ2ZXJJbmRleFNwZWNpZmllZCIvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOk9wYXF1ZVR5cGUgTmFtZT0iU3RhdHVzQ29kZSIgTGVuZ3RoSW5CaXRzPSIzMiIg
+Qnl0ZU9yZGVyU2lnbmlmaWNhbnQ9InRydWUiPg0KICAgIDxvcGM6RG9jdW1lbnRhdGlvbj5BIDMy
+LWJpdCBzdGF0dXMgY29kZSB2YWx1ZS48L29wYzpEb2N1bWVudGF0aW9uPg0KICA8L29wYzpPcGFx
+dWVUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGlhZ25vc3RpY0luZm8iPg0K
+ICAgIDxvcGM6RG9jdW1lbnRhdGlvbj5BIHJlY3Vyc2l2ZSBzdHJ1Y3R1cmUgY29udGFpbmluZyBk
+aWFnbm9zdGljIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXR1cyBjb2RlLjwvb3Bj
+OkRvY3VtZW50YXRpb24+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTeW1ib2xpY0lkU3BlY2lmaWVk
+IiBUeXBlTmFtZT0ib3BjOkJpdCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWVzcGFjZVVS
+SVNwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJM
+b2NhbGl6ZWRUZXh0U3BlY2lmaWVkIiBUeXBlTmFtZT0ib3BjOkJpdCIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IkxvY2FsZVNwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJBZGRpdGlvbmFsSW5mb1NwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJbm5lclN0YXR1c0NvZGVTcGVjaWZpZWQiIFR5cGVO
+YW1lPSJvcGM6Qml0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSW5uZXJEaWFnbm9zdGljSW5m
+b1NwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJS
+ZXNlcnZlZDEiIFR5cGVOYW1lPSJvcGM6Qml0IiBMZW5ndGg9IjEiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJTeW1ib2xpY0lkIiBUeXBlTmFtZT0ib3BjOkludDMyIiBTd2l0Y2hGaWVsZD0iU3lt
+Ym9saWNJZFNwZWNpZmllZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWVzcGFjZVVSSSIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgU3dpdGNoRmllbGQ9Ik5hbWVzcGFjZVVSSVNwZWNpZmllZCIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkxvY2FsZSIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgU3dp
+dGNoRmllbGQ9IkxvY2FsZVNwZWNpZmllZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkxvY2Fs
+aXplZFRleHQiIFR5cGVOYW1lPSJvcGM6SW50MzIiIFN3aXRjaEZpZWxkPSJMb2NhbGl6ZWRUZXh0
+U3BlY2lmaWVkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQWRkaXRpb25hbEluZm8iIFR5cGVO
+YW1lPSJvcGM6Q2hhckFycmF5IiBTd2l0Y2hGaWVsZD0iQWRkaXRpb25hbEluZm9TcGVjaWZpZWQi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJbm5lclN0YXR1c0NvZGUiIFR5cGVOYW1lPSJ1YTpT
+dGF0dXNDb2RlIiBTd2l0Y2hGaWVsZD0iSW5uZXJTdGF0dXNDb2RlU3BlY2lmaWVkIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iSW5uZXJEaWFnbm9zdGljSW5mbyIgVHlwZU5hbWU9InVhOkRpYWdu
+b3N0aWNJbmZvIiBTd2l0Y2hGaWVsZD0iSW5uZXJEaWFnbm9zdGljSW5mb1NwZWNpZmllZCIgLz4N
+CiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJR
+dWFsaWZpZWROYW1lIj4NCiAgICA8b3BjOkRvY3VtZW50YXRpb24+QSBzdHJpbmcgcXVhbGlmaWVk
+IHdpdGggYSBuYW1lc3BhY2UgaW5kZXguPC9vcGM6RG9jdW1lbnRhdGlvbj4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Ik5hbWVzcGFjZUluZGV4IiBUeXBlTmFtZT0ib3BjOlVJbnQxNiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5hbWUiIFR5cGVOYW1lPSJvcGM6Q2hhckFycmF5IiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkxvY2FsaXpl
+ZFRleHQiPg0KICAgIDxvcGM6RG9jdW1lbnRhdGlvbj5BIHN0cmluZyBxdWFsaWZpZWQgd2l0aCBh
+IG5hbWVzcGFjZSBpbmRleC48L29wYzpEb2N1bWVudGF0aW9uPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTG9jYWxlU3BlY2lmaWVkIiBUeXBlTmFtZT0ib3BjOkJpdCIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlRleHRTcGVjaWZpZWQiIFR5cGVOYW1lPSJvcGM6Qml0IiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iUmVzZXJ2ZWQxIiBUeXBlTmFtZT0ib3BjOkJpdCIgTGVuZ3RoPSI2IiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTG9jYWxlIiBUeXBlTmFtZT0ib3BjOkNoYXJBcnJheSIgU3dpdGNo
+RmllbGQ9IkxvY2FsZVNwZWNpZmllZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRleHQiIFR5
+cGVOYW1lPSJvcGM6Q2hhckFycmF5IiBTd2l0Y2hGaWVsZD0iVGV4dFNwZWNpZmllZCIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJEYXRh
+VmFsdWUiPg0KICAgIDxvcGM6RG9jdW1lbnRhdGlvbj5BIHZhbHVlIHdpdGggYW4gYXNzb2NpYXRl
+ZCB0aW1lc3RhbXAsIGFuZCBxdWFsaXR5Ljwvb3BjOkRvY3VtZW50YXRpb24+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJWYWx1ZVNwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTdGF0dXNDb2RlU3BlY2lmaWVkIiBUeXBlTmFtZT0ib3BjOkJpdCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlNvdXJjZVRpbWVzdGFtcFNwZWNpZmllZCIgVHlwZU5hbWU9
+Im9wYzpCaXQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXJUaW1lc3RhbXBTcGVjaWZp
+ZWQiIFR5cGVOYW1lPSJvcGM6Qml0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU291cmNlUGlj
+b3NlY29uZHNTcGVjaWZpZWQiIFR5cGVOYW1lPSJvcGM6Qml0IiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iU2VydmVyUGljb3NlY29uZHNTcGVjaWZpZWQiIFR5cGVOYW1lPSJvcGM6Qml0IiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzZXJ2ZWQxIiBUeXBlTmFtZT0ib3BjOkJpdCIgTGVuZ3Ro
+PSIyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVmFsdWUiIFR5cGVOYW1lPSJ1YTpWYXJpYW50
+IiBTd2l0Y2hGaWVsZD0iVmFsdWVTcGVjaWZpZWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJT
+dGF0dXNDb2RlIiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgU3dpdGNoRmllbGQ9IlN0YXR1c0Nv
+ZGVTcGVjaWZpZWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTb3VyY2VUaW1lc3RhbXAiIFR5
+cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIFN3aXRjaEZpZWxkPSJTb3VyY2VUaW1lc3RhbXBTcGVjaWZp
+ZWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTb3VyY2VQaWNvc2Vjb25kcyIgVHlwZU5hbWU9
+Im9wYzpVSW50MTYiIFN3aXRjaEZpZWxkPSJTb3VyY2VQaWNvc2Vjb25kc1NwZWNpZmllZCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlclRpbWVzdGFtcCIgVHlwZU5hbWU9Im9wYzpEYXRl
+VGltZSIgU3dpdGNoRmllbGQ9IlNlcnZlclRpbWVzdGFtcFNwZWNpZmllZCIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlNlcnZlclBpY29zZWNvbmRzIiBUeXBlTmFtZT0ib3BjOlVJbnQxNiIgU3dp
+dGNoRmllbGQ9IlNlcnZlclBpY29zZWNvbmRzU3BlY2lmaWVkIiAvPg0KICA8L29wYzpTdHJ1Y3R1
+cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkV4dGVuc2lvbk9iamVjdCI+
+DQogICAgPG9wYzpEb2N1bWVudGF0aW9uPkEgc2VyaWFsaXplZCBvYmplY3QgcHJlZml4ZWQgd2l0
+aCBpdHMgZGF0YSB0eXBlIGlkZW50aWZpZXIuPC9vcGM6RG9jdW1lbnRhdGlvbj4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlR5cGVJZFNwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJCaW5hcnlCb2R5IiBUeXBlTmFtZT0ib3BjOkJpdCIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlhtbEJvZHkiIFR5cGVOYW1lPSJvcGM6Qml0IiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVzZXJ2ZWQxIiBUeXBlTmFtZT0ib3BjOkJpdCIgTGVuZ3RoPSI1IiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iVHlwZUlkIiBUeXBlTmFtZT0idWE6RXhwYW5kZWROb2RlSWQi
+IFN3aXRjaEZpZWxkPSJUeXBlSWRTcGVjaWZpZWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJC
+b2R5TGVuZ3RoIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Qm9keSIgVHlwZU5hbWU9Im9wYzpCeXRlIiBMZW5ndGhGaWVsZD0iQm9keUxlbmd0aCIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJWYXJp
+YW50Ij4NCiAgICA8b3BjOkRvY3VtZW50YXRpb24+QSB1bmlvbiBvZiBzZXZlcmFsIHR5cGVzLjwv
+b3BjOkRvY3VtZW50YXRpb24+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYXJpYW50VHlwZSIgVHlw
+ZU5hbWU9Im9wYzpCaXQiIExlbmd0aD0iNiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFycmF5
+RGltZW5zaW9uc1NwZWNpZmllZCIgVHlwZU5hbWU9Im9wYzpCaXQiIExlbmd0aD0iMSIvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iQXJyYXlMZW5ndGhTcGVjaWZpZWQiIFR5cGVOYW1lPSJvcGM6Qml0
+IiBMZW5ndGg9IjEiLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFycmF5TGVuZ3RoIiBUeXBlTmFt
+ZT0ib3BjOkludDMyIiBTd2l0Y2hGaWVsZD0iQXJyYXlMZW5ndGhTcGVjaWZpZWQiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJCb29sZWFuIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIExlbmd0aEZp
+ZWxkPSJBcnJheUxlbmd0aCIgU3dpdGNoRmllbGQ9IlZhcmlhbnRUeXBlIiBTd2l0Y2hWYWx1ZT0i
+MSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNCeXRlIiBUeXBlTmFtZT0ib3BjOlNCeXRlIiBM
+ZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxkPSJWYXJpYW50VHlwZSIgU3dpdGNo
+VmFsdWU9IjIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJCeXRlIiBUeXBlTmFtZT0ib3BjOkJ5
+dGUiIExlbmd0aEZpZWxkPSJBcnJheUxlbmd0aCIgU3dpdGNoRmllbGQ9IlZhcmlhbnRUeXBlIiBT
+d2l0Y2hWYWx1ZT0iMyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkludDE2IiBUeXBlTmFtZT0i
+b3BjOkludDE2IiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxkPSJWYXJpYW50
+VHlwZSIgU3dpdGNoVmFsdWU9IjQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVSW50MTYiIFR5
+cGVOYW1lPSJvcGM6VUludDE2IiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxk
+PSJWYXJpYW50VHlwZSIgU3dpdGNoVmFsdWU9IjUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJ
+bnQzMiIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0
+Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSI2IiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iVUludDMyIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgTGVuZ3RoRmllbGQ9IkFycmF5TGVu
+Z3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSI3IiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iSW50NjQiIFR5cGVOYW1lPSJvcGM6SW50NjQiIExlbmd0aEZpZWxkPSJB
+cnJheUxlbmd0aCIgU3dpdGNoRmllbGQ9IlZhcmlhbnRUeXBlIiBTd2l0Y2hWYWx1ZT0iOCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlVJbnQ2NCIgVHlwZU5hbWU9Im9wYzpVSW50NjQiIExlbmd0
+aEZpZWxkPSJBcnJheUxlbmd0aCIgU3dpdGNoRmllbGQ9IlZhcmlhbnRUeXBlIiBTd2l0Y2hWYWx1
+ZT0iOSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkZsb2F0IiBUeXBlTmFtZT0ib3BjOkZsb2F0
+IiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxkPSJWYXJpYW50VHlwZSIgU3dp
+dGNoVmFsdWU9IjEwIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRG91YmxlIiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFu
+dFR5cGUiIFN3aXRjaFZhbHVlPSIxMSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0cmluZyIg
+VHlwZU5hbWU9Im9wYzpDaGFyQXJyYXkiIExlbmd0aEZpZWxkPSJBcnJheUxlbmd0aCIgU3dpdGNo
+RmllbGQ9IlZhcmlhbnRUeXBlIiBTd2l0Y2hWYWx1ZT0iMTIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJEYXRlVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgTGVuZ3RoRmllbGQ9IkFycmF5
+TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSIxMyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ikd1aWQiIFR5cGVOYW1lPSJvcGM6R3VpZCIgTGVuZ3RoRmllbGQ9
+IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSIxNCIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkJ5dGVTdHJpbmciIFR5cGVOYW1lPSJvcGM6Qnl0ZVN0
+cmluZyIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUi
+IFN3aXRjaFZhbHVlPSIxNSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlhtbEVsZW1lbnQiIFR5
+cGVOYW1lPSJ1YTpYbWxFbGVtZW50IiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZp
+ZWxkPSJWYXJpYW50VHlwZSIgU3dpdGNoVmFsdWU9IjE2IiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTm9kZUlkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgi
+IFN3aXRjaEZpZWxkPSJWYXJpYW50VHlwZSIgU3dpdGNoVmFsdWU9IjE3IiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRXhwYW5kZWROb2RlSWQiIFR5cGVOYW1lPSJ1YTpFeHBhbmRlZE5vZGVJZCIg
+TGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRj
+aFZhbHVlPSIxOCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1c0NvZGUiIFR5cGVOYW1l
+PSJ1YTpTdGF0dXNDb2RlIiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxkPSJW
+YXJpYW50VHlwZSIgU3dpdGNoVmFsdWU9IjE5IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUXVh
+bGlmaWVkTmFtZSIgVHlwZU5hbWU9InVhOlF1YWxpZmllZE5hbWUiIExlbmd0aEZpZWxkPSJBcnJh
+eUxlbmd0aCIgU3dpdGNoRmllbGQ9IlZhcmlhbnRUeXBlIiBTd2l0Y2hWYWx1ZT0iMjAiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJMb2NhbGl6ZWRUZXh0IiBUeXBlTmFtZT0idWE6TG9jYWxpemVk
+VGV4dCIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUi
+IFN3aXRjaFZhbHVlPSIyMSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkV4dGVuc2lvbk9iamVj
+dCIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3Ro
+IiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSIyMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IkRhdGFWYWx1ZSIgVHlwZU5hbWU9InVhOkRhdGFWYWx1ZSIgTGVuZ3RoRmll
+bGQ9IkFycmF5TGVuZ3RoIiBTd2l0Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSIy
+MyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlZhcmlhbnQiIFR5cGVOYW1lPSJ1YTpWYXJpYW50
+IiBMZW5ndGhGaWVsZD0iQXJyYXlMZW5ndGgiIFN3aXRjaEZpZWxkPSJWYXJpYW50VHlwZSIgU3dp
+dGNoVmFsdWU9IjI0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlhZ25vc3RpY0luZm8iIFR5
+cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9IkFycmF5TGVuZ3RoIiBTd2l0
+Y2hGaWVsZD0iVmFyaWFudFR5cGUiIFN3aXRjaFZhbHVlPSIyNSIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZBcnJheURpbWVuc2lvbnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIFN3aXRjaEZp
+ZWxkPSJBcnJheURpbWVuc2lvbnNTcGVjaWZpZWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJB
+cnJheURpbWVuc2lvbnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIExlbmd0aEZpZWxkPSJOb09mQXJy
+YXlEaW1lbnNpb25zIiBTd2l0Y2hGaWVsZD0iQXJyYXlEaW1lbnNpb25zU3BlY2lmaWVkIiAvPg0K
+ICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9Ik5h
+bWluZ1J1bGVUeXBlIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJNYW5kYXRvcnkiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9Ik9wdGlvbmFsIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJDb25zdHJhaW50IiBWYWx1ZT0iMyIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQog
+ICAgDQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJFbnVtZXJhdGlvbiIgTGVuZ3RoSW5C
+aXRzPSIzMiI+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6T3BhcXVlVHlwZSBO
+YW1lPSJJbWFnZUJNUCI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+DQoNCiAgPG9wYzpPcGFxdWVUeXBl
+IE5hbWU9IkltYWdlR0lGIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOk9wYXF1ZVR5
+cGUgTmFtZT0iSW1hZ2VKUEciPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxvcGM6T3BhcXVl
+VHlwZSBOYW1lPSJJbWFnZVBORyI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+DQoNCiAgPG9wYzpPcGFx
+dWVUeXBlIE5hbWU9IkF1ZGlvRGF0YVR5cGUiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxv
+cGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVW5pb24iIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmpl
+Y3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOk9wYXF1ZVR5cGUgTmFtZT0i
+VXJpU3RyaW5nIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOk9wYXF1ZVR5cGUgTmFt
+ZT0iQml0RmllbGRNYXNrRGF0YVR5cGUiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxvcGM6
+T3BhcXVlVHlwZSBOYW1lPSJTZW1hbnRpY1ZlcnNpb25TdHJpbmciPg0KICA8L29wYzpPcGFxdWVU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iS2V5VmFsdWVQYWlyIiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IktleSIgVHlwZU5h
+bWU9InVhOlF1YWxpZmllZE5hbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1ZSIgVHlw
+ZU5hbWU9InVhOlZhcmlhbnQiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iQWRkaXRpb25hbFBhcmFtZXRlcnNUeXBlIiBCYXNlVHlwZT0i
+dWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZQYXJhbWV0ZXJz
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUGFyYW1ldGVy
+cyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxkPSJOb09mUGFyYW1ldGVy
+cyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBO
+YW1lPSJFcGhlbWVyYWxLZXlUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlB1YmxpY0tleSIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2lnbmF0dXJlIiBUeXBlTmFtZT0ib3BjOkJ5dGVTdHJp
+bmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUg
+TmFtZT0iRW5kcG9pbnRUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkVuZHBvaW50VXJsIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5TW9kZSIgVHlwZU5hbWU9InRuczpNZXNzYWdlU2Vj
+dXJpdHlNb2RlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VjdXJpdHlQb2xpY3lVcmkiIFR5
+cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVHJhbnNwb3J0UHJv
+ZmlsZVVyaSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJIYW5kbGUiPg0KICA8L29wYzpPcGFxdWVUeXBl
+Pg0KDQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJUcmltbWVkU3RyaW5nIj4NCiAgPC9vcGM6T3Bh
+cXVlVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJhdGlvbmFsTnVtYmVyIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik51bWVy
+YXRvciIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlbm9t
+aW5hdG9yIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+
+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJWZWN0b3IiIEJhc2VUeXBlPSJ1YTpFeHRl
+bnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVy
+ZWRUeXBlIE5hbWU9IlRocmVlRFZlY3RvciIgQmFzZVR5cGU9InRuczpWZWN0b3IiPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iWCIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJZIiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IloiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNhcnRlc2lhbkNvb3JkaW5hdGVzIiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUaHJlZURDYXJ0ZXNpYW5Db29yZGluYXRlcyIgQmFzZVR5
+cGU9InRuczpDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJYIiBU
+eXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlkiIFR5cGVOYW1l
+PSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iWiIgVHlwZU5hbWU9Im9wYzpE
+b3VibGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iT3JpZW50YXRpb24iIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlRocmVl
+RE9yaWVudGF0aW9uIiBCYXNlVHlwZT0idG5zOk9yaWVudGF0aW9uIj4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IkEiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+QiIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDIiBUeXBl
+TmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpT
+dHJ1Y3R1cmVkVHlwZSBOYW1lPSJGcmFtZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+VGhyZWVERnJhbWUiIEJhc2VUeXBlPSJ0bnM6RnJhbWUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Q2FydGVzaWFuQ29vcmRpbmF0ZXMiIFR5cGVOYW1lPSJ0bnM6VGhyZWVEQ2FydGVzaWFuQ29vcmRp
+bmF0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJPcmllbnRhdGlvbiIgVHlwZU5hbWU9InRu
+czpUaHJlZURPcmllbnRhdGlvbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJPcGVuRmlsZU1vZGUiIExlbmd0aEluQml0cz0iMzIiPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlYWQiIFZhbHVlPSIxIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IldyaXRlIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJFcmFzZUV4aXN0aW5nIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBcHBlbmQiIFZhbHVlPSI4IiAvPg0KICA8L29wYzpFbnVt
+ZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IklkZW50aXR5Q3JpdGVy
+aWFUeXBlIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJVc2VyTmFtZSIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+VGh1bWJwcmludCIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+Um9sZSIgVmFsdWU9IjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iR3JvdXBJ
+ZCIgVmFsdWU9IjQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQW5vbnltb3Vz
+IiBWYWx1ZT0iNSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBdXRoZW50aWNh
+dGVkVXNlciIgVmFsdWU9IjYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQXBw
+bGljYXRpb24iIFZhbHVlPSI3IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ilg1
+MDlTdWJqZWN0IiBWYWx1ZT0iOCIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSIgQmFzZVR5cGU9
+InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDcml0ZXJpYVR5cGUi
+IFR5cGVOYW1lPSJ0bnM6SWRlbnRpdHlDcml0ZXJpYVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJDcml0ZXJpYSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVy
+ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQ3VycmVuY3lVbml0VHlwZSIg
+QmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOdW1l
+cmljQ29kZSIgVHlwZU5hbWU9Im9wYzpJbnQxNiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkV4
+cG9uZW50IiBUeXBlTmFtZT0ib3BjOlNCeXRlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQWxw
+aGFiZXRpY0NvZGUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iQ3VycmVuY3kiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiAvPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IkFsYXJtTWFzayIgTGVu
+Z3RoSW5CaXRzPSIxNiIgSXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IkFjdGl2ZSIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+VW5hY2tub3dsZWRnZWQiIFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IlVuY29uZmlybWVkIiBWYWx1ZT0iNCIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoN
+CiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJUcnVzdExpc3RWYWxpZGF0aW9uT3B0aW9ucyIg
+TGVuZ3RoSW5CaXRzPSIzMiIgSXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9IlN1cHByZXNzQ2VydGlmaWNhdGVFeHBpcmVkIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTdXBwcmVzc0hvc3ROYW1lSW52YWxpZCIgVmFsdWU9IjIi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3VwcHJlc3NSZXZvY2F0aW9uU3Rh
+dHVzVW5rbm93biIgVmFsdWU9IjQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+U3VwcHJlc3NJc3N1ZXJDZXJ0aWZpY2F0ZUV4cGlyZWQiIFZhbHVlPSI4IiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN1cHByZXNzSXNzdWVyUmV2b2NhdGlvblN0YXR1c1Vua25v
+d24iIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJDaGVja1Jl
+dm9jYXRpb25TdGF0dXNPbmxpbmUiIFZhbHVlPSIzMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJDaGVja1Jldm9jYXRpb25TdGF0dXNPZmZsaW5lIiBWYWx1ZT0iNjQiIC8+DQog
+IDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iVHJ1
+c3RMaXN0TWFza3MiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9
+IlRydXN0ZWRDZXJ0aWZpY2F0ZXMiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IlRydXN0ZWRDcmxzIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJJc3N1ZXJDZXJ0aWZpY2F0ZXMiIFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51
+bWVyYXRlZFZhbHVlIE5hbWU9Iklzc3VlckNybHMiIFZhbHVlPSI4IiAvPg0KICAgIDxvcGM6RW51
+bWVyYXRlZFZhbHVlIE5hbWU9IkFsbCIgVmFsdWU9IjE1IiAvPg0KICA8L29wYzpFbnVtZXJhdGVk
+VHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlRydXN0TGlzdERhdGFUeXBlIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNwZWNp
+ZmllZExpc3RzIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZUcnVzdGVkQ2VydGlmaWNhdGVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iVHJ1c3RlZENlcnRpZmljYXRlcyIgVHlwZU5hbWU9Im9wYzpCeXRlU3Ry
+aW5nIiBMZW5ndGhGaWVsZD0iTm9PZlRydXN0ZWRDZXJ0aWZpY2F0ZXMiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mVHJ1c3RlZENybHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJUcnVzdGVkQ3JscyIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiBM
+ZW5ndGhGaWVsZD0iTm9PZlRydXN0ZWRDcmxzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+Zklzc3VlckNlcnRpZmljYXRlcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Iklzc3VlckNlcnRpZmljYXRlcyIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiBM
+ZW5ndGhGaWVsZD0iTm9PZklzc3VlckNlcnRpZmljYXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9Ik5vT2ZJc3N1ZXJDcmxzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iSXNzdWVyQ3JscyIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiBMZW5ndGhGaWVs
+ZD0iTm9PZklzc3VlckNybHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iVHJhbnNhY3Rpb25FcnJvclR5cGUiIEJhc2VUeXBlPSJ1YTpF
+eHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVGFyZ2V0SWQiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFcnJvciIgVHlwZU5hbWU9InVh
+OlN0YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNZXNzYWdlIiBUeXBlTmFtZT0i
+dWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpT
+dHJ1Y3R1cmVkVHlwZSBOYW1lPSJEYXRhVHlwZVNjaGVtYUhlYWRlciIgQmFzZVR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTmFtZXNwYWNlcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWVzcGFjZXMiIFR5
+cGVOYW1lPSJvcGM6U3RyaW5nIiBMZW5ndGhGaWVsZD0iTm9PZk5hbWVzcGFjZXMiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJOb09mU3RydWN0dXJlRGF0YVR5cGVzIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3RydWN0dXJlRGF0YVR5cGVzIiBUeXBlTmFt
+ZT0idG5zOlN0cnVjdHVyZURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZlN0cnVjdHVyZURh
+dGFUeXBlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZFbnVtRGF0YVR5cGVzIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW51bURhdGFUeXBlcyIg
+VHlwZU5hbWU9InRuczpFbnVtRGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mRW51bURhdGFU
+eXBlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTaW1wbGVEYXRhVHlwZXMiIFR5cGVO
+YW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTaW1wbGVEYXRhVHlwZXMi
+IFR5cGVOYW1lPSJ0bnM6U2ltcGxlVHlwZURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZlNp
+bXBsZURhdGFUeXBlcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1
+Y3R1cmVkVHlwZSBOYW1lPSJEYXRhVHlwZURlc2NyaXB0aW9uIiBCYXNlVHlwZT0idWE6RXh0ZW5z
+aW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFUeXBlSWQiIFR5cGVOYW1lPSJ1
+YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lIiBUeXBlTmFtZT0idWE6UXVh
+bGlmaWVkTmFtZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJTdHJ1Y3R1cmVEZXNjcmlwdGlvbiIgQmFzZVR5cGU9InRuczpEYXRhVHlw
+ZURlc2NyaXB0aW9uIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFUeXBlSWQiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIFNvdXJjZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9InVhOlF1YWxpZmllZE5hbWUiIFNvdXJj
+ZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U3RydWN0dXJlRGVmaW5pdGlvbiIgVHlwZU5hbWU9InRuczpTdHJ1Y3R1cmVEZWZpbml0aW9uIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IkVudW1EZXNjcmlwdGlvbiIgQmFzZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIj4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFUeXBlSWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIFNvdXJj
+ZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+TmFtZSIgVHlwZU5hbWU9InVhOlF1YWxpZmllZE5hbWUiIFNvdXJjZVR5cGU9InRuczpEYXRhVHlw
+ZURlc2NyaXB0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW51bURlZmluaXRpb24iIFR5
+cGVOYW1lPSJ0bnM6RW51bURlZmluaXRpb24iIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJCdWls
+dEluVHlwZSIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNpbXBsZVR5cGVEZXNjcmlwdGlvbiIgQmFz
+ZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRh
+dGFUeXBlSWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIFNvdXJjZVR5cGU9InRuczpEYXRhVHlwZURl
+c2NyaXB0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9InVhOlF1
+YWxpZmllZE5hbWUiIFNvdXJjZVR5cGU9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iQmFzZURhdGFUeXBlIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQnVpbHRJblR5cGUiIFR5cGVOYW1lPSJvcGM6Qnl0ZSIgLz4N
+CiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJV
+QUJpbmFyeUZpbGVEYXRhVHlwZSIgQmFzZVR5cGU9InRuczpEYXRhVHlwZVNjaGVtYUhlYWRlciI+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTmFtZXNwYWNlcyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWVzcGFjZXMiIFR5cGVOYW1lPSJvcGM6U3Ry
+aW5nIiBMZW5ndGhGaWVsZD0iTm9PZk5hbWVzcGFjZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJOb09mU3RydWN0dXJlRGF0YVR5cGVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iU3RydWN0dXJlRGF0YVR5cGVzIiBUeXBlTmFtZT0idG5zOlN0cnVjdHVy
+ZURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZlN0cnVjdHVyZURhdGFUeXBlcyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZFbnVtRGF0YVR5cGVzIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW51bURhdGFUeXBlcyIgVHlwZU5hbWU9InRuczpF
+bnVtRGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mRW51bURhdGFUeXBlcyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTaW1wbGVEYXRhVHlwZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTaW1wbGVEYXRhVHlwZXMiIFR5cGVOYW1lPSJ0bnM6
+U2ltcGxlVHlwZURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZlNpbXBsZURhdGFUeXBlcyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNjaGVtYUxvY2F0aW9uIiBUeXBlTmFtZT0ib3BjOlN0
+cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZGaWxlSGVhZGVyIiBUeXBlTmFtZT0i
+b3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRmlsZUhlYWRlciIgVHlwZU5hbWU9
+InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxkPSJOb09mRmlsZUhlYWRlciIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkJvZHkiIFR5cGVOYW1lPSJ1YTpWYXJpYW50IiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlBvcnRhYmxlUXVh
+bGlmaWVkTmFtZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOYW1lc3BhY2VVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUG9ydGFibGVOb2RlSWQi
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFt
+ZXNwYWNlVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IklkZW50aWZpZXIiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVW5zaWduZWRSYXRpb25hbE51bWJl
+ciIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJO
+dW1lcmF0b3IiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+RGVub21pbmF0b3IiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVk
+VHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlB1YlN1YlN0YXRlIiBMZW5ndGhJ
+bkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEaXNhYmxlZCIgVmFs
+dWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iUGF1c2VkIiBWYWx1ZT0i
+MSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPcGVyYXRpb25hbCIgVmFsdWU9
+IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRXJyb3IiIFZhbHVlPSIzIiAv
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlByZU9wZXJhdGlvbmFsIiBWYWx1ZT0i
+NCIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBO
+YW1lPSJEYXRhU2V0TWV0YURhdGFUeXBlIiBCYXNlVHlwZT0idG5zOkRhdGFUeXBlU2NoZW1hSGVh
+ZGVyIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZOYW1lc3BhY2VzIiBUeXBlTmFtZT0ib3Bj
+OkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZXNwYWNlcyIgVHlwZU5hbWU9Im9w
+YzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09mTmFtZXNwYWNlcyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZTdHJ1Y3R1cmVEYXRhVHlwZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJTdHJ1Y3R1cmVEYXRhVHlwZXMiIFR5cGVOYW1lPSJ0bnM6U3Ry
+dWN0dXJlRGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mU3RydWN0dXJlRGF0YVR5cGVzIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkVudW1EYXRhVHlwZXMiIFR5cGVOYW1lPSJvcGM6
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbnVtRGF0YVR5cGVzIiBUeXBlTmFtZT0i
+dG5zOkVudW1EZXNjcmlwdGlvbiIgTGVuZ3RoRmllbGQ9Ik5vT2ZFbnVtRGF0YVR5cGVzIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNpbXBsZURhdGFUeXBlcyIgVHlwZU5hbWU9Im9wYzpJ
+bnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNpbXBsZURhdGFUeXBlcyIgVHlwZU5hbWU9
+InRuczpTaW1wbGVUeXBlRGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mU2ltcGxlRGF0YVR5
+cGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmci
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIgVHlwZU5hbWU9InVhOkxvY2Fs
+aXplZFRleHQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRmllbGRzIiBUeXBlTmFtZT0i
+b3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRmllbGRzIiBUeXBlTmFtZT0idG5z
+OkZpZWxkTWV0YURhdGEiIExlbmd0aEZpZWxkPSJOb09mRmllbGRzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRGF0YVNldENsYXNzSWQiIFR5cGVOYW1lPSJvcGM6R3VpZCIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IkNvbmZpZ3VyYXRpb25WZXJzaW9uIiBUeXBlTmFtZT0idG5zOkNvbmZpZ3Vy
+YXRpb25WZXJzaW9uRGF0YVR5cGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxv
+cGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRmllbGRNZXRhRGF0YSIgQmFzZVR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0
+cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlc2NyaXB0aW9uIiBUeXBlTmFtZT0idWE6
+TG9jYWxpemVkVGV4dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkZpZWxkRmxhZ3MiIFR5cGVO
+YW1lPSJ0bnM6RGF0YVNldEZpZWxkRmxhZ3MiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJCdWls
+dEluVHlwZSIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0
+YVR5cGUiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1
+ZVJhbmsiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09m
+QXJyYXlEaW1lbnNpb25zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iQXJyYXlEaW1lbnNpb25zIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgTGVuZ3RoRmllbGQ9
+Ik5vT2ZBcnJheURpbWVuc2lvbnMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhTdHJpbmdM
+ZW5ndGgiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0
+YVNldEZpZWxkSWQiIFR5cGVOYW1lPSJvcGM6R3VpZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZQcm9wZXJ0aWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUHJvcGVydGllcyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxk
+PSJOb09mUHJvcGVydGllcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpF
+bnVtZXJhdGVkVHlwZSBOYW1lPSJEYXRhU2V0RmllbGRGbGFncyIgTGVuZ3RoSW5CaXRzPSIxNiIg
+SXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUi
+IFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlByb21vdGVkRmll
+bGQiIFZhbHVlPSIxIiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWFqb3JWZXJzaW9uIiBU
+eXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1pbm9yVmVyc2lv
+biIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUHVibGlzaGVkRGF0YVNldERhdGFUeXBlIiBCYXNl
+VHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWUiIFR5
+cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRhdGFTZXRG
+b2xkZXIiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRh
+U2V0Rm9sZGVyIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEYXRhU2V0
+Rm9sZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldE1ldGFEYXRhIiBUeXBlTmFt
+ZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09m
+RXh0ZW5zaW9uRmllbGRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iRXh0ZW5zaW9uRmllbGRzIiBUeXBlTmFtZT0idG5zOktleVZhbHVlUGFpciIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZFeHRlbnNpb25GaWVsZHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRh
+U2V0U291cmNlIiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlB1Ymxpc2hlZERhdGFT
+ZXRTb3VyY2VEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogIDwvb3Bj
+OlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUHVibGlzaGVk
+VmFyaWFibGVEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJQdWJsaXNoZWRWYXJpYWJsZSIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkF0dHJpYnV0ZUlkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNhbXBsaW5nSW50ZXJ2YWxIaW50IiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlYWRiYW5kVHlwZSIgVHlwZU5h
+bWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZWFkYmFuZFZhbHVlIiBU
+eXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkluZGV4UmFuZ2Ui
+IFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic3RpdHV0
+ZVZhbHVlIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5v
+T2ZNZXRhRGF0YVByb3BlcnRpZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJNZXRhRGF0YVByb3BlcnRpZXMiIFR5cGVOYW1lPSJ1YTpRdWFsaWZpZWROYW1l
+IiBMZW5ndGhGaWVsZD0iTm9PZk1ldGFEYXRhUHJvcGVydGllcyIgLz4NCiAgPC9vcGM6U3RydWN0
+dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJQdWJsaXNoZWREYXRhSXRl
+bXNEYXRhVHlwZSIgQmFzZVR5cGU9InRuczpQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlB1Ymxpc2hlZERhdGEiIFR5cGVOYW1lPSJvcGM6
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNoZWREYXRhIiBUeXBlTmFtZT0i
+dG5zOlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIExlbmd0aEZpZWxkPSJOb09mUHVibGlzaGVk
+RGF0YSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlw
+ZSBOYW1lPSJQdWJsaXNoZWRFdmVudHNEYXRhVHlwZSIgQmFzZVR5cGU9InRuczpQdWJsaXNoZWRE
+YXRhU2V0U291cmNlRGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRXZlbnROb3RpZmll
+ciIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZWxl
+Y3RlZEZpZWxkcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlNlbGVjdGVkRmllbGRzIiBUeXBlTmFtZT0idG5zOlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIExl
+bmd0aEZpZWxkPSJOb09mU2VsZWN0ZWRGaWVsZHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJG
+aWx0ZXIiIFR5cGVOYW1lPSJ0bnM6Q29udGVudEZpbHRlciIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJQdWJsaXNoZWREYXRhU2V0Q3Vz
+dG9tU291cmNlRGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6UHVibGlzaGVkRGF0YVNldFNvdXJjZURh
+dGFUeXBlIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkN5Y2xpY0RhdGFTZXQiIFR5cGVOYW1lPSJv
+cGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJh
+dGVkVHlwZSBOYW1lPSJEYXRhU2V0RmllbGRDb250ZW50TWFzayIgTGVuZ3RoSW5CaXRzPSIzMiIg
+SXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUi
+IFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN0YXR1c0NvZGUi
+IFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNvdXJjZVRpbWVz
+dGFtcCIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2VydmVy
+VGltZXN0YW1wIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJT
+b3VyY2VQaWNvU2Vjb25kcyIgVmFsdWU9IjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iU2VydmVyUGljb1NlY29uZHMiIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJSYXdEYXRhIiBWYWx1ZT0iMzIiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGF0YVNldFdyaXRlckRhdGFUeXBl
+IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5h
+bWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW5hYmxl
+ZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNl
+dFdyaXRlcklkIiBUeXBlTmFtZT0ib3BjOlVJbnQxNiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiBUeXBlTmFtZT0idG5zOkRhdGFTZXRGaWVsZENvbnRl
+bnRNYXNrIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iS2V5RnJhbWVDb3VudCIgVHlwZU5hbWU9
+Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhU2V0TmFtZSIgVHlwZU5h
+bWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGF0YVNldFdyaXRl
+clByb3BlcnRpZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJEYXRhU2V0V3JpdGVyUHJvcGVydGllcyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExl
+bmd0aEZpZWxkPSJOb09mRGF0YVNldFdyaXRlclByb3BlcnRpZXMiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJUcmFuc3BvcnRTZXR0aW5ncyIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1lc3NhZ2VTZXR0aW5ncyIgVHlwZU5hbWU9InVhOkV4
+dGVuc2lvbk9iamVjdCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1
+Y3R1cmVkVHlwZSBOYW1lPSJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiIEJhc2VUeXBl
+PSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3Bj
+OlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIEJhc2VU
+eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlB1YlN1Ykdyb3VwRGF0YVR5cGUiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9
+Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbmFibGVkIiBUeXBlTmFtZT0i
+b3BjOkJvb2xlYW4iIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eU1vZGUiIFR5cGVO
+YW1lPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNl
+Y3VyaXR5R3JvdXBJZCIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJOb09mU2VjdXJpdHlLZXlTZXJ2aWNlcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5S2V5U2VydmljZXMiIFR5cGVOYW1lPSJ0bnM6RW5k
+cG9pbnREZXNjcmlwdGlvbiIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZWN1cml0eUtleVNlcnZpY2VzIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWF4TmV0d29ya01lc3NhZ2VTaXplIiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZHcm91cFByb3BlcnRpZXMi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJHcm91cFByb3Bl
+cnRpZXMiIFR5cGVOYW1lPSJ0bnM6S2V5VmFsdWVQYWlyIiBMZW5ndGhGaWVsZD0iTm9PZkdyb3Vw
+UHJvcGVydGllcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJXcml0ZXJHcm91cERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOlB1YlN1Ykdy
+b3VwRGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9Im9wYzpT
+dHJpbmciIFNvdXJjZVR5cGU9InRuczpQdWJTdWJHcm91cERhdGFUeXBlIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRW5hYmxlZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiBTb3VyY2VUeXBlPSJ0
+bnM6UHViU3ViR3JvdXBEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5
+TW9kZSIgVHlwZU5hbWU9InRuczpNZXNzYWdlU2VjdXJpdHlNb2RlIiBTb3VyY2VUeXBlPSJ0bnM6
+UHViU3ViR3JvdXBEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5R3Jv
+dXBJZCIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIFNvdXJjZVR5cGU9InRuczpQdWJTdWJHcm91cERh
+dGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNlY3VyaXR5S2V5U2VydmljZXMi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eUtl
+eVNlcnZpY2VzIiBUeXBlTmFtZT0idG5zOkVuZHBvaW50RGVzY3JpcHRpb24iIExlbmd0aEZpZWxk
+PSJOb09mU2VjdXJpdHlLZXlTZXJ2aWNlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1heE5l
+dHdvcmtNZXNzYWdlU2l6ZSIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpQ
+dWJTdWJHcm91cERhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkdyb3VwUHJv
+cGVydGllcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikdy
+b3VwUHJvcGVydGllcyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxkPSJO
+b09mR3JvdXBQcm9wZXJ0aWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iV3JpdGVyR3JvdXBJ
+ZCIgVHlwZU5hbWU9Im9wYzpVSW50MTYiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNo
+aW5nSW50ZXJ2YWwiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iS2VlcEFsaXZlVGltZSIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJQcmlvcml0eSIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTm9PZkxvY2FsZUlkcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IkxvY2FsZUlkcyIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxkPSJO
+b09mTG9jYWxlSWRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSGVhZGVyTGF5b3V0VXJpIiBU
+eXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRyYW5zcG9ydFNl
+dHRpbmdzIiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTWVzc2FnZVNldHRpbmdzIiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRhdGFTZXRXcml0ZXJzIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldFdyaXRlcnMiIFR5cGVOYW1lPSJ0
+bnM6RGF0YVNldFdyaXRlckRhdGFUeXBlIiBMZW5ndGhGaWVsZD0iTm9PZkRhdGFTZXRXcml0ZXJz
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5h
+bWU9IldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9u
+T2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlw
+ZSBOYW1lPSJQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmci
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbmFibGVkIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4i
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNoZXJJZCIgVHlwZU5hbWU9InVhOlZhcmlh
+bnQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUcmFuc3BvcnRQcm9maWxlVXJpIiBUeXBlTmFt
+ZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFkZHJlc3MiIFR5cGVOYW1l
+PSJ1YTpFeHRlbnNpb25PYmplY3QiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mQ29ubmVj
+dGlvblByb3BlcnRpZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJDb25uZWN0aW9uUHJvcGVydGllcyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExl
+bmd0aEZpZWxkPSJOb09mQ29ubmVjdGlvblByb3BlcnRpZXMiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJUcmFuc3BvcnRTZXR0aW5ncyIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZXcml0ZXJHcm91cHMiIFR5cGVOYW1lPSJvcGM6SW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJXcml0ZXJHcm91cHMiIFR5cGVOYW1lPSJ0bnM6
+V3JpdGVyR3JvdXBEYXRhVHlwZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZXcml0ZXJHcm91cHMiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVhZGVyR3JvdXBzIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVhZGVyR3JvdXBzIiBUeXBlTmFtZT0idG5zOlJl
+YWRlckdyb3VwRGF0YVR5cGUiIExlbmd0aEZpZWxkPSJOb09mUmVhZGVyR3JvdXBzIiAvPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNvbm5l
+Y3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTmV0
+d29ya0FkZHJlc3NEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJOZXR3b3JrSW50ZXJmYWNlIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIg
+Lz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1l
+PSJOZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOk5ldHdvcmtBZGRyZXNz
+RGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmV0d29ya0ludGVyZmFjZSIgVHlwZU5h
+bWU9Im9wYzpTdHJpbmciIFNvdXJjZVR5cGU9InRuczpOZXR3b3JrQWRkcmVzc0RhdGFUeXBlIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXJsIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZWFk
+ZXJHcm91cERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIFNvdXJjZVR5cGU9
+InRuczpQdWJTdWJHcm91cERhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW5hYmxl
+ZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiBTb3VyY2VUeXBlPSJ0bnM6UHViU3ViR3JvdXBEYXRh
+VHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5TW9kZSIgVHlwZU5hbWU9InRu
+czpNZXNzYWdlU2VjdXJpdHlNb2RlIiBTb3VyY2VUeXBlPSJ0bnM6UHViU3ViR3JvdXBEYXRhVHlw
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5R3JvdXBJZCIgVHlwZU5hbWU9Im9w
+YzpTdHJpbmciIFNvdXJjZVR5cGU9InRuczpQdWJTdWJHcm91cERhdGFUeXBlIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZlNlY3VyaXR5S2V5U2VydmljZXMiIFR5cGVOYW1lPSJvcGM6SW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiBUeXBlTmFt
+ZT0idG5zOkVuZHBvaW50RGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mU2VjdXJpdHlLZXlT
+ZXJ2aWNlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1heE5ldHdvcmtNZXNzYWdlU2l6ZSIg
+VHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpQdWJTdWJHcm91cERhdGFUeXBl
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkdyb3VwUHJvcGVydGllcyIgVHlwZU5hbWU9
+Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikdyb3VwUHJvcGVydGllcyIgVHlw
+ZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxkPSJOb09mR3JvdXBQcm9wZXJ0aWVz
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIFR5cGVOYW1lPSJ1
+YTpFeHRlbnNpb25PYmplY3QiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNZXNzYWdlU2V0dGlu
+Z3MiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJOb09mRGF0YVNldFJlYWRlcnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJEYXRhU2V0UmVhZGVycyIgVHlwZU5hbWU9InRuczpEYXRhU2V0UmVhZGVyRGF0
+YVR5cGUiIExlbmd0aEZpZWxkPSJOb09mRGF0YVNldFJlYWRlcnMiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVhZGVyR3JvdXBUcmFu
+c3BvcnREYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogIDwvb3BjOlN0
+cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVhZGVyR3JvdXBN
+ZXNzYWdlRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRhdGFTZXRSZWFk
+ZXJEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkVuYWJsZWQiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlB1Ymxpc2hlcklkIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IldyaXRlckdyb3VwSWQiIFR5cGVOYW1lPSJvcGM6VUludDE2IiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRGF0YVNldFdyaXRlcklkIiBUeXBlTmFtZT0ib3BjOlVJbnQxNiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFTZXRNZXRhRGF0YSIgVHlwZU5hbWU9InRuczpEYXRhU2V0
+TWV0YURhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldEZpZWxkQ29udGVu
+dE1hc2siIFR5cGVOYW1lPSJ0bnM6RGF0YVNldEZpZWxkQ29udGVudE1hc2siIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJNZXNzYWdlUmVjZWl2ZVRpbWVvdXQiIFR5cGVOYW1lPSJvcGM6RG91Ymxl
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iS2V5RnJhbWVDb3VudCIgVHlwZU5hbWU9Im9wYzpV
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJIZWFkZXJMYXlvdXRVcmkiIFR5cGVOYW1l
+PSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VjdXJpdHlNb2RlIiBUeXBl
+TmFtZT0idG5zOk1lc3NhZ2VTZWN1cml0eU1vZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJT
+ZWN1cml0eUdyb3VwSWQiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTm9PZlNlY3VyaXR5S2V5U2VydmljZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiBUeXBlTmFtZT0idG5zOkVu
+ZHBvaW50RGVzY3JpcHRpb24iIExlbmd0aEZpZWxkPSJOb09mU2VjdXJpdHlLZXlTZXJ2aWNlcyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEYXRhU2V0UmVhZGVyUHJvcGVydGllcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFTZXRSZWFkZXJQ
+cm9wZXJ0aWVzIiBUeXBlTmFtZT0idG5zOktleVZhbHVlUGFpciIgTGVuZ3RoRmllbGQ9Ik5vT2ZE
+YXRhU2V0UmVhZGVyUHJvcGVydGllcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRyYW5zcG9y
+dFNldHRpbmdzIiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTWVzc2FnZVNldHRpbmdzIiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic2NyaWJlZERhdGFTZXQiIFR5cGVOYW1lPSJ1YTpF
+eHRlbnNpb25PYmplY3QiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiBCYXNl
+VHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiBCYXNl
+VHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgQmFzZVR5
+cGU9InRuczpTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZUYXJnZXRWYXJpYWJsZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJUYXJnZXRWYXJpYWJsZXMiIFR5cGVOYW1lPSJ0bnM6RmllbGRUYXJnZXREYXRh
+VHlwZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZUYXJnZXRWYXJpYWJsZXMiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRmllbGRUYXJnZXREYXRh
+VHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJEYXRhU2V0RmllbGRJZCIgVHlwZU5hbWU9Im9wYzpHdWlkIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmVjZWl2ZXJJbmRleFJhbmdlIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlRhcmdldE5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkF0dHJpYnV0ZUlkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IldyaXRlSW5kZXhSYW5nZSIgVHlwZU5hbWU9Im9wYzpTdHJp
+bmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJPdmVycmlkZVZhbHVlSGFuZGxpbmciIFR5cGVO
+YW1lPSJ0bnM6T3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+T3ZlcnJpZGVWYWx1ZSIgVHlwZU5hbWU9InVhOlZhcmlhbnQiIC8+DQogIDwvb3BjOlN0cnVjdHVy
+ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iT3ZlcnJpZGVWYWx1ZUhhbmRs
+aW5nIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJE
+aXNhYmxlZCIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTGFz
+dFVzYWJsZVZhbHVlIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJPdmVycmlkZVZhbHVlIiBWYWx1ZT0iMiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFU
+eXBlIiBCYXNlVHlwZT0idG5zOlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUGFyZW50Tm9kZU5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZlJvbGVQZXJtaXNzaW9ucyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJvbGVQZXJtaXNzaW9ucyIgVHlwZU5hbWU9InRu
+czpSb2xlUGVybWlzc2lvblR5cGUiIExlbmd0aEZpZWxkPSJOb09mUm9sZVBlcm1pc3Npb25zIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IlB1YlN1YkNvbmZpZ3VyYXRpb25EYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVj
+dCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUHVibGlzaGVkRGF0YVNldHMiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNoZWREYXRhU2V0cyIg
+VHlwZU5hbWU9InRuczpQdWJsaXNoZWREYXRhU2V0RGF0YVR5cGUiIExlbmd0aEZpZWxkPSJOb09m
+UHVibGlzaGVkRGF0YVNldHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mQ29ubmVjdGlv
+bnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDb25uZWN0
+aW9ucyIgVHlwZU5hbWU9InRuczpQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIExlbmd0aEZpZWxk
+PSJOb09mQ29ubmVjdGlvbnMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbmFibGVkIiBUeXBl
+TmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iU3RhbmRhbG9uZVN1YnNjcmliZWREYXRhU2V0UmVmRGF0YVR5
+cGUiIEJhc2VUeXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSI+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJEYXRhU2V0TmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3Bj
+OlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iU3RhbmRhbG9u
+ZVN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFT
+ZXREYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0
+cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEYXRhU2V0Rm9sZGVyIiBUeXBlTmFt
+ZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldEZvbGRlciIgVHlw
+ZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09mRGF0YVNldEZvbGRlciIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFTZXRNZXRhRGF0YSIgVHlwZU5hbWU9InRuczpEYXRhU2V0
+TWV0YURhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic2NyaWJlZERhdGFTZXQi
+IFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iU2VjdXJpdHlHcm91cERhdGFUeXBlIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWUi
+IFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNlY3Vy
+aXR5R3JvdXBGb2xkZXIiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJTZWN1cml0eUdyb3VwRm9sZGVyIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmll
+bGQ9Ik5vT2ZTZWN1cml0eUdyb3VwRm9sZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iS2V5
+TGlmZXRpbWUiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U2VjdXJpdHlQb2xpY3lVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTWF4RnV0dXJlS2V5Q291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTWF4UGFzdEtleUNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5R3JvdXBJZCIgVHlwZU5hbWU9Im9wYzpT
+dHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUm9sZVBlcm1pc3Npb25zIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUm9sZVBlcm1pc3Npb25z
+IiBUeXBlTmFtZT0idG5zOlJvbGVQZXJtaXNzaW9uVHlwZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZSb2xl
+UGVybWlzc2lvbnMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mR3JvdXBQcm9wZXJ0aWVz
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iR3JvdXBQcm9w
+ZXJ0aWVzIiBUeXBlTmFtZT0idG5zOktleVZhbHVlUGFpciIgTGVuZ3RoRmllbGQ9Ik5vT2ZHcm91
+cFByb3BlcnRpZXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0
+dXJlZFR5cGUgTmFtZT0iUHViU3ViS2V5UHVzaFRhcmdldERhdGFUeXBlIiBCYXNlVHlwZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFwcGxpY2F0aW9uVXJpIiBU
+eXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZQdXNoVGFy
+Z2V0Rm9sZGVyIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UHVzaFRhcmdldEZvbGRlciIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09m
+UHVzaFRhcmdldEZvbGRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkVuZHBvaW50VXJsIiBU
+eXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5UG9s
+aWN5VXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVz
+ZXJUb2tlblR5cGUiIFR5cGVOYW1lPSJ0bnM6VXNlclRva2VuUG9saWN5IiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVxdWVzdGVkS2V5Q291bnQiIFR5cGVOYW1lPSJvcGM6VUludDE2IiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iUmV0cnlJbnRlcnZhbCIgVHlwZU5hbWU9Im9wYzpEb3VibGUi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUHVzaFRhcmdldFByb3BlcnRpZXMiIFR5cGVO
+YW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdXNoVGFyZ2V0UHJvcGVy
+dGllcyIgVHlwZU5hbWU9InRuczpLZXlWYWx1ZVBhaXIiIExlbmd0aEZpZWxkPSJOb09mUHVzaFRh
+cmdldFByb3BlcnRpZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mU2VjdXJpdHlHcm91
+cHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0
+eUdyb3VwcyIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09mU2VjdXJpdHlH
+cm91cHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iUHViU3ViQ29uZmlndXJhdGlvbjJEYXRhVHlwZSIgQmFzZVR5cGU9InRuczpQdWJT
+dWJDb25maWd1cmF0aW9uRGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlB1Ymxp
+c2hlZERhdGFTZXRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUHVibGlzaGVkRGF0YVNldHMiIFR5cGVOYW1lPSJ0bnM6UHVibGlzaGVkRGF0YVNldERhdGFU
+eXBlIiBMZW5ndGhGaWVsZD0iTm9PZlB1Ymxpc2hlZERhdGFTZXRzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTm9PZkNvbm5lY3Rpb25zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iQ29ubmVjdGlvbnMiIFR5cGVOYW1lPSJ0bnM6UHViU3ViQ29ubmVjdGlv
+bkRhdGFUeXBlIiBMZW5ndGhGaWVsZD0iTm9PZkNvbm5lY3Rpb25zIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRW5hYmxlZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiBTb3VyY2VUeXBlPSJ0bnM6
+UHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+ZlN1YnNjcmliZWREYXRhU2V0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlN1YnNjcmliZWREYXRhU2V0cyIgVHlwZU5hbWU9InRuczpTdGFuZGFsb25lU3Vi
+c2NyaWJlZERhdGFTZXREYXRhVHlwZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZTdWJzY3JpYmVkRGF0YVNl
+dHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGF0YVNldENsYXNzZXMiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhU2V0Q2xhc3NlcyIgVHlw
+ZU5hbWU9InRuczpEYXRhU2V0TWV0YURhdGFUeXBlIiBMZW5ndGhGaWVsZD0iTm9PZkRhdGFTZXRD
+bGFzc2VzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRlZmF1bHRTZWN1cml0eUtleVNl
+cnZpY2VzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVm
+YXVsdFNlY3VyaXR5S2V5U2VydmljZXMiIFR5cGVOYW1lPSJ0bnM6RW5kcG9pbnREZXNjcmlwdGlv
+biIgTGVuZ3RoRmllbGQ9Ik5vT2ZEZWZhdWx0U2VjdXJpdHlLZXlTZXJ2aWNlcyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZWN1cml0eUdyb3VwcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5R3JvdXBzIiBUeXBlTmFtZT0idG5zOlNl
+Y3VyaXR5R3JvdXBEYXRhVHlwZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZWN1cml0eUdyb3VwcyIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZQdWJTdWJLZXlQdXNoVGFyZ2V0cyIgVHlwZU5hbWU9
+Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlB1YlN1YktleVB1c2hUYXJnZXRz
+IiBUeXBlTmFtZT0idG5zOlB1YlN1YktleVB1c2hUYXJnZXREYXRhVHlwZSIgTGVuZ3RoRmllbGQ9
+Ik5vT2ZQdWJTdWJLZXlQdXNoVGFyZ2V0cyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNvbmZp
+Z3VyYXRpb25WZXJzaW9uIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZDb25maWd1cmF0aW9uUHJvcGVydGllcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNvbmZpZ3VyYXRpb25Qcm9wZXJ0aWVzIiBUeXBlTmFt
+ZT0idG5zOktleVZhbHVlUGFpciIgTGVuZ3RoRmllbGQ9Ik5vT2ZDb25maWd1cmF0aW9uUHJvcGVy
+dGllcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlw
+ZSBOYW1lPSJEYXRhU2V0T3JkZXJpbmdUeXBlIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVbmRlZmluZWQiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFzY2VuZGluZ1dyaXRlcklkIiBWYWx1ZT0iMSIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBc2NlbmRpbmdXcml0ZXJJZFNpbmdsZSIgVmFs
+dWU9IjIiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5
+cGUgTmFtZT0iVWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIExlbmd0aEluQml0cz0iMzIi
+IElzT3B0aW9uU2V0PSJ0cnVlIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJOb25l
+IiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJQdWJsaXNoZXJJ
+ZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iR3JvdXBIZWFk
+ZXIiIFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IldyaXRlckdy
+b3VwSWQiIFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ikdyb3Vw
+VmVyc2lvbiIgVmFsdWU9IjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTmV0
+d29ya01lc3NhZ2VOdW1iZXIiIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJTZXF1ZW5jZU51bWJlciIgVmFsdWU9IjMyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9IlBheWxvYWRIZWFkZXIiIFZhbHVlPSI2NCIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJUaW1lc3RhbXAiIFZhbHVlPSIxMjgiIC8+DQogICAgPG9wYzpFbnVt
+ZXJhdGVkVmFsdWUgTmFtZT0iUGljb1NlY29uZHMiIFZhbHVlPSIyNTYiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iRGF0YVNldENsYXNzSWQiIFZhbHVlPSI1MTIiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iUHJvbW90ZWRGaWVsZHMiIFZhbHVlPSIxMDI0IiAv
+Pg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgQmFzZVR5cGU9InRuczpXcml0ZXJHcm91
+cE1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJHcm91cFZlcnNpb24iIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldE9yZGVy
+aW5nIiBUeXBlTmFtZT0idG5zOkRhdGFTZXRPcmRlcmluZ1R5cGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBUeXBlTmFtZT0idG5zOlVhZHBOZXR3
+b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2FtcGxpbmdP
+ZmZzZXQiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+ZlB1Ymxpc2hpbmdPZmZzZXQiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJQdWJsaXNoaW5nT2Zmc2V0IiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgTGVuZ3RoRmll
+bGQ9Ik5vT2ZQdWJsaXNoaW5nT2Zmc2V0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNr
+IiBMZW5ndGhJbkJpdHM9IjMyIiBJc09wdGlvblNldD0idHJ1ZSI+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iTm9uZSIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iVGltZXN0YW1wIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJQaWNvU2Vjb25kcyIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iU3RhdHVzIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJNYWpvclZlcnNpb24iIFZhbHVlPSI4IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9Ik1pbm9yVmVyc2lvbiIgVmFsdWU9IjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IlNlcXVlbmNlTnVtYmVyIiBWYWx1ZT0iMzIiIC8+DQogIDwvb3BjOkVudW1lcmF0
+ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVWFkcERhdGFTZXRXcml0ZXJN
+ZXNzYWdlRGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlw
+ZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBUeXBl
+TmFtZT0idG5zOlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iQ29uZmlndXJlZFNpemUiIFR5cGVOYW1lPSJvcGM6VUludDE2IiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTmV0d29ya01lc3NhZ2VOdW1iZXIiIFR5cGVOYW1lPSJvcGM6VUludDE2
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVNldE9mZnNldCIgVHlwZU5hbWU9Im9wYzpV
+SW50MTYiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iVWFkcERhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6
+RGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJHcm91
+cFZlcnNpb24iIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+TmV0d29ya01lc3NhZ2VOdW1iZXIiIFR5cGVOYW1lPSJvcGM6VUludDE2IiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRGF0YVNldE9mZnNldCIgVHlwZU5hbWU9Im9wYzpVSW50MTYiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJEYXRhU2V0Q2xhc3NJZCIgVHlwZU5hbWU9Im9wYzpHdWlkIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgVHlwZU5hbWU9
+InRuczpVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIFR5cGVOYW1lPSJ0bnM6VWFkcERhdGFTZXRN
+ZXNzYWdlQ29udGVudE1hc2siIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNoaW5nSW50
+ZXJ2YWwiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVj
+ZWl2ZU9mZnNldCIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJQcm9jZXNzaW5nT2Zmc2V0IiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJKc29uTmV0d29ya01l
+c3NhZ2VDb250ZW50TWFzayIgTGVuZ3RoSW5CaXRzPSIzMiIgSXNPcHRpb25TZXQ9InRydWUiPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5ldHdvcmtNZXNzYWdlSGVhZGVyIiBWYWx1ZT0iMSIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEYXRhU2V0TWVzc2FnZUhlYWRlciIg
+VmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2luZ2xlRGF0YVNl
+dE1lc3NhZ2UiIFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlB1
+Ymxpc2hlcklkIiBWYWx1ZT0iOCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJE
+YXRhU2V0Q2xhc3NJZCIgVmFsdWU9IjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IlJlcGx5VG8iIFZhbHVlPSIzMiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUi
+IEJhc2VUeXBlPSJ0bnM6V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgVHlwZU5hbWU9InRuczpKc29uTmV0
+d29ya01lc3NhZ2VDb250ZW50TWFzayIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJKc29uRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIg
+TGVuZ3RoSW5CaXRzPSIzMiIgSXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9IkRhdGFTZXRXcml0ZXJJZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iTWV0YURhdGFWZXJzaW9uIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJTZXF1ZW5jZU51bWJlciIgVmFsdWU9IjQiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iVGltZXN0YW1wIiBWYWx1ZT0iOCIgLz4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJTdGF0dXMiIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJNZXNzYWdlVHlwZSIgVmFsdWU9IjMyIiAvPg0KICAgIDxvcGM6RW51
+bWVyYXRlZFZhbHVlIE5hbWU9IkRhdGFTZXRXcml0ZXJOYW1lIiBWYWx1ZT0iNjQiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iUmV2ZXJzaWJsZUZpZWxkRW5jb2RpbmciIFZhbHVl
+PSIxMjgiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iSnNvbkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6
+RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRh
+U2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBUeXBlTmFtZT0idG5zOkpzb25EYXRhU2V0TWVzc2FnZUNv
+bnRlbnRNYXNrIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVy
+ZWRUeXBlIE5hbWU9Ikpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiBCYXNlVHlwZT0i
+dG5zOkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+TmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgVHlwZU5hbWU9InRuczpKc29uTmV0d29ya01lc3Nh
+Z2VDb250ZW50TWFzayIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFTZXRNZXNzYWdlQ29u
+dGVudE1hc2siIFR5cGVOYW1lPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+UW9zRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlRyYW5zbWl0UW9zRGF0
+YVR5cGUiIEJhc2VUeXBlPSJ0bnM6UW9zRGF0YVR5cGUiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlw
+ZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlRyYW5zbWl0UW9zUHJpb3JpdHlEYXRh
+VHlwZSIgQmFzZVR5cGU9InRuczpUcmFuc21pdFFvc0RhdGFUeXBlIj4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlByaW9yaXR5TGFiZWwiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlY2VpdmVRb3NE
+YXRhVHlwZSIgQmFzZVR5cGU9InRuczpRb3NEYXRhVHlwZSI+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVjZWl2ZVFvc1ByaW9yaXR5RGF0
+YVR5cGUiIEJhc2VUeXBlPSJ0bnM6UmVjZWl2ZVFvc0RhdGFUeXBlIj4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlByaW9yaXR5TGFiZWwiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRhdGFncmFtQ29u
+bmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOkNvbm5lY3Rpb25UcmFuc3Bv
+cnREYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNjb3ZlcnlBZGRyZXNzIiBUeXBl
+TmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRhdGFncmFtQ29ubmVjdGlvblRyYW5zcG9ydDJE
+YXRhVHlwZSIgQmFzZVR5cGU9InRuczpEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlw
+ZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNjb3ZlcnlBZGRyZXNzIiBUeXBlTmFtZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0IiBTb3VyY2VUeXBlPSJ0bnM6RGF0YWdyYW1Db25uZWN0aW9uVHJhbnNw
+b3J0RGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNjb3ZlcnlBbm5vdW5jZVJh
+dGUiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzY292
+ZXJ5TWF4TWVzc2FnZVNpemUiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iUW9zQ2F0ZWdvcnkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iTm9PZkRhdGFncmFtUW9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iRGF0YWdyYW1Rb3MiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmpl
+Y3QiIExlbmd0aEZpZWxkPSJOb09mRGF0YWdyYW1Rb3MiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGF0YWdyYW1Xcml0ZXJHcm91cFRy
+YW5zcG9ydERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5
+cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWVzc2FnZVJlcGVhdENvdW50IiBUeXBlTmFtZT0i
+b3BjOkJ5dGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNZXNzYWdlUmVwZWF0RGVsYXkiIFR5
+cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3Bj
+OlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnQyRGF0YVR5
+cGUiIEJhc2VUeXBlPSJ0bnM6RGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1lc3NhZ2VSZXBlYXRDb3VudCIgVHlwZU5hbWU9Im9wYzpC
+eXRlIiBTb3VyY2VUeXBlPSJ0bnM6RGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBl
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWVzc2FnZVJlcGVhdERlbGF5IiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgU291cmNlVHlwZT0idG5zOkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnRE
+YXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFkZHJlc3MiIFR5cGVOYW1lPSJ1YTpF
+eHRlbnNpb25PYmplY3QiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJRb3NDYXRlZ29yeSIgVHlw
+ZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGF0YWdyYW1R
+b3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhZ3Jh
+bVFvcyIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZEYXRh
+Z3JhbVFvcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc2NvdmVyeUFubm91bmNlUmF0ZSIg
+VHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUb3BpYyIgVHlw
+ZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iRGF0YWdyYW1EYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5
+cGUiIEJhc2VUeXBlPSJ0bnM6RGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkFkZHJlc3MiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJRb3NDYXRlZ29yeSIgVHlwZU5hbWU9Im9wYzpTdHJpbmci
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGF0YWdyYW1Rb3MiIFR5cGVOYW1lPSJvcGM6
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhZ3JhbVFvcyIgVHlwZU5hbWU9InVh
+OkV4dGVuc2lvbk9iamVjdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZEYXRhZ3JhbVFvcyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlRvcGljIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgPC9vcGM6
+U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJCcm9rZXJDb25u
+ZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIEJhc2VUeXBlPSJ0bnM6Q29ubmVjdGlvblRyYW5zcG9y
+dERhdGFUeXBlIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc291cmNlVXJpIiBUeXBlTmFtZT0i
+b3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkF1dGhlbnRpY2F0aW9uUHJvZmls
+ZVVyaSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0K
+DQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iQnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2Vy
+dmljZSIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+Tm90U3BlY2lmaWVkIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJCZXN0RWZmb3J0IiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJBdExlYXN0T25jZSIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iQXRNb3N0T25jZSIgVmFsdWU9IjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iRXhhY3RseU9uY2UiIFZhbHVlPSI0IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkJyb2tlcldyaXRlckdyb3VwVHJhbnNwb3J0RGF0
+YVR5cGUiIEJhc2VUeXBlPSJ0bnM6V3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJRdWV1ZU5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUmVzb3VyY2VVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQXV0aGVudGljYXRpb25Qcm9maWxlVXJpIiBUeXBlTmFtZT0i
+b3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RlZERlbGl2ZXJ5R3Vh
+cmFudGVlIiBUeXBlTmFtZT0idG5zOkJyb2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+QnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiBCYXNlVHlwZT0idG5zOkRhdGFT
+ZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJRdWV1ZU5h
+bWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzb3Vy
+Y2VVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQXV0
+aGVudGljYXRpb25Qcm9maWxlVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlcXVlc3RlZERlbGl2ZXJ5R3VhcmFudGVlIiBUeXBlTmFtZT0idG5zOkJy
+b2tlclRyYW5zcG9ydFF1YWxpdHlPZlNlcnZpY2UiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJN
+ZXRhRGF0YVF1ZXVlTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJNZXRhRGF0YVVwZGF0ZVRpbWUiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkJyb2tl
+ckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgQmFzZVR5cGU9InRuczpEYXRhU2V0UmVh
+ZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUXVldWVOYW1lIiBU
+eXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc291cmNlVXJp
+IiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkF1dGhlbnRp
+Y2F0aW9uUHJvZmlsZVVyaSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJSZXF1ZXN0ZWREZWxpdmVyeUd1YXJhbnRlZSIgVHlwZU5hbWU9InRuczpCcm9rZXJU
+cmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWV0YURh
+dGFRdWV1ZU5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVk
+VHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlB1YlN1YkNvbmZpZ3VyYXRpb25S
+ZWZNYXNrIiBMZW5ndGhJbkJpdHM9IjMyIiBJc09wdGlvblNldD0idHJ1ZSI+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9uZSIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iRWxlbWVudEFkZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iRWxlbWVudE1hdGNoIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJFbGVtZW50TW9kaWZ5IiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJFbGVtZW50UmVtb3ZlIiBWYWx1ZT0iOCIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VXcml0ZXIiIFZhbHVlPSIxNiIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VSZWFkZXIiIFZhbHVlPSIzMiIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VXcml0ZXJHcm91cCIg
+VmFsdWU9IjY0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlZmVyZW5jZVJl
+YWRlckdyb3VwIiBWYWx1ZT0iMTI4IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9
+IlJlZmVyZW5jZUNvbm5lY3Rpb24iIFZhbHVlPSIyNTYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iUmVmZXJlbmNlUHViRGF0YXNldCIgVmFsdWU9IjUxMiIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VTdWJEYXRhc2V0IiBWYWx1ZT0iMTAyNCIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VTZWN1cml0eUdyb3Vw
+IiBWYWx1ZT0iMjA0OCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVu
+Y2VQdXNoVGFyZ2V0IiBWYWx1ZT0iNDA5NiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJQdWJTdWJDb25maWd1cmF0aW9uUmVmRGF0YVR5
+cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Q29uZmlndXJhdGlvbk1hc2siIFR5cGVOYW1lPSJ0bnM6UHViU3ViQ29uZmlndXJhdGlvblJlZk1h
+c2siIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbGVtZW50SW5kZXgiIFR5cGVOYW1lPSJvcGM6
+VUludDE2IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ29ubmVjdGlvbkluZGV4IiBUeXBlTmFt
+ZT0ib3BjOlVJbnQxNiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikdyb3VwSW5kZXgiIFR5cGVO
+YW1lPSJvcGM6VUludDE2IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0
+cnVjdHVyZWRUeXBlIE5hbWU9IlB1YlN1YkNvbmZpZ3VyYXRpb25WYWx1ZURhdGFUeXBlIiBCYXNl
+VHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNvbmZpZ3Vy
+YXRpb25FbGVtZW50IiBUeXBlTmFtZT0idG5zOlB1YlN1YkNvbmZpZ3VyYXRpb25SZWZEYXRhVHlw
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSWRlbnRpZmllciIgVHlwZU5hbWU9InVhOlZhcmlhbnQi
+IC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFt
+ZT0iRGlhZ25vc3RpY3NMZXZlbCIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iQmFzaWMiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IkFkdmFuY2VkIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJJbmZvIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJMb2ciIFZhbHVlPSIzIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkRlYnVn
+IiBWYWx1ZT0iNCIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJh
+dGVkVHlwZSBOYW1lPSJQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiIgTGVu
+Z3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSW5mb3JtYXRp
+b24iIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkVycm9yIiBW
+YWx1ZT0iMSIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJBbGlhc05hbWVEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVj
+dCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBbGlhc05hbWUiIFR5cGVOYW1lPSJ1YTpRdWFsaWZp
+ZWROYW1lIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlZmVyZW5jZWROb2RlcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlZmVyZW5jZWROb2Rl
+cyIgVHlwZU5hbWU9InVhOkV4cGFuZGVkTm9kZUlkIiBMZW5ndGhGaWVsZD0iTm9PZlJlZmVyZW5j
+ZWROb2RlcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVk
+VHlwZSBOYW1lPSJQYXNzd29yZE9wdGlvbnNNYXNrIiBMZW5ndGhJbkJpdHM9IjMyIiBJc09wdGlv
+blNldD0idHJ1ZSI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9uZSIgVmFsdWU9
+IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3VwcG9ydEluaXRpYWxQYXNz
+d29yZENoYW5nZSIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+U3VwcG9ydERpc2FibGVVc2VyIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJTdXBwb3J0RGlzYWJsZURlbGV0ZUZvclVzZXIiIFZhbHVlPSI0IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN1cHBvcnROb0NoYW5nZUZvclVzZXIiIFZhbHVlPSI4
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN1cHBvcnREZXNjcmlwdGlvbkZv
+clVzZXIiIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZXF1
+aXJlc1VwcGVyQ2FzZUNoYXJhY3RlcnMiIFZhbHVlPSIzMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJSZXF1aXJlc0xvd2VyQ2FzZUNoYXJhY3RlcnMiIFZhbHVlPSI2NCIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZXF1aXJlc0RpZ2l0Q2hhcmFjdGVycyIg
+VmFsdWU9IjEyOCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZXF1aXJlc1Nw
+ZWNpYWxDaGFyYWN0ZXJzIiBWYWx1ZT0iMjU2IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4N
+Cg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlVzZXJDb25maWd1cmF0aW9uTWFzayIgTGVu
+Z3RoSW5CaXRzPSIzMiIgSXNPcHRpb25TZXQ9InRydWUiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9Ik5vRGVsZXRlIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJEaXNhYmxlZCIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+Tm9DaGFuZ2VCeVVzZXIiIFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9Ik11c3RDaGFuZ2VQYXNzd29yZCIgVmFsdWU9IjgiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVXNlck1hbmFnZW1lbnREYXRhVHlw
+ZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJV
+c2VyTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJV
+c2VyQ29uZmlndXJhdGlvbiIgVHlwZU5hbWU9InRuczpVc2VyQ29uZmlndXJhdGlvbk1hc2siIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIgVHlwZU5hbWU9Im9wYzpTdHJpbmci
+IC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJF
+bmNvZGVkVGlja2V0Ij4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRU
+eXBlIE5hbWU9IkR1cGxleCIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iRnVsbCIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iSGFsZiIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+VW5rbm93biIgVmFsdWU9IjIiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6
+RW51bWVyYXRlZFR5cGUgTmFtZT0iSW50ZXJmYWNlQWRtaW5TdGF0dXMiIExlbmd0aEluQml0cz0i
+MzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlVwIiBWYWx1ZT0iMCIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEb3duIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUZXN0aW5nIiBWYWx1ZT0iMiIgLz4NCiAgPC9vcGM6RW51
+bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJJbnRlcmZhY2VPcGVy
+U3RhdHVzIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJVcCIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRG93biIg
+VmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVGVzdGluZyIgVmFs
+dWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVW5rbm93biIgVmFsdWU9
+IjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRG9ybWFudCIgVmFsdWU9IjQi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm90UHJlc2VudCIgVmFsdWU9IjUi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTG93ZXJMYXllckRvd24iIFZhbHVl
+PSI2IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBl
+IE5hbWU9Ik5lZ290aWF0aW9uU3RhdHVzIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJJblByb2dyZXNzIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJDb21wbGV0ZSIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVt
+ZXJhdGVkVmFsdWUgTmFtZT0iRmFpbGVkIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJVbmtub3duIiBWYWx1ZT0iMyIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJOb05lZ290aWF0aW9uIiBWYWx1ZT0iNCIgLz4NCiAgPC9vcGM6RW51bWVyYXRl
+ZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJUc25GYWlsdXJlQ29kZSIgTGVu
+Z3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9GYWlsdXJl
+IiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJJbnN1ZmZpY2ll
+bnRCYW5kd2lkdGgiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9
+Ikluc3VmZmljaWVudFJlc291cmNlcyIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iSW5zdWZmaWNpZW50VHJhZmZpY0NsYXNzQmFuZHdpZHRoIiBWYWx1ZT0iMyIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTdHJlYW1JZEluVXNlIiBWYWx1ZT0i
+NCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTdHJlYW1EZXN0aW5hdGlvbkFk
+ZHJlc3NJblVzZSIgVmFsdWU9IjUiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+U3RyZWFtUHJlZW1wdGVkQnlIaWdoZXJSYW5rIiBWYWx1ZT0iNiIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJMYXRlbmN5SGFzQ2hhbmdlZCIgVmFsdWU9IjciIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRWdyZXNzUG9ydE5vdEF2YkNhcGFibGUiIFZhbHVlPSI4
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlVzZURpZmZlcmVudERlc3RpbmF0
+aW9uQWRkcmVzcyIgVmFsdWU9IjkiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+T3V0T2ZNc3JwUmVzb3VyY2VzIiBWYWx1ZT0iMTAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iT3V0T2ZNbXJwUmVzb3VyY2VzIiBWYWx1ZT0iMTEiIC8+DQogICAgPG9wYzpFbnVt
+ZXJhdGVkVmFsdWUgTmFtZT0iQ2Fubm90U3RvcmVEZXN0aW5hdGlvbkFkZHJlc3MiIFZhbHVlPSIx
+MiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJQcmlvcml0eUlzTm90QW5TcmND
+bGFzcyIgVmFsdWU9IjEzIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik1heEZy
+YW1lU2l6ZVRvb0xhcmdlIiBWYWx1ZT0iMTQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iTWF4RmFuSW5Qb3J0c0xpbWl0UmVhY2hlZCIgVmFsdWU9IjE1IiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZpcnN0VmFsdWVDaGFuZ2VkRm9yU3RyZWFtSWQiIFZhbHVl
+PSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJWbGFuQmxvY2tlZE9uRWdy
+ZXNzIiBWYWx1ZT0iMTciIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVmxhblRh
+Z2dpbmdEaXNhYmxlZE9uRWdyZXNzIiBWYWx1ZT0iMTgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iU3JDbGFzc1ByaW9yaXR5TWlzbWF0Y2giIFZhbHVlPSIxOSIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJGZWF0dXJlTm90UHJvcGFnYXRlZCIgVmFsdWU9IjIw
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik1heExhdGVuY3lFeGNlZWRlZCIg
+VmFsdWU9IjIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkJyaWRnZURvZXNO
+b3RQcm92aWRlTmV0d29ya0lkIiBWYWx1ZT0iMjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iU3RyZWFtVHJhbnNmb3JtTm90U3VwcG9ydGVkIiBWYWx1ZT0iMjMiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3RyZWFtSWRUeXBlTm90U3VwcG9ydGVkIiBWYWx1
+ZT0iMjQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRmVhdHVyZU5vdFN1cHBv
+cnRlZCIgVmFsdWU9IjI1IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVu
+dW1lcmF0ZWRUeXBlIE5hbWU9IlRzblN0cmVhbVN0YXRlIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEaXNhYmxlZCIgVmFsdWU9IjAiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQ29uZmlndXJpbmciIFZhbHVlPSIxIiAvPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlYWR5IiBWYWx1ZT0iMiIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPcGVyYXRpb25hbCIgVmFsdWU9IjMiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRXJyb3IiIFZhbHVlPSI0IiAvPg0KICA8L29wYzpFbnVt
+ZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlRzblRhbGtlclN0YXR1
+cyIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9u
+ZSIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iUmVhZHkiIFZh
+bHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZhaWxlZCIgVmFsdWU9
+IjIiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUg
+TmFtZT0iVHNuTGlzdGVuZXJTdGF0dXMiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51
+bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9IlJlYWR5IiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJQYXJ0aWFsRmFpbGVkIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJGYWlsZWQiIFZhbHVlPSIzIiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlByaW9yaXR5TWFwcGluZ0VudHJ5VHlwZSIg
+QmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXBw
+aW5nVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlBy
+aW9yaXR5TGFiZWwiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUHJpb3JpdHlWYWx1ZV9QQ1AiIFR5cGVOYW1lPSJvcGM6Qnl0ZSIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlByaW9yaXR5VmFsdWVfRFNDUCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVm
+ZXJlbmNlRGVzY3JpcHRpb25EYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTb3VyY2VOb2RlIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVmZXJlbmNlVHlwZSIgVHlwZU5hbWU9InVhOk5vZGVJ
+ZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IklzRm9yd2FyZCIgVHlwZU5hbWU9Im9wYzpCb29s
+ZWFuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVGFyZ2V0Tm9kZSIgVHlwZU5hbWU9InVhOkV4
+cGFuZGVkTm9kZUlkIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IlJlZmVyZW5jZUxpc3RFbnRyeURhdGFUeXBlIiBCYXNlVHlwZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlZmVyZW5jZVR5cGUiIFR5
+cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJc0ZvcndhcmQiIFR5
+cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRhcmdldE5vZGUi
+IFR5cGVOYW1lPSJ1YTpFeHBhbmRlZE5vZGVJZCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+
+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJJZFR5cGUiIExlbmd0aEluQml0cz0iMzIi
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik51bWVyaWMiIFZhbHVlPSIwIiAvPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN0cmluZyIgVmFsdWU9IjEiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iR3VpZCIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iT3BhcXVlIiBWYWx1ZT0iMyIgLz4NCiAgPC9vcGM6RW51bWVy
+YXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJOb2RlQ2xhc3MiIExlbmd0
+aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlVuc3BlY2lmaWVk
+IiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPYmplY3QiIFZh
+bHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlZhcmlhYmxlIiBWYWx1
+ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJNZXRob2QiIFZhbHVlPSI0
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik9iamVjdFR5cGUiIFZhbHVlPSI4
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlZhcmlhYmxlVHlwZSIgVmFsdWU9
+IjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlZmVyZW5jZVR5cGUiIFZh
+bHVlPSIzMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEYXRhVHlwZSIgVmFs
+dWU9IjY0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlZpZXciIFZhbHVlPSIx
+MjgiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUg
+TmFtZT0iUGVybWlzc2lvblR5cGUiIExlbmd0aEluQml0cz0iMzIiIElzT3B0aW9uU2V0PSJ0cnVl
+Ij4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJOb25lIiBWYWx1ZT0iMCIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJCcm93c2UiIFZhbHVlPSIxIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlYWRSb2xlUGVybWlzc2lvbnMiIFZhbHVlPSIyIiAv
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IldyaXRlQXR0cmlidXRlIiBWYWx1ZT0i
+NCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJXcml0ZVJvbGVQZXJtaXNzaW9u
+cyIgVmFsdWU9IjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iV3JpdGVIaXN0
+b3JpemluZyIgVmFsdWU9IjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJl
+YWQiIFZhbHVlPSIzMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJXcml0ZSIg
+VmFsdWU9IjY0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlYWRIaXN0b3J5
+IiBWYWx1ZT0iMTI4IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ikluc2VydEhp
+c3RvcnkiIFZhbHVlPSIyNTYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTW9k
+aWZ5SGlzdG9yeSIgVmFsdWU9IjUxMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJEZWxldGVIaXN0b3J5IiBWYWx1ZT0iMTAyNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJSZWNlaXZlRXZlbnRzIiBWYWx1ZT0iMjA0OCIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJDYWxsIiBWYWx1ZT0iNDA5NiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJBZGRSZWZlcmVuY2UiIFZhbHVlPSI4MTkyIiAvPg0KICAgIDxvcGM6RW51bWVy
+YXRlZFZhbHVlIE5hbWU9IlJlbW92ZVJlZmVyZW5jZSIgVmFsdWU9IjE2Mzg0IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkRlbGV0ZU5vZGUiIFZhbHVlPSIzMjc2OCIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBZGROb2RlIiBWYWx1ZT0iNjU1MzYiIC8+DQog
+IDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iQWNj
+ZXNzTGV2ZWxUeXBlIiBMZW5ndGhJbkJpdHM9IjgiIElzT3B0aW9uU2V0PSJ0cnVlIj4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJOb25lIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVu
+dW1lcmF0ZWRWYWx1ZSBOYW1lPSJDdXJyZW50UmVhZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iQ3VycmVudFdyaXRlIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJIaXN0b3J5UmVhZCIgVmFsdWU9IjQiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSGlzdG9yeVdyaXRlIiBWYWx1ZT0iOCIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTZW1hbnRpY0NoYW5nZSIgVmFsdWU9IjE2IiAvPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN0YXR1c1dyaXRlIiBWYWx1ZT0iMzIiIC8+
+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVGltZXN0YW1wV3JpdGUiIFZhbHVlPSI2
+NCIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBO
+YW1lPSJBY2Nlc3NMZXZlbEV4VHlwZSIgTGVuZ3RoSW5CaXRzPSIzMiIgSXNPcHRpb25TZXQ9InRy
+dWUiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkN1cnJlbnRSZWFkIiBWYWx1ZT0iMSIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJDdXJyZW50V3JpdGUiIFZhbHVlPSIyIiAv
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ikhpc3RvcnlSZWFkIiBWYWx1ZT0iNCIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJIaXN0b3J5V3JpdGUiIFZhbHVlPSI4
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNlbWFudGljQ2hhbmdlIiBWYWx1
+ZT0iMTYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3RhdHVzV3JpdGUiIFZh
+bHVlPSIzMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUaW1lc3RhbXBXcml0
+ZSIgVmFsdWU9IjY0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmF0b21p
+Y1JlYWQiIFZhbHVlPSIyNTYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9u
+YXRvbWljV3JpdGUiIFZhbHVlPSI1MTIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iV3JpdGVGdWxsQXJyYXlPbmx5IiBWYWx1ZT0iMTAyNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJOb1N1YkRhdGFUeXBlcyIgVmFsdWU9IjIwNDgiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9uVm9sYXRpbGUiIFZhbHVlPSI0MDk2IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkNvbnN0YW50IiBWYWx1ZT0iODE5MiIgLz4NCiAgPC9v
+cGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJFdmVudE5v
+dGlmaWVyVHlwZSIgTGVuZ3RoSW5CaXRzPSI4IiBJc09wdGlvblNldD0idHJ1ZSI+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9uZSIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVt
+ZXJhdGVkVmFsdWUgTmFtZT0iU3Vic2NyaWJlVG9FdmVudHMiIFZhbHVlPSIxIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ikhpc3RvcnlSZWFkIiBWYWx1ZT0iNCIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJIaXN0b3J5V3JpdGUiIFZhbHVlPSI4IiAvPg0KICA8
+L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IkFjY2Vz
+c1Jlc3RyaWN0aW9uVHlwZSIgTGVuZ3RoSW5CaXRzPSIxNiIgSXNPcHRpb25TZXQ9InRydWUiPg0K
+ICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVlPSIwIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNpZ25pbmdSZXF1aXJlZCIgVmFsdWU9IjEiIC8+DQog
+ICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRW5jcnlwdGlvblJlcXVpcmVkIiBWYWx1ZT0i
+MiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTZXNzaW9uUmVxdWlyZWQiIFZh
+bHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFwcGx5UmVzdHJpY3Rp
+b25zVG9Ccm93c2UiIFZhbHVlPSI4IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJvbGVQZXJtaXNzaW9uVHlwZSIgQmFzZVR5cGU9InVh
+OkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSb2xlSWQiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQZXJtaXNzaW9ucyIgVHlwZU5h
+bWU9InRuczpQZXJtaXNzaW9uVHlwZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJEYXRhVHlwZURlZmluaXRpb24iIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVu
+dW1lcmF0ZWRUeXBlIE5hbWU9IlN0cnVjdHVyZVR5cGUiIExlbmd0aEluQml0cz0iMzIiPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlN0cnVjdHVyZSIgVmFsdWU9IjAiIC8+DQogICAg
+PG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3RydWN0dXJlV2l0aE9wdGlvbmFsRmllbGRzIiBW
+YWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVbmlvbiIgVmFsdWU9
+IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU3RydWN0dXJlV2l0aFN1YnR5
+cGVkVmFsdWVzIiBWYWx1ZT0iMyIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJV
+bmlvbldpdGhTdWJ0eXBlZFZhbHVlcyIgVmFsdWU9IjQiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iU3RydWN0dXJlRmllbGQiIEJhc2VU
+eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZSIgVHlw
+ZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIg
+VHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRh
+VHlwZSIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlZhbHVl
+UmFuayIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZB
+cnJheURpbWVuc2lvbnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJBcnJheURpbWVuc2lvbnMiIFR5cGVOYW1lPSJvcGM6VUludDMyIiBMZW5ndGhGaWVsZD0i
+Tm9PZkFycmF5RGltZW5zaW9ucyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1heFN0cmluZ0xl
+bmd0aCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJc09w
+dGlvbmFsIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iU3RydWN0dXJlRGVmaW5pdGlvbiIgQmFz
+ZVR5cGU9InRuczpEYXRhVHlwZURlZmluaXRpb24iPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVm
+YXVsdEVuY29kaW5nSWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJCYXNlRGF0YVR5cGUiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJTdHJ1Y3R1cmVUeXBlIiBUeXBlTmFtZT0idG5zOlN0cnVjdHVyZVR5cGUiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRmllbGRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iRmllbGRzIiBUeXBlTmFtZT0idG5zOlN0cnVjdHVyZUZpZWxk
+IiBMZW5ndGhGaWVsZD0iTm9PZkZpZWxkcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJFbnVtRGVmaW5pdGlvbiIgQmFzZVR5cGU9InRu
+czpEYXRhVHlwZURlZmluaXRpb24iPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkZpZWxkcyIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkZpZWxkcyIgVHlw
+ZU5hbWU9InRuczpFbnVtRmllbGQiIExlbmd0aEZpZWxkPSJOb09mRmllbGRzIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkFyZ3VtZW50
+IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5h
+bWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVR5
+cGUiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1ZVJh
+bmsiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mQXJy
+YXlEaW1lbnNpb25zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iQXJyYXlEaW1lbnNpb25zIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgTGVuZ3RoRmllbGQ9Ik5v
+T2ZBcnJheURpbWVuc2lvbnMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIg
+VHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0K
+DQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRW51bVZhbHVlVHlwZSIgQmFzZVR5cGU9InVh
+OkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1ZSIgVHlwZU5hbWU9
+Im9wYzpJbnQ2NCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlTmFt
+ZT0idWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlc2NyaXB0aW9u
+IiBUeXBlTmFtZT0idWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+
+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJFbnVtRmllbGQiIEJhc2VUeXBlPSJ0bnM6
+RW51bVZhbHVlVHlwZSI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1ZSIgVHlwZU5hbWU9Im9w
+YzpJbnQ2NCIgU291cmNlVHlwZT0idG5zOkVudW1WYWx1ZVR5cGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5
+cGU9InRuczpFbnVtVmFsdWVUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVzY3JpcHRp
+b24iIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBTb3VyY2VUeXBlPSJ0bnM6RW51bVZhbHVl
+VHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5n
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5h
+bWU9Ik9wdGlvblNldCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJWYWx1ZSIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iVmFsaWRCaXRzIiBUeXBlTmFtZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJOb3JtYWxpemVk
+U3RyaW5nIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOk9wYXF1ZVR5cGUgTmFtZT0i
+RGVjaW1hbFN0cmluZyI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+DQoNCiAgPG9wYzpPcGFxdWVUeXBl
+IE5hbWU9IkR1cmF0aW9uU3RyaW5nIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOk9w
+YXF1ZVR5cGUgTmFtZT0iVGltZVN0cmluZyI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+DQoNCiAgPG9w
+YzpPcGFxdWVUeXBlIE5hbWU9IkRhdGVTdHJpbmciPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQog
+IDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJEdXJhdGlvbiI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+DQoN
+CiAgPG9wYzpPcGFxdWVUeXBlIE5hbWU9IlV0Y1RpbWUiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0K
+DQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJMb2NhbGVJZCI+DQogIDwvb3BjOk9wYXF1ZVR5cGU+
+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUaW1lWm9uZURhdGFUeXBlIiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik9mZnNldCIgVHlw
+ZU5hbWU9Im9wYzpJbnQxNiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRheWxpZ2h0U2F2aW5n
+SW5PZmZzZXQiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpPcGFxdWVUeXBlIE5hbWU9IkluZGV4Ij4NCiAgPC9vcGM6T3BhcXVlVHlw
+ZT4NCg0KICA8b3BjOk9wYXF1ZVR5cGUgTmFtZT0iSW50ZWdlcklkIj4NCiAgPC9vcGM6T3BhcXVl
+VHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IkFwcGxpY2F0aW9uVHlwZSIgTGVu
+Z3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2VydmVyIiBW
+YWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJDbGllbnQiIFZhbHVl
+PSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkNsaWVudEFuZFNlcnZlciIg
+VmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRGlzY292ZXJ5U2Vy
+dmVyIiBWYWx1ZT0iMyIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1
+Y3R1cmVkVHlwZSBOYW1lPSJBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBCYXNlVHlwZT0idWE6RXh0
+ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFwcGxpY2F0aW9uVXJpIiBUeXBl
+TmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlByb2R1Y3RVcmkiIFR5
+cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQXBwbGljYXRpb25O
+YW1lIiBUeXBlTmFtZT0idWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IkFwcGxpY2F0aW9uVHlwZSIgVHlwZU5hbWU9InRuczpBcHBsaWNhdGlvblR5cGUiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJHYXRld2F5U2VydmVyVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc2NvdmVyeVByb2ZpbGVVcmkiIFR5cGVOYW1lPSJv
+cGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRpc2NvdmVyeVVybHMiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNjb3ZlcnlVcmxz
+IiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaXNjb3ZlcnlVcmxzIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IlJlcXVlc3RIZWFkZXIiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iQXV0aGVudGljYXRpb25Ub2tlbiIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlRpbWVzdGFtcCIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIYW5kbGUiIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmV0dXJuRGlhZ25vc3RpY3MiIFR5cGVOYW1l
+PSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQXVkaXRFbnRyeUlkIiBUeXBl
+TmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRpbWVvdXRIaW50IiBU
+eXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFkZGl0aW9uYWxI
+ZWFkZXIiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIC8+DQogIDwvb3BjOlN0cnVjdHVy
+ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIEJh
+c2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVGltZXN0
+YW1wIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVx
+dWVzdEhhbmRsZSIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJTZXJ2aWNlUmVzdWx0IiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlNlcnZpY2VEaWFnbm9zdGljcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZv
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlN0cmluZ1RhYmxlIiBUeXBlTmFtZT0ib3Bj
+OkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3RyaW5nVGFibGUiIFR5cGVOYW1lPSJv
+cGM6U3RyaW5nIiBMZW5ndGhGaWVsZD0iTm9PZlN0cmluZ1RhYmxlIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iQWRkaXRpb25hbEhlYWRlciIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIg
+Lz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpPcGFxdWVUeXBlIE5hbWU9IlZl
+cnNpb25UaW1lIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IlNlcnZpY2VGYXVsdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhl
+YWRlciIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlw
+ZSBOYW1lPSJTZXNzaW9ubGVzc0ludm9rZVJlcXVlc3RUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5z
+aW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVyaXNWZXJzaW9uIiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZOYW1lc3BhY2VVcmlzIiBU
+eXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZXNwYWNlVXJp
+cyIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09mTmFtZXNwYWNlVXJpcyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZXJ2ZXJVcmlzIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyVXJpcyIgVHlwZU5hbWU9Im9wYzpT
+dHJpbmciIExlbmd0aEZpZWxkPSJOb09mU2VydmVyVXJpcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9Ik5vT2ZMb2NhbGVJZHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJMb2NhbGVJZHMiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiBMZW5ndGhGaWVsZD0iTm9P
+ZkxvY2FsZUlkcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZpY2VJZCIgVHlwZU5hbWU9
+Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0
+dXJlZFR5cGUgTmFtZT0iU2Vzc2lvbmxlc3NJbnZva2VSZXNwb25zZVR5cGUiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk5hbWVzcGFjZVVy
+aXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOYW1lc3Bh
+Y2VVcmlzIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZOYW1lc3BhY2VV
+cmlzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNlcnZlclVyaXMiIFR5cGVOYW1lPSJv
+cGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXJVcmlzIiBUeXBlTmFtZT0i
+b3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZXJ2ZXJVcmlzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iU2VydmljZUlkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJGaW5kU2VydmVyc1Jl
+cXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iRW5kcG9pbnRVcmwiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZkxvY2FsZUlkcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkxvY2FsZUlkcyIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExl
+bmd0aEZpZWxkPSJOb09mTG9jYWxlSWRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNl
+cnZlclVyaXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJT
+ZXJ2ZXJVcmlzIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZXJ2ZXJV
+cmlzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IkZpbmRTZXJ2ZXJzUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3Qi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVz
+cG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mU2VydmVycyIgVHlwZU5h
+bWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlcnMiIFR5cGVOYW1l
+PSJ0bnM6QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZXJ2ZXJzIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IlNlcnZlck9uTmV0d29yayIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJSZWNvcmRJZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTZXJ2ZXJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkRpc2NvdmVyeVVybCIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mU2VydmVyQ2FwYWJpbGl0aWVzIiBUeXBlTmFtZT0ib3Bj
+OkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyQ2FwYWJpbGl0aWVzIiBUeXBl
+TmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZXJ2ZXJDYXBhYmlsaXRpZXMiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+RmluZFNlcnZlcnNPbk5ldHdvcmtSZXF1ZXN0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVx
+dWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXJ0aW5nUmVjb3JkSWQiIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWF4UmVjb3Jkc1Rv
+UmV0dXJuIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5v
+T2ZTZXJ2ZXJDYXBhYmlsaXR5RmlsdGVyIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iU2VydmVyQ2FwYWJpbGl0eUZpbHRlciIgVHlwZU5hbWU9Im9wYzpTdHJp
+bmciIExlbmd0aEZpZWxkPSJOb09mU2VydmVyQ2FwYWJpbGl0eUZpbHRlciIgLz4NCiAgPC9vcGM6
+U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJGaW5kU2VydmVy
+c09uTmV0d29ya1Jlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNlSGVh
+ZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTGFzdENvdW50ZXJSZXNldFRpbWUiIFR5cGVO
+YW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mU2VydmVycyIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlcnMiIFR5
+cGVOYW1lPSJ0bnM6U2VydmVyT25OZXR3b3JrIiBMZW5ndGhGaWVsZD0iTm9PZlNlcnZlcnMiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6T3BhcXVlVHlwZSBOYW1lPSJBcHBs
+aWNhdGlvbkluc3RhbmNlQ2VydGlmaWNhdGUiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxv
+cGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iTWVzc2FnZVNlY3VyaXR5TW9kZSIgTGVuZ3RoSW5CaXRz
+PSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSW52YWxpZCIgVmFsdWU9IjAi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9uZSIgVmFsdWU9IjEiIC8+DQog
+ICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2lnbiIgVmFsdWU9IjIiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2lnbkFuZEVuY3J5cHQiIFZhbHVlPSIzIiAvPg0KICA8
+L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9IlVzZXJU
+b2tlblR5cGUiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IkFub255bW91cyIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iVXNlck5hbWUiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9
+IkNlcnRpZmljYXRlIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJJc3N1ZWRUb2tlbiIgVmFsdWU9IjMiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVXNlclRva2VuUG9saWN5IiBCYXNlVHlwZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlBvbGljeUlkIiBUeXBlTmFt
+ZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRva2VuVHlwZSIgVHlwZU5h
+bWU9InRuczpVc2VyVG9rZW5UeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSXNzdWVkVG9r
+ZW5UeXBlIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Iklz
+c3VlckVuZHBvaW50VXJsIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlNlY3VyaXR5UG9saWN5VXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJFbmRwb2lu
+dERlc2NyaXB0aW9uIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IkVuZHBvaW50VXJsIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlNlcnZlciIgVHlwZU5hbWU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9u
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyQ2VydGlmaWNhdGUiIFR5cGVOYW1lPSJv
+cGM6Qnl0ZVN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5TW9kZSIgVHlw
+ZU5hbWU9InRuczpNZXNzYWdlU2VjdXJpdHlNb2RlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U2VjdXJpdHlQb2xpY3lVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTm9PZlVzZXJJZGVudGl0eVRva2VucyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZXJJZGVudGl0eVRva2VucyIgVHlwZU5hbWU9InRuczpV
+c2VyVG9rZW5Qb2xpY3kiIExlbmd0aEZpZWxkPSJOb09mVXNlcklkZW50aXR5VG9rZW5zIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iVHJhbnNwb3J0UHJvZmlsZVVyaSIgVHlwZU5hbWU9Im9wYzpT
+dHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eUxldmVsIiBUeXBlTmFtZT0i
+b3BjOkJ5dGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJl
+ZFR5cGUgTmFtZT0iR2V0RW5kcG9pbnRzUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9i
+amVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5z
+OlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbmRwb2ludFVybCIgVHlw
+ZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTG9jYWxlSWRz
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTG9jYWxlSWRz
+IiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZMb2NhbGVJZHMiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUHJvZmlsZVVyaXMiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQcm9maWxlVXJpcyIgVHlwZU5hbWU9Im9wYzpTdHJp
+bmciIExlbmd0aEZpZWxkPSJOb09mUHJvZmlsZVVyaXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iR2V0RW5kcG9pbnRzUmVzcG9uc2Ui
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mRW5kcG9pbnRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iRW5kcG9pbnRzIiBUeXBlTmFtZT0idG5zOkVuZHBvaW50RGVzY3JpcHRp
+b24iIExlbmd0aEZpZWxkPSJOb09mRW5kcG9pbnRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlw
+ZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlZ2lzdGVyZWRTZXJ2ZXIiIEJhc2VU
+eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyVXJp
+IiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlByb2R1Y3RV
+cmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlNl
+cnZlck5hbWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U2VydmVyTmFtZXMiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBMZW5ndGhGaWVsZD0iTm9P
+ZlNlcnZlck5hbWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyVHlwZSIgVHlwZU5h
+bWU9InRuczpBcHBsaWNhdGlvblR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJHYXRld2F5
+U2VydmVyVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZEaXNjb3ZlcnlVcmxzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRGlzY292ZXJ5VXJscyIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIExlbmd0aEZpZWxk
+PSJOb09mRGlzY292ZXJ5VXJscyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlbWFwaG9yZUZp
+bGVQYXRoIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Iklz
+T25saW5lIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVnaXN0ZXJTZXJ2ZXJSZXF1ZXN0IiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVl
+c3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlNlcnZlciIgVHlwZU5hbWU9InRuczpSZWdpc3RlcmVkU2VydmVyIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlZ2lzdGVy
+U2VydmVyUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIi
+IC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFt
+ZT0iRGlzY292ZXJ5Q29uZmlndXJhdGlvbiIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+TWRuc0Rpc2NvdmVyeUNvbmZpZ3VyYXRpb24iIEJhc2VUeXBlPSJ0bnM6RGlzY292ZXJ5Q29uZmln
+dXJhdGlvbiI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNZG5zU2VydmVyTmFtZSIgVHlwZU5hbWU9
+Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mU2VydmVyQ2FwYWJpbGl0
+aWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVy
+Q2FwYWJpbGl0aWVzIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZTZXJ2
+ZXJDYXBhYmlsaXRpZXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iUmVnaXN0ZXJTZXJ2ZXIyUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBl
+TmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXIi
+IFR5cGVOYW1lPSJ0bnM6UmVnaXN0ZXJlZFNlcnZlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZEaXNjb3ZlcnlDb25maWd1cmF0aW9uIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iRGlzY292ZXJ5Q29uZmlndXJhdGlvbiIgVHlwZU5hbWU9InVhOkV4
+dGVuc2lvbk9iamVjdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaXNjb3ZlcnlDb25maWd1cmF0aW9uIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IlJlZ2lzdGVyU2VydmVyMlJlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3Bv
+bnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkNvbmZpZ3VyYXRpb25SZXN1
+bHRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ29uZmln
+dXJhdGlvblJlc3VsdHMiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBMZW5ndGhGaWVsZD0iTm9P
+ZkNvbmZpZ3VyYXRpb25SZXN1bHRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRpYWdu
+b3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBMZW5ndGhGaWVs
+ZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJTZWN1cml0eVRva2VuUmVxdWVzdFR5cGUiIExlbmd0
+aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Iklzc3VlIiBWYWx1
+ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZW5ldyIgVmFsdWU9IjEi
+IC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFt
+ZT0iQ2hhbm5lbFNlY3VyaXR5VG9rZW4iIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQ2hhbm5lbElkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlRva2VuSWQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQ3JlYXRlZEF0IiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmV2aXNlZExpZmV0aW1lIiBUeXBlTmFtZT0ib3BjOlVJ
+bnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlw
+ZSBOYW1lPSJPcGVuU2VjdXJlQ2hhbm5lbFJlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRu
+czpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50UHJvdG9jb2xW
+ZXJzaW9uIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJl
+cXVlc3RUeXBlIiBUeXBlTmFtZT0idG5zOlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5TW9kZSIgVHlwZU5hbWU9InRuczpNZXNzYWdlU2Vj
+dXJpdHlNb2RlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50Tm9uY2UiIFR5cGVOYW1l
+PSJvcGM6Qnl0ZVN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RlZExpZmV0
+aW1lIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJPcGVuU2VjdXJlQ2hhbm5lbFJlc3BvbnNlIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3Bv
+bnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iU2VydmVyUHJvdG9jb2xWZXJzaW9uIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5VG9rZW4iIFR5cGVOYW1lPSJ0bnM6Q2hhbm5l
+bFNlY3VyaXR5VG9rZW4iIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXJOb25jZSIgVHlw
+ZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlcXVlc3QiIEJhc2VU
+eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhl
+YWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVk
+VHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJl
+c3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNlSGVhZGVyIiAvPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNpZ25l
+ZFNvZnR3YXJlQ2VydGlmaWNhdGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iQ2VydGlmaWNhdGVEYXRhIiBUeXBlTmFtZT0ib3BjOkJ5dGVTdHJp
+bmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTaWduYXR1cmUiIFR5cGVOYW1lPSJvcGM6Qnl0
+ZVN0cmluZyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpPcGFxdWVUeXBl
+IE5hbWU9IlNlc3Npb25BdXRoZW50aWNhdGlvblRva2VuIj4NCiAgPC9vcGM6T3BhcXVlVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNpZ25hdHVyZURhdGEiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQWxnb3JpdGhtIiBUeXBl
+TmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNpZ25hdHVyZSIgVHlw
+ZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNyZWF0ZVNlc3Npb25SZXF1ZXN0IiBCYXNlVHlwZT0i
+dWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFkZXIi
+IFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNs
+aWVudERlc2NyaXB0aW9uIiBUeXBlTmFtZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXJ2ZXJVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW5kcG9pbnRVcmwiIFR5cGVOYW1lPSJvcGM6U3RyaW5n
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2Vzc2lvbk5hbWUiIFR5cGVOYW1lPSJvcGM6U3Ry
+aW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50Tm9uY2UiIFR5cGVOYW1lPSJvcGM6
+Qnl0ZVN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNsaWVudENlcnRpZmljYXRlIiBU
+eXBlTmFtZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0
+ZWRTZXNzaW9uVGltZW91dCIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJNYXhSZXNwb25zZU1lc3NhZ2VTaXplIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJD
+cmVhdGVTZXNzaW9uUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VI
+ZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXNzaW9uSWQiIFR5cGVOYW1lPSJ1YTpO
+b2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBdXRoZW50aWNhdGlvblRva2VuIiBUeXBl
+TmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmV2aXNlZFNlc3Npb25U
+aW1lb3V0IiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNl
+cnZlck5vbmNlIiBUeXBlTmFtZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJTZXJ2ZXJDZXJ0aWZpY2F0ZSIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZlNlcnZlckVuZHBvaW50cyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlckVuZHBvaW50cyIgVHlwZU5hbWU9InRu
+czpFbmRwb2ludERlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZlNlcnZlckVuZHBvaW50cyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZXJ2ZXJTb2Z0d2FyZUNlcnRpZmljYXRlcyIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlclNvZnR3
+YXJlQ2VydGlmaWNhdGVzIiBUeXBlTmFtZT0idG5zOlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUi
+IExlbmd0aEZpZWxkPSJOb09mU2VydmVyU29mdHdhcmVDZXJ0aWZpY2F0ZXMiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTZXJ2ZXJTaWduYXR1cmUiIFR5cGVOYW1lPSJ0bnM6U2lnbmF0dXJlRGF0
+YSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1heFJlcXVlc3RNZXNzYWdlU2l6ZSIgVHlwZU5h
+bWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iVXNlcklkZW50aXR5VG9rZW4iIEJhc2VUeXBlPSJ1YTpFeHRlbnNp
+b25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUG9saWN5SWQiIFR5cGVOYW1lPSJvcGM6
+U3RyaW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRU
+eXBlIE5hbWU9IkFub255bW91c0lkZW50aXR5VG9rZW4iIEJhc2VUeXBlPSJ0bnM6VXNlcklkZW50
+aXR5VG9rZW4iPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUG9saWN5SWQiIFR5cGVOYW1lPSJvcGM6
+U3RyaW5nIiBTb3VyY2VUeXBlPSJ0bnM6VXNlcklkZW50aXR5VG9rZW4iIC8+DQogIDwvb3BjOlN0
+cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVXNlck5hbWVJZGVu
+dGl0eVRva2VuIiBCYXNlVHlwZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIj4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlBvbGljeUlkIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgU291cmNlVHlwZT0idG5z
+OlVzZXJJZGVudGl0eVRva2VuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXNlck5hbWUiIFR5
+cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUGFzc3dvcmQiIFR5
+cGVOYW1lPSJvcGM6Qnl0ZVN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkVuY3J5cHRp
+b25BbGdvcml0aG0iIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVk
+VHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ilg1MDlJZGVudGl0eVRva2VuIiBC
+YXNlVHlwZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlBv
+bGljeUlkIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgU291cmNlVHlwZT0idG5zOlVzZXJJZGVudGl0
+eVRva2VuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2VydGlmaWNhdGVEYXRhIiBUeXBlTmFt
+ZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iSXNzdWVkSWRlbnRpdHlUb2tlbiIgQmFzZVR5cGU9InRuczpV
+c2VySWRlbnRpdHlUb2tlbiI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQb2xpY3lJZCIgVHlwZU5h
+bWU9Im9wYzpTdHJpbmciIFNvdXJjZVR5cGU9InRuczpVc2VySWRlbnRpdHlUb2tlbiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlRva2VuRGF0YSIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW5jcnlwdGlvbkFsZ29yaXRobSIgVHlwZU5hbWU9Im9w
+YzpTdHJpbmciIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6T3BhcXVlVHlw
+ZSBOYW1lPSJSc2FFbmNyeXB0ZWRTZWNyZXQiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxv
+cGM6T3BhcXVlVHlwZSBOYW1lPSJFY2NFbmNyeXB0ZWRTZWNyZXQiPg0KICA8L29wYzpPcGFxdWVU
+eXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQWN0aXZhdGVTZXNzaW9uUmVxdWVz
+dCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJS
+ZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJDbGllbnRTaWduYXR1cmUiIFR5cGVOYW1lPSJ0bnM6U2lnbmF0dXJlRGF0YSIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZDbGllbnRTb2Z0d2FyZUNlcnRpZmljYXRlcyIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNsaWVudFNvZnR3
+YXJlQ2VydGlmaWNhdGVzIiBUeXBlTmFtZT0idG5zOlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUi
+IExlbmd0aEZpZWxkPSJOb09mQ2xpZW50U29mdHdhcmVDZXJ0aWZpY2F0ZXMiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJOb09mTG9jYWxlSWRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTG9jYWxlSWRzIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZMb2NhbGVJZHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVc2VySWRlbnRp
+dHlUb2tlbiIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlVzZXJUb2tlblNpZ25hdHVyZSIgVHlwZU5hbWU9InRuczpTaWduYXR1cmVEYXRhIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IkFjdGl2YXRlU2Vzc2lvblJlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3Bv
+bnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VydmVyTm9uY2UiIFR5cGVOYW1l
+PSJvcGM6Qnl0ZVN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZSZXN1bHRzIiBU
+eXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzdWx0cyIgVHlw
+ZU5hbWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpE
+aWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQ2xvc2VT
+ZXNzaW9uUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zIiBUeXBlTmFtZT0ib3Bj
+OkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJl
+ZFR5cGUgTmFtZT0iQ2xvc2VTZXNzaW9uUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0
+bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iQ2FuY2VsUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lv
+bk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0i
+dG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGFuZGxl
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJDYW5jZWxSZXNwb25zZSIgQmFzZVR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlw
+ZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNhbmNl
+bENvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+
+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJOb2RlQXR0cmlidXRlc01hc2siIExlbmd0
+aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vbmUiIFZhbHVl
+PSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFjY2Vzc0xldmVsIiBWYWx1
+ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBcnJheURpbWVuc2lvbnMi
+IFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkJyb3dzZU5hbWUi
+IFZhbHVlPSI0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkNvbnRhaW5zTm9M
+b29wcyIgVmFsdWU9IjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRGF0YVR5
+cGUiIFZhbHVlPSIxNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEZXNjcmlw
+dGlvbiIgVmFsdWU9IjMyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkRpc3Bs
+YXlOYW1lIiBWYWx1ZT0iNjQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRXZl
+bnROb3RpZmllciIgVmFsdWU9IjEyOCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJFeGVjdXRhYmxlIiBWYWx1ZT0iMjU2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9Ikhpc3Rvcml6aW5nIiBWYWx1ZT0iNTEyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9IkludmVyc2VOYW1lIiBWYWx1ZT0iMTAyNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJJc0Fic3RyYWN0IiBWYWx1ZT0iMjA0OCIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJNaW5pbXVtU2FtcGxpbmdJbnRlcnZhbCIgVmFsdWU9IjQwOTYiIC8+DQog
+ICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9kZUNsYXNzIiBWYWx1ZT0iODE5MiIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJOb2RlSWQiIFZhbHVlPSIxNjM4NCIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTeW1tZXRyaWMiIFZhbHVlPSIzMjc2OCIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVc2VyQWNjZXNzTGV2ZWwiIFZhbHVl
+PSI2NTUzNiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVc2VyRXhlY3V0YWJs
+ZSIgVmFsdWU9IjEzMTA3MiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVc2Vy
+V3JpdGVNYXNrIiBWYWx1ZT0iMjYyMTQ0IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IlZhbHVlUmFuayIgVmFsdWU9IjUyNDI4OCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJXcml0ZU1hc2siIFZhbHVlPSIxMDQ4NTc2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9IlZhbHVlIiBWYWx1ZT0iMjA5NzE1MiIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJEYXRhVHlwZURlZmluaXRpb24iIFZhbHVlPSI0MTk0MzA0IiAvPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJvbGVQZXJtaXNzaW9ucyIgVmFsdWU9IjgzODg2
+MDgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQWNjZXNzUmVzdHJpY3Rpb25z
+IiBWYWx1ZT0iMTY3NzcyMTYiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQWxs
+IiBWYWx1ZT0iMzM1NTQ0MzEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQmFz
+ZU5vZGUiIFZhbHVlPSIyNjUwMTIyMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJPYmplY3QiIFZhbHVlPSIyNjUwMTM0OCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJPYmplY3RUeXBlIiBWYWx1ZT0iMjY1MDMyNjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iVmFyaWFibGUiIFZhbHVlPSIyNjU3MTM4MyIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJWYXJpYWJsZVR5cGUiIFZhbHVlPSIyODYwMDQzOCIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJNZXRob2QiIFZhbHVlPSIyNjYzMjU0OCIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZlcmVuY2VUeXBlIiBWYWx1ZT0iMjY1Mzcw
+NjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVmlldyIgVmFsdWU9IjI2NTAx
+MzU2IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9Ik5vZGVBdHRyaWJ1dGVzIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlNwZWNpZmllZEF0dHJpYnV0ZXMiIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGVOYW1lPSJ1YTpM
+b2NhbGl6ZWRUZXh0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVzY3JpcHRpb24iIFR5cGVO
+YW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iV3JpdGVNYXNr
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZXJXcml0
+ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ik9iamVjdEF0dHJpYnV0ZXMiIEJhc2VUeXBl
+PSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3BlY2lmaWVkQXR0
+cmlidXRlcyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmli
+dXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlTmFtZT0idWE6
+TG9jYWxpemVkVGV4dCIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iRGVzY3JpcHRpb24iIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBT
+b3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJX
+cml0ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJp
+YnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVc2VyV3JpdGVNYXNrIiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRXZlbnROb3RpZmllciIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlZhcmlhYmxl
+QXR0cmlidXRlcyIgQmFzZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJTcGVjaWZpZWRBdHRyaWJ1dGVzIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgU291cmNl
+VHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzcGxh
+eU5hbWUiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0
+dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIgVHlwZU5hbWU9
+InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IldyaXRlTWFzayIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJj
+ZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZXJX
+cml0ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJp
+YnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWYWx1ZSIgVHlwZU5hbWU9InVhOlZhcmlh
+bnQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhVHlwZSIgVHlwZU5hbWU9InVhOk5vZGVJ
+ZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlZhbHVlUmFuayIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZBcnJheURpbWVuc2lvbnMiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBcnJheURpbWVuc2lvbnMiIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiBMZW5ndGhGaWVsZD0iTm9PZkFycmF5RGltZW5zaW9ucyIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkFjY2Vzc0xldmVsIiBUeXBlTmFtZT0ib3BjOkJ5dGUiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVc2VyQWNjZXNzTGV2ZWwiIFR5cGVOYW1lPSJvcGM6Qnl0
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1pbmltdW1TYW1wbGluZ0ludGVydmFsIiBUeXBl
+TmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikhpc3Rvcml6aW5nIiBU
+eXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxv
+cGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTWV0aG9kQXR0cmlidXRlcyIgQmFzZVR5cGU9InRuczpO
+b2RlQXR0cmlidXRlcyI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTcGVjaWZpZWRBdHRyaWJ1dGVz
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6
+ZWRUZXh0IiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJEZXNjcmlwdGlvbiIgVHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5
+cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IldyaXRlTWFz
+ayIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZXJXcml0ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJFeGVjdXRhYmxlIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJVc2VyRXhlY3V0YWJsZSIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ik9iamVjdFR5
+cGVBdHRyaWJ1dGVzIiBCYXNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlNwZWNpZmllZEF0dHJpYnV0ZXMiIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3Vy
+Y2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNw
+bGF5TmFtZSIgVHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5cGU9InRuczpOb2Rl
+QXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlc2NyaXB0aW9uIiBUeXBlTmFt
+ZT0idWE6TG9jYWxpemVkVGV4dCIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iV3JpdGVNYXNrIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgU291
+cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXNl
+cldyaXRlTWFzayIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0
+cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IklzQWJzdHJhY3QiIFR5cGVOYW1lPSJv
+cGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJWYXJpYWJsZVR5cGVBdHRyaWJ1dGVzIiBCYXNlVHlwZT0idG5zOk5vZGVB
+dHRyaWJ1dGVzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNwZWNpZmllZEF0dHJpYnV0ZXMiIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZU5hbWU9InVhOkxvY2FsaXplZFRl
+eHQiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkRlc2NyaXB0aW9uIiBUeXBlTmFtZT0idWE6TG9jYWxpemVkVGV4dCIgU291cmNlVHlwZT0i
+dG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iV3JpdGVNYXNrIiBU
+eXBlTmFtZT0ib3BjOlVJbnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iVXNlcldyaXRlTWFzayIgVHlwZU5hbWU9Im9wYzpVSW50MzIi
+IFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlZhbHVlIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRh
+dGFUeXBlIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVmFs
+dWVSYW5rIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+ZkFycmF5RGltZW5zaW9ucyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IkFycmF5RGltZW5zaW9ucyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIExlbmd0aEZpZWxk
+PSJOb09mQXJyYXlEaW1lbnNpb25zIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSXNBYnN0cmFj
+dCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlZmVyZW5jZVR5cGVBdHRyaWJ1dGVzIiBCYXNl
+VHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNwZWNpZmll
+ZEF0dHJpYnV0ZXMiIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0
+dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZU5hbWU9
+InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkRlc2NyaXB0aW9uIiBUeXBlTmFtZT0idWE6TG9jYWxpemVkVGV4
+dCIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iV3JpdGVNYXNrIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVB
+dHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXNlcldyaXRlTWFzayIgVHlwZU5h
+bWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IklzQWJzdHJhY3QiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlN5bW1ldHJpYyIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iSW52ZXJzZU5hbWUiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRU
+ZXh0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IkRhdGFUeXBlQXR0cmlidXRlcyIgQmFzZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyI+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTcGVjaWZpZWRBdHRyaWJ1dGVzIiBUeXBlTmFtZT0ib3Bj
+OlVJbnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBTb3VyY2VU
+eXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlw
+dGlvbiIgVHlwZU5hbWU9InVhOkxvY2FsaXplZFRleHQiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0
+cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IldyaXRlTWFzayIgVHlwZU5hbWU9Im9w
+YzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlVzZXJXcml0ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBl
+PSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJc0Fic3RyYWN0
+IiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVmlld0F0dHJpYnV0ZXMiIEJhc2VUeXBlPSJ0bnM6
+Tm9kZUF0dHJpYnV0ZXMiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3BlY2lmaWVkQXR0cmlidXRl
+cyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlTmFtZT0idWE6TG9jYWxp
+emVkVGV4dCIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRGVzY3JpcHRpb24iIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBTb3VyY2VU
+eXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJXcml0ZU1h
+c2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVc2VyV3JpdGVNYXNrIiBUeXBlTmFtZT0ib3BjOlVJ
+bnQzMiIgU291cmNlVHlwZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iQ29udGFpbnNOb0xvb3BzIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJFdmVudE5vdGlmaWVyIiBUeXBlTmFtZT0ib3BjOkJ5dGUiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iR2VuZXJp
+Y0F0dHJpYnV0ZVZhbHVlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IkF0dHJpYnV0ZUlkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlZhbHVlIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgLz4NCiAgPC9vcGM6
+U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJHZW5lcmljQXR0
+cmlidXRlcyIgQmFzZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJTcGVjaWZpZWRBdHRyaWJ1dGVzIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgU291cmNlVHlw
+ZT0idG5zOk5vZGVBdHRyaWJ1dGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzcGxheU5h
+bWUiIFR5cGVOYW1lPSJ1YTpMb2NhbGl6ZWRUZXh0IiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJp
+YnV0ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZXNjcmlwdGlvbiIgVHlwZU5hbWU9InVh
+OkxvY2FsaXplZFRleHQiIFNvdXJjZVR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IldyaXRlTWFzayIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIFNvdXJjZVR5
+cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZXJXcml0
+ZU1hc2siIFR5cGVOYW1lPSJvcGM6VUludDMyIiBTb3VyY2VUeXBlPSJ0bnM6Tm9kZUF0dHJpYnV0
+ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mQXR0cmlidXRlVmFsdWVzIiBUeXBlTmFt
+ZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQXR0cmlidXRlVmFsdWVzIiBU
+eXBlTmFtZT0idG5zOkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZBdHRy
+aWJ1dGVWYWx1ZXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0
+dXJlZFR5cGUgTmFtZT0iQWRkTm9kZXNJdGVtIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlBhcmVudE5vZGVJZCIgVHlwZU5hbWU9InVhOkV4cGFu
+ZGVkTm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVmZXJlbmNlVHlwZUlkIiBUeXBl
+TmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdGVkTmV3Tm9k
+ZUlkIiBUeXBlTmFtZT0idWE6RXhwYW5kZWROb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJCcm93c2VOYW1lIiBUeXBlTmFtZT0idWE6UXVhbGlmaWVkTmFtZSIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Ik5vZGVDbGFzcyIgVHlwZU5hbWU9InRuczpOb2RlQ2xhc3MiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJOb2RlQXR0cmlidXRlcyIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVj
+dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlR5cGVEZWZpbml0aW9uIiBUeXBlTmFtZT0idWE6
+RXhwYW5kZWROb2RlSWQiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iQWRkTm9kZXNSZXN1bHQiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3RhdHVzQ29kZSIgVHlwZU5hbWU9InVhOlN0
+YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBZGRlZE5vZGVJZCIgVHlwZU5hbWU9
+InVhOk5vZGVJZCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJBZGROb2Rlc1JlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmpl
+Y3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpS
+ZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk5vZGVzVG9BZGQiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2Rlc1RvQWRkIiBU
+eXBlTmFtZT0idG5zOkFkZE5vZGVzSXRlbSIgTGVuZ3RoRmllbGQ9Ik5vT2ZOb2Rlc1RvQWRkIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IkFkZE5vZGVzUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFk
+ZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJ
+bnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ0bnM6QWRk
+Tm9kZXNSZXN1bHQiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGlj
+SW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQWRkUmVmZXJlbmNlc0l0
+ZW0iIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U291cmNlTm9kZUlkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUmVmZXJlbmNlVHlwZUlkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iSXNGb3J3YXJkIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJUYXJnZXRTZXJ2ZXJVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iVGFyZ2V0Tm9kZUlkIiBUeXBlTmFtZT0idWE6RXhwYW5kZWROb2Rl
+SWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUYXJnZXROb2RlQ2xhc3MiIFR5cGVOYW1lPSJ0
+bnM6Tm9kZUNsYXNzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IkFkZFJlZmVyZW5jZXNSZXF1ZXN0IiBCYXNlVHlwZT0idWE6RXh0ZW5z
+aW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFkZXIiIFR5cGVOYW1l
+PSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZSZWZlcmVu
+Y2VzVG9BZGQiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJS
+ZWZlcmVuY2VzVG9BZGQiIFR5cGVOYW1lPSJ0bnM6QWRkUmVmZXJlbmNlc0l0ZW0iIExlbmd0aEZp
+ZWxkPSJOb09mUmVmZXJlbmNlc1RvQWRkIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkFkZFJlZmVyZW5jZXNSZXNwb25zZSIgQmFzZVR5
+cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhl
+YWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9Ik5vT2ZSZXN1bHRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmVzdWx0cyIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09m
+UmVzdWx0cyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5m
+b3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9z
+dGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJl
+ZFR5cGUgTmFtZT0iRGVsZXRlTm9kZXNJdGVtIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlbGV0ZVRhcmdldFJlZmVyZW5jZXMiIFR5cGVOYW1lPSJv
+cGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJEZWxldGVOb2Rlc1JlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRu
+czpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk5vZGVzVG9EZWxl
+dGUiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2Rlc1Rv
+RGVsZXRlIiBUeXBlTmFtZT0idG5zOkRlbGV0ZU5vZGVzSXRlbSIgTGVuZ3RoRmllbGQ9Ik5vT2ZO
+b2Rlc1RvRGVsZXRlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IkRlbGV0ZU5vZGVzUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNp
+b25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1l
+PSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0
+cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMi
+IFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0i
+dWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0K
+ICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRl
+bGV0ZVJlZmVyZW5jZXNJdGVtIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlNvdXJjZU5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IklzRm9yd2FyZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFu
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVGFyZ2V0Tm9kZUlkIiBUeXBlTmFtZT0idWE6RXhw
+YW5kZWROb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZWxldGVCaWRpcmVjdGlvbmFs
+IiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGVsZXRlUmVmZXJlbmNlc1JlcXVlc3QiIEJhc2VU
+eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhl
+YWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTm9PZlJlZmVyZW5jZXNUb0RlbGV0ZSIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlJlZmVyZW5jZXNUb0RlbGV0ZSIgVHlwZU5hbWU9InRuczpEZWxldGVS
+ZWZlcmVuY2VzSXRlbSIgTGVuZ3RoRmllbGQ9Ik5vT2ZSZWZlcmVuY2VzVG9EZWxldGUiIC8+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGVs
+ZXRlUmVmZXJlbmNlc1Jlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNl
+SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlc3VsdHMiIFR5cGVOYW1lPSJv
+cGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1bHRzIiBUeXBlTmFtZT0idWE6
+U3RhdHVzQ29kZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZSZXN1bHRzIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJ
+bmZvIiBMZW5ndGhGaWVsZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0
+dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJBdHRyaWJ1dGVXcml0ZU1h
+c2siIExlbmd0aEluQml0cz0iMzIiIElzT3B0aW9uU2V0PSJ0cnVlIj4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJOb25lIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJBY2Nlc3NMZXZlbCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iQXJyYXlEaW1lbnNpb25zIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJCcm93c2VOYW1lIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJDb250YWluc05vTG9vcHMiIFZhbHVlPSI4IiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IkRhdGFUeXBlIiBWYWx1ZT0iMTYiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iRGVzY3JpcHRpb24iIFZhbHVlPSIzMiIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVmFsdWU9IjY0IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkV2ZW50Tm90aWZpZXIiIFZhbHVlPSIxMjgiIC8+DQog
+ICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iRXhlY3V0YWJsZSIgVmFsdWU9IjI1NiIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJIaXN0b3JpemluZyIgVmFsdWU9IjUxMiIg
+Lz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJJbnZlcnNlTmFtZSIgVmFsdWU9IjEw
+MjQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSXNBYnN0cmFjdCIgVmFsdWU9
+IjIwNDgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTWluaW11bVNhbXBsaW5n
+SW50ZXJ2YWwiIFZhbHVlPSI0MDk2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9
+Ik5vZGVDbGFzcyIgVmFsdWU9IjgxOTIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iTm9kZUlkIiBWYWx1ZT0iMTYzODQiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iU3ltbWV0cmljIiBWYWx1ZT0iMzI3NjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iVXNlckFjY2Vzc0xldmVsIiBWYWx1ZT0iNjU1MzYiIC8+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iVXNlckV4ZWN1dGFibGUiIFZhbHVlPSIxMzEwNzIiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iVXNlcldyaXRlTWFzayIgVmFsdWU9IjI2MjE0NCIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJWYWx1ZVJhbmsiIFZhbHVlPSI1MjQyODgi
+IC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iV3JpdGVNYXNrIiBWYWx1ZT0iMTA0
+ODU3NiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJWYWx1ZUZvclZhcmlhYmxl
+VHlwZSIgVmFsdWU9IjIwOTcxNTIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0i
+RGF0YVR5cGVEZWZpbml0aW9uIiBWYWx1ZT0iNDE5NDMwNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0
+ZWRWYWx1ZSBOYW1lPSJSb2xlUGVybWlzc2lvbnMiIFZhbHVlPSI4Mzg4NjA4IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFjY2Vzc1Jlc3RyaWN0aW9ucyIgVmFsdWU9IjE2Nzc3
+MjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFjY2Vzc0xldmVsRXgiIFZh
+bHVlPSIzMzU1NDQzMiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVt
+ZXJhdGVkVHlwZSBOYW1lPSJCcm93c2VEaXJlY3Rpb24iIExlbmd0aEluQml0cz0iMzIiPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZvcndhcmQiIFZhbHVlPSIwIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkludmVyc2UiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IkJvdGgiIFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVy
+YXRlZFZhbHVlIE5hbWU9IkludmFsaWQiIFZhbHVlPSIzIiAvPg0KICA8L29wYzpFbnVtZXJhdGVk
+VHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlZpZXdEZXNjcmlwdGlvbiIgQmFz
+ZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWaWV3SWQi
+IFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUaW1lc3RhbXAi
+IFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWaWV3VmVy
+c2lvbiIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0K
+DQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQnJvd3NlRGVzY3JpcHRpb24iIEJhc2VUeXBl
+PSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9kZUlkIiBUeXBl
+TmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQnJvd3NlRGlyZWN0aW9u
+IiBUeXBlTmFtZT0idG5zOkJyb3dzZURpcmVjdGlvbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlJlZmVyZW5jZVR5cGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IkluY2x1ZGVTdWJ0eXBlcyIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9kZUNsYXNzTWFzayIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1bHRNYXNrIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJC
+cm93c2VSZXN1bHRNYXNrIiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJOb25lIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJSZWZlcmVuY2VUeXBlSWQiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IklzRm9yd2FyZCIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iTm9kZUNsYXNzIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJCcm93c2VOYW1lIiBWYWx1ZT0iOCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1
+ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVmFsdWU9IjE2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9IlR5cGVEZWZpbml0aW9uIiBWYWx1ZT0iMzIiIC8+DQogICAgPG9wYzpFbnVtZXJh
+dGVkVmFsdWUgTmFtZT0iQWxsIiBWYWx1ZT0iNjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFs
+dWUgTmFtZT0iUmVmZXJlbmNlVHlwZUluZm8iIFZhbHVlPSIzIiAvPg0KICAgIDxvcGM6RW51bWVy
+YXRlZFZhbHVlIE5hbWU9IlRhcmdldEluZm8iIFZhbHVlPSI2MCIgLz4NCiAgPC9vcGM6RW51bWVy
+YXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZWZlcmVuY2VEZXNjcmlw
+dGlvbiIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZWZlcmVuY2VUeXBlSWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJJc0ZvcndhcmQiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOkV4cGFuZGVkTm9kZUlkIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iQnJvd3NlTmFtZSIgVHlwZU5hbWU9InVhOlF1YWxpZmllZE5hbWUiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZU5hbWU9InVhOkxvY2FsaXpl
+ZFRleHQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2RlQ2xhc3MiIFR5cGVOYW1lPSJ0bnM6
+Tm9kZUNsYXNzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVHlwZURlZmluaXRpb24iIFR5cGVO
+YW1lPSJ1YTpFeHBhbmRlZE5vZGVJZCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpPcGFxdWVUeXBlIE5hbWU9IkNvbnRpbnVhdGlvblBvaW50Ij4NCiAgPC9vcGM6T3BhcXVl
+VHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkJyb3dzZVJlc3VsdCIgQmFzZVR5
+cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdGF0dXNDb2Rl
+IiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNvbnRp
+bnVhdGlvblBvaW50IiBUeXBlTmFtZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOb09mUmVmZXJlbmNlcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlZmVyZW5jZXMiIFR5cGVOYW1lPSJ0bnM6UmVmZXJlbmNlRGVzY3JpcHRp
+b24iIExlbmd0aEZpZWxkPSJOb09mUmVmZXJlbmNlcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJCcm93c2VSZXF1ZXN0IiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFk
+ZXIiIFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlZpZXciIFR5cGVOYW1lPSJ0bnM6Vmlld0Rlc2NyaXB0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmVxdWVzdGVkTWF4UmVmZXJlbmNlc1Blck5vZGUiIFR5cGVOYW1lPSJvcGM6VUludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk5vZGVzVG9Ccm93c2UiIFR5cGVOYW1lPSJv
+cGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2Rlc1RvQnJvd3NlIiBUeXBlTmFt
+ZT0idG5zOkJyb3dzZURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZk5vZGVzVG9Ccm93c2Ui
+IC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFt
+ZT0iQnJvd3NlUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFk
+ZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJ
+bnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ0bnM6QnJv
+d3NlUmVzdWx0IiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJOb09mRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0lu
+Zm8iIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1
+cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkJyb3dzZU5leHRSZXF1ZXN0
+IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJl
+cXVlc3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlJlbGVhc2VDb250aW51YXRpb25Qb2ludHMiIFR5cGVOYW1lPSJvcGM6Qm9vbGVh
+biIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZDb250aW51YXRpb25Qb2ludHMiIFR5cGVO
+YW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDb250aW51YXRpb25Qb2lu
+dHMiIFR5cGVOYW1lPSJvcGM6Qnl0ZVN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZDb250aW51YXRp
+b25Qb2ludHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJl
+ZFR5cGUgTmFtZT0iQnJvd3NlTmV4dFJlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2Jq
+ZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5z
+OlJlc3BvbnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlc3VsdHMiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1bHRzIiBUeXBl
+TmFtZT0idG5zOkJyb3dzZVJlc3VsdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZSZXN1bHRzIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVh
+OkRpYWdub3N0aWNJbmZvIiBMZW5ndGhGaWVsZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZWxh
+dGl2ZVBhdGhFbGVtZW50IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IklzSW52ZXJzZSIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iSW5jbHVkZVN1YnR5cGVzIiBUeXBlTmFtZT0ib3BjOkJvb2xl
+YW4iIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUYXJnZXROYW1lIiBUeXBlTmFtZT0idWE6UXVh
+bGlmaWVkTmFtZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJSZWxhdGl2ZVBhdGgiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3Qi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkVsZW1lbnRzIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRWxlbWVudHMiIFR5cGVOYW1lPSJ0bnM6UmVsYXRp
+dmVQYXRoRWxlbWVudCIgTGVuZ3RoRmllbGQ9Ik5vT2ZFbGVtZW50cyIgLz4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJCcm93c2VQYXRoIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXJ0
+aW5nTm9kZSIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJl
+bGF0aXZlUGF0aCIgVHlwZU5hbWU9InRuczpSZWxhdGl2ZVBhdGgiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQnJvd3NlUGF0aFRhcmdl
+dCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJU
+YXJnZXRJZCIgVHlwZU5hbWU9InVhOkV4cGFuZGVkTm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmVtYWluaW5nUGF0aEluZGV4IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJCcm93c2VQ
+YXRoUmVzdWx0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlN0YXR1c0NvZGUiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iTm9PZlRhcmdldHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJUYXJnZXRzIiBUeXBlTmFtZT0idG5zOkJyb3dzZVBhdGhUYXJnZXQiIExl
+bmd0aEZpZWxkPSJOb09mVGFyZ2V0cyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAg
+PG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc1Jl
+cXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZkJyb3dzZVBhdGhzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQnJvd3NlUGF0aHMiIFR5cGVOYW1lPSJ0bnM6QnJvd3NlUGF0
+aCIgTGVuZ3RoRmllbGQ9Ik5vT2ZCcm93c2VQYXRocyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1Rv
+Tm9kZUlkc1Jlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNlSGVhZGVy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlc3VsdHMiIFR5cGVOYW1lPSJvcGM6SW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1bHRzIiBUeXBlTmFtZT0idG5zOkJyb3dz
+ZVBhdGhSZXN1bHQiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGlj
+SW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVnaXN0ZXJOb2Rlc1Jl
+cXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZk5vZGVzVG9SZWdpc3RlciIgVHlwZU5hbWU9Im9wYzpJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVzVG9SZWdpc3RlciIgVHlwZU5hbWU9InVhOk5v
+ZGVJZCIgTGVuZ3RoRmllbGQ9Ik5vT2ZOb2Rlc1RvUmVnaXN0ZXIiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVnaXN0ZXJOb2Rlc1Jl
+c3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlc3BvbnNlSGVhZGVyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlZ2lzdGVyZWROb2RlSWRzIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVnaXN0ZXJlZE5vZGVJZHMiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIExlbmd0aEZpZWxkPSJOb09mUmVnaXN0ZXJlZE5vZGVJZHMiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iVW5yZWdp
+c3Rlck5vZGVzUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTm9kZXNUb1VucmVnaXN0ZXIiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2Rlc1RvVW5yZWdpc3RlciIg
+VHlwZU5hbWU9InVhOk5vZGVJZCIgTGVuZ3RoRmllbGQ9Ik5vT2ZOb2Rlc1RvVW5yZWdpc3RlciIg
+Lz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1l
+PSJVbnJlZ2lzdGVyTm9kZXNSZXNwb25zZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNw
+b25zZUhlYWRlciIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpPcGFxdWVU
+eXBlIE5hbWU9IkNvdW50ZXIiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxvcGM6T3BhcXVl
+VHlwZSBOYW1lPSJOdW1lcmljUmFuZ2UiPg0KICA8L29wYzpPcGFxdWVUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iRW5kcG9pbnRDb25maWd1cmF0aW9uIiBCYXNlVHlwZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik9wZXJhdGlvblRpbWVvdXQi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJVc2VCaW5hcnlF
+bmNvZGluZyIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+TWF4U3RyaW5nTGVuZ3RoIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTWF4Qnl0ZVN0cmluZ0xlbmd0aCIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik1heEFycmF5TGVuZ3RoIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTWF4TWVzc2FnZVNpemUiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhCdWZmZXJTaXplIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2hhbm5lbExpZmV0aW1lIiBUeXBlTmFtZT0i
+b3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VjdXJpdHlUb2tlbkxpZmV0aW1l
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlF1ZXJ5RGF0YURlc2NyaXB0aW9uIiBCYXNlVHlwZT0i
+dWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlbGF0aXZlUGF0aCIg
+VHlwZU5hbWU9InRuczpSZWxhdGl2ZVBhdGgiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBdHRy
+aWJ1dGVJZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJ
+bmRleFJhbmdlIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJOb2RlVHlwZURlc2NyaXB0aW9uIiBC
+YXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlR5cGVE
+ZWZpbml0aW9uTm9kZSIgVHlwZU5hbWU9InVhOkV4cGFuZGVkTm9kZUlkIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iSW5jbHVkZVN1YlR5cGVzIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGF0YVRvUmV0dXJuIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YVRvUmV0dXJuIiBUeXBlTmFtZT0idG5zOlF1
+ZXJ5RGF0YURlc2NyaXB0aW9uIiBMZW5ndGhGaWVsZD0iTm9PZkRhdGFUb1JldHVybiIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJGaWx0
+ZXJPcGVyYXRvciIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iRXF1YWxzIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJJc051bGwiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ikdy
+ZWF0ZXJUaGFuIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJM
+ZXNzVGhhbiIgVmFsdWU9IjMiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iR3Jl
+YXRlclRoYW5PckVxdWFsIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJMZXNzVGhhbk9yRXF1YWwiIFZhbHVlPSI1IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9Ikxpa2UiIFZhbHVlPSI2IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9Ik5vdCIgVmFsdWU9IjciIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQmV0
+d2VlbiIgVmFsdWU9IjgiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSW5MaXN0
+IiBWYWx1ZT0iOSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJBbmQiIFZhbHVl
+PSIxMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPciIgVmFsdWU9IjExIiAv
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkNhc3QiIFZhbHVlPSIxMiIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJJblZpZXciIFZhbHVlPSIxMyIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJPZlR5cGUiIFZhbHVlPSIxNCIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWxhdGVkVG8iIFZhbHVlPSIxNSIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJCaXR3aXNlQW5kIiBWYWx1ZT0iMTYiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iQml0d2lzZU9yIiBWYWx1ZT0iMTciIC8+DQogIDwvb3Bj
+OkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUXVlcnlEYXRh
+U2V0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vZGVJZCIgVHlwZU5hbWU9InVhOkV4cGFuZGVkTm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iVHlwZURlZmluaXRpb25Ob2RlIiBUeXBlTmFtZT0idWE6RXhwYW5kZWROb2RlSWQiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mVmFsdWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVmFsdWVzIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgTGVu
+Z3RoRmllbGQ9Ik5vT2ZWYWx1ZXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxv
+cGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTm9kZVJlZmVyZW5jZSIgQmFzZVR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2RlSWQiIFR5cGVOYW1lPSJ1YTpO
+b2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZWZlcmVuY2VUeXBlSWQiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJc0ZvcndhcmQiIFR5cGVOYW1l
+PSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZSZWZlcmVuY2VkTm9k
+ZUlkcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlZmVy
+ZW5jZWROb2RlSWRzIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiBMZW5ndGhGaWVsZD0iTm9PZlJlZmVy
+ZW5jZWROb2RlSWRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IkNvbnRlbnRGaWx0ZXJFbGVtZW50IiBCYXNlVHlwZT0idWE6RXh0ZW5z
+aW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkZpbHRlck9wZXJhdG9yIiBUeXBlTmFt
+ZT0idG5zOkZpbHRlck9wZXJhdG9yIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkZpbHRl
+ck9wZXJhbmRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+RmlsdGVyT3BlcmFuZHMiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIExlbmd0aEZpZWxk
+PSJOb09mRmlsdGVyT3BlcmFuZHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxv
+cGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQ29udGVudEZpbHRlciIgQmFzZVR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRWxlbWVudHMiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbGVtZW50cyIgVHlwZU5hbWU9
+InRuczpDb250ZW50RmlsdGVyRWxlbWVudCIgTGVuZ3RoRmllbGQ9Ik5vT2ZFbGVtZW50cyIgLz4N
+CiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJG
+aWx0ZXJPcGVyYW5kIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJFbGVtZW50T3BlcmFu
+ZCIgQmFzZVR5cGU9InRuczpGaWx0ZXJPcGVyYW5kIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Iklu
+ZGV4IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJMaXRlcmFsT3BlcmFuZCIgQmFzZVR5cGU9InRu
+czpGaWx0ZXJPcGVyYW5kIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlZhbHVlIiBUeXBlTmFtZT0i
+dWE6VmFyaWFudCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJBdHRyaWJ1dGVPcGVyYW5kIiBCYXNlVHlwZT0idG5zOkZpbHRlck9wZXJh
+bmQiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9kZUlkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQWxpYXMiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQnJvd3NlUGF0aCIgVHlwZU5hbWU9InRuczpSZWxhdGl2ZVBh
+dGgiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBdHRyaWJ1dGVJZCIgVHlwZU5hbWU9Im9wYzpV
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJbmRleFJhbmdlIiBUeXBlTmFtZT0ib3Bj
+OlN0cmluZyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiBCYXNlVHlwZT0idG5zOkZpbHRlck9w
+ZXJhbmQiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVHlwZURlZmluaXRpb25JZCIgVHlwZU5hbWU9
+InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZCcm93c2VQYXRoIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQnJvd3NlUGF0aCIgVHlw
+ZU5hbWU9InVhOlF1YWxpZmllZE5hbWUiIExlbmd0aEZpZWxkPSJOb09mQnJvd3NlUGF0aCIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkF0dHJpYnV0ZUlkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkluZGV4UmFuZ2UiIFR5cGVOYW1lPSJvcGM6U3RyaW5n
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5h
+bWU9IkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2Jq
+ZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1c0NvZGUiIFR5cGVOYW1lPSJ1YTpTdGF0
+dXNDb2RlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk9wZXJhbmRTdGF0dXNDb2RlcyIg
+VHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik9wZXJhbmRTdGF0
+dXNDb2RlcyIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mT3BlcmFu
+ZFN0YXR1c0NvZGVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk9wZXJhbmREaWFnbm9z
+dGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJP
+cGVyYW5kRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0
+aEZpZWxkPSJOb09mT3BlcmFuZERpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJDb250ZW50RmlsdGVyUmVzdWx0
+IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5v
+T2ZFbGVtZW50UmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IkVsZW1lbnRSZXN1bHRzIiBUeXBlTmFtZT0idG5zOkNvbnRlbnRGaWx0ZXJFbGVtZW50
+UmVzdWx0IiBMZW5ndGhGaWVsZD0iTm9PZkVsZW1lbnRSZXN1bHRzIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iTm9PZkVsZW1lbnREaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbGVtZW50RGlhZ25vc3RpY0luZm9zIiBUeXBlTmFt
+ZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxkPSJOb09mRWxlbWVudERpYWdub3N0aWNJ
+bmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlw
+ZSBOYW1lPSJQYXJzaW5nUmVzdWx0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1c0NvZGUiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRhdGFTdGF0dXNDb2RlcyIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRhdGFTdGF0dXNDb2RlcyIgVHlwZU5h
+bWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mRGF0YVN0YXR1c0NvZGVzIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRhdGFEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJv
+cGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEYXRhRGlhZ25vc3RpY0luZm9zIiBU
+eXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxkPSJOb09mRGF0YURpYWdub3N0
+aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJRdWVyeUZpcnN0UmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVj
+dCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJl
+cXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJWaWV3IiBUeXBlTmFtZT0idG5z
+OlZpZXdEZXNjcmlwdGlvbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZOb2RlVHlwZXMi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2RlVHlwZXMi
+IFR5cGVOYW1lPSJ0bnM6Tm9kZVR5cGVEZXNjcmlwdGlvbiIgTGVuZ3RoRmllbGQ9Ik5vT2ZOb2Rl
+VHlwZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJGaWx0ZXIiIFR5cGVOYW1lPSJ0bnM6Q29u
+dGVudEZpbHRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1heERhdGFTZXRzVG9SZXR1cm4i
+IFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWF4UmVmZXJl
+bmNlc1RvUmV0dXJuIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJRdWVyeUZpcnN0UmVzcG9uc2Ui
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mUXVlcnlEYXRhU2V0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlF1ZXJ5RGF0YVNldHMiIFR5cGVOYW1lPSJ0bnM6UXVlcnlEYXRh
+U2V0IiBMZW5ndGhGaWVsZD0iTm9PZlF1ZXJ5RGF0YVNldHMiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJDb250aW51YXRpb25Qb2ludCIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZlBhcnNpbmdSZXN1bHRzIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUGFyc2luZ1Jlc3VsdHMiIFR5cGVOYW1lPSJ0bnM6
+UGFyc2luZ1Jlc3VsdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZQYXJzaW5nUmVzdWx0cyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpE
+aWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJGaWx0ZXJSZXN1bHQiIFR5cGVOYW1lPSJ0bnM6Q29udGVudEZpbHRl
+clJlc3VsdCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJRdWVyeU5leHRSZXF1ZXN0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVx
+dWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlbGVhc2VDb250aW51YXRpb25Q
+b2ludCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ29u
+dGludWF0aW9uUG9pbnQiIFR5cGVOYW1lPSJvcGM6Qnl0ZVN0cmluZyIgLz4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJRdWVyeU5leHRSZXNw
+b25zZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZRdWVyeURhdGFTZXRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUXVlcnlEYXRhU2V0cyIgVHlwZU5hbWU9InRuczpRdWVy
+eURhdGFTZXQiIExlbmd0aEZpZWxkPSJOb09mUXVlcnlEYXRhU2V0cyIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlJldmlzZWRDb250aW51YXRpb25Qb2ludCIgVHlwZU5hbWU9Im9wYzpCeXRlU3Ry
+aW5nIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBl
+IE5hbWU9IlRpbWVzdGFtcHNUb1JldHVybiIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iU291cmNlIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJTZXJ2ZXIiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9IkJvdGgiIFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVl
+IE5hbWU9Ik5laXRoZXIiIFZhbHVlPSIzIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5h
+bWU9IkludmFsaWQiIFZhbHVlPSI0IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlYWRWYWx1ZUlkIiBCYXNlVHlwZT0idWE6RXh0ZW5z
+aW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5v
+ZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkF0dHJpYnV0ZUlkIiBUeXBlTmFtZT0ib3Bj
+OlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkluZGV4UmFuZ2UiIFR5cGVOYW1lPSJv
+cGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YUVuY29kaW5nIiBUeXBlTmFt
+ZT0idWE6UXVhbGlmaWVkTmFtZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZWFkUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lv
+bk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0i
+dG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhBZ2UiIFR5cGVO
+YW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVGltZXN0YW1wc1RvUmV0
+dXJuIiBUeXBlTmFtZT0idG5zOlRpbWVzdGFtcHNUb1JldHVybiIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZOb2Rlc1RvUmVhZCIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9Ik5vZGVzVG9SZWFkIiBUeXBlTmFtZT0idG5zOlJlYWRWYWx1ZUlkIiBMZW5n
+dGhGaWVsZD0iTm9PZk5vZGVzVG9SZWFkIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlYWRSZXNwb25zZSIgQmFzZVR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlw
+ZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZS
+ZXN1bHRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVz
+dWx0cyIgVHlwZU5hbWU9InVhOkRhdGFWYWx1ZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZSZXN1bHRzIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5h
+bWU9InVhOkRpYWdub3N0aWNJbmZvIiBMZW5ndGhGaWVsZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIg
+Lz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1l
+PSJIaXN0b3J5UmVhZFZhbHVlSWQiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9kZUlkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iSW5kZXhSYW5nZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJEYXRhRW5jb2RpbmciIFR5cGVOYW1lPSJ1YTpRdWFsaWZpZWROYW1l
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ29udGludWF0aW9uUG9pbnQiIFR5cGVOYW1lPSJv
+cGM6Qnl0ZVN0cmluZyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1
+Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5UmVhZFJlc3VsdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lv
+bk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdGF0dXNDb2RlIiBUeXBlTmFtZT0idWE6
+U3RhdHVzQ29kZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNvbnRpbnVhdGlvblBvaW50IiBU
+eXBlTmFtZT0ib3BjOkJ5dGVTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJIaXN0b3J5
+RGF0YSIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5UmVhZERldGFpbHMi
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlYWRFdmVudERldGFpbHMiIEJhc2VUeXBl
+PSJ0bnM6SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik51bVZhbHVl
+c1Blck5vZGUiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U3RhcnRUaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iRW5kVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkZpbHRlciIgVHlwZU5hbWU9InRuczpFdmVudEZpbHRlciIgLz4NCiAgPC9vcGM6U3RydWN0
+dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZWFkUmF3TW9kaWZpZWRE
+ZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3RvcnlSZWFkRGV0YWlscyI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJJc1JlYWRNb2RpZmllZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iU3RhcnRUaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iRW5kVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik51bVZhbHVlc1Blck5vZGUiIFR5cGVOYW1lPSJvcGM6VUludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmV0dXJuQm91bmRzIiBUeXBlTmFtZT0ib3BjOkJv
+b2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iUmVhZFByb2Nlc3NlZERldGFpbHMiIEJhc2VUeXBlPSJ0bnM6SGlzdG9yeVJlYWRE
+ZXRhaWxzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXJ0VGltZSIgVHlwZU5hbWU9Im9wYzpE
+YXRlVGltZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkVuZFRpbWUiIFR5cGVOYW1lPSJvcGM6
+RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQcm9jZXNzaW5nSW50ZXJ2YWwiIFR5
+cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkFnZ3JlZ2F0
+ZVR5cGUiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBZ2dy
+ZWdhdGVUeXBlIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiBMZW5ndGhGaWVsZD0iTm9PZkFnZ3JlZ2F0
+ZVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBZ2dyZWdhdGVDb25maWd1cmF0aW9uIiBU
+eXBlTmFtZT0idG5zOkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIC8+DQogIDwvb3BjOlN0cnVjdHVy
+ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmVhZEF0VGltZURldGFpbHMi
+IEJhc2VUeXBlPSJ0bnM6SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vT2ZSZXFUaW1lcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlJlcVRpbWVzIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiBMZW5ndGhGaWVsZD0iTm9PZlJl
+cVRpbWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXNlU2ltcGxlQm91bmRzIiBUeXBlTmFt
+ZT0ib3BjOkJvb2xlYW4iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iUmVhZEFubm90YXRpb25EYXRhRGV0YWlscyIgQmFzZVR5cGU9InRu
+czpIaXN0b3J5UmVhZERldGFpbHMiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlcVRpbWVz
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxVGltZXMi
+IFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIExlbmd0aEZpZWxkPSJOb09mUmVxVGltZXMiIC8+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iSGlz
+dG9yeURhdGEiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTm9PZkRhdGFWYWx1ZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJEYXRhVmFsdWVzIiBUeXBlTmFtZT0idWE6RGF0YVZhbHVlIiBMZW5ndGhGaWVs
+ZD0iTm9PZkRhdGFWYWx1ZXMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iTW9kaWZpY2F0aW9uSW5mbyIgQmFzZVR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNb2RpZmljYXRpb25UaW1lIiBUeXBl
+TmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXBkYXRlVHlwZSIg
+VHlwZU5hbWU9InRuczpIaXN0b3J5VXBkYXRlVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlVzZXJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5TW9kaWZpZWREYXRhIiBC
+YXNlVHlwZT0idG5zOkhpc3RvcnlEYXRhIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEYXRh
+VmFsdWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0
+YVZhbHVlcyIgVHlwZU5hbWU9InVhOkRhdGFWYWx1ZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZEYXRhVmFs
+dWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk1vZGlmaWNhdGlvbkluZm9zIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTW9kaWZpY2F0aW9uSW5m
+b3MiIFR5cGVOYW1lPSJ0bnM6TW9kaWZpY2F0aW9uSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZNb2Rp
+ZmljYXRpb25JbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1
+Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5RXZlbnQiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmpl
+Y3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkV2ZW50cyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkV2ZW50cyIgVHlwZU5hbWU9InRuczpIaXN0b3J5
+RXZlbnRGaWVsZExpc3QiIExlbmd0aEZpZWxkPSJOb09mRXZlbnRzIiAvPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ikhpc3RvcnlSZWFkUmVx
+dWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJIaXN0b3J5UmVhZERldGFpbHMiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25P
+YmplY3QiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIFR5cGVO
+YW1lPSJ0bnM6VGltZXN0YW1wc1RvUmV0dXJuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVs
+ZWFzZUNvbnRpbnVhdGlvblBvaW50cyIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZk5vZGVzVG9SZWFkIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTm9kZXNUb1JlYWQiIFR5cGVOYW1lPSJ0bnM6SGlzdG9yeVJl
+YWRWYWx1ZUlkIiBMZW5ndGhGaWVsZD0iTm9PZk5vZGVzVG9SZWFkIiAvPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ikhpc3RvcnlSZWFkUmVz
+cG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ0bnM6SGlzdG9yeVJlYWRSZXN1
+bHQiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5v
+T2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVu
+Z3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iV3JpdGVWYWx1ZSIgQmFzZVR5cGU9InVh
+OkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2RlSWQiIFR5cGVOYW1l
+PSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBdHRyaWJ1dGVJZCIgVHlwZU5h
+bWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJbmRleFJhbmdlIiBUeXBl
+TmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlZhbHVlIiBUeXBlTmFt
+ZT0idWE6RGF0YVZhbHVlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0
+cnVjdHVyZWRUeXBlIE5hbWU9IldyaXRlUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9i
+amVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5z
+OlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTm9kZXNUb1dyaXRl
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9kZXNUb1dy
+aXRlIiBUeXBlTmFtZT0idG5zOldyaXRlVmFsdWUiIExlbmd0aEZpZWxkPSJOb09mTm9kZXNUb1dy
+aXRlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBl
+IE5hbWU9IldyaXRlUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VI
+ZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ1YTpT
+dGF0dXNDb2RlIiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJOb09mRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0lu
+Zm8iIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1
+cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ikhpc3RvcnlVcGRhdGVEZXRh
+aWxzIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+
+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJIaXN0b3J5VXBkYXRlVHlwZSIgTGVuZ3Ro
+SW5CaXRzPSIzMiI+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iSW5zZXJ0IiBWYWx1
+ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZXBsYWNlIiBWYWx1ZT0i
+MiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVcGRhdGUiIFZhbHVlPSIzIiAv
+Pg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkRlbGV0ZSIgVmFsdWU9IjQiIC8+DQog
+IDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFtZT0iUGVy
+Zm9ybVVwZGF0ZVR5cGUiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZh
+bHVlIE5hbWU9Ikluc2VydCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUg
+TmFtZT0iUmVwbGFjZSIgVmFsdWU9IjIiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFt
+ZT0iVXBkYXRlIiBWYWx1ZT0iMyIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJS
+ZW1vdmUiIFZhbHVlPSI0IiAvPg0KICA8L29wYzpFbnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOlN0
+cnVjdHVyZWRUeXBlIE5hbWU9IlVwZGF0ZURhdGFEZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3Rv
+cnlVcGRhdGVEZXRhaWxzIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9
+InVhOk5vZGVJZCIgU291cmNlVHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUGVyZm9ybUluc2VydFJlcGxhY2UiIFR5cGVOYW1lPSJ0bnM6UGVy
+Zm9ybVVwZGF0ZVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mVXBkYXRlVmFsdWVz
+IiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXBkYXRlVmFs
+dWVzIiBUeXBlTmFtZT0idWE6RGF0YVZhbHVlIiBMZW5ndGhGaWVsZD0iTm9PZlVwZGF0ZVZhbHVl
+cyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBO
+YW1lPSJVcGRhdGVTdHJ1Y3R1cmVEYXRhRGV0YWlscyIgQmFzZVR5cGU9InRuczpIaXN0b3J5VXBk
+YXRlRGV0YWlscyI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb2RlSWQiIFR5cGVOYW1lPSJ1YTpO
+b2RlSWQiIFNvdXJjZVR5cGU9InRuczpIaXN0b3J5VXBkYXRlRGV0YWlscyIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlBlcmZvcm1JbnNlcnRSZXBsYWNlIiBUeXBlTmFtZT0idG5zOlBlcmZvcm1V
+cGRhdGVUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlVwZGF0ZVZhbHVlcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVwZGF0ZVZhbHVlcyIg
+VHlwZU5hbWU9InVhOkRhdGFWYWx1ZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZVcGRhdGVWYWx1ZXMiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+VXBkYXRlRXZlbnREZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgU291cmNl
+VHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UGVyZm9ybUluc2VydFJlcGxhY2UiIFR5cGVOYW1lPSJ0bnM6UGVyZm9ybVVwZGF0ZVR5cGUiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJGaWx0ZXIiIFR5cGVOYW1lPSJ0bnM6RXZlbnRGaWx0ZXIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRXZlbnREYXRhIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRXZlbnREYXRhIiBUeXBlTmFtZT0idG5zOkhp
+c3RvcnlFdmVudEZpZWxkTGlzdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZFdmVudERhdGEiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGVsZXRl
+UmF3TW9kaWZpZWREZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgU291cmNl
+VHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+SXNEZWxldGVNb2RpZmllZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iU3RhcnRUaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iRW5kVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgLz4NCiAgPC9vcGM6
+U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJEZWxldGVBdFRp
+bWVEZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgU291cmNlVHlwZT0idG5z
+Okhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlcVRp
+bWVzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxVGlt
+ZXMiIFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIExlbmd0aEZpZWxkPSJOb09mUmVxVGltZXMiIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+RGVsZXRlRXZlbnREZXRhaWxzIiBCYXNlVHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vZGVJZCIgVHlwZU5hbWU9InVhOk5vZGVJZCIgU291cmNl
+VHlwZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Tm9PZkV2ZW50SWRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iRXZlbnRJZHMiIFR5cGVOYW1lPSJvcGM6Qnl0ZVN0cmluZyIgTGVuZ3RoRmllbGQ9Ik5vT2ZF
+dmVudElkcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJIaXN0b3J5VXBkYXRlUmVzdWx0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2Jq
+ZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1c0NvZGUiIFR5cGVOYW1lPSJ1YTpTdGF0
+dXNDb2RlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk9wZXJhdGlvblJlc3VsdHMiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJPcGVyYXRpb25SZXN1
+bHRzIiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZPcGVyYXRpb25S
+ZXN1bHRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0aWNJbmZv
+cyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBMZW5ndGhGaWVsZD0iTm9PZkRpYWdub3N0
+aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJIaXN0b3J5VXBkYXRlUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9i
+amVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5z
+OlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mSGlzdG9yeVVwZGF0
+ZURldGFpbHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJI
+aXN0b3J5VXBkYXRlRGV0YWlscyIgVHlwZU5hbWU9InVhOkV4dGVuc2lvbk9iamVjdCIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZIaXN0b3J5VXBkYXRlRGV0YWlscyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5VXBkYXRlUmVzcG9uc2Ui
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ0bnM6SGlzdG9yeVVwZGF0ZVJlc3VsdCIg
+TGVuZ3RoRmllbGQ9Ik5vT2ZSZXN1bHRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkRp
+YWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBMZW5ndGhG
+aWVsZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJDYWxsTWV0aG9kUmVxdWVzdCIgQmFzZVR5cGU9
+InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJPYmplY3RJZCIgVHlw
+ZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1ldGhvZElkIiBUeXBl
+TmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZklucHV0QXJndW1l
+bnRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSW5wdXRB
+cmd1bWVudHMiIFR5cGVOYW1lPSJ1YTpWYXJpYW50IiBMZW5ndGhGaWVsZD0iTm9PZklucHV0QXJn
+dW1lbnRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRU
+eXBlIE5hbWU9IkNhbGxNZXRob2RSZXN1bHQiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3Qi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3RhdHVzQ29kZSIgVHlwZU5hbWU9InVhOlN0YXR1c0Nv
+ZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mSW5wdXRBcmd1bWVudFJlc3VsdHMiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJbnB1dEFyZ3VtZW50
+UmVzdWx0cyIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mSW5wdXRB
+cmd1bWVudFJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mSW5wdXRBcmd1bWVu
+dERpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IklucHV0QXJndW1lbnREaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9z
+dGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZJbnB1dEFyZ3VtZW50RGlhZ25vc3RpY0luZm9zIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk91dHB1dEFyZ3VtZW50cyIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik91dHB1dEFyZ3VtZW50cyIgVHlwZU5h
+bWU9InVhOlZhcmlhbnQiIExlbmd0aEZpZWxkPSJOb09mT3V0cHV0QXJndW1lbnRzIiAvPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNhbGxS
+ZXF1ZXN0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlJlcXVlc3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZNZXRob2RzVG9DYWxsIiBUeXBlTmFtZT0ib3BjOkludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWV0aG9kc1RvQ2FsbCIgVHlwZU5hbWU9InRuczpDYWxs
+TWV0aG9kUmVxdWVzdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZNZXRob2RzVG9DYWxsIiAvPg0KICA8L29w
+YzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkNhbGxSZXNw
+b25zZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZSZXN1bHRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUmVzdWx0cyIgVHlwZU5hbWU9InRuczpDYWxsTWV0aG9kUmVzdWx0
+IiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09m
+RGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0
+aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9Ik1vbml0b3JpbmdNb2RlIiBMZW5ndGhJbkJp
+dHM9IjMyIj4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJEaXNhYmxlZCIgVmFsdWU9
+IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iU2FtcGxpbmciIFZhbHVlPSIx
+IiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlcG9ydGluZyIgVmFsdWU9IjIi
+IC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6RW51bWVyYXRlZFR5cGUgTmFt
+ZT0iRGF0YUNoYW5nZVRyaWdnZXIiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVy
+YXRlZFZhbHVlIE5hbWU9IlN0YXR1cyIgVmFsdWU9IjAiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVk
+VmFsdWUgTmFtZT0iU3RhdHVzVmFsdWUiIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6RW51bWVyYXRl
+ZFZhbHVlIE5hbWU9IlN0YXR1c1ZhbHVlVGltZXN0YW1wIiBWYWx1ZT0iMiIgLz4NCiAgPC9vcGM6
+RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpFbnVtZXJhdGVkVHlwZSBOYW1lPSJEZWFkYmFuZFR5
+cGUiIExlbmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5v
+bmUiIFZhbHVlPSIwIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkFic29sdXRl
+IiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJQZXJjZW50IiBW
+YWx1ZT0iMiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJNb25pdG9yaW5nRmlsdGVyIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1l
+PSJEYXRhQ2hhbmdlRmlsdGVyIiBCYXNlVHlwZT0idG5zOk1vbml0b3JpbmdGaWx0ZXIiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iVHJpZ2dlciIgVHlwZU5hbWU9InRuczpEYXRhQ2hhbmdlVHJpZ2dl
+ciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlYWRiYW5kVHlwZSIgVHlwZU5hbWU9Im9wYzpV
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZWFkYmFuZFZhbHVlIiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJFdmVudEZpbHRlciIgQmFzZVR5cGU9InRuczpNb25pdG9yaW5nRmlsdGVy
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZWxlY3RDbGF1c2VzIiBUeXBlTmFtZT0ib3Bj
+OkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VsZWN0Q2xhdXNlcyIgVHlwZU5hbWU9
+InRuczpTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiBMZW5ndGhGaWVsZD0iTm9PZlNlbGVjdENsYXVz
+ZXMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJXaGVyZUNsYXVzZSIgVHlwZU5hbWU9InRuczpD
+b250ZW50RmlsdGVyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIEJhc2VUeXBlPSJ1YTpFeHRl
+bnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iVXNlU2VydmVyQ2FwYWJpbGl0aWVz
+RGVmYXVsdHMiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlRyZWF0VW5jZXJ0YWluQXNCYWQiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlBlcmNlbnREYXRhQmFkIiBUeXBlTmFtZT0ib3BjOkJ5dGUiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJQZXJjZW50RGF0YUdvb2QiIFR5cGVOYW1lPSJvcGM6Qnl0ZSIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlVzZVNsb3BlZEV4dHJhcG9sYXRpb24iIFR5cGVOYW1lPSJv
+cGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1
+cmVkVHlwZSBOYW1lPSJBZ2dyZWdhdGVGaWx0ZXIiIEJhc2VUeXBlPSJ0bnM6TW9uaXRvcmluZ0Zp
+bHRlciI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdGFydFRpbWUiIFR5cGVOYW1lPSJvcGM6RGF0
+ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBZ2dyZWdhdGVUeXBlIiBUeXBlTmFtZT0i
+dWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUHJvY2Vzc2luZ0ludGVydmFsIiBU
+eXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFnZ3JlZ2F0ZUNv
+bmZpZ3VyYXRpb24iIFR5cGVOYW1lPSJ0bnM6QWdncmVnYXRlQ29uZmlndXJhdGlvbiIgLz4NCiAg
+PC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJNb25p
+dG9yaW5nRmlsdGVyUmVzdWx0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJFdmVudEZp
+bHRlclJlc3VsdCIgQmFzZVR5cGU9InRuczpNb25pdG9yaW5nRmlsdGVyUmVzdWx0Ij4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZWxlY3RDbGF1c2VSZXN1bHRzIiBUeXBlTmFtZT0ib3BjOklu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VsZWN0Q2xhdXNlUmVzdWx0cyIgVHlwZU5h
+bWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mU2VsZWN0Q2xhdXNlUmVzdWx0cyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTZWxlY3RDbGF1c2VEaWFnbm9zdGljSW5mb3Mi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWxlY3RDbGF1
+c2VEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3RoRmll
+bGQ9Ik5vT2ZTZWxlY3RDbGF1c2VEaWFnbm9zdGljSW5mb3MiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJXaGVyZUNsYXVzZVJlc3VsdCIgVHlwZU5hbWU9InRuczpDb250ZW50RmlsdGVyUmVzdWx0
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5h
+bWU9IkFnZ3JlZ2F0ZUZpbHRlclJlc3VsdCIgQmFzZVR5cGU9InRuczpNb25pdG9yaW5nRmlsdGVy
+UmVzdWx0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJldmlzZWRTdGFydFRpbWUiIFR5cGVOYW1l
+PSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXZpc2VkUHJvY2Vzc2lu
+Z0ludGVydmFsIiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlJldmlzZWRBZ2dyZWdhdGVDb25maWd1cmF0aW9uIiBUeXBlTmFtZT0idG5zOkFnZ3JlZ2F0ZUNv
+bmZpZ3VyYXRpb24iIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0
+dXJlZFR5cGUgTmFtZT0iTW9uaXRvcmluZ1BhcmFtZXRlcnMiIEJhc2VUeXBlPSJ1YTpFeHRlbnNp
+b25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50SGFuZGxlIiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNhbXBsaW5nSW50ZXJ2YWwiIFR5
+cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRmlsdGVyIiBUeXBl
+TmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUXVldWVT
+aXplIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc2Nh
+cmRPbGRlc3QiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5
+cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJNb25pdG9yZWRJdGVtQ3JlYXRlUmVx
+dWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJJdGVtVG9Nb25pdG9yIiBUeXBlTmFtZT0idG5zOlJlYWRWYWx1ZUlkIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iTW9uaXRvcmluZ01vZGUiIFR5cGVOYW1lPSJ0bnM6TW9uaXRvcmluZ01vZGUi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0ZWRQYXJhbWV0ZXJzIiBUeXBlTmFtZT0i
+dG5zOk1vbml0b3JpbmdQYXJhbWV0ZXJzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0K
+ICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiIEJh
+c2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3RhdHVz
+Q29kZSIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJN
+b25pdG9yZWRJdGVtSWQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmV2aXNlZFNhbXBsaW5nSW50ZXJ2YWwiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iUmV2aXNlZFF1ZXVlU2l6ZSIgVHlwZU5hbWU9Im9wYzpVSW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJGaWx0ZXJSZXN1bHQiIFR5cGVOYW1lPSJ1YTpF
+eHRlbnNpb25PYmplY3QiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iQ3JlYXRlTW9uaXRvcmVkSXRlbXNSZXF1ZXN0IiBCYXNlVHlwZT0i
+dWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3RIZWFkZXIi
+IFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN1
+YnNjcmlwdGlvbklkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IlRpbWVzdGFtcHNUb1JldHVybiIgVHlwZU5hbWU9InRuczpUaW1lc3RhbXBzVG9SZXR1cm4i
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mSXRlbXNUb0NyZWF0ZSIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikl0ZW1zVG9DcmVhdGUiIFR5cGVOYW1l
+PSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiIExlbmd0aEZpZWxkPSJOb09mSXRlbXNU
+b0NyZWF0ZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVk
+VHlwZSBOYW1lPSJDcmVhdGVNb25pdG9yZWRJdGVtc1Jlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0
+ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBl
+TmFtZT0idG5zOlJlc3BvbnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJl
+c3VsdHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1
+bHRzIiBUeXBlTmFtZT0idG5zOk1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiIExlbmd0aEZpZWxk
+PSJOb09mUmVzdWx0cyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5m
+b3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9z
+dGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZE
+aWFnbm9zdGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3Ry
+dWN0dXJlZFR5cGUgTmFtZT0iTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTW9uaXRvcmVkSXRlbUlk
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcXVlc3Rl
+ZFBhcmFtZXRlcnMiIFR5cGVOYW1lPSJ0bnM6TW9uaXRvcmluZ1BhcmFtZXRlcnMiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTW9uaXRv
+cmVkSXRlbU1vZGlmeVJlc3VsdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJTdGF0dXNDb2RlIiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlJldmlzZWRTYW1wbGluZ0ludGVydmFsIiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJldmlzZWRRdWV1ZVNpemUiIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRmlsdGVyUmVzdWx0
+IiBUeXBlTmFtZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlw
+ZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ik1vZGlmeU1vbml0b3JlZEl0ZW1zUmVx
+dWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIFR5cGVOYW1lPSJ0bnM6VGlt
+ZXN0YW1wc1RvUmV0dXJuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkl0ZW1zVG9Nb2Rp
+ZnkiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJJdGVtc1Rv
+TW9kaWZ5IiBUeXBlTmFtZT0idG5zOk1vbml0b3JlZEl0ZW1Nb2RpZnlSZXF1ZXN0IiBMZW5ndGhG
+aWVsZD0iTm9PZkl0ZW1zVG9Nb2RpZnkiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQog
+IDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTW9kaWZ5TW9uaXRvcmVkSXRlbXNSZXNwb25zZSIg
+QmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNw
+b25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Ik5vT2ZSZXN1bHRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVzdWx0cyIgVHlwZU5hbWU9InRuczpNb25pdG9yZWRJdGVtTW9kaWZ5UmVz
+dWx0IiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJO
+b09mRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExl
+bmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlw
+ZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNldE1vbml0b3JpbmdNb2RlUmVxdWVz
+dCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJS
+ZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJNb25pdG9yaW5nTW9kZSIgVHlwZU5hbWU9InRuczpNb25pdG9yaW5n
+TW9kZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZNb25pdG9yZWRJdGVtSWRzIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTW9uaXRvcmVkSXRlbUlk
+cyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIExlbmd0aEZpZWxkPSJOb09mTW9uaXRvcmVkSXRlbUlk
+cyIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBO
+YW1lPSJTZXRNb25pdG9yaW5nTW9kZVJlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2Jq
+ZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBlTmFtZT0idG5z
+OlJlc3BvbnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlJlc3VsdHMiIFR5
+cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXN1bHRzIiBUeXBl
+TmFtZT0idWE6U3RhdHVzQ29kZSIgTGVuZ3RoRmllbGQ9Ik5vT2ZSZXN1bHRzIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVhOkRp
+YWdub3N0aWNJbmZvIiBMZW5ndGhGaWVsZD0iTm9PZkRpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTZXRUcmln
+Z2VyaW5nUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJUcmlnZ2VyaW5nSXRlbUlkIiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZMaW5rc1RvQWRkIiBUeXBl
+TmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTGlua3NUb0FkZCIgVHlw
+ZU5hbWU9Im9wYzpVSW50MzIiIExlbmd0aEZpZWxkPSJOb09mTGlua3NUb0FkZCIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZMaW5rc1RvUmVtb3ZlIiBUeXBlTmFtZT0ib3BjOkludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTGlua3NUb1JlbW92ZSIgVHlwZU5hbWU9Im9wYzpVSW50
+MzIiIExlbmd0aEZpZWxkPSJOb09mTGlua3NUb1JlbW92ZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTZXRUcmlnZ2VyaW5nUmVzcG9u
+c2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJOb09mQWRkUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkFkZFJlc3VsdHMiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBM
+ZW5ndGhGaWVsZD0iTm9PZkFkZFJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09m
+QWRkRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iQWRkRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8i
+IExlbmd0aEZpZWxkPSJOb09mQWRkRGlhZ25vc3RpY0luZm9zIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iTm9PZlJlbW92ZVJlc3VsdHMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJSZW1vdmVSZXN1bHRzIiBUeXBlTmFtZT0idWE6U3RhdHVzQ29kZSIgTGVu
+Z3RoRmllbGQ9Ik5vT2ZSZW1vdmVSZXN1bHRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+ZlJlbW92ZURpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlbW92ZURpYWdub3N0aWNJbmZvcyIgVHlwZU5hbWU9InVhOkRpYWdub3N0
+aWNJbmZvIiBMZW5ndGhGaWVsZD0iTm9PZlJlbW92ZURpYWdub3N0aWNJbmZvcyIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJEZWxldGVN
+b25pdG9yZWRJdGVtc1JlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVh
+ZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic2NyaXB0aW9uSWQiIFR5cGVOYW1lPSJv
+cGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk1vbml0b3JlZEl0ZW1JZHMi
+IFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNb25pdG9yZWRJ
+dGVtSWRzIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgTGVuZ3RoRmllbGQ9Ik5vT2ZNb25pdG9yZWRJ
+dGVtSWRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRU
+eXBlIE5hbWU9IkRlbGV0ZU1vbml0b3JlZEl0ZW1zUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRl
+bnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVO
+YW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVz
+dWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3Vs
+dHMiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBMZW5ndGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0ib3Bj
+OkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlhZ25vc3RpY0luZm9zIiBUeXBlTmFt
+ZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9zIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9
+IkNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3Qi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1
+ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdGVkUHVibGlzaGluZ0lu
+dGVydmFsIiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJl
+cXVlc3RlZExpZmV0aW1lQ291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVxdWVzdGVkTWF4S2VlcEFsaXZlQ291bnQiIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2gi
+IFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUHVibGlzaGlu
+Z0VuYWJsZWQiIFR5cGVOYW1lPSJvcGM6Qm9vbGVhbiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlByaW9yaXR5IiBUeXBlTmFtZT0ib3BjOkJ5dGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQ3JlYXRlU3Vic2NyaXB0aW9uUmVzcG9u
+c2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJSZXZpc2VkUHVibGlzaGluZ0ludGVydmFsIiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJldmlzZWRMaWZldGltZUNvdW50
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJldmlzZWRN
+YXhLZWVwQWxpdmVDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0cnVj
+dHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTW9kaWZ5U3Vic2NyaXB0
+aW9uUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBlTmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0ZWRQdWJsaXNoaW5nSW50ZXJ2YWwiIFR5
+cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdGVkTGlm
+ZXRpbWVDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJSZXF1ZXN0ZWRNYXhLZWVwQWxpdmVDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCIgVHlwZU5hbWU9
+Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQcmlvcml0eSIgVHlwZU5hbWU9
+Im9wYzpCeXRlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVy
+ZWRUeXBlIE5hbWU9Ik1vZGlmeVN1YnNjcmlwdGlvblJlc3BvbnNlIiBCYXNlVHlwZT0idWE6RXh0
+ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3BvbnNlSGVhZGVyIiBUeXBl
+TmFtZT0idG5zOlJlc3BvbnNlSGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmV2aXNl
+ZFB1Ymxpc2hpbmdJbnRlcnZhbCIgVHlwZU5hbWU9Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJSZXZpc2VkTGlmZXRpbWVDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXZpc2VkTWF4S2VlcEFsaXZlQ291bnQiIFR5cGVOYW1l
+PSJvcGM6VUludDMyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlUmVxdWVzdCIgQmFzZVR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXF1ZXN0SGVhZGVyIiBUeXBl
+TmFtZT0idG5zOlJlcXVlc3RIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJQdWJsaXNo
+aW5nRW5hYmxlZCIgVHlwZU5hbWU9Im9wYzpCb29sZWFuIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTm9PZlN1YnNjcmlwdGlvbklkcyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlN1YnNjcmlwdGlvbklkcyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIExlbmd0
+aEZpZWxkPSJOb09mU3Vic2NyaXB0aW9uSWRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlUmVzcG9uc2Ui
+IEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBMZW5ndGhGaWVs
+ZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGlhZ25vc3RpY0lu
+Zm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlhZ25v
+c3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxkPSJOb09m
+RGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0
+cnVjdHVyZWRUeXBlIE5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIEJhc2VUeXBlPSJ1YTpFeHRl
+bnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VxdWVuY2VOdW1iZXIiIFR5cGVO
+YW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUHVibGlzaFRpbWUiIFR5
+cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTm90aWZp
+Y2F0aW9uRGF0YSIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ik5vdGlmaWNhdGlvbkRhdGEiIFR5cGVOYW1lPSJ1YTpFeHRlbnNpb25PYmplY3QiIExlbmd0aEZp
+ZWxkPSJOb09mTm90aWZpY2F0aW9uRGF0YSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoN
+CiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJOb3RpZmljYXRpb25EYXRhIiBCYXNlVHlwZT0i
+dWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpT
+dHJ1Y3R1cmVkVHlwZSBOYW1lPSJEYXRhQ2hhbmdlTm90aWZpY2F0aW9uIiBCYXNlVHlwZT0idG5z
+Ok5vdGlmaWNhdGlvbkRhdGEiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZk1vbml0b3JlZEl0
+ZW1zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTW9uaXRv
+cmVkSXRlbXMiIFR5cGVOYW1lPSJ0bnM6TW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZNb25pdG9yZWRJdGVtcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZE
+aWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0K
+DQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIg
+QmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDbGll
+bnRIYW5kbGUiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+VmFsdWUiIFR5cGVOYW1lPSJ1YTpEYXRhVmFsdWUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBl
+Pg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRXZlbnROb3RpZmljYXRpb25MaXN0IiBC
+YXNlVHlwZT0idG5zOk5vdGlmaWNhdGlvbkRhdGEiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9P
+ZkV2ZW50cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkV2
+ZW50cyIgVHlwZU5hbWU9InRuczpFdmVudEZpZWxkTGlzdCIgTGVuZ3RoRmllbGQ9Ik5vT2ZFdmVu
+dHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUg
+TmFtZT0iRXZlbnRGaWVsZExpc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50SGFuZGxlIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZFdmVudEZpZWxkcyIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkV2ZW50RmllbGRzIiBUeXBlTmFtZT0idWE6VmFy
+aWFudCIgTGVuZ3RoRmllbGQ9Ik5vT2ZFdmVudEZpZWxkcyIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJIaXN0b3J5RXZlbnRGaWVsZExp
+c3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Tm9PZkV2ZW50RmllbGRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iRXZlbnRGaWVsZHMiIFR5cGVOYW1lPSJ1YTpWYXJpYW50IiBMZW5ndGhGaWVsZD0iTm9P
+ZkV2ZW50RmllbGRzIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IlN0YXR1c0NoYW5nZU5vdGlmaWNhdGlvbiIgQmFzZVR5cGU9InRuczpO
+b3RpZmljYXRpb25EYXRhIj4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN0YXR1cyIgVHlwZU5hbWU9
+InVhOlN0YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mbyIg
+VHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVu
+dCIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJT
+dWJzY3JpcHRpb25JZCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJTZXF1ZW5jZU51bWJlciIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3BjOlN0
+cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUHVibGlzaFJlcXVl
+c3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iTm9PZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudHMiIFR5cGVOYW1lPSJv
+cGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25BY2tub3dsZWRn
+ZW1lbnRzIiBUeXBlTmFtZT0idG5zOlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZTdWJzY3JpcHRpb25BY2tub3dsZWRnZW1lbnRzIiAvPg0KICA8L29wYzpTdHJ1
+Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlB1Ymxpc2hSZXNwb25z
+ZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJS
+ZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlN1YnNjcmlwdGlvbklkIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZBdmFpbGFibGVTZXF1ZW5jZU51bWJlcnMiIFR5cGVOYW1l
+PSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJBdmFpbGFibGVTZXF1ZW5jZU51
+bWJlcnMiIFR5cGVOYW1lPSJvcGM6VUludDMyIiBMZW5ndGhGaWVsZD0iTm9PZkF2YWlsYWJsZVNl
+cXVlbmNlTnVtYmVycyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1vcmVOb3RpZmljYXRpb25z
+IiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb3RpZmlj
+YXRpb25NZXNzYWdlIiBUeXBlTmFtZT0idG5zOk5vdGlmaWNhdGlvbk1lc3NhZ2UiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVOYW1lPSJ1YTpTdGF0dXNDb2RlIiBMZW5n
+dGhGaWVsZD0iTm9PZlJlc3VsdHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mRGlhZ25v
+c3RpY0luZm9zIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+RGlhZ25vc3RpY0luZm9zIiBUeXBlTmFtZT0idWE6RGlhZ25vc3RpY0luZm8iIExlbmd0aEZpZWxk
+PSJOb09mRGlhZ25vc3RpY0luZm9zIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlcHVibGlzaFJlcXVlc3QiIEJhc2VUeXBlPSJ1YTpF
+eHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlw
+ZU5hbWU9InRuczpSZXF1ZXN0SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic2Ny
+aXB0aW9uSWQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+UmV0cmFuc21pdFNlcXVlbmNlTnVtYmVyIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9v
+cGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJSZXB1Ymxp
+c2hSZXNwb25zZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRuczpSZXNwb25zZUhlYWRlciIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIFR5cGVOYW1lPSJ0bnM6
+Tm90aWZpY2F0aW9uTWVzc2FnZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUcmFuc2ZlclJlc3VsdCIgQmFzZVR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdGF0dXNDb2RlIiBUeXBlTmFtZT0i
+dWE6U3RhdHVzQ29kZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZBdmFpbGFibGVTZXF1
+ZW5jZU51bWJlcnMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJBdmFpbGFibGVTZXF1ZW5jZU51bWJlcnMiIFR5cGVOYW1lPSJvcGM6VUludDMyIiBMZW5ndGhG
+aWVsZD0iTm9PZkF2YWlsYWJsZVNlcXVlbmNlTnVtYmVycyIgLz4NCiAgPC9vcGM6U3RydWN0dXJl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJUcmFuc2ZlclN1YnNjcmlwdGlv
+bnNSZXF1ZXN0IiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlJlcXVlc3RIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZTdWJzY3JpcHRpb25JZHMiIFR5cGVOYW1lPSJvcGM6SW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTdWJzY3JpcHRpb25JZHMiIFR5cGVOYW1lPSJv
+cGM6VUludDMyIiBMZW5ndGhGaWVsZD0iTm9PZlN1YnNjcmlwdGlvbklkcyIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlNlbmRJbml0aWFsVmFsdWVzIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4iIC8+
+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0i
+VHJhbnNmZXJTdWJzY3JpcHRpb25zUmVzcG9uc2UiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmpl
+Y3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzcG9uc2VIZWFkZXIiIFR5cGVOYW1lPSJ0bnM6
+UmVzcG9uc2VIZWFkZXIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mUmVzdWx0cyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlc3VsdHMiIFR5cGVO
+YW1lPSJ0bnM6VHJhbnNmZXJSZXN1bHQiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1
+YTpEaWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRGVs
+ZXRlU3Vic2NyaXB0aW9uc1JlcXVlc3QiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iUmVxdWVzdEhlYWRlciIgVHlwZU5hbWU9InRuczpSZXF1ZXN0
+SGVhZGVyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZlN1YnNjcmlwdGlvbklkcyIgVHlw
+ZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlN1YnNjcmlwdGlvbklk
+cyIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIExlbmd0aEZpZWxkPSJOb09mU3Vic2NyaXB0aW9uSWRz
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5h
+bWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXNwb25zZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9i
+amVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZXNwb25zZUhlYWRlciIgVHlwZU5hbWU9InRu
+czpSZXNwb25zZUhlYWRlciIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZSZXN1bHRzIiBU
+eXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVzdWx0cyIgVHlw
+ZU5hbWU9InVhOlN0YXR1c0NvZGUiIExlbmd0aEZpZWxkPSJOb09mUmVzdWx0cyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaWFnbm9zdGljSW5mb3MiIFR5cGVOYW1lPSJ1YTpE
+aWFnbm9zdGljSW5mbyIgTGVuZ3RoRmllbGQ9Ik5vT2ZEaWFnbm9zdGljSW5mb3MiIC8+DQogIDwv
+b3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iQnVpbGRJ
+bmZvIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlByb2R1Y3RVcmkiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTWFudWZhY3R1cmVyTmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJQcm9kdWN0TmFtZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJTb2Z0d2FyZVZlcnNpb24iIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iQnVpbGROdW1iZXIiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQnVpbGREYXRlIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1l
+IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5h
+bWU9IlJlZHVuZGFuY3lTdXBwb3J0IiBMZW5ndGhJbkJpdHM9IjMyIj4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJOb25lIiBWYWx1ZT0iMCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRW
+YWx1ZSBOYW1lPSJDb2xkIiBWYWx1ZT0iMSIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBO
+YW1lPSJXYXJtIiBWYWx1ZT0iMiIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJI
+b3QiIFZhbHVlPSIzIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlRyYW5zcGFy
+ZW50IiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJIb3RBbmRN
+aXJyb3JlZCIgVmFsdWU9IjUiIC8+DQogIDwvb3BjOkVudW1lcmF0ZWRUeXBlPg0KDQogIDxvcGM6
+RW51bWVyYXRlZFR5cGUgTmFtZT0iU2VydmVyU3RhdGUiIExlbmd0aEluQml0cz0iMzIiPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJ1bm5pbmciIFZhbHVlPSIwIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZhaWxlZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9Db25maWd1cmF0aW9uIiBWYWx1ZT0iMiIgLz4NCiAgICA8
+b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJTdXNwZW5kZWQiIFZhbHVlPSIzIiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNodXRkb3duIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3Bj
+OkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUZXN0IiBWYWx1ZT0iNSIgLz4NCiAgICA8b3BjOkVudW1l
+cmF0ZWRWYWx1ZSBOYW1lPSJDb21tdW5pY2F0aW9uRmF1bHQiIFZhbHVlPSI2IiAvPg0KICAgIDxv
+cGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlVua25vd24iIFZhbHVlPSI3IiAvPg0KICA8L29wYzpF
+bnVtZXJhdGVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlJlZHVuZGFudFNl
+cnZlckRhdGFUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlNlcnZlcklkIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9IlNlcnZpY2VMZXZlbCIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iU2VydmVyU3RhdGUiIFR5cGVOYW1lPSJ0bnM6U2VydmVyU3RhdGUiIC8+DQog
+IDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iRW5k
+cG9pbnRVcmxMaXN0RGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTm9PZkVuZHBvaW50VXJsTGlzdCIgVHlwZU5hbWU9Im9wYzpJbnQz
+MiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkVuZHBvaW50VXJsTGlzdCIgVHlwZU5hbWU9Im9w
+YzpTdHJpbmciIExlbmd0aEZpZWxkPSJOb09mRW5kcG9pbnRVcmxMaXN0IiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9Ik5ldHdvcmtHcm91
+cERhdGFUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlNlcnZlclVyaSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOb09mTmV0d29ya1BhdGhzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTmV0d29ya1BhdGhzIiBUeXBlTmFtZT0idG5zOkVuZHBvaW50VXJsTGlz
+dERhdGFUeXBlIiBMZW5ndGhGaWVsZD0iTm9PZk5ldHdvcmtQYXRocyIgLz4NCiAgPC9vcGM6U3Ry
+dWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTYW1wbGluZ0ludGVy
+dmFsRGlhZ25vc3RpY3NEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJTYW1wbGluZ0ludGVydmFsIiBUeXBlTmFtZT0ib3BjOkRvdWJs
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1vbml0b3JlZEl0ZW1Db3VudCIgVHlwZU5hbWU9
+Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhNb25pdG9yZWRJdGVtQ291
+bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzYWJs
+ZWRNb25pdG9yZWRJdGVtQ291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNlcnZlckRpYWdu
+b3N0aWNzU3VtbWFyeURhdGFUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlNlcnZlclZpZXdDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDdXJyZW50U2Vzc2lvbkNvdW50IiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkN1bXVsYXRlZFNlc3Npb25Db3Vu
+dCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0
+eVJlamVjdGVkU2Vzc2lvbkNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlJlamVjdGVkU2Vzc2lvbkNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlc3Npb25UaW1lb3V0Q291bnQiIFR5cGVOYW1lPSJv
+cGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2Vzc2lvbkFib3J0Q291bnQiIFR5
+cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ3VycmVudFN1YnNj
+cmlwdGlvbkNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5h
+bWU9IkN1bXVsYXRlZFN1YnNjcmlwdGlvbkNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbENvdW50IiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNlY3VyaXR5UmVqZWN0ZWRSZXF1
+ZXN0c0NvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlJlamVjdGVkUmVxdWVzdHNDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogIDwvb3Bj
+OlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iU2VydmVyU3Rh
+dHVzRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iU3RhcnRUaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iQ3VycmVudFRpbWUiIFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJTdGF0ZSIgVHlwZU5hbWU9InRuczpTZXJ2ZXJTdGF0ZSIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkJ1aWxkSW5mbyIgVHlwZU5hbWU9InRuczpCdWlsZEluZm8iIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWNvbmRzVGlsbFNodXRkb3duIiBUeXBlTmFtZT0ib3Bj
+OlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlNodXRkb3duUmVhc29uIiBUeXBlTmFt
+ZT0idWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9w
+YzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgQmFzZVR5
+cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXNzaW9uSWQi
+IFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXNzaW9uTmFt
+ZSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDbGllbnRE
+ZXNjcmlwdGlvbiIgVHlwZU5hbWU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iU2VydmVyVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkVuZHBvaW50VXJsIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9Ik5vT2ZMb2NhbGVJZHMiIFR5cGVOYW1lPSJvcGM6SW50MzIi
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJMb2NhbGVJZHMiIFR5cGVOYW1lPSJvcGM6U3RyaW5n
+IiBMZW5ndGhGaWVsZD0iTm9PZkxvY2FsZUlkcyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFj
+dHVhbFNlc3Npb25UaW1lb3V0IiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZp
+ZWxkIE5hbWU9Ik1heFJlc3BvbnNlTWVzc2FnZVNpemUiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ2xpZW50Q29ubmVjdGlvblRpbWUiIFR5cGVOYW1lPSJv
+cGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDbGllbnRMYXN0Q29udGFjdFRp
+bWUiIFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDdXJy
+ZW50U3Vic2NyaXB0aW9uc0NvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IkN1cnJlbnRNb25pdG9yZWRJdGVtc0NvdW50IiBUeXBlTmFtZT0ib3BjOlVJ
+bnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkN1cnJlbnRQdWJsaXNoUmVxdWVzdHNJblF1
+ZXVlIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRvdGFs
+UmVxdWVzdENvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJVbmF1dGhvcml6ZWRSZXF1ZXN0Q291bnQiIFR5cGVOYW1lPSJv
+cGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVhZENvdW50IiBUeXBlTmFtZT0i
+dG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJIaXN0
+b3J5UmVhZENvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJXcml0ZUNvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3Vu
+dGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJIaXN0b3J5VXBkYXRlQ291bnQi
+IFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IkNhbGxDb3VudCIgVHlwZU5hbWU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ3JlYXRlTW9uaXRvcmVkSXRlbXNDb3VudCIgVHlwZU5h
+bWU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+TW9kaWZ5TW9uaXRvcmVkSXRlbXNDb3VudCIgVHlwZU5hbWU9InRuczpTZXJ2aWNlQ291bnRlckRh
+dGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2V0TW9uaXRvcmluZ01vZGVDb3VudCIg
+VHlwZU5hbWU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iU2V0VHJpZ2dlcmluZ0NvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0
+YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEZWxldGVNb25pdG9yZWRJdGVtc0NvdW50
+IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJDcmVhdGVTdWJzY3JpcHRpb25Db3VudCIgVHlwZU5hbWU9InRuczpTZXJ2aWNlQ291
+bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9u
+Q291bnQiIFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlQ291bnQiIFR5cGVOYW1lPSJ0bnM6U2Vydmlj
+ZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlB1Ymxpc2hDb3VudCIg
+VHlwZU5hbWU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iUmVwdWJsaXNoQ291bnQiIFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlw
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRyYW5zZmVyU3Vic2NyaXB0aW9uc0NvdW50IiBU
+eXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJEZWxldGVTdWJzY3JpcHRpb25zQ291bnQiIFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50
+ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkFkZE5vZGVzQ291bnQiIFR5cGVO
+YW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IkFkZFJlZmVyZW5jZXNDb3VudCIgVHlwZU5hbWU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBl
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVsZXRlTm9kZXNDb3VudCIgVHlwZU5hbWU9InRu
+czpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGVsZXRl
+UmVmZXJlbmNlc0NvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJCcm93c2VDb3VudCIgVHlwZU5hbWU9InRuczpTZXJ2aWNl
+Q291bnRlckRhdGFUeXBlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQnJvd3NlTmV4dENvdW50
+IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJUcmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc0NvdW50IiBUeXBlTmFtZT0idG5z
+OlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJRdWVyeUZp
+cnN0Q291bnQiIFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlF1ZXJ5TmV4dENvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3Vu
+dGVyRGF0YVR5cGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZWdpc3Rlck5vZGVzQ291bnQi
+IFR5cGVOYW1lPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9IlVucmVnaXN0ZXJOb2Rlc0NvdW50IiBUeXBlTmFtZT0idG5zOlNlcnZpY2VDb3VudGVy
+RGF0YVR5cGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJl
+ZFR5cGUgTmFtZT0iU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIgQmFzZVR5cGU9
+InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZXNzaW9uSWQiIFR5
+cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJDbGllbnRVc2VySWRP
+ZlNlc3Npb24iIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+Tm9PZkNsaWVudFVzZXJJZEhpc3RvcnkiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJDbGllbnRVc2VySWRIaXN0b3J5IiBUeXBlTmFtZT0ib3BjOlN0cmluZyIg
+TGVuZ3RoRmllbGQ9Ik5vT2ZDbGllbnRVc2VySWRIaXN0b3J5IiAvPg0KICAgIDxvcGM6RmllbGQg
+TmFtZT0iQXV0aGVudGljYXRpb25NZWNoYW5pc20iIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iRW5jb2RpbmciIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iVHJhbnNwb3J0UHJvdG9jb2wiIFR5cGVOYW1lPSJvcGM6U3Ry
+aW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2VjdXJpdHlNb2RlIiBUeXBlTmFtZT0idG5z
+Ok1lc3NhZ2VTZWN1cml0eU1vZGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJTZWN1cml0eVBv
+bGljeVVyaSIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJD
+bGllbnRDZXJ0aWZpY2F0ZSIgVHlwZU5hbWU9Im9wYzpCeXRlU3RyaW5nIiAvPg0KICA8L29wYzpT
+dHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNlcnZpY2VDb3Vu
+dGVyRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6Rmll
+bGQgTmFtZT0iVG90YWxDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJFcnJvckNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgPC9vcGM6
+U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJTdGF0dXNSZXN1
+bHQiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+U3RhdHVzQ29kZSIgVHlwZU5hbWU9InVhOlN0YXR1c0NvZGUiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJEaWFnbm9zdGljSW5mbyIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiAvPg0KICA8
+L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlN1YnNj
+cmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3Qi
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU2Vzc2lvbklkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAv
+Pg0KICAgIDxvcGM6RmllbGQgTmFtZT0iU3Vic2NyaXB0aW9uSWQiIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUHJpb3JpdHkiIFR5cGVOYW1lPSJvcGM6Qnl0
+ZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbCIgVHlwZU5hbWU9
+Im9wYzpEb3VibGUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhLZWVwQWxpdmVDb3VudCIg
+VHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNYXhMaWZldGlt
+ZUNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ik1h
+eE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoIiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlB1Ymxpc2hpbmdFbmFibGVkIiBUeXBlTmFtZT0ib3BjOkJvb2xlYW4i
+IC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNb2RpZnlDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50
+MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFbmFibGVDb3VudCIgVHlwZU5hbWU9Im9wYzpV
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJEaXNhYmxlQ291bnQiIFR5cGVOYW1lPSJv
+cGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iUmVwdWJsaXNoUmVxdWVzdENvdW50
+IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlcHVibGlz
+aE1lc3NhZ2VSZXF1ZXN0Q291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6
+RmllbGQgTmFtZT0iUmVwdWJsaXNoTWVzc2FnZUNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRyYW5zZmVyUmVxdWVzdENvdW50IiBUeXBlTmFtZT0i
+b3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRyYW5zZmVycmVkVG9BbHRDbGll
+bnRDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJU
+cmFuc2ZlcnJlZFRvU2FtZUNsaWVudENvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IlB1Ymxpc2hSZXF1ZXN0Q291bnQiIFR5cGVOYW1lPSJvcGM6VUlu
+dDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbnNDb3Vu
+dCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJFdmVudE5v
+dGlmaWNhdGlvbnNDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+DQogICAgPG9wYzpGaWVs
+ZCBOYW1lPSJOb3RpZmljYXRpb25zQ291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iTGF0ZVB1Ymxpc2hSZXF1ZXN0Q291bnQiIFR5cGVOYW1lPSJvcGM6
+VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iQ3VycmVudEtlZXBBbGl2ZUNvdW50IiBU
+eXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkN1cnJlbnRMaWZl
+dGltZUNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IlVuYWNrbm93bGVkZ2VkTWVzc2FnZUNvdW50IiBUeXBlTmFtZT0ib3BjOlVJbnQzMiIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9IkRpc2NhcmRlZE1lc3NhZ2VDb3VudCIgVHlwZU5hbWU9Im9wYzpV
+SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJNb25pdG9yZWRJdGVtQ291bnQiIFR5cGVO
+YW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRGlzYWJsZWRNb25pdG9y
+ZWRJdGVtQ291bnQiIFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTW9uaXRvcmluZ1F1ZXVlT3ZlcmZsb3dDb3VudCIgVHlwZU5hbWU9Im9wYzpVSW50MzIiIC8+
+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOZXh0U2VxdWVuY2VOdW1iZXIiIFR5cGVOYW1lPSJvcGM6
+VUludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRXZlbnRRdWV1ZU92ZXJGbG93Q291bnQi
+IFR5cGVOYW1lPSJvcGM6VUludDMyIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9Ik1vZGVsQ2hhbmdlU3RydWN0dXJlVmVyYk1hc2siIExl
+bmd0aEluQml0cz0iMzIiPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9Ik5vZGVBZGRl
+ZCIgVmFsdWU9IjEiIC8+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTm9kZURlbGV0
+ZWQiIFZhbHVlPSIyIiAvPg0KICAgIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlJlZmVyZW5j
+ZUFkZGVkIiBWYWx1ZT0iNCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJSZWZl
+cmVuY2VEZWxldGVkIiBWYWx1ZT0iOCIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1l
+PSJEYXRhVHlwZUNoYW5nZWQiIFZhbHVlPSIxNiIgLz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+
+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFU
+eXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+IkFmZmVjdGVkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0i
+QWZmZWN0ZWRUeXBlIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iVmVyYiIgVHlwZU5hbWU9Im9wYzpCeXRlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4N
+Cg0KICA8b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0
+YVR5cGUiIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iQWZmZWN0ZWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1l
+PSJBZmZlY3RlZFR5cGUiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQogIDwvb3BjOlN0cnVjdHVy
+ZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUmFuZ2UiIEJhc2VUeXBlPSJ1
+YTpFeHRlbnNpb25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTG93IiBUeXBlTmFtZT0i
+b3BjOkRvdWJsZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkhpZ2giIFR5cGVOYW1lPSJvcGM6
+RG91YmxlIiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVjdHVyZWRU
+eXBlIE5hbWU9IkVVSW5mb3JtYXRpb24iIEJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiPg0K
+ICAgIDxvcGM6RmllbGQgTmFtZT0iTmFtZXNwYWNlVXJpIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlVuaXRJZCIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4N
+CiAgICA8b3BjOkZpZWxkIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlTmFtZT0idWE6TG9jYWxpemVk
+VGV4dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkRlc2NyaXB0aW9uIiBUeXBlTmFtZT0idWE6
+TG9jYWxpemVkVGV4dCIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpFbnVt
+ZXJhdGVkVHlwZSBOYW1lPSJBeGlzU2NhbGVFbnVtZXJhdGlvbiIgTGVuZ3RoSW5CaXRzPSIzMiI+
+DQogICAgPG9wYzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iTGluZWFyIiBWYWx1ZT0iMCIgLz4NCiAg
+ICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJMb2ciIFZhbHVlPSIxIiAvPg0KICAgIDxvcGM6
+RW51bWVyYXRlZFZhbHVlIE5hbWU9IkxuIiBWYWx1ZT0iMiIgLz4NCiAgPC9vcGM6RW51bWVyYXRl
+ZFR5cGU+DQoNCiAgPG9wYzpTdHJ1Y3R1cmVkVHlwZSBOYW1lPSJDb21wbGV4TnVtYmVyVHlwZSIg
+QmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJSZWFs
+IiBUeXBlTmFtZT0ib3BjOkZsb2F0IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSW1hZ2luYXJ5
+IiBUeXBlTmFtZT0ib3BjOkZsb2F0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8
+b3BjOlN0cnVjdHVyZWRUeXBlIE5hbWU9IkRvdWJsZUNvbXBsZXhOdW1iZXJUeXBlIiBCYXNlVHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlJlYWwiIFR5cGVO
+YW1lPSJvcGM6RG91YmxlIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSW1hZ2luYXJ5IiBUeXBl
+TmFtZT0ib3BjOkRvdWJsZSIgLz4NCiAgPC9vcGM6U3RydWN0dXJlZFR5cGU+DQoNCiAgPG9wYzpT
+dHJ1Y3R1cmVkVHlwZSBOYW1lPSJBeGlzSW5mb3JtYXRpb24iIEJhc2VUeXBlPSJ1YTpFeHRlbnNp
+b25PYmplY3QiPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRW5naW5lZXJpbmdVbml0cyIgVHlwZU5h
+bWU9InRuczpFVUluZm9ybWF0aW9uIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iRVVSYW5nZSIg
+VHlwZU5hbWU9InRuczpSYW5nZSIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlRpdGxlIiBUeXBl
+TmFtZT0idWE6TG9jYWxpemVkVGV4dCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkF4aXNTY2Fs
+ZVR5cGUiIFR5cGVOYW1lPSJ0bnM6QXhpc1NjYWxlRW51bWVyYXRpb24iIC8+DQogICAgPG9wYzpG
+aWVsZCBOYW1lPSJOb09mQXhpc1N0ZXBzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iQXhpc1N0ZXBzIiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgTGVuZ3RoRmll
+bGQ9Ik5vT2ZBeGlzU3RlcHMiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6
+U3RydWN0dXJlZFR5cGUgTmFtZT0iWFZUeXBlIiBCYXNlVHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0
+Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IlgiIFR5cGVOYW1lPSJvcGM6RG91YmxlIiAvPg0KICAg
+IDxvcGM6RmllbGQgTmFtZT0iVmFsdWUiIFR5cGVOYW1lPSJvcGM6RmxvYXQiIC8+DQogIDwvb3Bj
+OlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5cGUgTmFtZT0iUHJvZ3JhbURp
+YWdub3N0aWNEYXRhVHlwZSIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAgPG9w
+YzpGaWVsZCBOYW1lPSJDcmVhdGVTZXNzaW9uSWQiIFR5cGVOYW1lPSJ1YTpOb2RlSWQiIC8+DQog
+ICAgPG9wYzpGaWVsZCBOYW1lPSJDcmVhdGVDbGllbnROYW1lIiBUeXBlTmFtZT0ib3BjOlN0cmlu
+ZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikludm9jYXRpb25DcmVhdGlvblRpbWUiIFR5cGVO
+YW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJMYXN0VHJhbnNpdGlv
+blRpbWUiIFR5cGVOYW1lPSJvcGM6RGF0ZVRpbWUiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJM
+YXN0TWV0aG9kQ2FsbCIgVHlwZU5hbWU9Im9wYzpTdHJpbmciIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJMYXN0TWV0aG9kU2Vzc2lvbklkIiBUeXBlTmFtZT0idWE6Tm9kZUlkIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTm9PZkxhc3RNZXRob2RJbnB1dEFyZ3VtZW50cyIgVHlwZU5hbWU9Im9w
+YzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikxhc3RNZXRob2RJbnB1dEFyZ3VtZW50
+cyIgVHlwZU5hbWU9InRuczpBcmd1bWVudCIgTGVuZ3RoRmllbGQ9Ik5vT2ZMYXN0TWV0aG9kSW5w
+dXRBcmd1bWVudHMiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTGFzdE1ldGhvZE91dHB1
+dEFyZ3VtZW50cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9
+Ikxhc3RNZXRob2RPdXRwdXRBcmd1bWVudHMiIFR5cGVOYW1lPSJ0bnM6QXJndW1lbnQiIExlbmd0
+aEZpZWxkPSJOb09mTGFzdE1ldGhvZE91dHB1dEFyZ3VtZW50cyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ikxhc3RNZXRob2RDYWxsVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgLz4NCiAg
+ICA8b3BjOkZpZWxkIE5hbWU9Ikxhc3RNZXRob2RSZXR1cm5TdGF0dXMiIFR5cGVOYW1lPSJ0bnM6
+U3RhdHVzUmVzdWx0IiAvPg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOlN0cnVj
+dHVyZWRUeXBlIE5hbWU9IlByb2dyYW1EaWFnbm9zdGljMkRhdGFUeXBlIiBCYXNlVHlwZT0idWE6
+RXh0ZW5zaW9uT2JqZWN0Ij4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNyZWF0ZVNlc3Npb25JZCIg
+VHlwZU5hbWU9InVhOk5vZGVJZCIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9IkNyZWF0ZUNsaWVu
+dE5hbWUiIFR5cGVOYW1lPSJvcGM6U3RyaW5nIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iSW52
+b2NhdGlvbkNyZWF0aW9uVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIgLz4NCiAgICA8b3Bj
+OkZpZWxkIE5hbWU9Ikxhc3RUcmFuc2l0aW9uVGltZSIgVHlwZU5hbWU9Im9wYzpEYXRlVGltZSIg
+Lz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikxhc3RNZXRob2RDYWxsIiBUeXBlTmFtZT0ib3BjOlN0
+cmluZyIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikxhc3RNZXRob2RTZXNzaW9uSWQiIFR5cGVO
+YW1lPSJ1YTpOb2RlSWQiIC8+DQogICAgPG9wYzpGaWVsZCBOYW1lPSJOb09mTGFzdE1ldGhvZElu
+cHV0QXJndW1lbnRzIiBUeXBlTmFtZT0ib3BjOkludDMyIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTGFzdE1ldGhvZElucHV0QXJndW1lbnRzIiBUeXBlTmFtZT0idG5zOkFyZ3VtZW50IiBMZW5n
+dGhGaWVsZD0iTm9PZkxhc3RNZXRob2RJbnB1dEFyZ3VtZW50cyIgLz4NCiAgICA8b3BjOkZpZWxk
+IE5hbWU9Ik5vT2ZMYXN0TWV0aG9kT3V0cHV0QXJndW1lbnRzIiBUeXBlTmFtZT0ib3BjOkludDMy
+IiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTGFzdE1ldGhvZE91dHB1dEFyZ3VtZW50cyIgVHlw
+ZU5hbWU9InRuczpBcmd1bWVudCIgTGVuZ3RoRmllbGQ9Ik5vT2ZMYXN0TWV0aG9kT3V0cHV0QXJn
+dW1lbnRzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkxhc3RNZXRob2RJbnB1dFZhbHVl
+cyIgVHlwZU5hbWU9Im9wYzpJbnQzMiIgLz4NCiAgICA8b3BjOkZpZWxkIE5hbWU9Ikxhc3RNZXRo
+b2RJbnB1dFZhbHVlcyIgVHlwZU5hbWU9InVhOlZhcmlhbnQiIExlbmd0aEZpZWxkPSJOb09mTGFz
+dE1ldGhvZElucHV0VmFsdWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFtZT0iTm9PZkxhc3RNZXRo
+b2RPdXRwdXRWYWx1ZXMiIFR5cGVOYW1lPSJvcGM6SW50MzIiIC8+DQogICAgPG9wYzpGaWVsZCBO
+YW1lPSJMYXN0TWV0aG9kT3V0cHV0VmFsdWVzIiBUeXBlTmFtZT0idWE6VmFyaWFudCIgTGVuZ3Ro
+RmllbGQ9Ik5vT2ZMYXN0TWV0aG9kT3V0cHV0VmFsdWVzIiAvPg0KICAgIDxvcGM6RmllbGQgTmFt
+ZT0iTGFzdE1ldGhvZENhbGxUaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAvPg0KICAgIDxv
+cGM6RmllbGQgTmFtZT0iTGFzdE1ldGhvZFJldHVyblN0YXR1cyIgVHlwZU5hbWU9InVhOlN0YXR1
+c0NvZGUiIC8+DQogIDwvb3BjOlN0cnVjdHVyZWRUeXBlPg0KDQogIDxvcGM6U3RydWN0dXJlZFR5
+cGUgTmFtZT0iQW5ub3RhdGlvbiIgQmFzZVR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCI+DQogICAg
+PG9wYzpGaWVsZCBOYW1lPSJNZXNzYWdlIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IlVzZXJOYW1lIiBUeXBlTmFtZT0ib3BjOlN0cmluZyIgLz4NCiAgICA8
+b3BjOkZpZWxkIE5hbWU9IkFubm90YXRpb25UaW1lIiBUeXBlTmFtZT0ib3BjOkRhdGVUaW1lIiAv
+Pg0KICA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4NCg0KICA8b3BjOkVudW1lcmF0ZWRUeXBlIE5hbWU9
+IkV4Y2VwdGlvbkRldmlhdGlvbkZvcm1hdCIgTGVuZ3RoSW5CaXRzPSIzMiI+DQogICAgPG9wYzpF
+bnVtZXJhdGVkVmFsdWUgTmFtZT0iQWJzb2x1dGVWYWx1ZSIgVmFsdWU9IjAiIC8+DQogICAgPG9w
+YzpFbnVtZXJhdGVkVmFsdWUgTmFtZT0iUGVyY2VudE9mVmFsdWUiIFZhbHVlPSIxIiAvPg0KICAg
+IDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlBlcmNlbnRPZlJhbmdlIiBWYWx1ZT0iMiIgLz4N
+CiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJQZXJjZW50T2ZFVVJhbmdlIiBWYWx1ZT0i
+MyIgLz4NCiAgICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVbmtub3duIiBWYWx1ZT0iNCIg
+Lz4NCiAgPC9vcGM6RW51bWVyYXRlZFR5cGU+DQoNCjwvb3BjOlR5cGVEaWN0aW9uYXJ5Pg==
+
+
+
+ NamespaceUri
+
+ i=68
+ i=7617
+
+
+ http://opcfoundation.org/UA/
+
+
+
+ Deprecated
+
+ i=68
+ i=7617
+
+
+ true
+
+
+
+ Union
+
+ i=69
+ i=7617
+
+
+ Union
+
+
+
+ KeyValuePair
+
+ i=69
+ i=7617
+
+
+ KeyValuePair
+
+
+
+ AdditionalParametersType
+
+ i=69
+ i=7617
+
+
+ AdditionalParametersType
+
+
+
+ EphemeralKeyType
+
+ i=69
+ i=7617
+
+
+ EphemeralKeyType
+
+
+
+ EndpointType
+
+ i=69
+ i=7617
+
+
+ EndpointType
+
+
+
+ RationalNumber
+
+ i=69
+ i=7617
+
+
+ RationalNumber
+
+
+
+ Vector
+
+ i=69
+ i=7617
+
+
+ Vector
+
+
+
+ 3DVector
+
+ i=69
+ i=7617
+
+
+ ThreeDVector
+
+
+
+ CartesianCoordinates
+
+ i=69
+ i=7617
+
+
+ CartesianCoordinates
+
+
+
+ 3DCartesianCoordinates
+
+ i=69
+ i=7617
+
+
+ ThreeDCartesianCoordinates
+
+
+
+ Orientation
+
+ i=69
+ i=7617
+
+
+ Orientation
+
+
+
+ 3DOrientation
+
+ i=69
+ i=7617
+
+
+ ThreeDOrientation
+
+
+
+ Frame
+
+ i=69
+ i=7617
+
+
+ Frame
+
+
+
+ 3DFrame
+
+ i=69
+ i=7617
+
+
+ ThreeDFrame
+
+
+
+ IdentityMappingRuleType
+
+ i=69
+ i=7617
+
+
+ IdentityMappingRuleType
+
+
+
+ CurrencyUnitType
+
+ i=69
+ i=7617
+
+
+ CurrencyUnitType
+
+
+
+ TrustListDataType
+
+ i=69
+ i=7617
+
+
+ TrustListDataType
+
+
+
+ TransactionErrorType
+
+ i=69
+ i=7617
+
+
+ TransactionErrorType
+
+
+
+ DataTypeSchemaHeader
+
+ i=69
+ i=7617
+
+
+ DataTypeSchemaHeader
+
+
+
+ DataTypeDescription
+
+ i=69
+ i=7617
+
+
+ DataTypeDescription
+
+
+
+ StructureDescription
+
+ i=69
+ i=7617
+
+
+ StructureDescription
+
+
+
+ EnumDescription
+
+ i=69
+ i=7617
+
+
+ EnumDescription
+
+
+
+ SimpleTypeDescription
+
+ i=69
+ i=7617
+
+
+ SimpleTypeDescription
+
+
+
+ UABinaryFileDataType
+
+ i=69
+ i=7617
+
+
+ UABinaryFileDataType
+
+
+
+ PortableQualifiedName
+
+ i=69
+ i=7617
+
+
+ PortableQualifiedName
+
+
+
+ PortableNodeId
+
+ i=69
+ i=7617
+
+
+ PortableNodeId
+
+
+
+ UnsignedRationalNumber
+
+ i=69
+ i=7617
+
+
+ UnsignedRationalNumber
+
+
+
+ DataSetMetaDataType
+
+ i=69
+ i=7617
+
+
+ DataSetMetaDataType
+
+
+
+ FieldMetaData
+
+ i=69
+ i=7617
+
+
+ FieldMetaData
+
+
+
+ ConfigurationVersionDataType
+
+ i=69
+ i=7617
+
+
+ ConfigurationVersionDataType
+
+
+
+ PublishedDataSetDataType
+
+ i=69
+ i=7617
+
+
+ PublishedDataSetDataType
+
+
+
+ PublishedDataSetSourceDataType
+
+ i=69
+ i=7617
+
+
+ PublishedDataSetSourceDataType
+
+
+
+ PublishedVariableDataType
+
+ i=69
+ i=7617
+
+
+ PublishedVariableDataType
+
+
+
+ PublishedDataItemsDataType
+
+ i=69
+ i=7617
+
+
+ PublishedDataItemsDataType
+
+
+
+ PublishedEventsDataType
+
+ i=69
+ i=7617
+
+
+ PublishedEventsDataType
+
+
+
+ PublishedDataSetCustomSourceDataType
+
+ i=69
+ i=7617
+
+
+ PublishedDataSetCustomSourceDataType
+
+
+
+ DataSetWriterDataType
+
+ i=69
+ i=7617
+
+
+ DataSetWriterDataType
+
+
+
+ DataSetWriterTransportDataType
+
+ i=69
+ i=7617
+
+
+ DataSetWriterTransportDataType
+
+
+
+ DataSetWriterMessageDataType
+
+ i=69
+ i=7617
+
+
+ DataSetWriterMessageDataType
+
+
+
+ PubSubGroupDataType
+
+ i=69
+ i=7617
+
+
+ PubSubGroupDataType
+
+
+
+ WriterGroupDataType
+
+ i=69
+ i=7617
+
+
+ WriterGroupDataType
+
+
+
+ WriterGroupTransportDataType
+
+ i=69
+ i=7617
+
+
+ WriterGroupTransportDataType
+
+
+
+ WriterGroupMessageDataType
+
+ i=69
+ i=7617
+
+
+ WriterGroupMessageDataType
+
+
+
+ PubSubConnectionDataType
+
+ i=69
+ i=7617
+
+
+ PubSubConnectionDataType
+
+
+
+ ConnectionTransportDataType
+
+ i=69
+ i=7617
+
+
+ ConnectionTransportDataType
+
+
+
+ NetworkAddressDataType
+
+ i=69
+ i=7617
+
+
+ NetworkAddressDataType
+
+
+
+ NetworkAddressUrlDataType
+
+ i=69
+ i=7617
+
+
+ NetworkAddressUrlDataType
+
+
+
+ ReaderGroupDataType
+
+ i=69
+ i=7617
+
+
+ ReaderGroupDataType
+
+
+
+ ReaderGroupTransportDataType
+
+ i=69
+ i=7617
+
+
+ ReaderGroupTransportDataType
+
+
+
+ ReaderGroupMessageDataType
+
+ i=69
+ i=7617
+
+
+ ReaderGroupMessageDataType
+
+
+
+ DataSetReaderDataType
+
+ i=69
+ i=7617
+
+
+ DataSetReaderDataType
+
+
+
+ DataSetReaderTransportDataType
+
+ i=69
+ i=7617
+
+
+ DataSetReaderTransportDataType
+
+
+
+ DataSetReaderMessageDataType
+
+ i=69
+ i=7617
+
+
+ DataSetReaderMessageDataType
+
+
+
+ SubscribedDataSetDataType
+
+ i=69
+ i=7617
+
+
+ SubscribedDataSetDataType
+
+
+
+ TargetVariablesDataType
+
+ i=69
+ i=7617
+
+
+ TargetVariablesDataType
+
+
+
+ FieldTargetDataType
+
+ i=69
+ i=7617
+
+
+ FieldTargetDataType
+
+
+
+ SubscribedDataSetMirrorDataType
+
+ i=69
+ i=7617
+
+
+ SubscribedDataSetMirrorDataType
+
+
+
+ PubSubConfigurationDataType
+
+ i=69
+ i=7617
+
+
+ PubSubConfigurationDataType
+
+
+
+ StandaloneSubscribedDataSetRefDataType
+
+ i=69
+ i=7617
+
+
+ StandaloneSubscribedDataSetRefDataType
+
+
+
+ StandaloneSubscribedDataSetDataType
+
+ i=69
+ i=7617
+
+
+ StandaloneSubscribedDataSetDataType
+
+
+
+ SecurityGroupDataType
+
+ i=69
+ i=7617
+
+
+ SecurityGroupDataType
+
+
+
+ PubSubKeyPushTargetDataType
+
+ i=69
+ i=7617
+
+
+ PubSubKeyPushTargetDataType
+
+
+
+ PubSubConfiguration2DataType
+
+ i=69
+ i=7617
+
+
+ PubSubConfiguration2DataType
+
+
+
+ UadpWriterGroupMessageDataType
+
+ i=69
+ i=7617
+
+
+ UadpWriterGroupMessageDataType
+
+
+
+ UadpDataSetWriterMessageDataType
+
+ i=69
+ i=7617
+
+
+ UadpDataSetWriterMessageDataType
+
+
+
+ UadpDataSetReaderMessageDataType
+
+ i=69
+ i=7617
+
+
+ UadpDataSetReaderMessageDataType
+
+
+
+ JsonWriterGroupMessageDataType
+
+ i=69
+ i=7617
+
+
+ JsonWriterGroupMessageDataType
+
+
+
+ JsonDataSetWriterMessageDataType
+
+ i=69
+ i=7617
+
+
+ JsonDataSetWriterMessageDataType
+
+
+
+ JsonDataSetReaderMessageDataType
+
+ i=69
+ i=7617
+
+
+ JsonDataSetReaderMessageDataType
+
+
+
+ QosDataType
+
+ i=69
+ i=7617
+
+
+ QosDataType
+
+
+
+ TransmitQosDataType
+
+ i=69
+ i=7617
+
+
+ TransmitQosDataType
+
+
+
+ TransmitQosPriorityDataType
+
+ i=69
+ i=7617
+
+
+ TransmitQosPriorityDataType
+
+
+
+ ReceiveQosDataType
+
+ i=69
+ i=7617
+
+
+ ReceiveQosDataType
+
+
+
+ ReceiveQosPriorityDataType
+
+ i=69
+ i=7617
+
+
+ ReceiveQosPriorityDataType
+
+
+
+ DatagramConnectionTransportDataType
+
+ i=69
+ i=7617
+
+
+ DatagramConnectionTransportDataType
+
+
+
+ DatagramConnectionTransport2DataType
+
+ i=69
+ i=7617
+
+
+ DatagramConnectionTransport2DataType
+
+
+
+ DatagramWriterGroupTransportDataType
+
+ i=69
+ i=7617
+
+
+ DatagramWriterGroupTransportDataType
+
+
+
+ DatagramWriterGroupTransport2DataType
+
+ i=69
+ i=7617
+
+
+ DatagramWriterGroupTransport2DataType
+
+
+
+ DatagramDataSetReaderTransportDataType
+
+ i=69
+ i=7617
+
+
+ DatagramDataSetReaderTransportDataType
+
+
+
+ BrokerConnectionTransportDataType
+
+ i=69
+ i=7617
+
+
+ BrokerConnectionTransportDataType
+
+
+
+ BrokerWriterGroupTransportDataType
+
+ i=69
+ i=7617
+
+
+ BrokerWriterGroupTransportDataType
+
+
+
+ BrokerDataSetWriterTransportDataType
+
+ i=69
+ i=7617
+
+
+ BrokerDataSetWriterTransportDataType
+
+
+
+ BrokerDataSetReaderTransportDataType
+
+ i=69
+ i=7617
+
+
+ BrokerDataSetReaderTransportDataType
+
+
+
+ PubSubConfigurationRefDataType
+
+ i=69
+ i=7617
+
+
+ PubSubConfigurationRefDataType
+
+
+
+ PubSubConfigurationValueDataType
+
+ i=69
+ i=7617
+
+
+ PubSubConfigurationValueDataType
+
+
+
+ AliasNameDataType
+
+ i=69
+ i=7617
+
+
+ AliasNameDataType
+
+
+
+ UserManagementDataType
+
+ i=69
+ i=7617
+
+
+ UserManagementDataType
+
+
+
+ PriorityMappingEntryType
+
+ i=69
+ i=7617
+
+
+ PriorityMappingEntryType
+
+
+
+ ReferenceDescriptionDataType
+
+ i=69
+ i=7617
+
+
+ ReferenceDescriptionDataType
+
+
+
+ ReferenceListEntryDataType
+
+ i=69
+ i=7617
+
+
+ ReferenceListEntryDataType
+
+
+
+ RolePermissionType
+
+ i=69
+ i=7617
+
+
+ RolePermissionType
+
+
+
+ DataTypeDefinition
+
+ i=69
+ i=7617
+
+
+ DataTypeDefinition
+
+
+
+ StructureField
+
+ i=69
+ i=7617
+
+
+ StructureField
+
+
+
+ StructureDefinition
+
+ i=69
+ i=7617
+
+
+ StructureDefinition
+
+
+
+ EnumDefinition
+
+ i=69
+ i=7617
+
+
+ EnumDefinition
+
+
+
+ Argument
+
+ i=69
+ i=7617
+
+
+ Argument
+
+
+
+ EnumValueType
+
+ i=69
+ i=7617
+
+
+ EnumValueType
+
+
+
+ EnumField
+
+ i=69
+ i=7617
+
+
+ EnumField
+
+
+
+ OptionSet
+
+ i=69
+ i=7617
+
+
+ OptionSet
+
+
+
+ TimeZoneDataType
+
+ i=69
+ i=7617
+
+
+ TimeZoneDataType
+
+
+
+ ApplicationDescription
+
+ i=69
+ i=7617
+
+
+ ApplicationDescription
+
+
+
+ ServerOnNetwork
+
+ i=69
+ i=7617
+
+
+ ServerOnNetwork
+
+
+
+ UserTokenPolicy
+
+ i=69
+ i=7617
+
+
+ UserTokenPolicy
+
+
+
+ EndpointDescription
+
+ i=69
+ i=7617
+
+
+ EndpointDescription
+
+
+
+ RegisteredServer
+
+ i=69
+ i=7617
+
+
+ RegisteredServer
+
+
+
+ DiscoveryConfiguration
+
+ i=69
+ i=7617
+
+
+ DiscoveryConfiguration
+
+
+
+ MdnsDiscoveryConfiguration
+
+ i=69
+ i=7617
+
+
+ MdnsDiscoveryConfiguration
+
+
+
+ SignedSoftwareCertificate
+
+ i=69
+ i=7617
+
+
+ SignedSoftwareCertificate
+
+
+
+ UserIdentityToken
+
+ i=69
+ i=7617
+
+
+ UserIdentityToken
+
+
+
+ AnonymousIdentityToken
+
+ i=69
+ i=7617
+
+
+ AnonymousIdentityToken
+
+
+
+ UserNameIdentityToken
+
+ i=69
+ i=7617
+
+
+ UserNameIdentityToken
+
+
+
+ X509IdentityToken
+
+ i=69
+ i=7617
+
+
+ X509IdentityToken
+
+
+
+ IssuedIdentityToken
+
+ i=69
+ i=7617
+
+
+ IssuedIdentityToken
+
+
+
+ AddNodesItem
+
+ i=69
+ i=7617
+
+
+ AddNodesItem
+
+
+
+ AddReferencesItem
+
+ i=69
+ i=7617
+
+
+ AddReferencesItem
+
+
+
+ DeleteNodesItem
+
+ i=69
+ i=7617
+
+
+ DeleteNodesItem
+
+
+
+ DeleteReferencesItem
+
+ i=69
+ i=7617
+
+
+ DeleteReferencesItem
+
+
+
+ RelativePathElement
+
+ i=69
+ i=7617
+
+
+ RelativePathElement
+
+
+
+ RelativePath
+
+ i=69
+ i=7617
+
+
+ RelativePath
+
+
+
+ EndpointConfiguration
+
+ i=69
+ i=7617
+
+
+ EndpointConfiguration
+
+
+
+ ContentFilterElement
+
+ i=69
+ i=7617
+
+
+ ContentFilterElement
+
+
+
+ ContentFilter
+
+ i=69
+ i=7617
+
+
+ ContentFilter
+
+
+
+ FilterOperand
+
+ i=69
+ i=7617
+
+
+ FilterOperand
+
+
+
+ ElementOperand
+
+ i=69
+ i=7617
+
+
+ ElementOperand
+
+
+
+ LiteralOperand
+
+ i=69
+ i=7617
+
+
+ LiteralOperand
+
+
+
+ AttributeOperand
+
+ i=69
+ i=7617
+
+
+ AttributeOperand
+
+
+
+ SimpleAttributeOperand
+
+ i=69
+ i=7617
+
+
+ SimpleAttributeOperand
+
+
+
+ HistoryEvent
+
+ i=69
+ i=7617
+
+
+ HistoryEvent
+
+
+
+ MonitoringFilter
+
+ i=69
+ i=7617
+
+
+ MonitoringFilter
+
+
+
+ EventFilter
+
+ i=69
+ i=7617
+
+
+ EventFilter
+
+
+
+ AggregateConfiguration
+
+ i=69
+ i=7617
+
+
+ AggregateConfiguration
+
+
+
+ HistoryEventFieldList
+
+ i=69
+ i=7617
+
+
+ HistoryEventFieldList
+
+
+
+ BuildInfo
+
+ i=69
+ i=7617
+
+
+ BuildInfo
+
+
+
+ RedundantServerDataType
+
+ i=69
+ i=7617
+
+
+ RedundantServerDataType
+
+
+
+ EndpointUrlListDataType
+
+ i=69
+ i=7617
+
+
+ EndpointUrlListDataType
+
+
+
+ NetworkGroupDataType
+
+ i=69
+ i=7617
+
+
+ NetworkGroupDataType
+
+
+
+ SamplingIntervalDiagnosticsDataType
+
+ i=69
+ i=7617
+
+
+ SamplingIntervalDiagnosticsDataType
+
+
+
+ ServerDiagnosticsSummaryDataType
+
+ i=69
+ i=7617
+
+
+ ServerDiagnosticsSummaryDataType
+
+
+
+ ServerStatusDataType
+
+ i=69
+ i=7617
+
+
+ ServerStatusDataType
+
+
+
+ SessionDiagnosticsDataType
+
+ i=69
+ i=7617
+
+
+ SessionDiagnosticsDataType
+
+
+
+ SessionSecurityDiagnosticsDataType
+
+ i=69
+ i=7617
+
+
+ SessionSecurityDiagnosticsDataType
+
+
+
+ ServiceCounterDataType
+
+ i=69
+ i=7617
+
+
+ ServiceCounterDataType
+
+
+
+ StatusResult
+
+ i=69
+ i=7617
+
+
+ StatusResult
+
+
+
+ SubscriptionDiagnosticsDataType
+
+ i=69
+ i=7617
+
+
+ SubscriptionDiagnosticsDataType
+
+
+
+ ModelChangeStructureDataType
+
+ i=69
+ i=7617
+
+
+ ModelChangeStructureDataType
+
+
+
+ SemanticChangeStructureDataType
+
+ i=69
+ i=7617
+
+
+ SemanticChangeStructureDataType
+
+
+
+ Range
+
+ i=69
+ i=7617
+
+
+ Range
+
+
+
+ EUInformation
+
+ i=69
+ i=7617
+
+
+ EUInformation
+
+
+
+ ComplexNumberType
+
+ i=69
+ i=7617
+
+
+ ComplexNumberType
+
+
+
+ DoubleComplexNumberType
+
+ i=69
+ i=7617
+
+
+ DoubleComplexNumberType
+
+
+
+ AxisInformation
+
+ i=69
+ i=7617
+
+
+ AxisInformation
+
+
+
+ XVType
+
+ i=69
+ i=7617
+
+
+ XVType
+
+
+
+ ProgramDiagnosticDataType
+
+ i=69
+ i=7617
+
+
+ ProgramDiagnosticDataType
+
+
+
+ ProgramDiagnostic2DataType
+
+ i=69
+ i=7617
+
+
+ ProgramDiagnostic2DataType
+
+
+
+ Annotation
+
+ i=69
+ i=7617
+
+
+ Annotation
+
+
+
+ Default XML
+
+ i=12756
+ i=12762
+ i=76
+
+
+
+ Default XML
+
+ i=14533
+ i=14829
+ i=76
+
+
+
+ Default XML
+
+ i=16313
+ i=17542
+ i=76
+
+
+
+ Default XML
+
+ i=17548
+ i=17554
+ i=76
+
+
+
+ Default XML
+
+ i=15528
+ i=16024
+ i=76
+
+
+
+ Default XML
+
+ i=18806
+ i=18860
+ i=76
+
+
+
+ Default XML
+
+ i=18807
+ i=18863
+ i=76
+
+
+
+ Default XML
+
+ i=18808
+ i=18866
+ i=76
+
+
+
+ Default XML
+
+ i=18809
+ i=18869
+ i=76
+
+
+
+ Default XML
+
+ i=18810
+ i=19049
+ i=76
+
+
+
+ Default XML
+
+ i=18811
+ i=19052
+ i=76
+
+
+
+ Default XML
+
+ i=18812
+ i=19055
+ i=76
+
+
+
+ Default XML
+
+ i=18813
+ i=19058
+ i=76
+
+
+
+ Default XML
+
+ i=18814
+ i=19061
+ i=76
+
+
+
+ Default XML
+
+ i=15634
+ i=15730
+ i=76
+
+
+
+ Default XML
+
+ i=23498
+ i=23522
+ i=76
+
+
+
+ Default XML
+
+ i=12554
+ i=12677
+ i=76
+
+
+
+ Default XML
+
+ i=32285
+ i=32387
+ i=76
+
+
+
+ Default XML
+
+ i=15534
+ i=16027
+ i=76
+
+
+
+ Default XML
+
+ i=14525
+ i=14811
+ i=76
+
+
+
+ Default XML
+
+ i=15487
+ i=15591
+ i=76
+
+
+
+ Default XML
+
+ i=15488
+ i=15594
+ i=76
+
+
+
+ Default XML
+
+ i=15005
+ i=15585
+ i=76
+
+
+
+ Default XML
+
+ i=15006
+ i=15588
+ i=76
+
+
+
+ Default XML
+
+ i=24105
+ i=24123
+ i=76
+
+
+
+ Default XML
+
+ i=24106
+ i=24126
+ i=76
+
+
+
+ Default XML
+
+ i=24107
+ i=24129
+ i=76
+
+
+
+ Default XML
+
+ i=14523
+ i=14805
+ i=76
+
+
+
+ Default XML
+
+ i=14524
+ i=14808
+ i=76
+
+
+
+ Default XML
+
+ i=14593
+ i=14832
+ i=76
+
+
+
+ Default XML
+
+ i=15578
+ i=16030
+ i=76
+
+
+
+ Default XML
+
+ i=15580
+ i=16033
+ i=76
+
+
+
+ Default XML
+
+ i=14273
+ i=14320
+ i=76
+
+
+
+ Default XML
+
+ i=15581
+ i=16037
+ i=76
+
+
+
+ Default XML
+
+ i=15582
+ i=16040
+ i=76
+
+
+
+ Default XML
+
+ i=25269
+ i=25549
+ i=76
+
+
+
+ Default XML
+
+ i=15597
+ i=16047
+ i=76
+
+
+
+ Default XML
+
+ i=15598
+ i=16050
+ i=76
+
+
+
+ Default XML
+
+ i=15605
+ i=16053
+ i=76
+
+
+
+ Default XML
+
+ i=15609
+ i=16056
+ i=76
+
+
+
+ Default XML
+
+ i=15480
+ i=21180
+ i=76
+
+
+
+ Default XML
+
+ i=15611
+ i=16062
+ i=76
+
+
+
+ Default XML
+
+ i=15616
+ i=16065
+ i=76
+
+
+
+ Default XML
+
+ i=15617
+ i=16068
+ i=76
+
+
+
+ Default XML
+
+ i=15618
+ i=16071
+ i=76
+
+
+
+ Default XML
+
+ i=15502
+ i=21183
+ i=76
+
+
+
+ Default XML
+
+ i=15510
+ i=21186
+ i=76
+
+
+
+ Default XML
+
+ i=15520
+ i=21189
+ i=76
+
+
+
+ Default XML
+
+ i=15621
+ i=16077
+ i=76
+
+
+
+ Default XML
+
+ i=15622
+ i=16080
+ i=76
+
+
+
+ Default XML
+
+ i=15623
+ i=16083
+ i=76
+
+
+
+ Default XML
+
+ i=15628
+ i=16086
+ i=76
+
+
+
+ Default XML
+
+ i=15629
+ i=16089
+ i=76
+
+
+
+ Default XML
+
+ i=15630
+ i=16092
+ i=76
+
+
+
+ Default XML
+
+ i=15631
+ i=16095
+ i=76
+
+
+
+ Default XML
+
+ i=14744
+ i=14835
+ i=76
+
+
+
+ Default XML
+
+ i=15635
+ i=16098
+ i=76
+
+
+
+ Default XML
+
+ i=15530
+ i=21192
+ i=76
+
+
+
+ Default XML
+
+ i=23599
+ i=23938
+ i=76
+
+
+
+ Default XML
+
+ i=23600
+ i=23941
+ i=76
+
+
+
+ Default XML
+
+ i=23601
+ i=23944
+ i=76
+
+
+
+ Default XML
+
+ i=25270
+ i=25552
+ i=76
+
+
+
+ Default XML
+
+ i=23602
+ i=23947
+ i=76
+
+
+
+ Default XML
+
+ i=15645
+ i=16104
+ i=76
+
+
+
+ Default XML
+
+ i=15652
+ i=16107
+ i=76
+
+
+
+ Default XML
+
+ i=15653
+ i=16110
+ i=76
+
+
+
+ Default XML
+
+ i=15657
+ i=16113
+ i=76
+
+
+
+ Default XML
+
+ i=15664
+ i=16116
+ i=76
+
+
+
+ Default XML
+
+ i=15665
+ i=16119
+ i=76
+
+
+
+ Default XML
+
+ i=23603
+ i=23950
+ i=76
+
+
+
+ Default XML
+
+ i=23604
+ i=23953
+ i=76
+
+
+
+ Default XML
+
+ i=23605
+ i=23956
+ i=76
+
+
+
+ Default XML
+
+ i=23608
+ i=23965
+ i=76
+
+
+
+ Default XML
+
+ i=23609
+ i=23968
+ i=76
+
+
+
+ Default XML
+
+ i=17467
+ i=17473
+ i=76
+
+
+
+ Default XML
+
+ i=23612
+ i=23977
+ i=76
+
+
+
+ Default XML
+
+ i=15532
+ i=21195
+ i=76
+
+
+
+ Default XML
+
+ i=23613
+ i=23980
+ i=76
+
+
+
+ Default XML
+
+ i=23614
+ i=23983
+ i=76
+
+
+
+ Default XML
+
+ i=15007
+ i=15640
+ i=76
+
+
+
+ Default XML
+
+ i=15667
+ i=16125
+ i=76
+
+
+
+ Default XML
+
+ i=15669
+ i=16144
+ i=76
+
+
+
+ Default XML
+
+ i=15670
+ i=16147
+ i=76
+
+
+
+ Default XML
+
+ i=25519
+ i=25555
+ i=76
+
+
+
+ Default XML
+
+ i=25520
+ i=25558
+ i=76
+
+
+
+ Default XML
+
+ i=23468
+ i=23508
+ i=76
+
+
+
+ Default XML
+
+ i=24281
+ i=24297
+ i=76
+
+
+
+ Default XML
+
+ i=25220
+ i=25244
+ i=76
+
+
+
+ Default XML
+
+ i=32659
+ i=32671
+ i=76
+
+
+
+ Default XML
+
+ i=32660
+ i=32674
+ i=76
+
+
+
+ Default XML
+
+ i=96
+ i=16127
+ i=76
+
+
+
+ Default XML
+
+ i=97
+ i=18166
+ i=76
+
+
+
+ Default XML
+
+ i=101
+ i=18169
+ i=76
+
+
+
+ Default XML
+
+ i=99
+ i=18172
+ i=76
+
+
+
+ Default XML
+
+ i=100
+ i=18175
+ i=76
+
+
+
+ Default XML
+
+ i=296
+ i=8285
+ i=76
+
+
+
+ Default XML
+
+ i=7594
+ i=8291
+ i=76
+
+
+
+ Default XML
+
+ i=102
+ i=14826
+ i=76
+
+
+
+ Default XML
+
+ i=12755
+ i=12759
+ i=76
+
+
+
+ Default XML
+
+ i=8912
+ i=8918
+ i=76
+
+
+
+ Default XML
+
+ i=308
+ i=8300
+ i=76
+
+
+
+ Default XML
+
+ i=12189
+ i=12201
+ i=76
+
+
+
+ Default XML
+
+ i=304
+ i=8297
+ i=76
+
+
+
+ Default XML
+
+ i=312
+ i=8303
+ i=76
+
+
+
+ Default XML
+
+ i=432
+ i=8417
+ i=76
+
+
+
+ Default XML
+
+ i=12890
+ i=12894
+ i=76
+
+
+
+ Default XML
+
+ i=12891
+ i=12897
+ i=76
+
+
+
+ Default XML
+
+ i=344
+ i=8333
+ i=76
+
+
+
+ Default XML
+
+ i=316
+ i=8306
+ i=76
+
+
+
+ Default XML
+
+ i=319
+ i=8309
+ i=76
+
+
+
+ Default XML
+
+ i=322
+ i=8312
+ i=76
+
+
+
+ Default XML
+
+ i=325
+ i=8315
+ i=76
+
+
+
+ Default XML
+
+ i=938
+ i=8318
+ i=76
+
+
+
+ Default XML
+
+ i=376
+ i=8363
+ i=76
+
+
+
+ Default XML
+
+ i=379
+ i=8366
+ i=76
+
+
+
+ Default XML
+
+ i=382
+ i=8369
+ i=76
+
+
+
+ Default XML
+
+ i=385
+ i=8372
+ i=76
+
+
+
+ Default XML
+
+ i=537
+ i=12712
+ i=76
+
+
+
+ Default XML
+
+ i=540
+ i=12715
+ i=76
+
+
+
+ Default XML
+
+ i=331
+ i=8321
+ i=76
+
+
+
+ Default XML
+
+ i=583
+ i=8564
+ i=76
+
+
+
+ Default XML
+
+ i=586
+ i=8567
+ i=76
+
+
+
+ Default XML
+
+ i=589
+ i=8570
+ i=76
+
+
+
+ Default XML
+
+ i=592
+ i=8573
+ i=76
+
+
+
+ Default XML
+
+ i=595
+ i=8576
+ i=76
+
+
+
+ Default XML
+
+ i=598
+ i=8579
+ i=76
+
+
+
+ Default XML
+
+ i=601
+ i=8582
+ i=76
+
+
+
+ Default XML
+
+ i=659
+ i=8639
+ i=76
+
+
+
+ Default XML
+
+ i=719
+ i=8702
+ i=76
+
+
+
+ Default XML
+
+ i=725
+ i=8708
+ i=76
+
+
+
+ Default XML
+
+ i=948
+ i=8711
+ i=76
+
+
+
+ Default XML
+
+ i=920
+ i=8807
+ i=76
+
+
+
+ Default XML
+
+ i=338
+ i=8327
+ i=76
+
+
+
+ Default XML
+
+ i=853
+ i=8843
+ i=76
+
+
+
+ Default XML
+
+ i=11943
+ i=11951
+ i=76
+
+
+
+ Default XML
+
+ i=11944
+ i=11954
+ i=76
+
+
+
+ Default XML
+
+ i=856
+ i=8846
+ i=76
+
+
+
+ Default XML
+
+ i=859
+ i=8849
+ i=76
+
+
+
+ Default XML
+
+ i=862
+ i=8852
+ i=76
+
+
+
+ Default XML
+
+ i=865
+ i=8855
+ i=76
+
+
+
+ Default XML
+
+ i=868
+ i=8858
+ i=76
+
+
+
+ Default XML
+
+ i=871
+ i=8861
+ i=76
+
+
+
+ Default XML
+
+ i=299
+ i=8294
+ i=76
+
+
+
+ Default XML
+
+ i=874
+ i=8864
+ i=76
+
+
+
+ Default XML
+
+ i=877
+ i=8867
+ i=76
+
+
+
+ Default XML
+
+ i=897
+ i=8870
+ i=76
+
+
+
+ Default XML
+
+ i=884
+ i=8873
+ i=76
+
+
+
+ Default XML
+
+ i=887
+ i=8876
+ i=76
+
+
+
+ Default XML
+
+ i=12171
+ i=12175
+ i=76
+
+
+
+ Default XML
+
+ i=12172
+ i=12178
+ i=76
+
+
+
+ Default XML
+
+ i=12079
+ i=12083
+ i=76
+
+
+
+ Default XML
+
+ i=12080
+ i=12086
+ i=76
+
+
+
+ Default XML
+
+ i=894
+ i=8882
+ i=76
+
+
+
+ Default XML
+
+ i=24033
+ i=24039
+ i=76
+
+
+
+ Default XML
+
+ i=891
+ i=8879
+ i=76
+
+
+
+ Opc.Ua
+
+ i=8254
+ i=15039
+ i=12762
+ i=14829
+ i=17542
+ i=17554
+ i=16024
+ i=18860
+ i=18863
+ i=18866
+ i=18869
+ i=19049
+ i=19052
+ i=19055
+ i=19058
+ i=19061
+ i=15730
+ i=23522
+ i=12677
+ i=32387
+ i=16027
+ i=14811
+ i=15591
+ i=15594
+ i=15585
+ i=15588
+ i=24123
+ i=24126
+ i=24129
+ i=14805
+ i=14808
+ i=14832
+ i=16030
+ i=16033
+ i=14320
+ i=16037
+ i=16040
+ i=25549
+ i=16047
+ i=16050
+ i=16053
+ i=16056
+ i=21180
+ i=16062
+ i=16065
+ i=16068
+ i=16071
+ i=21183
+ i=21186
+ i=21189
+ i=16077
+ i=16080
+ i=16083
+ i=16086
+ i=16089
+ i=16092
+ i=16095
+ i=14835
+ i=16098
+ i=21192
+ i=23938
+ i=23941
+ i=23944
+ i=25552
+ i=23947
+ i=16104
+ i=16107
+ i=16110
+ i=16113
+ i=16116
+ i=16119
+ i=23950
+ i=23953
+ i=23956
+ i=23965
+ i=23968
+ i=17473
+ i=23977
+ i=21195
+ i=23980
+ i=23983
+ i=15640
+ i=16125
+ i=16144
+ i=16147
+ i=25555
+ i=25558
+ i=23508
+ i=24297
+ i=25244
+ i=32671
+ i=32674
+ i=16127
+ i=18166
+ i=18169
+ i=18172
+ i=18175
+ i=8285
+ i=8291
+ i=14826
+ i=12759
+ i=8918
+ i=8300
+ i=12201
+ i=8297
+ i=8303
+ i=8417
+ i=12894
+ i=12897
+ i=8333
+ i=8306
+ i=8309
+ i=8312
+ i=8315
+ i=8318
+ i=8363
+ i=8366
+ i=8369
+ i=8372
+ i=12712
+ i=12715
+ i=8321
+ i=8564
+ i=8567
+ i=8570
+ i=8573
+ i=8576
+ i=8579
+ i=8582
+ i=8639
+ i=8702
+ i=8708
+ i=8711
+ i=8807
+ i=8327
+ i=8843
+ i=11951
+ i=11954
+ i=8846
+ i=8849
+ i=8852
+ i=8855
+ i=8858
+ i=8861
+ i=8294
+ i=8864
+ i=8867
+ i=8870
+ i=8873
+ i=8876
+ i=12175
+ i=12178
+ i=12083
+ i=12086
+ i=8882
+ i=24039
+ i=8879
+ i=92
+ i=72
+
+
+ PHhzOnNjaGVtYQ0KICB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEi
+DQogIHhtbG5zOnVhPSJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvMjAwOC8wMi9UeXBlcy54
+c2QiDQogIHhtbG5zOnRucz0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBLzIwMDgvMDIvVHlw
+ZXMueHNkIg0KICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9yZy9VQS8y
+MDA4LzAyL1R5cGVzLnhzZCINCiAgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiDQo+DQog
+IDx4czphbm5vdGF0aW9uPg0KICAgIDx4czphcHBpbmZvPg0KICAgICAgPHRuczpNb2RlbCBNb2Rl
+bFVyaT0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBLyIgVmVyc2lvbj0iMS4wNS4wMiIgUHVi
+bGljYXRpb25EYXRlPSIyMDIyLTExLTAxVDAwOjAwOjAwWiIgLz4NCiAgICA8L3hzOmFwcGluZm8+
+DQogIDwveHM6YW5ub3RhdGlvbj4NCiAgDQogIDx4czplbGVtZW50IG5hbWU9IkJvb2xlYW4iIHR5
+cGU9InhzOmJvb2xlYW4iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJvb2xl
+YW4iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJvb2xlYW4i
+IHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTGlzdE9mQm9vbGVhbiIgdHlwZT0idG5zOkxpc3RPZkJvb2xlYW4iIG5pbGxhYmxlPSJ0
+cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iU0J5dGUiIHR5cGU9Inhz
+OmJ5dGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNCeXRlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTQnl0ZSIgdHlwZT0ieHM6Ynl0
+ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTQnl0
+ZSIgdHlwZT0idG5zOkxpc3RPZlNCeXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czplbGVtZW50IG5hbWU9IkJ5dGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnl0ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnl0ZSIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5P
+Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJ5dGUiIHR5cGU9
+InRuczpMaXN0T2ZCeXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpl
+bGVtZW50IG5hbWU9IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iTGlzdE9mSW50MTYiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkludDE2IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9
+InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQxNiIgdHlwZT0idG5zOkxpc3RPZkludDE2IiBu
+aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IlVJbnQx
+NiIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+TGlzdE9mVUludDE2Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJVSW50MTYiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz
+PSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDE2IiB0eXBlPSJ0bnM6TGlzdE9mVUludDE2
+IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9Iklu
+dDMyIiB0eXBlPSJ4czppbnQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZklu
+dDMyIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQzMiIg
+dHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZkludDMyIiB0eXBlPSJ0bnM6TGlzdE9mSW50MzIiIG5pbGxhYmxlPSJ0cnVlIj48L3hz
+OmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDMyIiB0eXBlPSJ4czp1bnNpZ25l
+ZEludCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVUludDMyIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50MzIiIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp
+c3RPZlVJbnQzMiIgdHlwZT0idG5zOkxpc3RPZlVJbnQzMiIgbmlsbGFibGU9InRydWUiPjwveHM6
+ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSW50NjQiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDY0IiB0eXBlPSJ4czpsb25nIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludDY0IiB0eXBlPSJ0
+bnM6TGlzdE9mSW50NjQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iVUludDY0IiB0eXBlPSJ4czp1bnNpZ25lZExvbmciIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVJbnQ2NCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iVUludDY0IiB0eXBlPSJ4czp1bnNpZ25lZExvbmciIG1pbk9jY3Vy
+cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUludDY0IiB0eXBlPSJ0
+bnM6TGlzdE9mVUludDY0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpl
+bGVtZW50IG5hbWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iTGlzdE9mRmxvYXQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkZsb2F0IiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9
+InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGbG9hdCIgdHlwZT0idG5zOkxpc3RPZkZsb2F0IiBu
+aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRvdWJs
+ZSIgdHlwZT0ieHM6ZG91YmxlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZE
+b3VibGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRvdWJs
+ZSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9Ikxpc3RPZkRvdWJsZSIgdHlwZT0idG5zOkxpc3RPZkRvdWJsZSIgbmlsbGFibGU9InRy
+dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciIG5pbGxhYmxl
+PSJ0cnVlIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp
+c3RPZlN0cmluZyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+U3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mU3RyaW5nIiB0eXBlPSJ0bnM6TGlzdE9mU3RyaW5nIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkRhdGVUaW1lIiBu
+aWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ikxpc3RPZkRhdGVUaW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJEYXRlVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgbWF4
+T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0ZVRpbWUiIHR5cGU9InRuczpMaXN0
+T2ZEYXRlVGltZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iR3VpZCI+DQogICAgPHhzOmFubm90YXRpb24+DQogICAgICA8eHM6YXBwaW5m
+bz4NCiAgICAgICAgPElzVmFsdWVUeXBlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQu
+Y29tLzIwMDMvMTAvU2VyaWFsaXphdGlvbi8iPnRydWU8L0lzVmFsdWVUeXBlPg0KICAgICAgPC94
+czphcHBpbmZvPg0KICAgIDwveHM6YW5ub3RhdGlvbj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw
+IiBtYXhPY2N1cnM9IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpH
+dWlkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJMaXN0T2ZHdWlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJHdWlkIiB0eXBlPSJ0bnM6R3VpZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJMaXN0T2ZHdWlkIiB0eXBlPSJ0bnM6TGlzdE9mR3VpZCIgbmlsbGFibGU9
+InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCeXRlU3RyaW5nIiBu
+aWxsYWJsZT0idHJ1ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZCeXRlU3RyaW5nIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJCeXRlU3RyaW5nIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9j
+Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp
+c3RPZkJ5dGVTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZCeXRlU3RyaW5nIiBuaWxsYWJsZT0idHJ1
+ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZYbWxFbGVt
+ZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJYbWxFbGVt
+ZW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSI+
+DQogICAgICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICAgICAgICA8eHM6YW55IG1pbk9jY3Vycz0iMCIgcHJvY2Vzc0NvbnRlbnRzPSJsYXgiLz4NCiAg
+ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICAgICAg
+PC94czplbGVtZW50Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlhtbEVsZW1lbnQiIHR5cGU9InRuczpMaXN0T2ZYbWxF
+bGVtZW50IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJOb2RlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IklkZW50aWZpZXIiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9
+IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbmls
+bGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz
+dE9mTm9kZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJO
+b2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5vZGVJZCIgdHlwZT0idG5zOkxpc3RP
+Zk5vZGVJZCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iRXhwYW5kZWROb2RlSWQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IklkZW50aWZpZXIiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBt
+YXhPY2N1cnM9IjEiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV4cGFuZGVkTm9kZUlkIiB0eXBl
+PSJ0bnM6RXhwYW5kZWROb2RlSWQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkV4cGFuZGVkTm9kZUlkIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5z
+OkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgdHlwZT0idG5zOkxpc3RP
+ZkV4cGFuZGVkTm9kZUlkIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJTdGF0dXNDb2RlIj4NCiAgICA8eHM6YW5ub3RhdGlvbj4NCiAgICAg
+IDx4czphcHBpbmZvPg0KICAgICAgICA8SXNWYWx1ZVR5cGUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFz
+Lm1pY3Jvc29mdC5jb20vMjAwMy8xMC9TZXJpYWxpemF0aW9uLyI+dHJ1ZTwvSXNWYWx1ZVR5cGU+
+DQogICAgICA8L3hzOmFwcGluZm8+DQogICAgPC94czphbm5vdGF0aW9uPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvZGUiIHR5cGU9InhzOnVuc2lnbmVkSW50
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUi
+PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3RhdHVzQ29k
+ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29k
+ZSIgdHlwZT0idG5zOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mU3RhdHVzQ29kZSIgdHlwZT0idG5zOkxpc3RPZlN0YXR1c0NvZGUi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IkRpYWdub3N0aWNJbmZvIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTeW1ib2xpY0lkIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik5hbWVzcGFjZVVyaSIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGUiIHR5cGU9InhzOmludCIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxpemVkVGV4dCIgdHlwZT0i
+eHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRpdGlv
+bmFsSW5mbyIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJJbm5lclN0YXR1c0NvZGUiIHR5cGU9InRuczpTdGF0dXNDb2RlIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbm5lckRpYWdub3N0aWNJbmZvIiB0
+eXBlPSJ0bnM6RGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGlj
+SW5mbyIgdHlwZT0idG5zOkRpYWdub3N0aWNJbmZvIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEaWFnbm9zdGljSW5mbyI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm8i
+IHR5cGU9InRuczpEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGlhZ25vc3RpY0luZm8iIHR5cGU9
+InRuczpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTG9jYWxpemVkVGV4dCI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlIiB0eXBlPSJ4czpzdHJpbmciIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJU
+ZXh0IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IkxvY2FsaXplZFRleHQiIHR5cGU9InRuczpMb2NhbGl6ZWRUZXh0IiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTG9jYWxpemVkVGV4dCI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxpemVkVGV4dCIg
+dHlwZT0idG5zOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkxvY2FsaXplZFRleHQiIHR5cGU9InRu
+czpMaXN0T2ZMb2NhbGl6ZWRUZXh0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJRdWFsaWZpZWROYW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VJbmRleCIgdHlwZT0ieHM6dW5zaWdu
+ZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIg
+dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlF1
+YWxpZmllZE5hbWUiIHR5cGU9InRuczpRdWFsaWZpZWROYW1lIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUXVhbGlmaWVkTmFtZSI+DQogICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVhbGlmaWVkTmFtZSIgdHlwZT0i
+dG5zOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlF1YWxpZmllZE5hbWUiIHR5cGU9InRuczpMaXN0
+T2ZRdWFsaWZpZWROYW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDwhLS0N
+CiAgICBTb21lIGVudmlyb25tZW50cyByZXF1aXJlIGEgV1NETC9YU0Qgd2hpY2ggZXhwbGljaXRs
+eSBkZWZpbmVzIGFsbCBwb3NzaWJsZSB0eXBlcy4NCiAgICBUaGUgVUEgV1NETC9YU0QgY2FuIGJl
+IG1vZGlmaWVkIHRvIHN1cHBvcnQgdGhlc2UgZW52aXJvbm1lbnRzIGJ5IHJlcGxhY2luZyB0aGUN
+CiAgICBkZWZpbml0aW9ucyBvZiB0aGUgRXh0ZW5zaW9uT2JqZWN0Qm9keSBhbmQgVmFyaWFudFZh
+bHVlIGNvbXBsZXggdHlwZXMgd2l0aCB0aGUNCiAgICBkZWZpbml0aW9ucyBpbiB0aGUgY29tbWVu
+dHMgc2hvd24gaGVyZS4gRGV2ZWxvcGVycyB3b3VsZCB0aGVuIGRlZmluZSBzdWJ0eXBlcw0KICAg
+IG9mIHRoZSBFeHRlbnNpb25PYmplY3RCb2R5IHR5cGUgd2hpY2ggZXhwbGljaXRseSBkZWNsYXJl
+IGEgY2hvaWNlIGJldHdlZW4gYWxsIG9mIHRoZQ0KICAgIGNvbXBsZXggdHlwZXMgdXNlZCBieSB0
+aGUgc3lzdGVtLiBUaGUgRXhhbXBsZUV4dGVuc2lvbk9iamVjdEJvZHkgc3VidHlwZSBpcyBwcm92
+aWRlcw0KICAgIGEgdGVtcGxhdGUgYmFzZWQgb24gYSBmZXcgY29tbW9uIFVBLWRlZmluZWQgY29t
+cGxleCB0eXBlcy4NCiAgICAtLT4NCg0KICA8IS0tDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IkV4dGVuc2lvbk9iamVjdEJvZHkiIC8+DQoNCiAgICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXhh
+bXBsZUV4dGVuc2lvbk9iamVjdEJvZHkiPg0KICAgICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KICAg
+ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpFeHRlbnNpb25PYmplY3RCb2R5Ij4NCiAgICAg
+ICAgICA8eHM6Y2hvaWNlPg0KICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJndW1lbnQi
+IHR5cGU9InRuczpBcmd1bWVudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJJZGVudGl0eVRva2VuIiB0eXBlPSJ0bnM6
+VXNlcklkZW50aXR5VG9rZW4iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyTmFtZUlkZW50aXR5VG9rZW4iIHR5cGU9InRu
+czpVc2VyTmFtZUlkZW50aXR5VG9rZW4iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICAgICAgPC94czpjaG9pY2U+DQogICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgICAg
+PC94czpjb21wbGV4Q29udGVudD4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KDQogICAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkV4dGVuc2lvbk9iamVjdCI+DQogICAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlR5cGVJZCIgdHlwZT0idG5zOkV4cGFuZGVkTm9kZUlk
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJCb2R5IiBtaW5PY2N1cnM9IjAiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3RCb2R5IiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4
+VHlwZT4NCiAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25PYmplY3QiIHR5cGU9InRuczpF
+eHRlbnNpb25PYmplY3QiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIC0tPg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJFeHRlbnNpb25PYmplY3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlR5cGVJZCIgdHlwZT0idG5zOk5vZGVJZCIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJvZHkiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAg
+ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIHBy
+b2Nlc3NDb250ZW50cz0ibGF4Ii8+DQogICAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgICAg
+PC94czpjb21wbGV4VHlwZT4NCiAgICAgIDwveHM6ZWxlbWVudD4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25PYmpl
+Y3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFeHRlbnNpb25PYmplY3QiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkV4dGVuc2lvbk9iamVjdCIgdHlwZT0idG5z
+OkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXh0ZW5zaW9uT2JqZWN0IiB0eXBlPSJ0bnM6TGlz
+dE9mRXh0ZW5zaW9uT2JqZWN0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDwh
+LS0NCiAgICBTb21lIFdTREwvWE1MIGNvbXBpbGVycyBoYXZlIGlzc3VlcyB3aXRoIHRoZSB4czpj
+aG9pY2UgY29uc3RydWN0LiBGb3IgdGhhdCByZWFzb24NCiAgICB0aGUgZGVmYXVsdCBkZWNsYXJh
+dGlvbiBvZiBhIFZhcmlhbnQgdXNlcyB4czphbnkgY29uc3RydWN0LiBUaGUgc2NoZW1hIGFjdXR1
+YWxseQ0KICAgIGRlZmluZWQgYnkgdGhlIHNwZWNpZmljYXRpb24gaXMgcHJvdmlkZWQgYnkgdGhl
+IE1hdHJpeCBhbmQgVmFyaWFudFZhbHVlIGNvbXBsZXggdHlwZXMNCiAgICBzaG93biBpbiBjb21t
+ZW50cyBiZWxvdy4gQXBwbGljYXRpb24gZGV2ZWxvcGVycyBjYW4gcmVwbGFjZSB0aGUgVmFyaWFu
+dFZhbHVlIGRlY2xhcmF0aW9uDQogICAgd2l0aCB0aGUgc3BlY2lmaWMgZGVjbGFyYXRpb24gaWYg
+dGhleSBoYXZlIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBjYW4gaGFuZGxlDQogICAg
+dGhlIHhzOmNob2ljZSBjb25zdHJ1Y3QgaW4gYSByZWFzb25hYmxlIHdheS4NCiAgICAtLT4NCg0K
+ICA8IS0tDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1hdHJpeCI+DQogICAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpbWVuc2lvbnMiIHR5cGU9InRuczpM
+aXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAg
+ICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgICAgICAgIDx4czpj
+aG9pY2UgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJCb29sZWFuIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNCeXRlIiB0eXBlPSJ4czpieXRlIiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGUiIHR5cGU9InhzOnVu
+c2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJJbnQxNiIgdHlwZT0ieHM6c2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDE2IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDMyIiB0eXBl
+PSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVUludDMyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50NjQiIHR5cGU9Inhz
+OnVuc2lnbmVkTG9uZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJGbG9hdCIgdHlwZT0ieHM6ZmxvYXQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRG91YmxlIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RyaW5nIiB0eXBlPSJ4
+czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRGF0ZVRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpHdWlkIiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIHR5cGU9
+InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJYbWxFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAg
+ICAgICAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAgICAgICAgICAgICAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICAgICAgICAgICAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBwcm9jZXNz
+Q29udGVudHM9ImxheCIgLz4NCiAgICAgICAgICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAg
+ICAgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAgICAgICAgICAgPC94czplbGVtZW50
+Pg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6
+U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJOb2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhwYW5kZWROb2RlSWQiIHR5cGU9InRuczpFeHBhbmRl
+ZE5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJRdWFsaWZpZWROYW1lIiB0eXBlPSJ0bnM6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0eXBlPSJ0
+bnM6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJFeHRlbnNpb25PYmplY3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFyaWFudCIg
+dHlwZT0idG5zOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICAgIDwveHM6Y2hv
+aWNlPg0KICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+DQogICAgICAgIDwveHM6ZWxlbWVudD4N
+CiAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4VHlwZT4NCiAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJNYXRyaXgiIHR5cGU9InRuczpNYXRyaXgiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+DQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnRWYWx1ZSI+DQogICAgICA8eHM6Y2hv
+aWNlPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCb29sZWFuIiB0eXBlPSJ4czpib29sZWFu
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNCeXRlIiB0eXBl
+PSJ4czpieXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5
+dGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJJbnQxNiIgdHlwZT0ieHM6c2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDE2IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkludDMyIiB0eXBlPSJ4
+czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVUludDMy
+IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJJbnQ2NCIgdHlwZT0ieHM6bG9uZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJVSW50NjQiIHR5cGU9InhzOnVuc2lnbmVkTG9uZyIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGbG9hdCIgdHlwZT0ieHM6Zmxv
+YXQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRG91YmxlIiB0
+eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iRGF0ZVRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikd1aWQiIHR5cGU9InRuczpHdWlkIiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ5dGVTdHJpbmciIHR5cGU9
+InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJYbWxFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIj4NCiAgICAgICAg
+ICA8eHM6Y29tcGxleFR5cGU+DQogICAgICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg
+ICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBwcm9jZXNzQ29udGVudHM9ImxheCIgLz4NCiAgICAg
+ICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCiAgICAg
+ICAgPC94czplbGVtZW50Pg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0
+eXBlPSJ0bnM6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJOb2RlSWQiIHR5cGU9InRuczpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhwYW5kZWROb2RlSWQiIHR5cGU9InRuczpFeHBhbmRlZE5v
+ZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJRdWFsaWZp
+ZWROYW1lIiB0eXBlPSJ0bnM6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGl6ZWRUZXh0IiB0eXBlPSJ0bnM6TG9jYWxpemVkVGV4
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeHRlbnNpb25P
+YmplY3QiIHR5cGU9InRuczpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQm9vbGVhbiIgdHlwZT0idG5zOkxpc3RPZkJvb2xl
+YW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU0J5
+dGUiIHR5cGU9InRuczpMaXN0T2ZTQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJMaXN0T2ZCeXRlIiB0eXBlPSJ0bnM6TGlzdE9mQnl0ZSIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQxNiIgdHlwZT0idG5z
+Okxpc3RPZkludDE2IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZlVJbnQxNiIgdHlwZT0idG5zOkxpc3RPZlVJbnQxNiIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQzMiIgdHlwZT0idG5zOkxpc3RPZklu
+dDMyIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVJ
+bnQzMiIgdHlwZT0idG5zOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJbnQ2NCIgdHlwZT0idG5zOkxpc3RPZkludDY0IiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVJbnQ2NCIgdHlw
+ZT0idG5zOkxpc3RPZlVJbnQ2NCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZGbG9hdCIgdHlwZT0idG5zOkxpc3RPZkZsb2F0IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRvdWJsZSIgdHlwZT0idG5zOkxp
+c3RPZkRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJM
+aXN0T2ZTdHJpbmciIHR5cGU9InRuczpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0ZVRpbWUiIHR5cGU9InRuczpMaXN0T2ZE
+YXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZHdWlkIiB0eXBlPSJ0bnM6TGlzdE9mR3VpZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCeXRlU3RyaW5nIiB0eXBlPSJ0bnM6TGlzdE9mQnl0ZVN0
+cmluZyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZY
+bWxFbGVtZW50IiB0eXBlPSJ0bnM6TGlzdE9mWG1sRWxlbWVudCIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdGF0dXNDb2RlIiB0eXBlPSJ0bnM6TGlz
+dE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZOb2RlSWQiIHR5cGU9InRuczpMaXN0T2ZOb2RlSWQiIG1pbk9jY3Vycz0iMCIgLz4N
+CiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXhwYW5kZWROb2RlSWQiIHR5cGU9InRu
+czpMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJMaXN0T2ZRdWFsaWZpZWROYW1lIiB0eXBlPSJ0bnM6TGlzdE9mUXVhbGlmaWVk
+TmFtZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZM
+b2NhbGl6ZWRUZXh0IiB0eXBlPSJ0bnM6TGlzdE9mTG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFeHRlbnNpb25PYmplY3QiIHR5
+cGU9InRuczpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVmFyaWFudCIgdHlwZT0idG5zOkxpc3RPZlZhcmlhbnQi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF0cml4IiB0eXBl
+PSJ0bnM6TWF0cml4IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8L3hzOmNob2ljZT4NCiAgICA8
+L3hzOmNvbXBsZXhUeXBlPg0KDQogICAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnQiPg0K
+ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlw
+ZT0idG5zOlZhcmlhbnRWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDwveHM6c2VxdWVuY2U+DQogICAgPC94czpjb21wbGV4VHlwZT4NCiAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJWYXJpYW50IiB0eXBlPSJ0bnM6VmFyaWFudCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgLS0+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlZhcmlhbnQiPg0KICAgIDx4czphbm5v
+dGF0aW9uPg0KICAgICAgPHhzOmFwcGluZm8+DQogICAgICAgIDxJc1ZhbHVlVHlwZSB4bWxucz0i
+aHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS8yMDAzLzEwL1NlcmlhbGl6YXRpb24vIj50cnVl
+PC9Jc1ZhbHVlVHlwZT4NCiAgICAgIDwveHM6YXBwaW5mbz4NCiAgICA8L3hzOmFubm90YXRpb24+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiPg0KICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQogICAg
+ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgICAgPHhzOmFueSBtaW5PY2N1cnM9IjAiIHBy
+b2Nlc3NDb250ZW50cz0ibGF4IiAvPg0KICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICAg
+IDwveHM6Y29tcGxleFR5cGU+DQogICAgICA8L3hzOmVsZW1lbnQ+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVmFyaWFudCIgdHlw
+ZT0idG5zOlZhcmlhbnQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJMaXN0T2ZWYXJpYW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJWYXJpYW50IiB0eXBlPSJ0bnM6VmFyaWFudCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZWYXJpYW50IiB0eXBlPSJ0bnM6TGlzdE9mVmFy
+aWFudCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iRGF0YVZhbHVlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJWYWx1ZSIgdHlwZT0idG5zOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InRuczpTdGF0dXNDb2RlIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTb3VyY2VUaW1lc3RhbXAiIHR5cGU9
+InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT
+b3VyY2VQaWNvc2Vjb25kcyIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyVGltZXN0YW1wIiB0eXBlPSJ4czpkYXRl
+VGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyUGlj
+b3NlY29uZHMiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJE
+YXRhVmFsdWUiIHR5cGU9InRuczpEYXRhVmFsdWUiIG5pbGxhYmxlPSJ0cnVlIi8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFWYWx1ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVZhbHVlIiB0eXBlPSJ0bnM6RGF0YVZhbHVlIiBt
+aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZEYXRhVmFsdWUiIHR5cGU9InRuczpMaXN0T2ZEYXRhVmFsdWUiIG5pbGxhYmxlPSJ0
+cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW52b2tlU2VydmljZVJl
+cXVlc3QiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbmlsbGFibGU9InRydWUiIC8+DQogIDx4czpl
+bGVtZW50IG5hbWU9Ikludm9rZVNlcnZpY2VSZXNwb25zZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnZUJNUCIgdHlw
+ZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkltYWdlR0lGIiB0
+eXBlPSJ4czpiYXNlNjRCaW5hcnkiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW1hZ2VKUEci
+IHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJbWFnZVBO
+RyIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkF1ZGlv
+RGF0YVR5cGUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iVW5pb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8
+L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVbmlvbiIgdHlwZT0idG5zOlVu
+aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVbmlvbiI+DQogICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVW5pb24iIHR5cGU9InRuczpVbmlv
+biIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTGlzdE9mVW5pb24iIHR5cGU9InRuczpMaXN0T2ZVbmlvbiIgbmlsbGFibGU9InRydWUi
+PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVcmlTdHJpbmciIHR5cGU9Inhz
+OnN0cmluZyIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCaXRGaWVsZE1hc2tEYXRhVHlwZSIg
+dHlwZT0ieHM6dW5zaWduZWRMb25nIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IlNlbWFudGlj
+VmVyc2lvblN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJLZXlWYWx1ZVBhaXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IktleSIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpWYXJp
+YW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iS2V5VmFsdWVQYWlyIiB0eXBlPSJ0bnM6S2V5VmFs
+dWVQYWlyIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZLZXlWYWx1ZVBhaXIi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IktleVZhbHVlUGFp
+ciIgdHlwZT0idG5zOktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mS2V5VmFsdWVQYWlyIiB0eXBlPSJ0
+bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGRpdGlvbmFsUGFyYW1ldGVyc1R5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlBhcmFtZXRlcnMiIHR5cGU9InRu
+czpMaXN0T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQWRkaXRpb25hbFBhcmFtZXRlcnNUeXBlIiB0eXBlPSJ0bnM6QWRkaXRpb25hbFBhcmFtZXRl
+cnNUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFcGhlbWVyYWxLZXlUeXBlIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaWNLZXkiIHR5
+cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlNpZ25hdHVyZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVwaGVtZXJhbEtleVR5cGUiIHR5
+cGU9InRuczpFcGhlbWVyYWxLZXlUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJF
+bmRwb2ludFR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eU1vZGUiIHR5cGU9InRuczpN
+ZXNzYWdlU2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTZWN1cml0eVBvbGljeVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJvZmls
+ZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IkVuZHBvaW50VHlwZSIgdHlwZT0idG5zOkVuZHBvaW50VHlwZSIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iTGlzdE9mRW5kcG9pbnRUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFR5cGUiIHR5cGU9InRuczpFbmRwb2ludFR5
+cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9Ikxpc3RPZkVuZHBvaW50VHlwZSIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50VHlwZSIg
+bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIYW5k
+bGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IlRyaW1t
+ZWRTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+UmF0aW9uYWxOdW1iZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ik51bWVyYXRvciIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJEZW5vbWluYXRvciIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJSYXRpb25hbE51bWJlciIgdHlwZT0idG5zOlJhdGlvbmFsTnVtYmVyIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSYXRpb25hbE51bWJlciI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmF0aW9uYWxOdW1iZXIiIHR5
+cGU9InRuczpSYXRpb25hbE51bWJlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmF0aW9uYWxOdW1iZXIiIHR5cGU9InRu
+czpMaXN0T2ZSYXRpb25hbE51bWJlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmVjdG9yIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+VmVjdG9yIiB0eXBlPSJ0bnM6VmVjdG9yIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM
+aXN0T2ZWZWN0b3IiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlZlY3RvciIgdHlwZT0idG5zOlZlY3RvciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVmVjdG9yIiB0eXBlPSJ0bnM6TGlz
+dE9mVmVjdG9yIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJUaHJlZURWZWN0b3IiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i
+ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VmVjdG9yIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlgiIHR5cGU9InhzOmRv
+dWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlkiIHR5
+cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h
+bWU9IloiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNl
+cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGhyZWVEVmVjdG9yIiB0
+eXBlPSJ0bnM6VGhyZWVEVmVjdG9yIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0
+T2ZUaHJlZURWZWN0b3IiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlRocmVlRFZlY3RvciIgdHlwZT0idG5zOlRocmVlRFZlY3RvciIgbWluT2NjdXJzPSIwIiBt
+YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGhyZWVE
+VmVjdG9yIiB0eXBlPSJ0bnM6TGlzdE9mVGhyZWVEVmVjdG9yIiBuaWxsYWJsZT0idHJ1ZSI+PC94
+czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDYXJ0ZXNpYW5Db29yZGluYXRl
+cyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBlPSJ0
+bnM6Q2FydGVzaWFuQ29vcmRpbmF0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp
+c3RPZkNhcnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJDYXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOkNhcnRlc2lhbkNv
+b3JkaW5hdGVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJMaXN0T2ZDYXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOkxpc3RP
+ZkNhcnRlc2lhbkNvb3JkaW5hdGVzIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJUaHJlZURDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQogICAg
+PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh
+c2U9InRuczpDYXJ0ZXNpYW5Db29yZGluYXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJYIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJZIiB0eXBlPSJ4czpkb3VibGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJaIiB0eXBlPSJ4czpk
+b3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwv
+eHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiB0eXBl
+PSJ0bnM6VGhyZWVEQ2FydGVzaWFuQ29vcmRpbmF0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ikxpc3RPZlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURDYXJ0ZXNpYW5Db29yZGluYXRlcyIg
+dHlwZT0idG5zOlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVzIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURDYXJ0
+ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOkxpc3RPZlRocmVlRENhcnRlc2lhbkNvb3JkaW5h
+dGVzIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJPcmllbnRhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9yaWVudGF0aW9uIiB0
+eXBlPSJ0bnM6T3JpZW50YXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP
+Zk9yaWVudGF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJPcmllbnRhdGlvbiIgdHlwZT0idG5zOk9yaWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZPcmllbnRhdGlv
+biIgdHlwZT0idG5zOkxpc3RPZk9yaWVudGF0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUaHJlZURPcmllbnRhdGlvbiI+DQogICAg
+PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh
+c2U9InRuczpPcmllbnRhdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJBIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDIiB0eXBlPSJ4czpkb3VibGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z
+aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IlRocmVlRE9yaWVudGF0aW9uIiB0eXBlPSJ0bnM6VGhyZWVET3JpZW50
+YXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRocmVlRE9yaWVudGF0
+aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURP
+cmllbnRhdGlvbiIgdHlwZT0idG5zOlRocmVlRE9yaWVudGF0aW9uIiBtaW5PY2N1cnM9IjAiIG1h
+eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUaHJlZURP
+cmllbnRhdGlvbiIgdHlwZT0idG5zOkxpc3RPZlRocmVlRE9yaWVudGF0aW9uIiBuaWxsYWJsZT0i
+dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGcmFtZSI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9IkZyYW1lIiB0eXBlPSJ0bnM6RnJhbWUiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkZyYW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJGcmFtZSIgdHlwZT0idG5zOkZyYW1lIiBtaW5PY2N1cnM9IjAi
+IG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGcmFt
+ZSIgdHlwZT0idG5zOkxpc3RPZkZyYW1lIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUaHJlZURGcmFtZSI+DQogICAgPHhzOmNvbXBsZXhD
+b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpGcmFt
+ZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJD
+YXJ0ZXNpYW5Db29yZGluYXRlcyIgdHlwZT0idG5zOlRocmVlRENhcnRlc2lhbkNvb3JkaW5hdGVz
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik9yaWVudGF0aW9uIiB0eXBlPSJ0bnM6VGhyZWVET3JpZW50YXRpb24iIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8
+L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUaHJlZURGcmFtZSIgdHlwZT0idG5zOlRocmVlREZy
+YW1lIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUaHJlZURGcmFtZSI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGhyZWVERnJhbWUiIHR5
+cGU9InRuczpUaHJlZURGcmFtZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGhyZWVERnJhbWUiIHR5cGU9InRuczpMaXN0
+T2ZUaHJlZURGcmFtZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2lt
+cGxlVHlwZSAgbmFtZT0iT3BlbkZpbGVNb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0i
+eHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVhZF8xIiAvPg0KICAg
+ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJXcml0ZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJFcmFzZUV4aXN0aW5nXzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs
+dWU9IkFwcGVuZF84IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlbkZpbGVNb2RlIiB0eXBlPSJ0bnM6T3BlbkZpbGVN
+b2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZPcGVuRmlsZU1vZGUiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9wZW5GaWxlTW9kZSIg
+dHlwZT0idG5zOk9wZW5GaWxlTW9kZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJMaXN0T2ZPcGVuRmlsZU1vZGUiIHR5cGU9InRuczpMaXN0T2ZPcGVuRmlsZU1v
+ZGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5h
+bWU9IklkZW50aXR5Q3JpdGVyaWFUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6
+c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVXNlck5hbWVfMSIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVGh1bWJwcmludF8yIiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJSb2xlXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+Ikdyb3VwSWRfNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQW5vbnltb3VzXzUi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkF1dGhlbnRpY2F0ZWRVc2VyXzYiIC8+
+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFwcGxpY2F0aW9uXzciIC8+DQogICAgICA8
+eHM6ZW51bWVyYXRpb24gdmFsdWU9Ilg1MDlTdWJqZWN0XzgiIC8+DQogICAgPC94czpyZXN0cmlj
+dGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJJZGVudGl0eUNy
+aXRlcmlhVHlwZSIgdHlwZT0idG5zOklkZW50aXR5Q3JpdGVyaWFUeXBlIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZJZGVudGl0eUNyaXRlcmlhVHlwZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSWRlbnRpdHlDcml0ZXJpYVR5cGUiIHR5
+cGU9InRuczpJZGVudGl0eUNyaXRlcmlhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu
+Ym91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJZGVudGl0eUNyaXRlcmlhVHlwZSIgdHlwZT0idG5zOkxp
+c3RPZklkZW50aXR5Q3JpdGVyaWFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJJZGVudGl0eU1hcHBpbmdSdWxlVHlwZSI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JpdGVyaWFUeXBlIiB0eXBl
+PSJ0bnM6SWRlbnRpdHlDcml0ZXJpYVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkNyaXRlcmlhIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIHR5cGU9InRuczpJ
+ZGVudGl0eU1hcHBpbmdSdWxlVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz
+dE9mSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IklkZW50aXR5TWFwcGluZ1J1bGVUeXBlIiB0eXBlPSJ0bnM6SWRlbnRp
+dHlNYXBwaW5nUnVsZVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZklkZW50aXR5TWFwcGluZ1J1bGVUeXBlIiB0eXBl
+PSJ0bnM6TGlzdE9mSWRlbnRpdHlNYXBwaW5nUnVsZVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz
+OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkN1cnJlbmN5VW5pdFR5cGUiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51bWVyaWNDb2RlIiB0
+eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+RXhwb25lbnQiIHR5cGU9InhzOmJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkFscGhhYmV0aWNDb2RlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW5jeSIgdHlw
+ZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJDdXJyZW5jeVVuaXRUeXBlIiB0eXBlPSJ0bnM6Q3VycmVuY3lVbml0VHlwZSIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ3VycmVuY3lVbml0VHlwZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ3VycmVuY3lVbml0VHlwZSIgdHlwZT0i
+dG5zOkN1cnJlbmN5VW5pdFR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkN1cnJlbmN5VW5pdFR5cGUiIHR5cGU9InRu
+czpMaXN0T2ZDdXJyZW5jeVVuaXRUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJBbGFybU1hc2siPg0KICAgIDx4czpyZXN0cmljdGlv
+biBiYXNlPSJ4czp1bnNpZ25lZFNob3J0Ij4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz
+OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFsYXJtTWFzayIgdHlwZT0idG5zOkFs
+YXJtTWFzayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQWxhcm1NYXNrIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBbGFybU1hc2siIHR5
+cGU9InRuczpBbGFybU1hc2siIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTGlzdE9mQWxhcm1NYXNrIiB0eXBlPSJ0bnM6TGlzdE9mQWxhcm1NYXNrIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJUcnVzdExp
+c3RWYWxpZGF0aW9uT3B0aW9ucyI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2ln
+bmVkSW50Ij4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IlRydXN0TGlzdFZhbGlkYXRpb25PcHRpb25zIiB0eXBlPSJ0bnM6VHJ1
+c3RMaXN0VmFsaWRhdGlvbk9wdGlvbnMiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlRy
+dXN0TGlzdE1hc2tzIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJUcnVzdGVkQ2VydGlmaWNhdGVzXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp
+b24gdmFsdWU9IlRydXN0ZWRDcmxzXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+Iklzc3VlckNlcnRpZmljYXRlc180IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJ
+c3N1ZXJDcmxzXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFsbF8xNSIgLz4N
+CiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IlRydXN0TGlzdE1hc2tzIiB0eXBlPSJ0bnM6VHJ1c3RMaXN0TWFza3MiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRydXN0TGlzdERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTcGVjaWZpZWRMaXN0cyIgdHlwZT0ieHM6dW5z
+aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRydXN0
+ZWRDZXJ0aWZpY2F0ZXMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmciIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcnVzdGVkQ3JscyIg
+dHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Iklzc3VlckNlcnRpZmljYXRlcyIgdHlwZT0idWE6
+TGlzdE9mQnl0ZVN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9Iklzc3VlckNybHMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmci
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJ1c3RMaXN0RGF0YVR5cGUi
+IHR5cGU9InRuczpUcnVzdExpc3REYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iTGlzdE9mVHJ1c3RMaXN0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlRydXN0TGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6VHJ1c3RMaXN0RGF0
+YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9Ikxpc3RPZlRydXN0TGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVHJ1c3RM
+aXN0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9IlRyYW5zYWN0aW9uRXJyb3JUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUYXJnZXRJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXJyb3Ii
+IHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik1lc3NhZ2UiIHR5cGU9InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNhY3Rpb25FcnJvclR5cGUiIHR5cGU9InRuczpUcmFu
+c2FjdGlvbkVycm9yVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHJh
+bnNhY3Rpb25FcnJvclR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlRyYW5zYWN0aW9uRXJyb3JUeXBlIiB0eXBlPSJ0bnM6VHJhbnNhY3Rpb25FcnJvclR5
+cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9Ikxpc3RPZlRyYW5zYWN0aW9uRXJyb3JUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVHJhbnNh
+Y3Rpb25FcnJvclR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkRlY2ltYWxEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iU2NhbGUiIHR5cGU9InhzOnNob3J0IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlY2ltYWxEYXRhVHlwZSIg
+dHlwZT0idG5zOkRlY2ltYWxEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+RGF0YVR5cGVTY2hlbWFIZWFkZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9Ik5hbWVzcGFjZXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0cnVjdHVyZURh
+dGFUeXBlcyIgdHlwZT0idG5zOkxpc3RPZlN0cnVjdHVyZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW51bURhdGFU
+eXBlcyIgdHlwZT0idG5zOkxpc3RPZkVudW1EZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNpbXBsZURhdGFUeXBlcyIg
+dHlwZT0idG5zOkxpc3RPZlNpbXBsZVR5cGVEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZVNjaGVtYUhlYWRlciIgdHlwZT0idG5zOkRhdGFU
+eXBlU2NoZW1hSGVhZGVyIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRh
+VHlwZVNjaGVtYUhlYWRlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iRGF0YVR5cGVTY2hlbWFIZWFkZXIiIHR5cGU9InRuczpEYXRhVHlwZVNjaGVtYUhlYWRl
+ciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTGlzdE9mRGF0YVR5cGVTY2hlbWFIZWFkZXIiIHR5cGU9InRuczpMaXN0T2ZEYXRhVHlw
+ZVNjaGVtYUhlYWRlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iRGF0YVR5cGVEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFt
+ZSIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEYXRhVHlwZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6RGF0YVR5cGVEZXNjcmlwdGlv
+biIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVR5cGVEZXNjcmlwdGlv
+biI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVE
+ZXNjcmlwdGlvbiIgdHlwZT0idG5zOkRhdGFUeXBlRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIg
+bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFU
+eXBlRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZEYXRhVHlwZURlc2NyaXB0aW9uIiBuaWxs
+YWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTdHJ1
+Y3R1cmVEZXNjcmlwdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+
+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhVHlwZURlc2NyaXB0aW9uIj4NCiAg
+ICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0cnVjdHVy
+ZURlZmluaXRpb24iIHR5cGU9InRuczpTdHJ1Y3R1cmVEZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpl
+eHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlRGVzY3JpcHRpb24iIHR5cGU9InRuczpTdHJ1
+Y3R1cmVEZXNjcmlwdGlvbiIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Ry
+dWN0dXJlRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlN0cnVjdHVyZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6U3RydWN0dXJlRGVzY3JpcHRp
+b24iIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9Ikxpc3RPZlN0cnVjdHVyZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mU3RydWN0
+dXJlRGVzY3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkVudW1EZXNjcmlwdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50
+IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhVHlwZURl
+c2NyaXB0aW9uIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkVudW1EZWZpbml0aW9uIiB0eXBlPSJ0bnM6RW51bURlZmluaXRpb24iIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVp
+bHRJblR5cGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4
+Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW51bURl
+c2NyaXB0aW9uIiB0eXBlPSJ0bnM6RW51bURlc2NyaXB0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZFbnVtRGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkVudW1EZXNjcmlwdGlvbiIgdHlwZT0idG5zOkVudW1EZXNj
+cmlwdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mRW51bURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mRW51bURl
+c2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJTaW1wbGVUeXBlRGVzY3JpcHRpb24iPg0KICAgIDx4czpjb21wbGV4Q29udGVu
+dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVE
+ZXNjcmlwdGlvbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJCYXNlRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCdWlsdEluVHlwZSIg
+dHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2Vx
+dWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTaW1wbGVUeXBlRGVzY3Jp
+cHRpb24iIHR5cGU9InRuczpTaW1wbGVUeXBlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9Ikxpc3RPZlNpbXBsZVR5cGVEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2ltcGxlVHlwZURlc2NyaXB0aW9uIiB0eXBl
+PSJ0bnM6U2ltcGxlVHlwZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i
+b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTaW1wbGVUeXBlRGVzY3JpcHRp
+b24iIHR5cGU9InRuczpMaXN0T2ZTaW1wbGVUeXBlRGVzY3JpcHRpb24iIG5pbGxhYmxlPSJ0cnVl
+Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVBQmluYXJ5RmlsZURh
+dGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4
+czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFUeXBlU2NoZW1hSGVhZGVyIj4NCiAgICAgICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNjaGVtYUxvY2F0aW9uIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZUhlYWRlciIgdHlwZT0idG5zOkxpc3RPZktleVZhbHVl
+UGFpciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJCb2R5IiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBs
+ZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJVQUJp
+bmFyeUZpbGVEYXRhVHlwZSIgdHlwZT0idG5zOlVBQmluYXJ5RmlsZURhdGFUeXBlIiAvPg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVQUJpbmFyeUZpbGVEYXRhVHlwZSI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVUFCaW5hcnlGaWxlRGF0YVR5
+cGUiIHR5cGU9InRuczpVQUJpbmFyeUZpbGVEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVUFCaW5hcnlGaWxl
+RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZVQUJpbmFyeUZpbGVEYXRhVHlwZSIgbmlsbGFibGU9
+InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUG9ydGFibGVR
+dWFsaWZpZWROYW1lIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJOYW1lc3BhY2VVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8
+L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQb3J0YWJsZVF1YWxpZmllZE5h
+bWUiIHR5cGU9InRuczpQb3J0YWJsZVF1YWxpZmllZE5hbWUiIC8+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9Ikxpc3RPZlBvcnRhYmxlUXVhbGlmaWVkTmFtZSI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUG9ydGFibGVRdWFsaWZpZWROYW1lIiB0eXBlPSJ0
+bnM6UG9ydGFibGVRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3Vu
+ZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQb3J0YWJsZVF1YWxpZmllZE5hbWUi
+IHR5cGU9InRuczpMaXN0T2ZQb3J0YWJsZVF1YWxpZmllZE5hbWUiIG5pbGxhYmxlPSJ0cnVlIj48
+L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlBvcnRhYmxlTm9kZUlkIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VVcmki
+IHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IklkZW50aWZpZXIiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQb3J0YWJsZU5vZGVJZCIgdHlwZT0idG5zOlBv
+cnRhYmxlTm9kZUlkIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQb3J0YWJs
+ZU5vZGVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUG9y
+dGFibGVOb2RlSWQiIHR5cGU9InRuczpQb3J0YWJsZU5vZGVJZCIgbWluT2NjdXJzPSIwIiBtYXhP
+Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUG9ydGFibGVO
+b2RlSWQiIHR5cGU9InRuczpMaXN0T2ZQb3J0YWJsZU5vZGVJZCIgbmlsbGFibGU9InRydWUiPjwv
+eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVW5zaWduZWRSYXRpb25hbE51
+bWJlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtZXJh
+dG9yIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRGVub21pbmF0b3IiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iVW5zaWduZWRSYXRpb25hbE51bWJlciIgdHlwZT0idG5zOlVuc2lnbmVkUmF0
+aW9uYWxOdW1iZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVuc2lnbmVk
+UmF0aW9uYWxOdW1iZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlVuc2lnbmVkUmF0aW9uYWxOdW1iZXIiIHR5cGU9InRuczpVbnNpZ25lZFJhdGlvbmFsTnVt
+YmVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZVbnNpZ25lZFJhdGlvbmFsTnVtYmVyIiB0eXBlPSJ0bnM6TGlzdE9mVW5z
+aWduZWRSYXRpb25hbE51bWJlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8
+eHM6c2ltcGxlVHlwZSAgbmFtZT0iUHViU3ViU3RhdGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBi
+YXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEaXNhYmxlZF8w
+IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQYXVzZWRfMSIgLz4NCiAgICAgIDx4
+czplbnVtZXJhdGlvbiB2YWx1ZT0iT3BlcmF0aW9uYWxfMiIgLz4NCiAgICAgIDx4czplbnVtZXJh
+dGlvbiB2YWx1ZT0iRXJyb3JfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUHJl
+T3BlcmF0aW9uYWxfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1YlN1YlN0YXRlIiB0eXBlPSJ0bnM6UHViU3ViU3Rh
+dGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1YlN1YlN0YXRlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJTdGF0ZSIgdHlw
+ZT0idG5zOlB1YlN1YlN0YXRlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9Ikxpc3RPZlB1YlN1YlN0YXRlIiB0eXBlPSJ0bnM6TGlzdE9mUHViU3ViU3RhdGUiIG5p
+bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRh
+dGFTZXRNZXRhRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2Ui
+Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVTY2hlbWFIZWFkZXIiPg0K
+ICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIg
+dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkZpZWxkcyIgdHlwZT0idG5zOkxpc3RPZkZpZWxkTWV0YURhdGEiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNl
+dENsYXNzSWQiIHR5cGU9InVhOkd1aWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJDb25maWd1cmF0aW9uVmVyc2lvbiIgdHlwZT0idG5zOkNvbmZpZ3VyYXRp
+b25WZXJzaW9uRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBs
+ZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRh
+U2V0TWV0YURhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldE1ldGFEYXRhVHlwZSIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldE1ldGFEYXRhVHlwZSI+DQogICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1ldGFEYXRhVHlwZSIg
+dHlwZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1
+bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFTZXRNZXRhRGF0YVR5
+cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0TWV0YURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+
+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJGaWVsZE1ldGFEYXRhIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4
+czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpZWxkRmxh
+Z3MiIHR5cGU9InRuczpEYXRhU2V0RmllbGRGbGFncyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iQnVpbHRJblR5cGUiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVh
+Ok5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxpc3RPZlVJbnQz
+MiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ik1heFN0cmluZ0xlbmd0aCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRGaWVsZElkIiB0eXBlPSJ1YTpHdWlk
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9wZXJ0aWVzIiB0
+eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IkZpZWxkTWV0YURhdGEiIHR5cGU9InRuczpGaWVsZE1ldGFEYXRhIiAvPg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZGaWVsZE1ldGFEYXRhIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZE1ldGFEYXRhIiB0eXBlPSJ0bnM6
+RmllbGRNZXRhRGF0YSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRmllbGRNZXRhRGF0YSIgdHlwZT0idG5zOkxpc3RPZkZp
+ZWxkTWV0YURhdGEiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBs
+ZVR5cGUgIG5hbWU9IkRhdGFTZXRGaWVsZEZsYWdzIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFz
+ZT0ieHM6dW5zaWduZWRTaG9ydCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1w
+bGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRGbGFncyIgdHlwZT0idG5z
+OkRhdGFTZXRGaWVsZEZsYWdzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25maWd1
+cmF0aW9uVmVyc2lvbkRhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJNYWpvclZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNaW5vclZlcnNpb24iIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ29uZmlndXJhdGlvblZlcnNpb25EYXRh
+VHlwZSIgdHlwZT0idG5zOkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNvbmZpZ3VyYXRpb25WZXJzaW9uRGF0YVR5cGUiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbmZpZ3VyYXRpb25W
+ZXJzaW9uRGF0YVR5cGUiIHR5cGU9InRuczpDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIiBt
+aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZDb25maWd1cmF0aW9uVmVyc2lvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mQ29u
+ZmlndXJhdGlvblZlcnNpb25EYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHVibGlzaGVkRGF0YVNldERhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpz
+dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEYXRhU2V0Rm9sZGVyIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0TWV0
+YURhdGEiIHR5cGU9InRuczpEYXRhU2V0TWV0YURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXh0ZW5zaW9uRmllbGRzIiB0
+eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFNvdXJjZSIgdHlwZT0idWE6RXh0
+ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6
+c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1Ymxp
+c2hlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFTZXREYXRhVHlwZSIg
+Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHVibGlzaGVkRGF0YVNldERhdGFU
+eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNo
+ZWREYXRhU2V0RGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNoZWREYXRhU2V0RGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZlB1Ymxpc2hlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hl
+ZERhdGFTZXREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0
+bnM6UHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJMaXN0T2ZQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VE
+YXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlwZSIgbWluT2Nj
+dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94
+czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz
+dE9mUHVibGlzaGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mUHVibGlz
+aGVkRGF0YVNldFNvdXJjZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWRWYXJpYWJs
+ZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVydmFs
+SGludCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEZWFkYmFuZFR5cGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFZhbHVlIiB0eXBlPSJ4czpkb3Vi
+bGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2Ui
+IHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlN1YnN0aXR1dGVWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0YURhdGFQcm9wZXJ0aWVz
+IiB0eXBlPSJ1YTpMaXN0T2ZRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9IlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIHR5cGU9InRuczpQdWJsaXNo
+ZWRWYXJpYWJsZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQ
+dWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWRWYXJpYWJsZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlz
+aGVkVmFyaWFibGVEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSIg
+dHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hlZFZhcmlhYmxlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVl
+Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1Ymxpc2hlZERhdGFJ
+dGVtc0RhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAg
+ICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlB1Ymxpc2hlZERhdGFTZXRTb3VyY2VEYXRhVHlw
+ZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQ
+dWJsaXNoZWREYXRhIiB0eXBlPSJ0bnM6TGlzdE9mUHVibGlzaGVkVmFyaWFibGVEYXRhVHlwZSIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N
+CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFU
+eXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVkRGF0YUl0ZW1zRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZWREYXRhSXRlbXNE
+YXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFJdGVtc0RhdGFUeXBlIiBtaW5PY2N1cnM9
+IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQ
+dWJsaXNoZWREYXRhSXRlbXNEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1Ymxpc2hlZERhdGFJ
+dGVtc0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJQdWJsaXNoZWRFdmVudHNEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhD
+b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpQdWJs
+aXNoZWREYXRhU2V0U291cmNlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0idWE6Tm9kZUlkIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlNlbGVjdGVkRmllbGRzIiB0eXBlPSJ0bnM6TGlzdE9mU2ltcGxlQXR0cmlidXRlT3BlcmFu
+ZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJGaWx0ZXIiIHR5cGU9InRuczpDb250ZW50RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl
+bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiIHR5cGU9InRuczpQdWJs
+aXNoZWRFdmVudHNEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9m
+UHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVk
+RXZlbnRzRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlB1Ymxpc2hlZEV2ZW50c0RhdGFUeXBlIiB0eXBlPSJ0
+bnM6TGlzdE9mUHVibGlzaGVkRXZlbnRzRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVs
+ZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRDdXN0b21T
+b3VyY2VEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQog
+ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpQdWJsaXNoZWREYXRhU2V0U291cmNlRGF0YVR5
+cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+Q3ljbGljRGF0YVNldCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4
+Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlz
+aGVkRGF0YVNldEN1c3RvbVNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHVibGlzaGVkRGF0YVNl
+dEN1c3RvbVNvdXJjZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0
+T2ZQdWJsaXNoZWREYXRhU2V0Q3VzdG9tU291cmNlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRDdXN0b21Tb3VyY2VE
+YXRhVHlwZSIgdHlwZT0idG5zOlB1Ymxpc2hlZERhdGFTZXRDdXN0b21Tb3VyY2VEYXRhVHlwZSIg
+bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTGlzdE9mUHVibGlzaGVkRGF0YVNldEN1c3RvbVNvdXJjZURhdGFUeXBlIiB0eXBlPSJ0bnM6
+TGlzdE9mUHVibGlzaGVkRGF0YVNldEN1c3RvbVNvdXJjZURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1
+ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJEYXRhU2V0RmllbGRD
+b250ZW50TWFzayI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4N
+CiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6RGF0YVNldEZpZWxkQ29u
+dGVudE1hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFTZXRGaWVs
+ZENvbnRlbnRNYXNrIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJEYXRhU2V0RmllbGRDb250ZW50TWFzayIgdHlwZT0idG5zOkRhdGFTZXRGaWVsZENvbnRlbnRN
+YXNrIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRh
+dGFTZXRGaWVsZENvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldEZpZWxkQ29udGVu
+dE1hc2siIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9IkRhdGFTZXRXcml0ZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5hYmxlZCIgdHlwZT0i
+eHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0
+YVNldFdyaXRlcklkIiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0RmllbGRDb250ZW50TWFzayIgdHlwZT0idG5z
+OkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJLZXlGcmFtZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE5hbWUiIHR5cGU9InhzOnN0
+cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkRhdGFTZXRXcml0ZXJQcm9wZXJ0aWVzIiB0eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQ
+YWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3Nh
+Z2VTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFT
+ZXRXcml0ZXJEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0
+YVNldFdyaXRlckRhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEYXRhU2V0V3JpdGVyRGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0V3JpdGVyRGF0
+YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9Ikxpc3RPZkRhdGFTZXRXcml0ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRh
+dGFTZXRXcml0ZXJEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBl
+PSJ0bnM6RGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJUcmFuc3Bv
+cnREYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGlzdE9mRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0
+YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBl
+Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIg
+dHlwZT0idG5zOkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRXcml0ZXJNZXNzYWdl
+RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldFdy
+aXRlck1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iUHViU3ViR3JvdXBEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5h
+YmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlHcm91cElkIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiB0eXBlPSJ0bnM6TGlzdE9mRW5k
+cG9pbnREZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9Ik1heE5ldHdvcmtNZXNzYWdlU2l6ZSIgdHlwZT0ieHM6dW5zaWdu
+ZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikdyb3VwUHJv
+cGVydGllcyIgdHlwZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3Vi
+R3JvdXBEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHViU3Vi
+R3JvdXBEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUHViU3ViR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZlB1YlN1Ykdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZQdWJTdWJHcm91cERh
+dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJXcml0ZXJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4
+ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOlB1YlN1Ykdyb3VwRGF0
+YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iV3JpdGVyR3JvdXBJZCIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbCIgdHlwZT0i
+eHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+S2VlcEFsaXZlVGltZSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJpb3JpdHkiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlw
+ZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkhlYWRlckxheW91dFVyaSIgdHlwZT0ieHM6c3RyaW5n
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlRyYW5zcG9ydFNldHRpbmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+TWVzc2FnZVNldHRpbmdzIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldFdy
+aXRlcnMiIHR5cGU9InRuczpMaXN0T2ZEYXRhU2V0V3JpdGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hz
+OmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZXJHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6V3Jp
+dGVyR3JvdXBEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mV3Jp
+dGVyR3JvdXBEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iV3JpdGVyR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwRGF0YVR5cGUi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZldyaXRlckdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZXcml0ZXJHcm91
+cERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdy
+b3VwVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP
+ZldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IldyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRu
+czpXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i
+dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZXcml0ZXJHcm91cFRyYW5z
+cG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlw
+ZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJX
+cml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOldyaXRlckdyb3VwTWVzc2FnZURh
+dGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZXcml0ZXJHcm91cE1l
+c3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpXcml0ZXJHcm91cE1lc3Nh
+Z2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iTGlzdE9mV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRu
+czpMaXN0T2ZXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6
+ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHViU3ViQ29ubmVjdGlvbkRhdGFU
+eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoZXJJZCIgdHlwZT0idWE6VmFyaWFu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJv
+ZmlsZVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkcmVzcyIgdHlwZT0idWE6RXh0ZW5zaW9uT2Jq
+ZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iQ29ubmVjdGlvblByb3BlcnRpZXMiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIi
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJUcmFuc3BvcnRTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVyR3Jv
+dXBzIiB0eXBlPSJ0bnM6TGlzdE9mV3JpdGVyR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwcyIg
+dHlwZT0idG5zOkxpc3RPZlJlYWRlckdyb3VwRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHVi
+U3ViQ29ubmVjdGlvbkRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0
+T2ZQdWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlB1YlN1YkNvbm5lY3Rpb25EYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1
+YkNvbm5lY3Rpb25EYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiB0
+eXBlPSJ0bnM6TGlzdE9mUHViU3ViQ29ubmVjdGlvbkRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+
+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDb25uZWN0aW9uVHJhbnNw
+b3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8
+L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDb25uZWN0aW9uVHJhbnNwb3J0
+RGF0YVR5cGUiIHR5cGU9InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29ubmVjdGlvblRy
+YW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6Q29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiBt
+aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZDb25u
+ZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5ldHdvcmtBZGRyZXNzRGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtJbnRlcmZhY2UiIHR5
+cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3
+b3JrQWRkcmVzc0RhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0FkZHJlc3NEYXRhVHlwZSIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTmV0d29ya0FkZHJlc3NEYXRhVHlwZSI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya0FkZHJl
+c3NEYXRhVHlwZSIgdHlwZT0idG5zOk5ldHdvcmtBZGRyZXNzRGF0YVR5cGUiIG1pbk9jY3Vycz0i
+MCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5l
+dHdvcmtBZGRyZXNzRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZOZXR3b3JrQWRkcmVzc0RhdGFU
+eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJOZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQg
+bWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5ldHdvcmtBZGRy
+ZXNzRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iVXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg
+ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJOZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29ya0FkZHJl
+c3NVcmxEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTmV0d29y
+a0FkZHJlc3NVcmxEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iTmV0d29ya0FkZHJlc3NVcmxEYXRhVHlwZSIgdHlwZT0idG5zOk5ldHdvcmtBZGRy
+ZXNzVXJsRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk5ldHdvcmtBZGRyZXNzVXJsRGF0YVR5cGUiIHR5cGU9
+InRuczpMaXN0T2ZOZXR3b3JrQWRkcmVzc1VybERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94
+czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkZXJHcm91cERhdGFUeXBl
+Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRl
+bnNpb24gYmFzZT0idG5zOlB1YlN1Ykdyb3VwRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIHR5cGU9
+InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlU2V0dGluZ3MiIHR5cGU9InVhOkV4dGVu
+c2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVycyIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRS
+ZWFkZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg
+PC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENv
+bnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdy
+b3VwRGF0YVR5cGUiIHR5cGU9InRuczpSZWFkZXJHcm91cERhdGFUeXBlIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSZWFkZXJHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cERhdGFUeXBlIiB0eXBl
+PSJ0bnM6UmVhZGVyR3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVhZGVyR3JvdXBEYXRhVHlwZSIg
+dHlwZT0idG5zOkxpc3RPZlJlYWRlckdyb3VwRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz
+OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlYWRlckdyb3VwVHJhbnNwb3J0
+RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cFRyYW5zcG9ydERh
+dGFUeXBlIiB0eXBlPSJ0bnM6UmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUmVhZGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZGVyR3JvdXBU
+cmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOlJlYWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZlJlYWRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZS
+ZWFkZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBl
+PSJ0bnM6UmVhZGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ikxpc3RPZlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIg
+dHlwZT0idG5zOlJlYWRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWFkZXJHcm91
+cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlYWRlckdyb3VwTWVzc2FnZURhdGFU
+eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJEYXRhU2V0UmVhZGVyRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuYWJsZWQiIHR5cGU9Inhz
+OmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxp
+c2hlcklkIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJXcml0ZXJHcm91cElkIiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0V3JpdGVySWQiIHR5cGU9
+InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IkRhdGFTZXRNZXRhRGF0YSIgdHlwZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5cGUiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRh
+U2V0RmllbGRDb250ZW50TWFzayIgdHlwZT0idG5zOkRhdGFTZXRGaWVsZENvbnRlbnRNYXNrIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlUmVjZWl2ZVRp
+bWVvdXQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iS2V5RnJhbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkhlYWRlckxheW91dFVyaSIgdHlwZT0ieHM6
+c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlHcm91cElkIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUtleVNlcnZpY2VzIiB0eXBlPSJ0bnM6TGlzdE9mRW5k
+cG9pbnREZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJQcm9wZXJ0aWVzIiB0eXBlPSJ0bnM6TGlz
+dE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0U2V0dGluZ3MiIHR5cGU9InVhOkV4dGVuc2lvbk9i
+amVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik1lc3NhZ2VTZXR0aW5ncyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2Ny
+aWJlZERhdGFTZXQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVyRGF0YVR5cGUiIHR5cGU9InRuczpEYXRh
+U2V0UmVhZGVyRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRh
+dGFTZXRSZWFkZXJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iRGF0YVNldFJlYWRlckRhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldFJlYWRlckRh
+dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0UmVhZGVyRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZE
+YXRhU2V0UmVhZGVyRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlw
+ZT0idG5zOkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTGlzdE9mRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVyVHJhbnNw
+b3J0RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiIG1p
+bk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ikxpc3RPZkRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRh
+dGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu
+dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlw
+ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUi
+IHR5cGU9InRuczpEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0UmVhZGVyTWVzc2Fn
+ZURhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgbWluT2Nj
+dXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94
+czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlz
+dE9mRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZkRhdGFTZXRS
+ZWFkZXJNZXNzYWdlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vi
+c2NyaWJlZERhdGFTZXREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz
+dE9mU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOlN1
+YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmliZWREYXRhU2V0RGF0YVR5
+cGUiIHR5cGU9InRuczpMaXN0T2ZTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiBuaWxsYWJsZT0i
+dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUYXJnZXRWYXJp
+YWJsZXNEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQog
+ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIj4N
+CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdl
+dFZhcmlhYmxlcyIgdHlwZT0idG5zOkxpc3RPZkZpZWxkVGFyZ2V0RGF0YVR5cGUiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8
+L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgdHlwZT0i
+dG5zOlRhcmdldFZhcmlhYmxlc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJMaXN0T2ZUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0VmFyaWFibGVzRGF0YVR5cGUiIHR5cGU9InRuczpU
+YXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGFyZ2V0VmFyaWFibGVzRGF0YVR5cGUi
+IHR5cGU9InRuczpMaXN0T2ZUYXJnZXRWYXJpYWJsZXNEYXRhVHlwZSIgbmlsbGFibGU9InRydWUi
+PjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmllbGRUYXJnZXREYXRh
+VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNl
+dEZpZWxkSWQiIHR5cGU9InVhOkd1aWQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlJlY2VpdmVySW5kZXhSYW5nZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9k
+ZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IldyaXRlSW5kZXhSYW5n
+ZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiB0eXBlPSJ0bnM6T3Zl
+cnJpZGVWYWx1ZUhhbmRsaW5nIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJPdmVycmlkZVZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRmllbGRUYXJnZXREYXRhVHlwZSIgdHlwZT0idG5zOkZpZWxkVGFyZ2V0RGF0YVR5cGUiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkZpZWxkVGFyZ2V0RGF0YVR5cGUiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpZWxkVGFyZ2V0RGF0
+YVR5cGUiIHR5cGU9InRuczpGaWVsZFRhcmdldERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZGaWVsZFRhcmdl
+dERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRmllbGRUYXJnZXREYXRhVHlwZSIgbmlsbGFibGU9
+InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iT3ZlcnJpZGVW
+YWx1ZUhhbmRsaW5nIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzYWJsZWRfMCIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iTGFzdFVzYWJsZVZhbHVlXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp
+b24gdmFsdWU9Ik92ZXJyaWRlVmFsdWVfMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8
+L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik92ZXJyaWRlVmFsdWVIYW5kbGlu
+ZyIgdHlwZT0idG5zOk92ZXJyaWRlVmFsdWVIYW5kbGluZyIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iTGlzdE9mT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPdmVycmlkZVZhbHVlSGFuZGxpbmciIHR5cGU9InRu
+czpPdmVycmlkZVZhbHVlSGFuZGxpbmciIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mT3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiB0eXBlPSJ0bnM6TGlzdE9m
+T3ZlcnJpZGVWYWx1ZUhhbmRsaW5nIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFUeXBlIj4N
+CiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNp
+b24gYmFzZT0idG5zOlN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyZW50Tm9kZU5hbWUiIHR5cGU9
+InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJSb2xlUGVybWlzc2lvbnMiIHR5cGU9InRuczpMaXN0T2ZSb2xlUGVy
+bWlzc2lvblR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwv
+eHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250
+ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpYmVk
+RGF0YVNldE1pcnJvckRhdGFUeXBlIiB0eXBlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXRNaXJyb3JE
+YXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Vic2NyaWJlZERh
+dGFTZXRNaXJyb3JEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iU3Vic2NyaWJlZERhdGFTZXRNaXJyb3JEYXRhVHlwZSIgdHlwZT0idG5zOlN1YnNj
+cmliZWREYXRhU2V0TWlycm9yRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJv
+dW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t
+cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmliZWREYXRhU2V0TWly
+cm9yRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZTdWJzY3JpYmVkRGF0YVNldE1pcnJvckRhdGFU
+eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJQdWJTdWJDb25maWd1cmF0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlB1Ymxpc2hlZERhdGFTZXRzIiB0eXBlPSJ0bnM6TGlzdE9m
+UHVibGlzaGVkRGF0YVNldERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29ubmVjdGlvbnMiIHR5cGU9InRuczpMaXN0T2ZQ
+dWJTdWJDb25uZWN0aW9uRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVkIiB0eXBlPSJ4czpib29sZWFuIiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6
+UHViU3ViQ29uZmlndXJhdGlvbkRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1YlN1YkNvbmZpZ3VyYXRpb25EYXRhVHlwZSIgdHlw
+ZT0idG5zOlB1YlN1YkNvbmZpZ3VyYXRpb25EYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViQ29uZmln
+dXJhdGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mUHViU3ViQ29uZmlndXJhdGlvbkRhdGFU
+eXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJTdGFuZGFsb25lU3Vic2NyaWJlZERhdGFTZXRSZWZEYXRhVHlwZSI+DQogICAgPHhzOmNv
+bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu
+czpTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXROYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog
+ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFuZGFsb25lU3Vic2NyaWJlZERhdGFT
+ZXRSZWZEYXRhVHlwZSIgdHlwZT0idG5zOlN0YW5kYWxvbmVTdWJzY3JpYmVkRGF0YVNldFJlZkRh
+dGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdGFuZGFsb25lU3Vi
+c2NyaWJlZERhdGFTZXRSZWZEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iU3RhbmRhbG9uZVN1YnNjcmliZWREYXRhU2V0UmVmRGF0YVR5cGUiIHR5
+cGU9InRuczpTdGFuZGFsb25lU3Vic2NyaWJlZERhdGFTZXRSZWZEYXRhVHlwZSIgbWluT2NjdXJz
+PSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpz
+ZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9m
+U3RhbmRhbG9uZVN1YnNjcmliZWREYXRhU2V0UmVmRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZT
+dGFuZGFsb25lU3Vic2NyaWJlZERhdGFTZXRSZWZEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwv
+eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3RhbmRhbG9uZVN1YnNjcmli
+ZWREYXRhU2V0RGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2Ui
+Pg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6U3Vic2NyaWJlZERhdGFTZXREYXRhVHlw
+ZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJO
+YW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldEZvbGRlciIgdHlwZT0idWE6TGlzdE9m
+U3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkRhdGFTZXRNZXRhRGF0YSIgdHlwZT0idG5zOkRhdGFTZXRNZXRhRGF0YVR5
+cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iU3Vic2NyaWJlZERhdGFTZXQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAg
+ICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29t
+cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN0YW5kYWxvbmVTdWJzY3JpYmVkRGF0YVNl
+dERhdGFUeXBlIiB0eXBlPSJ0bnM6U3RhbmRhbG9uZVN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlN0YW5kYWxvbmVTdWJzY3JpYmVk
+RGF0YVNldERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTdGFuZGFsb25lU3Vic2NyaWJlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOlN0YW5k
+YWxvbmVTdWJzY3JpYmVkRGF0YVNldERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i
+dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdGFuZGFsb25lU3Vic2Ny
+aWJlZERhdGFTZXREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlN0YW5kYWxvbmVTdWJzY3JpYmVk
+RGF0YVNldERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJTZWN1cml0eUdyb3VwRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3Vy
+aXR5R3JvdXBGb2xkZXIiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IktleUxpZmV0aW1lIiB0eXBl
+PSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl
+Y3VyaXR5UG9saWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhGdXR1cmVLZXlDb3VudCIgdHlw
+ZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ik1heFBhc3RLZXlDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5R3JvdXBJZCIgdHlwZT0ieHM6c3Ry
+aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iUm9sZVBlcm1pc3Npb25zIiB0eXBlPSJ0bnM6TGlzdE9mUm9sZVBlcm1pc3Npb25UeXBl
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iR3JvdXBQcm9wZXJ0aWVzIiB0eXBlPSJ0bnM6TGlzdE9mS2V5VmFsdWVQYWlyIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t
+cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5R3JvdXBEYXRhVHlwZSIgdHlw
+ZT0idG5zOlNlY3VyaXR5R3JvdXBEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iTGlzdE9mU2VjdXJpdHlHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUdyb3VwRGF0YVR5cGUiIHR5cGU9InRuczpTZWN1
+cml0eUdyb3VwRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlNlY3VyaXR5R3JvdXBEYXRhVHlwZSIgdHlwZT0i
+dG5zOkxpc3RPZlNlY3VyaXR5R3JvdXBEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl
+bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHViU3ViS2V5UHVzaFRhcmdldERhdGFU
+eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNh
+dGlvblVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVzaFRhcmdldEZvbGRlciIgdHlwZT0idWE6TGlz
+dE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5UG9saWN5
+VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VyVG9rZW5UeXBlIiB0eXBlPSJ0bnM6VXNlclRva2Vu
+UG9saWN5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUmVxdWVzdGVkS2V5Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldHJ5SW50ZXJ2YWwiIHR5cGU9
+InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVz
+aFRhcmdldFByb3BlcnRpZXMiIHR5cGU9InRuczpMaXN0T2ZLZXlWYWx1ZVBhaXIiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0
+eUdyb3VwcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9IlB1YlN1YktleVB1c2hUYXJnZXREYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1
+YktleVB1c2hUYXJnZXREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz
+dE9mUHViU3ViS2V5UHVzaFRhcmdldERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJLZXlQdXNoVGFyZ2V0RGF0YVR5cGUiIHR5cGU9InRu
+czpQdWJTdWJLZXlQdXNoVGFyZ2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1
+bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlB1YlN1YktleVB1c2hUYXJn
+ZXREYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YktleVB1c2hUYXJnZXREYXRhVHlwZSIg
+bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+UHViU3ViQ29uZmlndXJhdGlvbjJEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p
+eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpQdWJTdWJDb25maWd1
+cmF0aW9uRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU3Vic2NyaWJlZERhdGFTZXRzIiB0eXBlPSJ0bnM6TGlzdE9mU3RhbmRhbG9u
+ZVN1YnNjcmliZWREYXRhU2V0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldENsYXNzZXMiIHR5cGU9InRu
+czpMaXN0T2ZEYXRhU2V0TWV0YURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlZmF1bHRTZWN1cml0eUtleVNlcnZp
+Y2VzIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eUdy
+b3VwcyIgdHlwZT0idG5zOkxpc3RPZlNlY3VyaXR5R3JvdXBEYXRhVHlwZSIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJL
+ZXlQdXNoVGFyZ2V0cyIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YktleVB1c2hUYXJnZXREYXRhVHlw
+ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJDb25maWd1cmF0aW9uVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb25maWd1cmF0aW9uUHJv
+cGVydGllcyIgdHlwZT0idG5zOkxpc3RPZktleVZhbHVlUGFpciIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z
+aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IlB1YlN1YkNvbmZpZ3VyYXRpb24yRGF0YVR5cGUiIHR5cGU9InRuczpQ
+dWJTdWJDb25maWd1cmF0aW9uMkRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uMkRhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJTdWJDb25maWd1cmF0aW9uMkRhdGFUeXBlIiB0
+eXBlPSJ0bnM6UHViU3ViQ29uZmlndXJhdGlvbjJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhP
+Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUHViU3ViQ29u
+ZmlndXJhdGlvbjJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlB1YlN1YkNvbmZpZ3VyYXRpb24y
+RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5
+cGUgIG5hbWU9IkRhdGFTZXRPcmRlcmluZ1R5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNl
+PSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVbmRlZmluZWRfMCIg
+Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXNjZW5kaW5nV3JpdGVySWRfMSIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQXNjZW5kaW5nV3JpdGVySWRTaW5nbGVfMiIg
+Lz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IkRhdGFTZXRPcmRlcmluZ1R5cGUiIHR5cGU9InRuczpEYXRhU2V0T3JkZXJpbmdU
+eXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhU2V0T3JkZXJpbmdU
+eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0
+T3JkZXJpbmdUeXBlIiB0eXBlPSJ0bnM6RGF0YVNldE9yZGVyaW5nVHlwZSIgbWluT2NjdXJzPSIw
+IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhU2V0T3JkZXJpbmdUeXBl
+IiB0eXBlPSJ0bnM6TGlzdE9mRGF0YVNldE9yZGVyaW5nVHlwZSIgbmlsbGFibGU9InRydWUiPjwv
+eHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVWFkcE5ldHdvcmtNZXNzYWdl
+Q29udGVudE1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZEludCI+
+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBOZXR3
+b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0
+T2ZVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcE5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9
+InRuczpVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVYWRwTmV0d29ya01lc3NhZ2VDb250ZW50TWFz
+ayIgdHlwZT0idG5zOkxpc3RPZlVhZHBOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJVYWRwV3Jp
+dGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i
+ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6V3JpdGVyR3JvdXBNZXNzYWdl
+RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iR3JvdXBWZXJzaW9uIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRPcmRlcmluZyIgdHlwZT0idG5z
+OkRhdGFTZXRPcmRlcmluZ1R5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJOZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6VWFkcE5ldHdv
+cmtNZXNzYWdlQ29udGVudE1hc2siIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJTYW1wbGluZ09mZnNldCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGluZ09mZnNldCIgdHlwZT0i
+dWE6TGlzdE9mRG91YmxlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+ICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4
+Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcFdy
+aXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6VWFkcFdyaXRlckdyb3VwTWVzc2Fn
+ZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZVYWRwV3JpdGVy
+R3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlVhZHBXcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBX
+cml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVWFkcFdyaXRlckdyb3VwTWVzc2Fn
+ZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mVWFkcFdyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBl
+IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1l
+PSJVYWRwRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJh
+c2U9InhzOnVuc2lnbmVkSW50Ij4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBs
+ZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNr
+IiB0eXBlPSJ0bnM6VWFkcERhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVYWRwRGF0YVNldE1lc3Nh
+Z2VDb250ZW50TWFzayIgdHlwZT0idG5zOlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBt
+aW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlVhZHBEYXRh
+U2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6TGlzdE9mVWFkcERhdGFTZXRNZXNzYWdl
+Q29udGVudE1hc2siIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9IlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICA8eHM6
+Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0i
+dG5zOkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIg
+dHlwZT0idG5zOlVhZHBEYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29uZmlndXJlZFNpemUiIHR5cGU9InhzOnVu
+c2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJOZXR3b3JrTWVzc2FnZU51bWJlciIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRPZmZzZXQiIHR5cGU9
+InhzOnVuc2lnbmVkU2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVhZHBEYXRhU2V0V3JpdGVyTWVz
+c2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6VWFkcERhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlVhZHBEYXRhU2V0V3JpdGVyTWVz
+c2FnZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBEYXRhU2V0
+V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVYWRwRGF0YVNldFdyaXRlck1lc3NhZ2VE
+YXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlVhZHBEYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBl
+IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJVYWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250
+ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0
+UmVhZGVyTWVzc2FnZURhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9Ikdyb3VwVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOZXR3b3JrTWVzc2Fn
+ZU51bWJlciIgdHlwZT0ieHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFTZXRPZmZzZXQiIHR5cGU9InhzOnVuc2lnbmVkU2hv
+cnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU2V0
+Q2xhc3NJZCIgdHlwZT0idWE6R3VpZCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl
+bGVtZW50IG5hbWU9Ik5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwTmV0
+d29ya01lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpVYWRwRGF0
+YVNldE1lc3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVjZWl2ZU9mZnNldCIgdHlw
+ZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUHJvY2Vzc2luZ09mZnNldCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNv
+bXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJV
+YWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOlVhZHBEYXRhU2V0UmVh
+ZGVyTWVzc2FnZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZV
+YWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVWFkcERhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5
+cGU9InRuczpVYWRwRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt
+YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVWFkcERh
+dGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZVYWRwRGF0YVNldFJl
+YWRlck1lc3NhZ2VEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8
+eHM6c2ltcGxlVHlwZSAgbmFtZT0iSnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siPg0KICAg
+IDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZEludCI+DQogICAgPC94czpyZXN0cmlj
+dGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uTmV0d29y
+a01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOkpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRN
+YXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZKc29uTmV0d29ya01lc3Nh
+Z2VDb250ZW50TWFzayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iSnNvbk5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpKc29uTmV0d29ya01l
+c3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJMaXN0T2ZKc29uTmV0d29ya01lc3NhZ2VDb250ZW50TWFzayIgdHlwZT0idG5zOkxpc3RP
+Zkpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0
+YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhz
+OmV4dGVuc2lvbiBiYXNlPSJ0bnM6V3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiPg0KICAgICAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV0d29ya01lc3Nh
+Z2VDb250ZW50TWFzayIgdHlwZT0idG5zOkpzb25OZXR3b3JrTWVzc2FnZUNvbnRlbnRNYXNrIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVu
+c2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRu
+czpKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ikxpc3RPZkpzb25Xcml0ZXJHcm91cE1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbldyaXRlckdyb3VwTWVzc2FnZURh
+dGFUeXBlIiB0eXBlPSJ0bnM6SnNvbldyaXRlckdyb3VwTWVzc2FnZURhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZKc29uV3JpdGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZKc29uV3Jp
+dGVyR3JvdXBNZXNzYWdlRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9Ikpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIj4N
+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVz
+dHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbkRh
+dGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpKc29uRGF0YVNldE1lc3NhZ2VDb250
+ZW50TWFzayIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSnNvbkRhdGFTZXRN
+ZXNzYWdlQ29udGVudE1hc2siPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ikpzb25EYXRhU2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbkRhdGFT
+ZXRNZXNzYWdlQ29udGVudE1hc2siIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iTGlzdE9mSnNvbkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpM
+aXN0T2ZKc29uRGF0YVNldE1lc3NhZ2VDb250ZW50TWFzayIgbmlsbGFibGU9InRydWUiPjwveHM6
+ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSnNvbkRhdGFTZXRXcml0ZXJNZXNz
+YWdlRGF0YVR5cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAg
+ICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSI+
+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRh
+U2V0TWVzc2FnZUNvbnRlbnRNYXNrIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRNZXNzYWdlQ29udGVu
+dE1hc2siIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwv
+eHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBl
+IiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRXcml0ZXJNZXNzYWdlRGF0YVR5cGUiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBl
+Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJKc29uRGF0YVNl
+dFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlwZT0idG5zOkpzb25EYXRhU2V0V3JpdGVyTWVzc2Fn
+ZURhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJMaXN0T2ZKc29uRGF0YVNldFdyaXRlck1lc3NhZ2VEYXRhVHlwZSIgdHlw
+ZT0idG5zOkxpc3RPZkpzb25EYXRhU2V0V3JpdGVyTWVzc2FnZURhdGFUeXBlIiBuaWxsYWJsZT0i
+dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJKc29uRGF0YVNl
+dFJlYWRlck1lc3NhZ2VEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJm
+YWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0UmVhZGVyTWVzc2Fn
+ZURhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik5ldHdvcmtNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpKc29uTmV0d29ya01l
+c3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkRhdGFTZXRNZXNzYWdlQ29udGVudE1hc2siIHR5cGU9InRuczpKc29uRGF0YVNldE1l
+c3NhZ2VDb250ZW50TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNl
+Pg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSnNvbkRhdGFTZXRSZWFkZXJNZXNz
+YWdlRGF0YVR5cGUiIHR5cGU9InRuczpKc29uRGF0YVNldFJlYWRlck1lc3NhZ2VEYXRhVHlwZSIg
+Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSnNvbkRhdGFTZXRSZWFkZXJNZXNz
+YWdlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+Ikpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURhdGFUeXBlIiB0eXBlPSJ0bnM6SnNvbkRhdGFTZXRS
+ZWFkZXJNZXNzYWdlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkpzb25EYXRhU2V0UmVhZGVyTWVzc2FnZURh
+dGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mSnNvbkRhdGFTZXRSZWFkZXJNZXNzYWdlRGF0YVR5cGUi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IlFvc0RhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUW9zRGF0YVR5cGUiIHR5cGU9
+InRuczpRb3NEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUW9z
+RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlFv
+c0RhdGFUeXBlIiB0eXBlPSJ0bnM6UW9zRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz
+PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlFvc0RhdGFUeXBlIiB0
+eXBlPSJ0bnM6TGlzdE9mUW9zRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRyYW5zbWl0UW9zRGF0YVR5cGUiPg0KICAgIDx4
+czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl
+PSJ0bnM6UW9zRGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgIDwveHM6
+c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc21pdFFvc0Rh
+dGFUeXBlIiB0eXBlPSJ0bnM6VHJhbnNtaXRRb3NEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTGlzdE9mVHJhbnNtaXRRb3NEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNtaXRRb3NEYXRhVHlwZSIgdHlwZT0idG5z
+OlRyYW5zbWl0UW9zRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlRyYW5zbWl0UW9zRGF0YVR5cGUiIHR5cGU9
+InRuczpMaXN0T2ZUcmFuc21pdFFvc0RhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUcmFuc21pdFFvc1ByaW9yaXR5RGF0YVR5
+cGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4
+dGVuc2lvbiBiYXNlPSJ0bnM6VHJhbnNtaXRRb3NEYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcmlvcml0eUxhYmVsIiB0eXBlPSJ4
+czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6
+c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUcmFuc21pdFFvc1By
+aW9yaXR5RGF0YVR5cGUiIHR5cGU9InRuczpUcmFuc21pdFFvc1ByaW9yaXR5RGF0YVR5cGUiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlRyYW5zbWl0UW9zUHJpb3JpdHlEYXRh
+VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNt
+aXRRb3NQcmlvcml0eURhdGFUeXBlIiB0eXBlPSJ0bnM6VHJhbnNtaXRRb3NQcmlvcml0eURhdGFU
+eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZUcmFuc21pdFFvc1ByaW9yaXR5RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0
+T2ZUcmFuc21pdFFvc1ByaW9yaXR5RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1l
+bnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlY2VpdmVRb3NEYXRhVHlwZSI+DQogICAg
+PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh
+c2U9InRuczpRb3NEYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgPC94
+czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl
+bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlY2VpdmVRb3NE
+YXRhVHlwZSIgdHlwZT0idG5zOlJlY2VpdmVRb3NEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTGlzdE9mUmVjZWl2ZVFvc0RhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWNlaXZlUW9zRGF0YVR5cGUiIHR5cGU9InRuczpS
+ZWNlaXZlUW9zRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlJlY2VpdmVRb3NEYXRhVHlwZSIgdHlwZT0idG5z
+Okxpc3RPZlJlY2VpdmVRb3NEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVjZWl2ZVFvc1ByaW9yaXR5RGF0YVR5cGUiPg0K
+ICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lv
+biBiYXNlPSJ0bnM6UmVjZWl2ZVFvc0RhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlByaW9yaXR5TGFiZWwiIHR5cGU9InhzOnN0cmlu
+ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlY2VpdmVRb3NQcmlvcml0eURh
+dGFUeXBlIiB0eXBlPSJ0bnM6UmVjZWl2ZVFvc1ByaW9yaXR5RGF0YVR5cGUiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlY2VpdmVRb3NQcmlvcml0eURhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWNlaXZlUW9zUHJpb3Jp
+dHlEYXRhVHlwZSIgdHlwZT0idG5zOlJlY2VpdmVRb3NQcmlvcml0eURhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZSZWNlaXZlUW9zUHJpb3JpdHlEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlY2VpdmVRb3NQ
+cmlvcml0eURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJEYXRhZ3JhbUNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+DQog
+ICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9u
+IGJhc2U9InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5QWRkcmVzcyIgdHlw
+ZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpj
+b21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+RGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpEYXRhZ3JhbUNv
+bm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+TGlzdE9mRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFncmFtQ29ubmVjdGlvblRyYW5zcG9y
+dERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZkRhdGFncmFtQ29ubmVjdGlvblRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6
+TGlzdE9mRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVl
+Ij48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRhdGFncmFtQ29ubmVj
+dGlvblRyYW5zcG9ydDJEYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJm
+YWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhZ3JhbUNvbm5lY3Rpb25U
+cmFuc3BvcnREYXRhVHlwZSI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJEaXNjb3ZlcnlBbm5vdW5jZVJhdGUiIHR5cGU9InhzOnVuc2lnbmVkSW50
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5
+TWF4TWVzc2FnZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUW9zQ2F0ZWdvcnkiIHR5cGU9InhzOnN0cmluZyIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJEYXRhZ3JhbVFvcyIgdHlwZT0idWE6TGlzdE9mRXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAg
+PC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0MkRh
+dGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1Db25uZWN0aW9uVHJhbnNwb3J0MkRhdGFUeXBlIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEYXRhZ3JhbUNvbm5lY3Rpb25UcmFu
+c3BvcnQyRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IkRhdGFncmFtQ29ubmVjdGlvblRyYW5zcG9ydDJEYXRhVHlwZSIgdHlwZT0idG5zOkRhdGFn
+cmFtQ29ubmVjdGlvblRyYW5zcG9ydDJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9
+InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGF0YWdyYW1Db25uZWN0
+aW9uVHJhbnNwb3J0MkRhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YWdyYW1Db25uZWN0aW9u
+VHJhbnNwb3J0MkRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUi
+Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu
+c2lvbiBiYXNlPSJ0bnM6V3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSI+DQogICAgICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlUmVwZWF0Q291
+bnQiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik1lc3NhZ2VSZXBlYXREZWxheSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lv
+bj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9
+InRuczpEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlw
+ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YWdyYW1X
+cml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1Xcml0ZXJHcm91
+cFRyYW5zcG9ydERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0
+RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0RGF0
+YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9IkRhdGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnQyRGF0YVR5cGUiPg0KICAgIDx4czpj
+b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0
+bnM6RGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZHJlc3MiIHR5cGU9InVhOkV4
+dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJRb3NDYXRlZ29yeSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRh
+dGFncmFtUW9zIiB0eXBlPSJ1YTpMaXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5
+QW5ub3VuY2VSYXRlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+ICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRvcGljIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8
+L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhZ3JhbVdyaXRlckdyb3VwVHJhbnNwb3J0MkRh
+dGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydDJEYXRhVHlwZSIg
+Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGF0YWdyYW1Xcml0ZXJHcm91cFRy
+YW5zcG9ydDJEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iRGF0YWdyYW1Xcml0ZXJHcm91cFRyYW5zcG9ydDJEYXRhVHlwZSIgdHlwZT0idG5zOkRh
+dGFncmFtV3JpdGVyR3JvdXBUcmFuc3BvcnQyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj
+dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFncmFtV3Jp
+dGVyR3JvdXBUcmFuc3BvcnQyRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZEYXRhZ3JhbVdyaXRl
+ckdyb3VwVHJhbnNwb3J0MkRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhZ3JhbURhdGFTZXRSZWFkZXJUcmFuc3BvcnRE
+YXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8
+eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0K
+ICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkcmVz
+cyIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlFvc0NhdGVnb3J5IiB0eXBlPSJ4czpz
+dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRGF0YWdyYW1Rb3MiIHR5cGU9InVhOkxpc3RPZkV4dGVuc2lvbk9iamVjdCIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJUb3BpYyIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAg
+PC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iRGF0YWdyYW1EYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpE
+YXRhZ3JhbURhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTGlzdE9mRGF0YWdyYW1EYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFncmFtRGF0
+YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6RGF0YWdyYW1EYXRhU2V0UmVh
+ZGVyVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRhdGFncmFtRGF0YVNldFJlYWRlclRyYW5z
+cG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRGF0YWdyYW1EYXRhU2V0UmVhZGVyVHJhbnNw
+b3J0RGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9IkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSI+DQogICAgPHhz
+OmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9
+InRuczpDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzb3VyY2VVcmkiIHR5cGU9InhzOnN0cmlu
+ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJBdXRoZW50aWNhdGlvblByb2ZpbGVVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAg
+IDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRh
+VHlwZSIgdHlwZT0idG5zOkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJva2VyQ29ubmVjdGlvblRyYW5zcG9ydERh
+dGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9r
+ZXJDb25uZWN0aW9uVHJhbnNwb3J0RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJDb25uZWN0aW9u
+VHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRh
+VHlwZSIgdHlwZT0idG5zOkxpc3RPZkJyb2tlckNvbm5lY3Rpb25UcmFuc3BvcnREYXRhVHlwZSIg
+bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0i
+QnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJh
+c2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5vdFNwZWNpZmll
+ZF8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCZXN0RWZmb3J0XzEiIC8+DQog
+ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkF0TGVhc3RPbmNlXzIiIC8+DQogICAgICA8eHM6
+ZW51bWVyYXRpb24gdmFsdWU9IkF0TW9zdE9uY2VfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iRXhhY3RseU9uY2VfNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz
+OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb2tlclRyYW5zcG9ydFF1YWxpdHlP
+ZlNlcnZpY2UiIHR5cGU9InRuczpCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZT
+ZXJ2aWNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9r
+ZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiB0eXBlPSJ0bnM6QnJva2VyVHJhbnNwb3J0UXVh
+bGl0eU9mU2VydmljZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiB0eXBlPSJ0bnM6TGlzdE9m
+QnJva2VyVHJhbnNwb3J0UXVhbGl0eU9mU2VydmljZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl
+bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQnJva2VyV3JpdGVyR3JvdXBUcmFuc3Bv
+cnREYXRhVHlwZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAg
+ICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpXcml0ZXJHcm91cFRyYW5zcG9ydERhdGFUeXBlIj4N
+CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlF1ZXVl
+TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc291cmNlVXJpIiB0eXBlPSJ4czpzdHJpbmci
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iQXV0aGVudGljYXRpb25Qcm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVx
+dWVzdGVkRGVsaXZlcnlHdWFyYW50ZWUiIHR5cGU9InRuczpCcm9rZXJUcmFuc3BvcnRRdWFsaXR5
+T2ZTZXJ2aWNlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAg
+ICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERh
+dGFUeXBlIiB0eXBlPSJ0bnM6QnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJva2VyV3JpdGVyR3JvdXBUcmFuc3Bv
+cnREYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+QnJva2VyV3JpdGVyR3JvdXBUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJyb2tlcldyaXRl
+ckdyb3VwVHJhbnNwb3J0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5k
+ZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkJyb2tlcldyaXRlckdyb3VwVHJhbnNw
+b3J0RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZCcm9rZXJXcml0ZXJHcm91cFRyYW5zcG9ydERh
+dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4czpj
+b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0
+bnM6RGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlF1ZXVlTmFtZSIgdHlwZT0ieHM6c3RyaW5n
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlJlc291cmNlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXV0aGVudGljYXRpb25Q
+cm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkRGVsaXZlcnlHdWFyYW50
+ZWUiIHR5cGU9InRuczpCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0YURhdGFRdWV1ZU5hbWUiIHR5
+cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJNZXRhRGF0YVVwZGF0ZVRpbWUiIHR5cGU9InhzOmRvdWJsZSIg
+bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRl
+bnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iQnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiB0
+eXBlPSJ0bnM6QnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9ydERhdGFUeXBlIiAvPg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZCcm9rZXJEYXRhU2V0V3JpdGVyVHJhbnNwb3J0RGF0
+YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb2tl
+ckRhdGFTZXRXcml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJyb2tlckRhdGFTZXRX
+cml0ZXJUcmFuc3BvcnREYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQnJva2VyRGF0YVNldFdyaXRlclRyYW5z
+cG9ydERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mQnJva2VyRGF0YVNldFdyaXRlclRyYW5zcG9y
+dERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJCcm9rZXJEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUiPg0KICAgIDx4
+czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl
+PSJ0bnM6RGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlF1ZXVlTmFtZSIgdHlwZT0ieHM6c3Ry
+aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlJlc291cmNlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXV0aGVudGljYXRp
+b25Qcm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkRGVsaXZlcnlHdWFy
+YW50ZWUiIHR5cGU9InRuczpCcm9rZXJUcmFuc3BvcnRRdWFsaXR5T2ZTZXJ2aWNlIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWV0YURhdGFRdWV1ZU5hbWUi
+IHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+ICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxl
+eENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb2tl
+ckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5zOkJyb2tlckRhdGFTZXRS
+ZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlz
+dE9mQnJva2VyRGF0YVNldFJlYWRlclRyYW5zcG9ydERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm9rZXJEYXRhU2V0UmVhZGVyVHJhbnNwb3J0
+RGF0YVR5cGUiIHR5cGU9InRuczpCcm9rZXJEYXRhU2V0UmVhZGVyVHJhbnNwb3J0RGF0YVR5cGUi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZkJyb2tlckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgdHlwZT0idG5z
+Okxpc3RPZkJyb2tlckRhdGFTZXRSZWFkZXJUcmFuc3BvcnREYXRhVHlwZSIgbmlsbGFibGU9InRy
+dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iUHViU3ViQ29uZmln
+dXJhdGlvblJlZk1hc2siPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZElu
+dCI+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJQdWJTdWJDb25maWd1cmF0aW9uUmVmTWFzayIgdHlwZT0idG5zOlB1YlN1YkNv
+bmZpZ3VyYXRpb25SZWZNYXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQ
+dWJTdWJDb25maWd1cmF0aW9uUmVmTWFzayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iUHViU3ViQ29uZmlndXJhdGlvblJlZk1hc2siIHR5cGU9InRuczpQdWJT
+dWJDb25maWd1cmF0aW9uUmVmTWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uUmVmTWFzayIgdHlwZT0idG5zOkxp
+c3RPZlB1YlN1YkNvbmZpZ3VyYXRpb25SZWZNYXNrIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJTdWJDb25maWd1cmF0aW9uUmVmRGF0
+YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbmZp
+Z3VyYXRpb25NYXNrIiB0eXBlPSJ0bnM6UHViU3ViQ29uZmlndXJhdGlvblJlZk1hc2siIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVsZW1lbnRJbmRleCIgdHlwZT0i
+eHM6dW5zaWduZWRTaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQ29ubmVjdGlvbkluZGV4IiB0eXBlPSJ4czp1bnNpZ25lZFNob3J0IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJHcm91cEluZGV4IiB0eXBlPSJ4czp1bnNpZ25l
+ZFNob3J0IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViQ29uZmlndXJhdGlvblJlZkRhdGFU
+eXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29uZmlndXJhdGlvblJlZkRhdGFUeXBlIiAvPg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQdWJTdWJDb25maWd1cmF0aW9uUmVmRGF0YVR5cGUi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1YlN1YkNvbmZp
+Z3VyYXRpb25SZWZEYXRhVHlwZSIgdHlwZT0idG5zOlB1YlN1YkNvbmZpZ3VyYXRpb25SZWZEYXRh
+VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iTGlzdE9mUHViU3ViQ29uZmlndXJhdGlvblJlZkRhdGFUeXBlIiB0eXBlPSJ0bnM6
+TGlzdE9mUHViU3ViQ29uZmlndXJhdGlvblJlZkRhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94
+czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJTdWJDb25maWd1cmF0aW9u
+VmFsdWVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQ29uZmlndXJhdGlvbkVsZW1lbnQiIHR5cGU9InRuczpQdWJTdWJDb25maWd1cmF0aW9uUmVm
+RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJZGVudGlmaWVyIiB0eXBlPSJ1YTpW
+YXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViQ29uZmlndXJhdGlvblZhbHVlRGF0
+YVR5cGUiIHR5cGU9InRuczpQdWJTdWJDb25maWd1cmF0aW9uVmFsdWVEYXRhVHlwZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUHViU3ViQ29uZmlndXJhdGlvblZhbHVlRGF0
+YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlB1YlN1
+YkNvbmZpZ3VyYXRpb25WYWx1ZURhdGFUeXBlIiB0eXBlPSJ0bnM6UHViU3ViQ29uZmlndXJhdGlv
+blZhbHVlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlB1YlN1YkNvbmZpZ3VyYXRpb25WYWx1ZURhdGFUeXBl
+IiB0eXBlPSJ0bnM6TGlzdE9mUHViU3ViQ29uZmlndXJhdGlvblZhbHVlRGF0YVR5cGUiIG5pbGxh
+YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkRpYWdu
+b3N0aWNzTGV2ZWwiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAg
+ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCYXNpY18wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJBZHZhbmNlZF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJ
+bmZvXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkxvZ18zIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEZWJ1Z180IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+
+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY3NMZXZl
+bCIgdHlwZT0idG5zOkRpYWdub3N0aWNzTGV2ZWwiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9Ikxpc3RPZkRpYWdub3N0aWNzTGV2ZWwiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNzTGV2ZWwiIHR5cGU9InRuczpEaWFnbm9zdGljc0xl
+dmVsIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRp
+YWdub3N0aWNzTGV2ZWwiIHR5cGU9InRuczpMaXN0T2ZEaWFnbm9zdGljc0xldmVsIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJQdWJTdWJE
+aWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJh
+c2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkluZm9ybWF0aW9u
+XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkVycm9yXzEiIC8+DQogICAgPC94
+czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQ
+dWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiIgdHlwZT0idG5zOlB1YlN1YkRp
+YWdub3N0aWNzQ291bnRlckNsYXNzaWZpY2F0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJMaXN0T2ZQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHViU3ViRGlhZ25vc3RpY3ND
+b3VudGVyQ2xhc3NpZmljYXRpb24iIHR5cGU9InRuczpQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJD
+bGFzc2lmaWNhdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJMaXN0T2ZQdWJTdWJEaWFnbm9zdGljc0NvdW50ZXJDbGFzc2lmaWNhdGlvbiIgdHlwZT0idG5z
+Okxpc3RPZlB1YlN1YkRpYWdub3N0aWNzQ291bnRlckNsYXNzaWZpY2F0aW9uIiBuaWxsYWJsZT0i
+dHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBbGlhc05hbWVE
+YXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWxp
+YXNOYW1lIiB0eXBlPSJ1YTpRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlZE5vZGVzIiB0eXBlPSJ1
+YTpMaXN0T2ZFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJBbGlhc05hbWVEYXRhVHlwZSIgdHlwZT0idG5zOkFsaWFzTmFtZURhdGFUeXBlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZBbGlhc05hbWVEYXRhVHlwZSI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWxpYXNOYW1lRGF0YVR5cGUi
+IHR5cGU9InRuczpBbGlhc05hbWVEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu
+Ym91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQWxpYXNOYW1lRGF0YVR5cGUi
+IHR5cGU9InRuczpMaXN0T2ZBbGlhc05hbWVEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6
+ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iUGFzc3dvcmRPcHRpb25zTWFzayI+
+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4NCiAgICA8L3hzOnJl
+c3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlBhc3N3
+b3JkT3B0aW9uc01hc2siIHR5cGU9InRuczpQYXNzd29yZE9wdGlvbnNNYXNrIiAvPg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQYXNzd29yZE9wdGlvbnNNYXNrIj4NCiAgICA8eHM6
+c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYXNzd29yZE9wdGlvbnNNYXNrIiB0
+eXBlPSJ0bnM6UGFzc3dvcmRPcHRpb25zTWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu
+Ym91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZQYXNzd29yZE9wdGlvbnNNYXNrIiB0eXBlPSJ0bnM6TGlz
+dE9mUGFzc3dvcmRPcHRpb25zTWFzayIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K
+ICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVXNlckNvbmZpZ3VyYXRpb25NYXNrIj4NCiAgICA8eHM6
+cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJbnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+
+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlckNvbmZpZ3VyYXRp
+b25NYXNrIiB0eXBlPSJ0bnM6VXNlckNvbmZpZ3VyYXRpb25NYXNrIiAvPg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJMaXN0T2ZVc2VyQ29uZmlndXJhdGlvbk1hc2siPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJDb25maWd1cmF0aW9uTWFzayIgdHlw
+ZT0idG5zOlVzZXJDb25maWd1cmF0aW9uTWFzayIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu
+Ym91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZVc2VyQ29uZmlndXJhdGlvbk1hc2siIHR5cGU9InRuczpM
+aXN0T2ZVc2VyQ29uZmlndXJhdGlvbk1hc2siIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVzZXJNYW5hZ2VtZW50RGF0YVR5cGUiPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lIiB0eXBlPSJ4
+czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJVc2VyQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOlVzZXJDb25maWd1cmF0aW9u
+TWFzayIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRp
+b24iIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJVc2VyTWFuYWdlbWVudERhdGFUeXBlIiB0eXBlPSJ0bnM6VXNlck1hbmFnZW1lbnREYXRhVHlw
+ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVXNlck1hbmFnZW1lbnREYXRh
+VHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlck1h
+bmFnZW1lbnREYXRhVHlwZSIgdHlwZT0idG5zOlVzZXJNYW5hZ2VtZW50RGF0YVR5cGUiIG1pbk9j
+Y3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxp
+c3RPZlVzZXJNYW5hZ2VtZW50RGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZVc2VyTWFuYWdlbWVu
+dERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50
+IG5hbWU9IkVuY29kZWRUaWNrZXQiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6c2ltcGxl
+VHlwZSAgbmFtZT0iRHVwbGV4Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5n
+Ij4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRnVsbF8wIiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJIYWxmXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+IlVua25vd25fMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9IkR1cGxleCIgdHlwZT0idG5zOkR1cGxleCIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRHVwbGV4Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEdXBsZXgiIHR5cGU9InRuczpEdXBsZXgiIG1pbk9jY3Vy
+cz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRHVwbGV4IiB0eXBlPSJ0
+bnM6TGlzdE9mRHVwbGV4IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpz
+aW1wbGVUeXBlICBuYW1lPSJJbnRlcmZhY2VBZG1pblN0YXR1cyI+DQogICAgPHhzOnJlc3RyaWN0
+aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVwXzAi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvd25fMSIgLz4NCiAgICAgIDx4czpl
+bnVtZXJhdGlvbiB2YWx1ZT0iVGVzdGluZ18yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQog
+IDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50ZXJmYWNlQWRtaW5TdGF0
+dXMiIHR5cGU9InRuczpJbnRlcmZhY2VBZG1pblN0YXR1cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iTGlzdE9mSW50ZXJmYWNlQWRtaW5TdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludGVyZmFjZUFkbWluU3RhdHVzIiB0eXBlPSJ0bnM6
+SW50ZXJmYWNlQWRtaW5TdGF0dXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iTGlzdE9mSW50ZXJmYWNlQWRtaW5TdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZJbnRl
+cmZhY2VBZG1pblN0YXR1cyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6
+c2ltcGxlVHlwZSAgbmFtZT0iSW50ZXJmYWNlT3BlclN0YXR1cyI+DQogICAgPHhzOnJlc3RyaWN0
+aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVwXzAi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvd25fMSIgLz4NCiAgICAgIDx4czpl
+bnVtZXJhdGlvbiB2YWx1ZT0iVGVzdGluZ18yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh
+bHVlPSJVbmtub3duXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRvcm1hbnRf
+NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm90UHJlc2VudF81IiAvPg0KICAg
+ICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMb3dlckxheWVyRG93bl82IiAvPg0KICAgIDwveHM6
+cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW50
+ZXJmYWNlT3BlclN0YXR1cyIgdHlwZT0idG5zOkludGVyZmFjZU9wZXJTdGF0dXMiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkludGVyZmFjZU9wZXJTdGF0dXMiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkludGVyZmFjZU9wZXJTdGF0dXMi
+IHR5cGU9InRuczpJbnRlcmZhY2VPcGVyU3RhdHVzIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i
+dW5ib3VuZGVkIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkludGVyZmFjZU9wZXJTdGF0dXMiIHR5cGU9InRuczpM
+aXN0T2ZJbnRlcmZhY2VPcGVyU3RhdHVzIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0K
+DQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJOZWdvdGlhdGlvblN0YXR1cyI+DQogICAgPHhzOnJl
+c3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+IkluUHJvZ3Jlc3NfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ29tcGxldGVf
+MSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRmFpbGVkXzIiIC8+DQogICAgICA8
+eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVua25vd25fMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iTm9OZWdvdGlhdGlvbl80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwv
+eHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTmVnb3RpYXRpb25TdGF0dXMiIHR5
+cGU9InRuczpOZWdvdGlhdGlvblN0YXR1cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+TGlzdE9mTmVnb3RpYXRpb25TdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9Ik5lZ290aWF0aW9uU3RhdHVzIiB0eXBlPSJ0bnM6TmVnb3RpYXRpb25TdGF0
+dXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTmVn
+b3RpYXRpb25TdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZOZWdvdGlhdGlvblN0YXR1cyIgbmlsbGFi
+bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVHNuRmFp
+bHVyZUNvZGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb0ZhaWx1cmVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJh
+dGlvbiB2YWx1ZT0iSW5zdWZmaWNpZW50QmFuZHdpZHRoXzEiIC8+DQogICAgICA8eHM6ZW51bWVy
+YXRpb24gdmFsdWU9Ikluc3VmZmljaWVudFJlc291cmNlc18yIiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJJbnN1ZmZpY2llbnRUcmFmZmljQ2xhc3NCYW5kd2lkdGhfMyIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtSWRJblVzZV80IiAvPg0KICAgICAgPHhz
+OmVudW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1EZXN0aW5hdGlvbkFkZHJlc3NJblVzZV81IiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1QcmVlbXB0ZWRCeUhpZ2hlclJhbmtf
+NiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGF0ZW5jeUhhc0NoYW5nZWRfNyIg
+Lz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRWdyZXNzUG9ydE5vdEF2YkNhcGFibGVf
+OCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVXNlRGlmZmVyZW50RGVzdGluYXRp
+b25BZGRyZXNzXzkiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik91dE9mTXNycFJl
+c291cmNlc18xMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT3V0T2ZNbXJwUmVz
+b3VyY2VzXzExIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDYW5ub3RTdG9yZURl
+c3RpbmF0aW9uQWRkcmVzc18xMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUHJp
+b3JpdHlJc05vdEFuU3JjQ2xhc3NfMTMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+Ik1heEZyYW1lU2l6ZVRvb0xhcmdlXzE0IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl
+PSJNYXhGYW5JblBvcnRzTGltaXRSZWFjaGVkXzE1IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u
+IHZhbHVlPSJGaXJzdFZhbHVlQ2hhbmdlZEZvclN0cmVhbUlkXzE2IiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJWbGFuQmxvY2tlZE9uRWdyZXNzXzE3IiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJWbGFuVGFnZ2luZ0Rpc2FibGVkT25FZ3Jlc3NfMTgiIC8+DQogICAg
+ICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNyQ2xhc3NQcmlvcml0eU1pc21hdGNoXzE5IiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJGZWF0dXJlTm90UHJvcGFnYXRlZF8yMCIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTWF4TGF0ZW5jeUV4Y2VlZGVkXzIxIiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCcmlkZ2VEb2VzTm90UHJvdmlkZU5ldHdvcmtJ
+ZF8yMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU3RyZWFtVHJhbnNmb3JtTm90
+U3VwcG9ydGVkXzIzIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdHJlYW1JZFR5
+cGVOb3RTdXBwb3J0ZWRfMjQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZlYXR1
+cmVOb3RTdXBwb3J0ZWRfMjUiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1w
+bGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUc25GYWlsdXJlQ29kZSIgdHlwZT0idG5zOlRz
+bkZhaWx1cmVDb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUc25GYWls
+dXJlQ29kZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHNu
+RmFpbHVyZUNvZGUiIHR5cGU9InRuczpUc25GYWlsdXJlQ29kZSIgbWluT2NjdXJzPSIwIiBtYXhP
+Y2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25GYWlsdXJlQ29kZSIgdHlwZT0idG5z
+Okxpc3RPZlRzbkZhaWx1cmVDb2RlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpzaW1wbGVUeXBlICBuYW1lPSJUc25TdHJlYW1TdGF0ZSI+DQogICAgPHhzOnJlc3RyaWN0
+aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRpc2Fi
+bGVkXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkNvbmZpZ3VyaW5nXzEiIC8+
+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlYWR5XzIiIC8+DQogICAgICA8eHM6ZW51
+bWVyYXRpb24gdmFsdWU9Ik9wZXJhdGlvbmFsXzMiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g
+dmFsdWU9IkVycm9yXzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJUc25TdHJlYW1TdGF0ZSIgdHlwZT0idG5zOlRzblN0
+cmVhbVN0YXRlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUc25TdHJlYW1T
+dGF0ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuU3Ry
+ZWFtU3RhdGUiIHR5cGU9InRuczpUc25TdHJlYW1TdGF0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25TdHJlYW1TdGF0ZSIgdHlwZT0idG5zOkxp
+c3RPZlRzblN0cmVhbVN0YXRlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4
+czpzaW1wbGVUeXBlICBuYW1lPSJUc25UYWxrZXJTdGF0dXMiPg0KICAgIDx4czpyZXN0cmljdGlv
+biBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOb25lXzAi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlYWR5XzEiIC8+DQogICAgICA8eHM6
+ZW51bWVyYXRpb24gdmFsdWU9IkZhaWxlZF8yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQog
+IDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNuVGFsa2VyU3RhdHVzIiB0
+eXBlPSJ0bnM6VHNuVGFsa2VyU3RhdHVzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM
+aXN0T2ZUc25UYWxrZXJTdGF0dXMiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlRzblRhbGtlclN0YXR1cyIgdHlwZT0idG5zOlRzblRhbGtlclN0YXR1cyIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZUc25UYWxrZXJT
+dGF0dXMiIHR5cGU9InRuczpMaXN0T2ZUc25UYWxrZXJTdGF0dXMiIG5pbGxhYmxlPSJ0cnVlIj48
+L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlRzbkxpc3RlbmVyU3RhdHVz
+Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJS
+ZWFkeV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQYXJ0aWFsRmFpbGVkXzIi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZhaWxlZF8zIiAvPg0KICAgIDwveHM6
+cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHNu
+TGlzdGVuZXJTdGF0dXMiIHR5cGU9InRuczpUc25MaXN0ZW5lclN0YXR1cyIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mVHNuTGlzdGVuZXJTdGF0dXMiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRzbkxpc3RlbmVyU3RhdHVzIiB0eXBlPSJ0
+bnM6VHNuTGlzdGVuZXJTdGF0dXMiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iTGlzdE9mVHNuTGlzdGVuZXJTdGF0dXMiIHR5cGU9InRuczpMaXN0T2ZUc25MaXN0
+ZW5lclN0YXR1cyIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iUHJpb3JpdHlNYXBwaW5nRW50cnlUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXBwaW5nVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQ
+cmlvcml0eUxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcmlvcml0eVZhbHVlX1BDUCIgdHlwZT0i
+eHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJQcmlvcml0eVZhbHVlX0RTQ1AiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iUHJpb3JpdHlNYXBwaW5nRW50cnlUeXBlIiB0eXBlPSJ0bnM6UHJpb3JpdHlNYXBw
+aW5nRW50cnlUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZQcmlvcml0
+eU1hcHBpbmdFbnRyeVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlByaW9yaXR5TWFwcGluZ0VudHJ5VHlwZSIgdHlwZT0idG5zOlByaW9yaXR5TWFwcGlu
+Z0VudHJ5VHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iTGlzdE9mUHJpb3JpdHlNYXBwaW5nRW50cnlUeXBlIiB0eXBlPSJ0bnM6
+TGlzdE9mUHJpb3JpdHlNYXBwaW5nRW50cnlUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVt
+ZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWZlcmVuY2VEZXNjcmlwdGlvbkRhdGFU
+eXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTb3VyY2VO
+b2RlIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlIiB0eXBlPSJ1YTpOb2RlSWQiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJ
+c0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlRhcmdldE5vZGUiIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29t
+cGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZURlc2NyaXB0aW9uRGF0YVR5
+cGUiIHR5cGU9InRuczpSZWZlcmVuY2VEZXNjcmlwdGlvbkRhdGFUeXBlIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSZWZlcmVuY2VEZXNjcmlwdGlvbkRhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VEZXNjcmlw
+dGlvbkRhdGFUeXBlIiB0eXBlPSJ0bnM6UmVmZXJlbmNlRGVzY3JpcHRpb25EYXRhVHlwZSIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGlzdE9mUmVmZXJlbmNlRGVzY3JpcHRpb25EYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlZmVy
+ZW5jZURlc2NyaXB0aW9uRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZmVyZW5jZUxpc3RFbnRyeURhdGFUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlIiB0
+eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJJc0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldE5vZGUiIHR5cGU9InVhOkV4cGFu
+ZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5j
+ZUxpc3RFbnRyeURhdGFUeXBlIiB0eXBlPSJ0bnM6UmVmZXJlbmNlTGlzdEVudHJ5RGF0YVR5cGUi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZmVyZW5jZUxpc3RFbnRyeURh
+dGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZl
+cmVuY2VMaXN0RW50cnlEYXRhVHlwZSIgdHlwZT0idG5zOlJlZmVyZW5jZUxpc3RFbnRyeURhdGFU
+eXBlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZSZWZlcmVuY2VMaXN0RW50cnlEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RP
+ZlJlZmVyZW5jZUxpc3RFbnRyeURhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50
+Pg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJJZFR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlv
+biBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJOdW1lcmlj
+XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0cmluZ18xIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJHdWlkXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g
+dmFsdWU9Ik9wYXF1ZV8zIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxl
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSWRUeXBlIiB0eXBlPSJ0bnM6SWRUeXBlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZJZFR5cGUiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklkVHlwZSIgdHlwZT0idG5zOklkVHlwZSIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZJZFR5cGUiIHR5
+cGU9InRuczpMaXN0T2ZJZFR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOnNpbXBsZVR5cGUgIG5hbWU9Ik5vZGVDbGFzcyI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJh
+c2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVuc3BlY2lmaWVk
+XzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik9iamVjdF8xIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJWYXJpYWJsZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJNZXRob2RfNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT2Jq
+ZWN0VHlwZV84IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJWYXJpYWJsZVR5cGVf
+MTYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlZmVyZW5jZVR5cGVfMzIiIC8+
+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRhdGFUeXBlXzY0IiAvPg0KICAgICAgPHhz
+OmVudW1lcmF0aW9uIHZhbHVlPSJWaWV3XzEyOCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0K
+ICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik5vZGVDbGFzcyIgdHlwZT0i
+dG5zOk5vZGVDbGFzcyIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iUGVybWlzc2lvblR5
+cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp1bnNpZ25lZEludCI+DQogICAgPC94
+czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQ
+ZXJtaXNzaW9uVHlwZSIgdHlwZT0idG5zOlBlcm1pc3Npb25UeXBlIiAvPg0KDQogIDx4czpzaW1w
+bGVUeXBlICBuYW1lPSJBY2Nlc3NMZXZlbFR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNl
+PSJ4czp1bnNpZ25lZEJ5dGUiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxl
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWxUeXBlIiB0eXBlPSJ0bnM6QWNj
+ZXNzTGV2ZWxUeXBlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJBY2Nlc3NMZXZlbEV4
+VHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnVuc2lnbmVkSW50Ij4NCiAgICA8
+L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+IkFjY2Vzc0xldmVsRXhUeXBlIiB0eXBlPSJ0bnM6QWNjZXNzTGV2ZWxFeFR5cGUiIC8+DQoNCiAg
+PHhzOnNpbXBsZVR5cGUgIG5hbWU9IkV2ZW50Tm90aWZpZXJUeXBlIj4NCiAgICA8eHM6cmVzdHJp
+Y3Rpb24gYmFzZT0ieHM6dW5zaWduZWRCeXRlIj4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8
+L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV2ZW50Tm90aWZpZXJUeXBlIiB0
+eXBlPSJ0bnM6RXZlbnROb3RpZmllclR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IlJvbGVQZXJtaXNzaW9uVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUm9sZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQZXJtaXNzaW9ucyIgdHlwZT0idG5z
+OlBlcm1pc3Npb25UeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUm9sZVBlcm1pc3Npb25UeXBl
+IiB0eXBlPSJ0bnM6Um9sZVBlcm1pc3Npb25UeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJMaXN0T2ZSb2xlUGVybWlzc2lvblR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJvbGVQZXJtaXNzaW9uVHlwZSIgdHlwZT0idG5zOlJvbGVQZXJt
+aXNzaW9uVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iTGlzdE9mUm9sZVBlcm1pc3Npb25UeXBlIiB0eXBlPSJ0bnM6TGlzdE9m
+Um9sZVBlcm1pc3Npb25UeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJEYXRhVHlwZURlZmluaXRpb24iPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEYXRhVHlwZURlZmluaXRpb24iIHR5cGU9InRuczpEYXRhVHlwZURlZmluaXRpb24i
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkRhdGFUeXBlRGVmaW5pdGlvbiI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVEZWZp
+bml0aW9uIiB0eXBlPSJ0bnM6RGF0YVR5cGVEZWZpbml0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZEYXRhVHlwZURl
+ZmluaXRpb24iIHR5cGU9InRuczpMaXN0T2ZEYXRhVHlwZURlZmluaXRpb24iIG5pbGxhYmxlPSJ0
+cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlN0cnVjdHVyZVR5
+cGUiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJTdHJ1Y3R1cmVfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2
+YWx1ZT0iU3RydWN0dXJlV2l0aE9wdGlvbmFsRmllbGRzXzEiIC8+DQogICAgICA8eHM6ZW51bWVy
+YXRpb24gdmFsdWU9IlVuaW9uXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0
+cnVjdHVyZVdpdGhTdWJ0eXBlZFZhbHVlc18zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh
+bHVlPSJVbmlvbldpdGhTdWJ0eXBlZFZhbHVlc180IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+
+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlVHlwZSIg
+dHlwZT0idG5zOlN0cnVjdHVyZVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN0
+cnVjdHVyZUZpZWxkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVk
+VGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZVJhbmsiIHR5cGU9InhzOmlu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNp
+b25zIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhTdHJpbmdMZW5ndGgiIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc09w
+dGlvbmFsIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU3RydWN0dXJl
+RmllbGQiIHR5cGU9InRuczpTdHJ1Y3R1cmVGaWVsZCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iTGlzdE9mU3RydWN0dXJlRmllbGQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlN0cnVjdHVyZUZpZWxkIiB0eXBlPSJ0bnM6U3RydWN0dXJlRmllbGQi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZlN0cnVjdHVyZUZpZWxkIiB0eXBlPSJ0bnM6TGlzdE9mU3RydWN0dXJlRmllbGQi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IlN0cnVjdHVyZURlZmluaXRpb24iPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFs
+c2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RGF0YVR5cGVEZWZpbml0aW9uIj4N
+CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlZmF1
+bHRFbmNvZGluZ0lkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQmFzZURhdGFUeXBlIiB0eXBlPSJ1
+YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iU3RydWN0dXJlVHlwZSIgdHlwZT0idG5zOlN0cnVjdHVyZVR5cGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZHMiIHR5cGU9
+InRuczpMaXN0T2ZTdHJ1Y3R1cmVGaWVsZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwv
+eHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IlN0cnVjdHVyZURlZmluaXRpb24iIHR5cGU9InRuczpTdHJ1Y3R1cmVEZWZpbml0aW9uIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTdHJ1Y3R1cmVEZWZpbml0aW9uIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdHJ1Y3R1cmVEZWZp
+bml0aW9uIiB0eXBlPSJ0bnM6U3RydWN0dXJlRGVmaW5pdGlvbiIgbWluT2NjdXJzPSIwIiBtYXhP
+Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU3RydWN0dXJl
+RGVmaW5pdGlvbiIgdHlwZT0idG5zOkxpc3RPZlN0cnVjdHVyZURlZmluaXRpb24iIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVudW1EZWZp
+bml0aW9uIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4
+czpleHRlbnNpb24gYmFzZT0idG5zOkRhdGFUeXBlRGVmaW5pdGlvbiI+DQogICAgICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJGaWVsZHMiIHR5cGU9InRuczpM
+aXN0T2ZFbnVtRmllbGQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAg
+IDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhD
+b250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRGVm
+aW5pdGlvbiIgdHlwZT0idG5zOkVudW1EZWZpbml0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJMaXN0T2ZFbnVtRGVmaW5pdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iRW51bURlZmluaXRpb24iIHR5cGU9InRuczpFbnVtRGVmaW5pdGlv
+biIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTGlzdE9mRW51bURlZmluaXRpb24iIHR5cGU9InRuczpMaXN0T2ZFbnVtRGVmaW5pdGlv
+biIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iTm9kZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9k
+ZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlQ2xhc3MiIHR5cGU9InRuczpOb2RlQ2xhc3MiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5hbWUiIHR5cGU9
+InVhOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVNYXNrIiB0eXBlPSJ4
+czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+VXNlcldyaXRlTWFzayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJvbGVQZXJtaXNzaW9ucyIgdHlwZT0idG5zOkxpc3RPZlJv
+bGVQZXJtaXNzaW9uVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlVzZXJSb2xlUGVybWlzc2lvbnMiIHR5cGU9InRuczpMaXN0T2ZS
+b2xlUGVybWlzc2lvblR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NSZXN0cmljdGlvbnMiIHR5cGU9InhzOnVuc2lnbmVk
+U2hvcnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5j
+ZXMiIHR5cGU9InRuczpMaXN0T2ZSZWZlcmVuY2VOb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9Ik5vZGUiIHR5cGU9InRuczpOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZOb2RlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJOb2RlIiB0eXBlPSJ0bnM6Tm9kZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9
+InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mTm9kZSIgdHlwZT0idG5z
+Okxpc3RPZk5vZGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9Ikluc3RhbmNlTm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVk
+PSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb2RlIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp
+b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iSW5zdGFuY2VOb2RlIiB0eXBlPSJ0bnM6SW5zdGFuY2VOb2RlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUeXBlTm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250
+ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb2RlIj4N
+CiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94
+czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZU5vZGUiIHR5cGU9InRuczpUeXBlTm9kZSIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iT2JqZWN0Tm9kZSI+DQogICAgPHhzOmNvbXBsZXhD
+b250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpJbnN0
+YW5jZU5vZGUiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8
+L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJPYmplY3ROb2RlIiB0eXBlPSJ0bnM6T2JqZWN0Tm9kZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iT2JqZWN0VHlwZU5vZGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhl
+ZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VHlwZU5vZGUiPg0KICAg
+ICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFj
+dCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVl
+bmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT2JqZWN0VHlwZU5vZGUiIHR5
+cGU9InRuczpPYmplY3RUeXBlTm9kZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFy
+aWFibGVOb2RlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAg
+IDx4czpleHRlbnNpb24gYmFzZT0idG5zOkluc3RhbmNlTm9kZSI+DQogICAgICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBl
+IiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5
+cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NMZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRC
+eXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlckFj
+Y2Vzc0xldmVsIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNaW5pbXVtU2FtcGxpbmdJbnRlcnZhbCIgdHlwZT0ieHM6
+ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlz
+dG9yaXppbmciIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJBY2Nlc3NMZXZlbEV4IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNp
+b24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iVmFyaWFibGVOb2RlIiB0eXBlPSJ0bnM6VmFyaWFibGVOb2RlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJWYXJpYWJsZVR5cGVOb2RlIj4NCiAgICA8eHM6Y29t
+cGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5z
+OlR5cGVOb2RlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpWYXJpYW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1
+ZVJhbmsiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkFycmF5RGltZW5zaW9ucyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Iklz
+QWJzdHJhY3QiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94
+czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl
+bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlZhcmlhYmxlVHlw
+ZU5vZGUiIHR5cGU9InRuczpWYXJpYWJsZVR5cGVOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJSZWZlcmVuY2VUeXBlTm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVk
+PSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpUeXBlTm9kZSI+DQogICAg
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0Fic3RyYWN0
+IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iU3ltbWV0cmljIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW52ZXJzZU5hbWUiIHR5cGU9InVhOkxvY2FsaXpl
+ZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2Vx
+dWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlTm9k
+ZSIgdHlwZT0idG5zOlJlZmVyZW5jZVR5cGVOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJNZXRob2ROb2RlIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N
+CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOkluc3RhbmNlTm9kZSI+DQogICAgICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFeGVjdXRhYmxlIiB0eXBl
+PSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVXNlckV4ZWN1dGFibGUiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29t
+cGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1l
+dGhvZE5vZGUiIHR5cGU9InRuczpNZXRob2ROb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJWaWV3Tm9kZSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQog
+ICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpJbnN0YW5jZU5vZGUiPg0KICAgICAgICA8eHM6
+c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGFpbnNOb0xvb3BzIiB0
+eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8
+L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJWaWV3Tm9kZSIgdHlwZT0idG5zOlZpZXdOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJEYXRhVHlwZU5vZGUiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFs
+c2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VHlwZU5vZGUiPg0KICAgICAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlw
+ZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h
+bWU9IkRhdGFUeXBlRGVmaW5pdGlvbiIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAg
+PC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVR5cGVOb2RlIiB0eXBlPSJ0bnM6RGF0YVR5
+cGVOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWZlcmVuY2VOb2RlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQi
+IHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IklzSW52ZXJzZSIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0SWQiIHR5cGU9InVhOkV4cGFu
+ZGVkTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5j
+ZU5vZGUiIHR5cGU9InRuczpSZWZlcmVuY2VOb2RlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJMaXN0T2ZSZWZlcmVuY2VOb2RlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VOb2RlIiB0eXBlPSJ0bnM6UmVmZXJlbmNlTm9kZSIgbWlu
+T2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGlzdE9mUmVmZXJlbmNlTm9kZSIgdHlwZT0idG5zOkxpc3RPZlJlZmVyZW5jZU5vZGUiIG5pbGxh
+YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFyZ3Vt
+ZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOYW1lIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZSIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWVSYW5rIiB0
+eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFy
+cmF5RGltZW5zaW9ucyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVzY3JpcHRpb24iIHR5cGU9
+InVhOkxvY2FsaXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+QXJndW1lbnQiIHR5cGU9InRuczpBcmd1bWVudCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iTGlzdE9mQXJndW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkFyZ3VtZW50IiB0eXBlPSJ0bnM6QXJndW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj
+dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkFyZ3VtZW50IiB0
+eXBlPSJ0bnM6TGlzdE9mQXJndW1lbnQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVudW1WYWx1ZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ4czpsb25nIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6
+TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVudW1WYWx1ZVR5cGUiIHR5cGU9InRu
+czpFbnVtVmFsdWVUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFbnVt
+VmFsdWVUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJF
+bnVtVmFsdWVUeXBlIiB0eXBlPSJ0bnM6RW51bVZhbHVlVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhP
+Y2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRW51bVZhbHVl
+VHlwZSIgdHlwZT0idG5zOkxpc3RPZkVudW1WYWx1ZVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48L3hz
+OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkVudW1GaWVsZCI+DQogICAgPHhz
+OmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9
+InRuczpFbnVtVmFsdWVUeXBlIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z
+aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IkVudW1GaWVsZCIgdHlwZT0idG5zOkVudW1GaWVsZCIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW51bUZpZWxkIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbnVtRmllbGQiIHR5cGU9InRuczpFbnVtRmllbGQi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZkVudW1GaWVsZCIgdHlwZT0idG5zOkxpc3RPZkVudW1GaWVsZCIgbmlsbGFibGU9
+InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iT3B0aW9uU2V0
+Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlw
+ZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsaWRCaXRzIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3B0aW9uU2V0IiB0eXBlPSJ0bnM6
+T3B0aW9uU2V0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZPcHRpb25TZXQi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik9wdGlvblNldCIg
+dHlwZT0idG5zOk9wdGlvblNldCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mT3B0aW9uU2V0IiB0eXBlPSJ0bnM6TGlzdE9m
+T3B0aW9uU2V0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czplbGVtZW50
+IG5hbWU9Ik5vcm1hbGl6ZWRTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJEZWNpbWFsU3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRHVyYXRpb25TdHJpbmciIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJUaW1lU3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRGF0ZVN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiAvPg0KDQogIDx4czplbGVt
+ZW50IG5hbWU9IkR1cmF0aW9uIiB0eXBlPSJ4czpkb3VibGUiIC8+DQoNCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iVXRjVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIC8+DQoNCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTG9jYWxlSWQiIHR5cGU9InhzOnN0cmluZyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iVGltZVpvbmVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iT2Zmc2V0IiB0eXBlPSJ4czpzaG9ydCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iRGF5bGlnaHRTYXZpbmdJbk9mZnNldCIgdHlwZT0ieHM6Ym9vbGVh
+biIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlRpbWVab25lRGF0YVR5cGUiIHR5cGU9InRuczpUaW1l
+Wm9uZURhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUaW1lWm9u
+ZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJU
+aW1lWm9uZURhdGFUeXBlIiB0eXBlPSJ0bnM6VGltZVpvbmVEYXRhVHlwZSIgbWluT2NjdXJzPSIw
+IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVGlt
+ZVpvbmVEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlRpbWVab25lRGF0YVR5cGUiIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iSW5kZXgiIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IkludGVnZXJJZCIgdHlw
+ZT0ieHM6dW5zaWduZWRJbnQiIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IkFwcGxpY2F0
+aW9uVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8
+eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNlcnZlcl8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u
+IHZhbHVlPSJDbGllbnRfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ2xpZW50
+QW5kU2VydmVyXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRpc2NvdmVyeVNl
+cnZlcl8zIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRpb25UeXBlIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25U
+eXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBcHBsaWNhdGlvbkRlc2NyaXB0aW9u
+Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNhdGlv
+blVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvZHVjdFVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXBw
+bGljYXRpb25OYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRpb25UeXBlIiB0
+eXBlPSJ0bnM6QXBwbGljYXRpb25UeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJHYXRld2F5U2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNjb3ZlcnlQ
+cm9maWxlVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaXNjb3ZlcnlVcmxzIiB0eXBlPSJ1YTpMaXN0
+T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQXBwbGljYXRp
+b25EZXNjcmlwdGlvbiIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFwcGxpY2F0aW9uRGVzY3Jp
+cHRpb24iIHR5cGU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1h
+eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZBcHBsaWNh
+dGlvbkRlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mQXBwbGljYXRpb25EZXNjcmlwdGlvbiIg
+bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+UmVxdWVzdEhlYWRlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQXV0aGVudGljYXRpb25Ub2tlbiIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZXN0YW1wIiB0eXBl
+PSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UmVxdWVzdEhhbmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJldHVybkRpYWdub3N0aWNzIiB0eXBlPSJ4czp1bnNpZ25l
+ZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXVkaXRFbnRy
+eUlkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lb3V0SGludCIgdHlwZT0ieHM6dW5zaWduZWRJbnQi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZGl0aW9uYWxIZWFk
+ZXIiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVzcG9uc2VIZWFkZXIiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcCIgdHlwZT0ieHM6ZGF0ZVRpbWUi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIYW5kbGUi
+IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJTZXJ2aWNlUmVzdWx0IiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2aWNlRGlhZ25vc3RpY3MiIHR5cGU9InVh
+OkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iU3RyaW5nVGFibGUiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFk
+ZGl0aW9uYWxIZWFkZXIiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNl
+SGVhZGVyIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9IlZlcnNpb25UaW1lIiB0eXBlPSJ4czp1
+bnNpZ25lZEludCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2VydmljZUZhdWx0Ij4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRl
+ciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IlNlcnZpY2VGYXVsdCIgdHlwZT0idG5zOlNlcnZpY2VGYXVsdCIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvbmxlc3NJbnZva2VSZXF1ZXN0VHlwZSI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXJpc1ZlcnNpb24iIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJOYW1lc3BhY2VVcmlzIiB0eXBlPSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJVcmlzIiB0eXBl
+PSJ1YTpMaXN0T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGVJZHMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl
+cnZpY2VJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNz
+aW9ubGVzc0ludm9rZVJlcXVlc3RUeXBlIiB0eXBlPSJ0bnM6U2Vzc2lvbmxlc3NJbnZva2VSZXF1
+ZXN0VHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2Vzc2lvbmxlc3NJbnZva2VS
+ZXNwb25zZVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+Ik5hbWVzcGFjZVVyaXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclVyaXMiIHR5cGU9
+InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlNlcnZpY2VJZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9ubGVzc0ludm9rZVJlc3BvbnNlVHlwZSIgdHlwZT0idG5z
+OlNlc3Npb25sZXNzSW52b2tlUmVzcG9uc2VUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJGaW5kU2VydmVyc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5k
+cG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlwZT0idWE6TGlzdE9mU3Ry
+aW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iU2VydmVyVXJpcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzUmVxdWVzdCIgdHlwZT0idG5zOkZpbmRT
+ZXJ2ZXJzUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmluZFNlcnZlcnNS
+ZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlcnMiIHR5cGU9InRu
+czpMaXN0T2ZBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzUmVzcG9uc2UiIHR5cGU9InRuczpGaW5kU2VydmVyc1Jl
+c3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXJ2ZXJPbk5ldHdvcmsiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlY29yZElkIiB0eXBl
+PSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU2VydmVyTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzY292ZXJ5VXJsIiB0eXBlPSJ4czpz
+dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJTZXJ2ZXJDYXBhYmlsaXRpZXMiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJPbk5ldHdvcmsiIHR5cGU9InRu
+czpTZXJ2ZXJPbk5ldHdvcmsiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlNl
+cnZlck9uTmV0d29yayI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU2VydmVyT25OZXR3b3JrIiB0eXBlPSJ0bnM6U2VydmVyT25OZXR3b3JrIiBtaW5PY2N1cnM9
+IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZT
+ZXJ2ZXJPbk5ldHdvcmsiIHR5cGU9InRuczpMaXN0T2ZTZXJ2ZXJPbk5ldHdvcmsiIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkZpbmRTZXJ2
+ZXJzT25OZXR3b3JrUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydGlu
+Z1JlY29yZElkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVjb3Jkc1RvUmV0dXJuIiB0eXBlPSJ4czp1bnNpZ25lZElu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2FwYWJp
+bGl0eUZpbHRlciIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IkZpbmRTZXJ2ZXJzT25OZXR3b3JrUmVxdWVzdCIgdHlwZT0idG5zOkZp
+bmRTZXJ2ZXJzT25OZXR3b3JrUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+RmluZFNlcnZlcnNPbk5ldHdvcmtSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRl
+ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ikxhc3RDb3VudGVyUmVzZXRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVycyIgdHlwZT0idG5zOkxpc3RPZlNl
+cnZlck9uTmV0d29yayIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJGaW5k
+U2VydmVyc09uTmV0d29ya1Jlc3BvbnNlIiB0eXBlPSJ0bnM6RmluZFNlcnZlcnNPbk5ldHdvcmtS
+ZXNwb25zZSIgLz4NCg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBsaWNhdGlvbkluc3RhbmNlQ2Vy
+dGlmaWNhdGUiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAg
+bmFtZT0iTWVzc2FnZVNlY3VyaXR5TW9kZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9Inhz
+OnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmFsaWRfMCIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJTaWduXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlNpZ25B
+bmRFbmNyeXB0XzMiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNZXNzYWdlU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVz
+c2FnZVNlY3VyaXR5TW9kZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVXNlclRva2Vu
+VHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6
+ZW51bWVyYXRpb24gdmFsdWU9IkFub255bW91c18wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u
+IHZhbHVlPSJVc2VyTmFtZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDZXJ0
+aWZpY2F0ZV8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJc3N1ZWRUb2tlbl8z
+IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iVXNlclRva2VuVHlwZSIgdHlwZT0idG5zOlVzZXJUb2tlblR5cGUiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVzZXJUb2tlblBvbGljeSI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUG9saWN5SWQiIHR5cGU9InhzOnN0cmluZyIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlRva2VuVHlwZSIgdHlwZT0idG5zOlVzZXJUb2tlblR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Iklzc3VlZFRva2VuVHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+SXNzdWVyRW5kcG9pbnRVcmwiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5UG9saWN5VXJpIiB0
+eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94
+czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVXNl
+clRva2VuUG9saWN5IiB0eXBlPSJ0bnM6VXNlclRva2VuUG9saWN5IiAvPg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJMaXN0T2ZVc2VyVG9rZW5Qb2xpY3kiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJUb2tlblBvbGljeSIgdHlwZT0idG5zOlVzZXJU
+b2tlblBvbGljeSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iTGlzdE9mVXNlclRva2VuUG9saWN5IiB0eXBlPSJ0bnM6TGlzdE9mVXNl
+clRva2VuUG9saWN5IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJFbmRwb2ludERlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vy
+dmVyIiB0eXBlPSJ0bnM6QXBwbGljYXRpb25EZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlckNlcnRpZmljYXRl
+IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0eU1vZGUiIHR5cGU9InRuczpNZXNzYWdl
+U2VjdXJpdHlNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJT
+ZWN1cml0eVBvbGljeVVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlcklkZW50aXR5VG9rZW5zIiB0
+eXBlPSJ0bnM6TGlzdE9mVXNlclRva2VuUG9saWN5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0UHJvZmlsZVVyaSIgdHlw
+ZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlMZXZlbCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnREZXNjcmlwdGlvbiIgdHlwZT0idG5zOkVuZHBvaW50
+RGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkVuZHBvaW50
+RGVzY3JpcHRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkVuZHBvaW50RGVzY3JpcHRpb24iIHR5cGU9InRuczpFbmRwb2ludERlc2NyaXB0aW9uIiBtaW5P
+Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJM
+aXN0T2ZFbmRwb2ludERlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnREZXNjcmlw
+dGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iR2V0RW5kcG9pbnRzUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJF
+bmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTG9jYWxlSWRzIiB0eXBlPSJ1YTpMaXN0T2ZT
+dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJQcm9maWxlVXJpcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5
+cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkdldEVuZHBvaW50c1JlcXVlc3QiIHR5cGU9InRuczpH
+ZXRFbmRwb2ludHNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJHZXRFbmRw
+b2ludHNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50cyIg
+dHlwZT0idG5zOkxpc3RPZkVuZHBvaW50RGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iR2V0RW5kcG9pbnRzUmVzcG9uc2UiIHR5cGU9InRuczpHZXRFbmRw
+b2ludHNSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVnaXN0ZXJlZFNl
+cnZlciI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVy
+VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcm9kdWN0VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2
+ZXJOYW1lcyIgdHlwZT0idWE6TGlzdE9mTG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclR5cGUiIHR5cGU9
+InRuczpBcHBsaWNhdGlvblR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkdhdGV3YXlTZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpc2NvdmVyeVVybHMi
+IHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlbWFwaG9yZUZpbGVQYXRoIiB0eXBlPSJ4czpzdHJp
+bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJJc09ubGluZSIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJl
+Z2lzdGVyZWRTZXJ2ZXIiIHR5cGU9InRuczpSZWdpc3RlcmVkU2VydmVyIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZSZWdpc3RlcmVkU2VydmVyIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3RlcmVkU2VydmVyIiB0eXBlPSJ0bnM6
+UmVnaXN0ZXJlZFNlcnZlciIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVnaXN0ZXJlZFNlcnZlciIgdHlwZT0idG5zOkxp
+c3RPZlJlZ2lzdGVyZWRTZXJ2ZXIiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyU2VydmVyUmVxdWVzdCI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5z
+OlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXIiIHR5cGU9InRuczpSZWdpc3RlcmVkU2VydmVyIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyU2VydmVyUmVxdWVzdCIg
+dHlwZT0idG5zOlJlZ2lzdGVyU2VydmVyUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iUmVnaXN0ZXJTZXJ2ZXJSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRl
+ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWdpc3RlclNlcnZlclJl
+c3BvbnNlIiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXJSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iRGlzY292ZXJ5Q29uZmlndXJhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IkRpc2NvdmVyeUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpEaXNjb3ZlcnlDb25maWd1
+cmF0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJNZG5zRGlzY292ZXJ5Q29uZmln
+dXJhdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8
+eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpEaXNjb3ZlcnlDb25maWd1cmF0aW9uIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1kbnNTZXJ2ZXJOYW1l
+IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2FwYWJpbGl0aWVzIiB0eXBlPSJ1YTpMaXN0
+T2ZTdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6
+c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNZG5zRGlzY292ZXJ5
+Q29uZmlndXJhdGlvbiIgdHlwZT0idG5zOk1kbnNEaXNjb3ZlcnlDb25maWd1cmF0aW9uIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWdpc3RlclNlcnZlcjJSZXF1ZXN0Ij4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBl
+PSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlciIgdHlwZT0idG5zOlJlZ2lzdGVyZWRTZXJ2ZXIi
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJEaXNjb3ZlcnlDb25maWd1cmF0aW9uIiB0eXBlPSJ1YTpMaXN0T2ZFeHRlbnNpb25PYmplY3Qi
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJTZXJ2ZXIyUmVx
+dWVzdCIgdHlwZT0idG5zOlJlZ2lzdGVyU2VydmVyMlJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9IlJlZ2lzdGVyU2VydmVyMlJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3Bv
+bnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQ29uZmlndXJhdGlvblJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0Nv
+ZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyU2VydmVyMlJlc3BvbnNl
+IiB0eXBlPSJ0bnM6UmVnaXN0ZXJTZXJ2ZXIyUmVzcG9uc2UiIC8+DQoNCiAgPHhzOnNpbXBsZVR5
+cGUgIG5hbWU9IlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9u
+IGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iklzc3VlXzAi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJlbmV3XzEiIC8+DQogICAgPC94czpy
+ZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1
+cml0eVRva2VuUmVxdWVzdFR5cGUiIHR5cGU9InRuczpTZWN1cml0eVRva2VuUmVxdWVzdFR5cGUi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNoYW5uZWxTZWN1cml0eVRva2VuIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFubmVsSWQiIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJUb2tlbklkIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlZEF0IiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZExpZmV0aW1lIiB0eXBlPSJ4
+czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNoYW5uZWxTZWN1cml0eVRva2Vu
+IiB0eXBlPSJ0bnM6Q2hhbm5lbFNlY3VyaXR5VG9rZW4iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9Ik9wZW5TZWN1cmVDaGFubmVsUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFk
+ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJDbGllbnRQcm90b2NvbFZlcnNpb24iIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0VHlwZSIgdHlwZT0idG5z
+OlNlY3VyaXR5VG9rZW5SZXF1ZXN0VHlwZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU2VjdXJpdHlNb2RlIiB0eXBlPSJ0bnM6TWVzc2FnZVNlY3VyaXR5TW9kZSIg
+bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2xpZW50Tm9uY2UiIHR5
+cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZExpZmV0aW1lIiB0eXBlPSJ4czp1bnNpZ25l
+ZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik9wZW5TZWN1cmVDaGFubmVsUmVxdWVzdCIgdHlw
+ZT0idG5zOk9wZW5TZWN1cmVDaGFubmVsUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iT3BlblNlY3VyZUNoYW5uZWxSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhl
+YWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlNlcnZlclByb3RvY29sVmVyc2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5VG9rZW4iIHR5cGU9
+InRuczpDaGFubmVsU2VjdXJpdHlUb2tlbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlck5vbmNlIiB0eXBlPSJ4czpiYXNlNjRC
+aW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlblNlY3VyZUNo
+YW5uZWxSZXNwb25zZSIgdHlwZT0idG5zOk9wZW5TZWN1cmVDaGFubmVsUmVzcG9uc2UiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlcXVlc3QiPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5
+cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IkNsb3NlU2VjdXJlQ2hhbm5lbFJlcXVlc3QiIHR5cGU9InRuczpDbG9zZVNlY3VyZUNoYW5u
+ZWxSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDbG9zZVNlY3VyZUNoYW5u
+ZWxSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDbG9zZVNlY3VyZUNoYW5uZWxSZXNwb25zZSIgdHlwZT0i
+dG5zOkNsb3NlU2VjdXJlQ2hhbm5lbFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJDZXJ0aWZpY2F0ZURhdGEiIHR5cGU9InhzOmJhc2U2NEJpbmFy
+eSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlNpZ25hdHVyZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIHR5cGU9InRuczpT
+aWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM
+aXN0T2ZTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJTaWduZWRTb2Z0d2FyZUNlcnRpZmljYXRlIiB0eXBlPSJ0bnM6
+U2lnbmVkU29mdHdhcmVDZXJ0aWZpY2F0ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2lnbmVkU29mdHdhcmVDZXJ0aWZp
+Y2F0ZSIgdHlwZT0idG5zOkxpc3RPZlNpZ25lZFNvZnR3YXJlQ2VydGlmaWNhdGUiIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbkF1dGhl
+bnRpY2F0aW9uVG9rZW4iIHR5cGU9InVhOk5vZGVJZCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iU2lnbmF0dXJlRGF0YSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iQWxnb3JpdGhtIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTaWduYXR1cmUiIHR5cGU9Inhz
+OmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTaWdu
+YXR1cmVEYXRhIiB0eXBlPSJ0bnM6U2lnbmF0dXJlRGF0YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iQ3JlYXRlU2Vzc2lvblJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQ2xpZW50RGVzY3JpcHRpb24iIHR5cGU9InRuczpBcHBsaWNhdGlvbkRlc2NyaXB0aW9uIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+U2VydmVyVXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2ludFVybCIgdHlwZT0ieHM6c3RyaW5n
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU2Vzc2lvbk5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudE5vbmNlIiB0eXBlPSJ4czpi
+YXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJDbGllbnRDZXJ0aWZpY2F0ZSIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UmVxdWVzdGVkU2Vzc2lvblRpbWVvdXQiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVzcG9uc2VNZXNzYWdlU2l6ZSIgdHlwZT0i
+eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8
+L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTZXNzaW9uUmVxdWVz
+dCIgdHlwZT0idG5zOkNyZWF0ZVNlc3Npb25SZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJDcmVhdGVTZXNzaW9uUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFk
+ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTZXNzaW9uSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9uVG9rZW4iIHR5
+cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJldmlzZWRTZXNzaW9uVGltZW91dCIgdHlwZT0ieHM6ZG91YmxlIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJOb25jZSIgdHlw
+ZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyQ2VydGlmaWNhdGUiIHR5cGU9InhzOmJhc2U2NEJp
+bmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlNlcnZlckVuZHBvaW50cyIgdHlwZT0idG5zOkxpc3RPZkVuZHBvaW50RGVzY3JpcHRp
+b24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTZXJ2ZXJTb2Z0d2FyZUNlcnRpZmljYXRlcyIgdHlwZT0idG5zOkxpc3RPZlNpZ25lZFNv
+ZnR3YXJlQ2VydGlmaWNhdGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJTaWduYXR1cmUiIHR5cGU9InRuczpTaWduYXR1cmVE
+YXRhIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iTWF4UmVxdWVzdE1lc3NhZ2VTaXplIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25SZXNwb25zZSIgdHlwZT0idG5zOkNyZWF0ZVNl
+c3Npb25SZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVXNlcklkZW50aXR5
+VG9rZW4iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlBvbGlj
+eUlkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVXNlcklkZW50aXR5VG9rZW4iIHR5cGU9InRuczpVc2VySWRlbnRpdHlUb2tlbiIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQW5vbnltb3VzSWRlbnRpdHlUb2tlbiI+DQogICAgPHhz
+OmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9
+InRuczpVc2VySWRlbnRpdHlUb2tlbiI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg
+PC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENv
+bnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFub255bW91
+c0lkZW50aXR5VG9rZW4iIHR5cGU9InRuczpBbm9ueW1vdXNJZGVudGl0eVRva2VuIiAvPg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJVc2VyTmFtZUlkZW50aXR5VG9rZW4iPg0KICAgIDx4czpj
+b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0
+bnM6VXNlcklkZW50aXR5VG9rZW4iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iVXNlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQYXNzd29y
+ZCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuY3J5cHRpb25BbGdvcml0aG0iIHR5cGU9
+InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94
+czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRl
+bnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lSWRl
+bnRpdHlUb2tlbiIgdHlwZT0idG5zOlVzZXJOYW1lSWRlbnRpdHlUb2tlbiIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iWDUwOUlkZW50aXR5VG9rZW4iPg0KICAgIDx4czpjb21wbGV4Q29u
+dGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6VXNlcklk
+ZW50aXR5VG9rZW4iPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iQ2VydGlmaWNhdGVEYXRhIiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8
+L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJYNTA5SWRlbnRpdHlUb2tlbiIgdHlwZT0idG5zOlg1
+MDlJZGVudGl0eVRva2VuIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJJc3N1ZWRJZGVu
+dGl0eVRva2VuIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAg
+IDx4czpleHRlbnNpb24gYmFzZT0idG5zOlVzZXJJZGVudGl0eVRva2VuIj4NCiAgICAgICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRva2VuRGF0YSIgdHlwZT0i
+eHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkVuY3J5cHRpb25BbGdvcml0aG0iIHR5cGU9InhzOnN0cmlu
+ZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Iklzc3VlZElkZW50aXR5VG9rZW4i
+IHR5cGU9InRuczpJc3N1ZWRJZGVudGl0eVRva2VuIiAvPg0KDQogIDx4czplbGVtZW50IG5hbWU9
+IlJzYUVuY3J5cHRlZFNlY3JldCIgdHlwZT0idWE6VmFyaWFudCIgLz4NCg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJFY2NFbmNyeXB0ZWRTZWNyZXQiIHR5cGU9InVhOlZhcmlhbnQiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9IkFjdGl2YXRlU2Vzc2lvblJlcXVlc3QiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpS
+ZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iQ2xpZW50U2lnbmF0dXJlIiB0eXBlPSJ0bnM6U2lnbmF0dXJlRGF0YSIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkNsaWVudFNvZnR3YXJlQ2VydGlmaWNhdGVzIiB0eXBlPSJ0bnM6TGlzdE9mU2lnbmVkU29mdHdh
+cmVDZXJ0aWZpY2F0ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkxvY2FsZUlkcyIgdHlwZT0idWE6TGlzdE9mU3RyaW5nIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlcklk
+ZW50aXR5VG9rZW4iIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJUb2tlblNpZ25hdHVy
+ZSIgdHlwZT0idG5zOlNpZ25hdHVyZURhdGEiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iQWN0aXZhdGVTZXNzaW9uUmVxdWVzdCIgdHlwZT0idG5zOkFjdGl2YXRlU2Vzc2lv
+blJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFjdGl2YXRlU2Vzc2lvblJl
+c3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNw
+b25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyTm9uY2UiIHR5cGU9
+InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE
+aWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxl
+eFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkFjdGl2YXRlU2Vzc2lvblJlc3BvbnNlIiB0eXBl
+PSJ0bnM6QWN0aXZhdGVTZXNzaW9uUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9IkNsb3NlU2Vzc2lvblJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGVs
+ZXRlU3Vic2NyaXB0aW9ucyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+IkNsb3NlU2Vzc2lvblJlcXVlc3QiIHR5cGU9InRuczpDbG9zZVNlc3Npb25SZXF1ZXN0IiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDbG9zZVNlc3Npb25SZXNwb25zZSI+DQogICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9
+InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJDbG9zZVNlc3Npb25SZXNwb25zZSIgdHlwZT0idG5zOkNsb3NlU2Vzc2lvblJlc3BvbnNlIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJDYW5jZWxSZXF1ZXN0Ij4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6
+UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJlcXVlc3RIYW5kbGUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsUmVxdWVzdCIgdHlwZT0idG5zOkNhbmNlbFJlcXVlc3Qi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbmNlbFJlc3BvbnNlIj4NCiAgICA8eHM6
+c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0i
+dG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FuY2VsUmVzcG9uc2UiIHR5cGU9InRuczpDYW5jZWxSZXNw
+b25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTm9kZUF0dHJpYnV0ZXNNYXNrIj4N
+CiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJh
+dGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBY2Nl
+c3NMZXZlbF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJBcnJheURpbWVuc2lv
+bnNfMiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQnJvd3NlTmFtZV80IiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJDb250YWluc05vTG9vcHNfOCIgLz4NCiAgICAg
+IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGF0YVR5cGVfMTYiIC8+DQogICAgICA8eHM6ZW51bWVy
+YXRpb24gdmFsdWU9IkRlc2NyaXB0aW9uXzMyIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh
+bHVlPSJEaXNwbGF5TmFtZV82NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRXZl
+bnROb3RpZmllcl8xMjgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkV4ZWN1dGFi
+bGVfMjU2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJIaXN0b3JpemluZ181MTIi
+IC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmVyc2VOYW1lXzEwMjQiIC8+DQog
+ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IklzQWJzdHJhY3RfMjA0OCIgLz4NCiAgICAgIDx4
+czplbnVtZXJhdGlvbiB2YWx1ZT0iTWluaW11bVNhbXBsaW5nSW50ZXJ2YWxfNDA5NiIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9kZUNsYXNzXzgxOTIiIC8+DQogICAgICA8eHM6
+ZW51bWVyYXRpb24gdmFsdWU9Ik5vZGVJZF8xNjM4NCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iU3ltbWV0cmljXzMyNzY4IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl
+PSJVc2VyQWNjZXNzTGV2ZWxfNjU1MzYiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+IlVzZXJFeGVjdXRhYmxlXzEzMTA3MiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0i
+VXNlcldyaXRlTWFza18yNjIxNDQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlZh
+bHVlUmFua181MjQyODgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IldyaXRlTWFz
+a18xMDQ4NTc2IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJWYWx1ZV8yMDk3MTUy
+IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJEYXRhVHlwZURlZmluaXRpb25fNDE5
+NDMwNCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUm9sZVBlcm1pc3Npb25zXzgz
+ODg2MDgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkFjY2Vzc1Jlc3RyaWN0aW9u
+c18xNjc3NzIxNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWxsXzMzNTU0NDMx
+IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCYXNlTm9kZV8yNjUwMTIyMCIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iT2JqZWN0XzI2NTAxMzQ4IiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJPYmplY3RUeXBlXzI2NTAzMjY4IiAvPg0KICAgICAgPHhz
+OmVudW1lcmF0aW9uIHZhbHVlPSJWYXJpYWJsZV8yNjU3MTM4MyIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iVmFyaWFibGVUeXBlXzI4NjAwNDM4IiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJNZXRob2RfMjY2MzI1NDgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g
+dmFsdWU9IlJlZmVyZW5jZVR5cGVfMjY1MzcwNjAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g
+dmFsdWU9IlZpZXdfMjY1MDEzNTYiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpz
+aW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlQXR0cmlidXRlc01hc2siIHR5cGU9
+InRuczpOb2RlQXR0cmlidXRlc01hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5v
+ZGVBdHRyaWJ1dGVzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJTcGVjaWZpZWRBdHRyaWJ1dGVzIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlzcGxheU5hbWUiIHR5cGU9InVhOkxvY2Fs
+aXplZFRleHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJEZXNjcmlwdGlvbiIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IldyaXRlTWFz
+ayIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlVzZXJXcml0ZU1hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTm9kZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpOb2RlQXR0cmlidXRlcyIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iT2JqZWN0QXR0cmlidXRlcyI+DQogICAgPHhzOmNv
+bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu
+czpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJFdmVudE5vdGlmaWVyIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9u
+Pg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9Ik9iamVjdEF0dHJpYnV0ZXMiIHR5cGU9InRuczpPYmplY3RBdHRyaWJ1dGVz
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJWYXJpYWJsZUF0dHJpYnV0ZXMiPg0KICAg
+IDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBi
+YXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFsdWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhVHlwZSIgdHlwZT0idWE6Tm9k
+ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlZhbHVlUmFuayIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQXJyYXlEaW1lbnNpb25zIiB0eXBlPSJ1YTpMaXN0T2ZV
+SW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQWNjZXNzTGV2ZWwiIHR5cGU9InhzOnVuc2lnbmVkQnl0ZSIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJBY2Nlc3NMZXZlbCIgdHlw
+ZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iTWluaW11bVNhbXBsaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3Rvcml6aW5nIiB0eXBl
+PSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQog
+ICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWYXJpYWJsZUF0dHJpYnV0ZXMiIHR5cGU9
+InRuczpWYXJpYWJsZUF0dHJpYnV0ZXMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1l
+dGhvZEF0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0K
+ICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXhlY3V0YWJsZSIgdHlw
+ZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlVzZXJFeGVjdXRhYmxlIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNv
+bXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJN
+ZXRob2RBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6TWV0aG9kQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iT2JqZWN0VHlwZUF0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4
+Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9k
+ZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpj
+b21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+T2JqZWN0VHlwZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpPYmplY3RUeXBlQXR0cmlidXRlcyIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVmFyaWFibGVUeXBlQXR0cmlidXRlcyI+DQogICAg
+PHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJh
+c2U9InRuczpOb2RlQXR0cmlidXRlcyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlIiB0eXBlPSJ1YTpOb2Rl
+SWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iVmFsdWVSYW5rIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBcnJheURpbWVuc2lvbnMiIHR5cGU9InVhOkxpc3RPZlVJ
+bnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJJc0Fic3RyYWN0IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hz
+OmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJWYXJpYWJsZVR5cGVBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6VmFyaWFibGVUeXBlQXR0cmlidXRl
+cyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVmZXJlbmNlVHlwZUF0dHJpYnV0ZXMi
+Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu
+c2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNBYnN0cmFjdCIgdHlwZT0ieHM6Ym9vbGVhbiIg
+bWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN5bW1ldHJpYyIg
+dHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkludmVyc2VOYW1lIiB0eXBlPSJ1YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpl
+eHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUF0dHJpYnV0ZXMiIHR5cGU9InRuczpS
+ZWZlcmVuY2VUeXBlQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0
+YVR5cGVBdHRyaWJ1dGVzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N
+CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IklzQWJzdHJhY3QiIHR5
+cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4N
+CiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRhdGFUeXBlQXR0cmlidXRlcyIgdHlw
+ZT0idG5zOkRhdGFUeXBlQXR0cmlidXRlcyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+Vmlld0F0dHJpYnV0ZXMiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0K
+ICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6Tm9kZUF0dHJpYnV0ZXMiPg0KICAgICAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGFpbnNOb0xvb3Bz
+IiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iRXZlbnROb3RpZmllciIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAg
+ICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJWaWV3QXR0cmlidXRlcyIgdHlwZT0idG5zOlZpZXdBdHRyaWJ1dGVzIiAvPg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJHZW5lcmljQXR0cmlidXRlVmFsdWUiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0eXBlPSJ4czp1
+bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVmFs
+dWUiIHR5cGU9InVhOlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJHZW5lcmljQXR0cmli
+dXRlVmFsdWUiIHR5cGU9InRuczpHZW5lcmljQXR0cmlidXRlVmFsdWUiIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iR2VuZXJpY0F0dHJpYnV0ZVZhbHVlIiB0
+eXBlPSJ0bnM6R2VuZXJpY0F0dHJpYnV0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i
+dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZHZW5lcmljQXR0cmlidXRl
+VmFsdWUiIHR5cGU9InRuczpMaXN0T2ZHZW5lcmljQXR0cmlidXRlVmFsdWUiIG5pbGxhYmxlPSJ0
+cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkdlbmVyaWNBdHRy
+aWJ1dGVzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4
+czpleHRlbnNpb24gYmFzZT0idG5zOk5vZGVBdHRyaWJ1dGVzIj4NCiAgICAgICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZVZhbHVlcyIgdHlwZT0i
+dG5zOkxpc3RPZkdlbmVyaWNBdHRyaWJ1dGVWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0K
+ICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IkdlbmVyaWNBdHRyaWJ1dGVzIiB0eXBlPSJ0bnM6R2VuZXJpY0F0dHJpYnV0ZXMi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFkZE5vZGVzSXRlbSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyZW50Tm9kZUlkIiB0eXBlPSJ1YTpF
+eHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVz
+dGVkTmV3Tm9kZUlkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5hbWUiIHR5cGU9
+InVhOlF1YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlQ2xhc3MiIHR5cGU9InRuczpOb2RlQ2xhc3MiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVBdHRyaWJ1dGVzIiB0eXBl
+PSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUeXBlRGVmaW5pdGlvbiIgdHlwZT0idWE6RXhwYW5kZWRO
+b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkTm9kZXNJdGVt
+IiB0eXBlPSJ0bnM6QWRkTm9kZXNJdGVtIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJM
+aXN0T2ZBZGROb2Rlc0l0ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkFkZE5vZGVzSXRlbSIgdHlwZT0idG5zOkFkZE5vZGVzSXRlbSIgbWluT2NjdXJzPSIw
+IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQWRk
+Tm9kZXNJdGVtIiB0eXBlPSJ0bnM6TGlzdE9mQWRkTm9kZXNJdGVtIiBuaWxsYWJsZT0idHJ1ZSI+
+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGROb2Rlc1Jlc3VsdCI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIg
+dHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iQWRkZWROb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc1Jlc3VsdCIgdHlwZT0idG5zOkFkZE5vZGVzUmVzdWx0
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZBZGROb2Rlc1Jlc3VsdCI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkTm9kZXNSZXN1bHQi
+IHR5cGU9InRuczpBZGROb2Rlc1Jlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91
+bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQWRkTm9kZXNSZXN1bHQiIHR5cGU9
+InRuczpMaXN0T2ZBZGROb2Rlc1Jlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWRkTm9kZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6
+UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik5vZGVzVG9BZGQiIHR5cGU9InRuczpMaXN0T2ZBZGROb2Rlc0l0ZW0i
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQWRkTm9kZXNSZXF1ZXN0IiB0
+eXBlPSJ0bnM6QWRkTm9kZXNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJB
+ZGROb2Rlc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIg
+dHlwZT0idG5zOkxpc3RPZkFkZE5vZGVzUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1
+YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJBZGROb2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6QWRkTm9kZXNSZXNwb25zZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWRkUmVmZXJlbmNlc0l0ZW0iPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvdXJjZU5vZGVJZCIgdHlwZT0idWE6Tm9k
+ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc0ZvcndhcmQiIHR5cGU9
+InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRh
+cmdldFNlcnZlclVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0Tm9kZUlkIiB0eXBlPSJ1YTpF
+eHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlRhcmdldE5vZGVDbGFzcyIgdHlwZT0idG5zOk5vZGVDbGFzcyIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IkFkZFJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6QWRkUmVmZXJl
+bmNlc0l0ZW0iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkFkZFJlZmVyZW5j
+ZXNJdGVtIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRS
+ZWZlcmVuY2VzSXRlbSIgdHlwZT0idG5zOkFkZFJlZmVyZW5jZXNJdGVtIiBtaW5PY2N1cnM9IjAi
+IG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZBZGRS
+ZWZlcmVuY2VzSXRlbSIgdHlwZT0idG5zOkxpc3RPZkFkZFJlZmVyZW5jZXNJdGVtIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGRSZWZl
+cmVuY2VzUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VzVG9B
+ZGQiIHR5cGU9InRuczpMaXN0T2ZBZGRSZWZlcmVuY2VzSXRlbSIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRSZWZlcmVuY2VzUmVxdWVzdCIgdHlwZT0idG5zOkFkZFJl
+ZmVyZW5jZXNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZGRSZWZlcmVu
+Y2VzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBl
+PSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZE
+aWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZGRS
+ZWZlcmVuY2VzUmVzcG9uc2UiIHR5cGU9InRuczpBZGRSZWZlcmVuY2VzUmVzcG9uc2UiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRlbGV0ZU5vZGVzSXRlbSI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE
+ZWxldGVUYXJnZXRSZWZlcmVuY2VzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iRGVsZXRlTm9kZXNJdGVtIiB0eXBlPSJ0bnM6RGVsZXRlTm9kZXNJdGVtIiAvPg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZEZWxldGVOb2Rlc0l0ZW0iPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZU5vZGVzSXRlbSIgdHlwZT0i
+dG5zOkRlbGV0ZU5vZGVzSXRlbSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRGVsZXRlTm9kZXNJdGVtIiB0eXBlPSJ0bnM6
+TGlzdE9mRGVsZXRlTm9kZXNJdGVtIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQog
+IDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVOb2Rlc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpS
+ZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iTm9kZXNUb0RlbGV0ZSIgdHlwZT0idG5zOkxpc3RPZkRlbGV0ZU5vZGVz
+SXRlbSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVOb2Rlc1Jl
+cXVlc3QiIHR5cGU9InRuczpEZWxldGVOb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9IkRlbGV0ZU5vZGVzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFk
+ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9z
+IiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJEZWxldGVOb2Rlc1Jlc3BvbnNlIiB0eXBlPSJ0bnM6RGVsZXRlTm9kZXNS
+ZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVsZXRlUmVmZXJlbmNlc0l0
+ZW0iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvdXJjZU5v
+ZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQi
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJJc0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlRhcmdldE5vZGVJZCIgdHlwZT0idWE6RXhwYW5kZWROb2RlSWQiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE
+ZWxldGVCaWRpcmVjdGlvbmFsIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRGVsZXRlUmVmZXJlbmNlc0l0ZW0iIHR5cGU9InRuczpEZWxldGVSZWZlcmVuY2VzSXRlbSIg
+Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRGVsZXRlUmVmZXJlbmNlc0l0ZW0i
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVy
+ZW5jZXNJdGVtIiB0eXBlPSJ0bnM6RGVsZXRlUmVmZXJlbmNlc0l0ZW0iIG1pbk9jY3Vycz0iMCIg
+bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkRlbGV0
+ZVJlZmVyZW5jZXNJdGVtIiB0eXBlPSJ0bnM6TGlzdE9mRGVsZXRlUmVmZXJlbmNlc0l0ZW0iIG5p
+bGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRl
+bGV0ZVJlZmVyZW5jZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVy
+ZW5jZXNUb0RlbGV0ZSIgdHlwZT0idG5zOkxpc3RPZkRlbGV0ZVJlZmVyZW5jZXNJdGVtIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXF1ZXN0
+IiB0eXBlPSJ0bnM6RGVsZXRlUmVmZXJlbmNlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25z
+ZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGlj
+SW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IkRlbGV0ZVJlZmVyZW5jZXNSZXNwb25zZSIgdHlwZT0idG5zOkRl
+bGV0ZVJlZmVyZW5jZXNSZXNwb25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iQXR0
+cmlidXRlV3JpdGVNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dW5zaWduZWRJ
+bnQiPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQXR0cmlidXRlV3JpdGVNYXNrIiB0eXBlPSJ0bnM6QXR0cmlidXRlV3JpdGVN
+YXNrIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJCcm93c2VEaXJlY3Rpb24iPg0KICAg
+IDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9u
+IHZhbHVlPSJGb3J3YXJkXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkludmVy
+c2VfMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQm90aF8yIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbnZhbGlkXzMiIC8+DQogICAgPC94czpyZXN0cmljdGlv
+bj4NCiAgPC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VEaXJlY3Rp
+b24iIHR5cGU9InRuczpCcm93c2VEaXJlY3Rpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9IlZpZXdEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iVmlld0lkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXAiIHR5cGU9InhzOmRh
+dGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJWaWV3VmVy
+c2lvbiIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJWaWV3RGVz
+Y3JpcHRpb24iIHR5cGU9InRuczpWaWV3RGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9IkJyb3dzZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZURpcmVjdGlv
+biIgdHlwZT0idG5zOkJyb3dzZURpcmVjdGlvbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmNsdWRl
+U3VidHlwZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9Ik5vZGVDbGFzc01hc2siIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRNYXNrIiB0eXBlPSJ4czp1
+bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZURlc2NyaXB0aW9uIiB0eXBl
+PSJ0bnM6QnJvd3NlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxp
+c3RPZkJyb3dzZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJCcm93c2VEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkJyb3dzZURlc2NyaXB0aW9u
+IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJMaXN0T2ZCcm93c2VEZXNjcmlwdGlvbiIgdHlwZT0idG5zOkxpc3RPZkJyb3dzZURlc2Ny
+aXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpzaW1wbGVUeXBl
+ICBuYW1lPSJCcm93c2VSZXN1bHRNYXNrIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6
+c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZlcmVuY2VUeXBlSWRfMSIgLz4NCiAgICAgIDx4czpl
+bnVtZXJhdGlvbiB2YWx1ZT0iSXNGb3J3YXJkXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24g
+dmFsdWU9Ik5vZGVDbGFzc180IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCcm93
+c2VOYW1lXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRpc3BsYXlOYW1lXzE2
+IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJUeXBlRGVmaW5pdGlvbl8zMiIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWxsXzYzIiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJSZWZlcmVuY2VUeXBlSW5mb18zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJUYXJnZXRJbmZvXzYwIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwv
+eHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUmVzdWx0TWFzayIgdHlw
+ZT0idG5zOkJyb3dzZVJlc3VsdE1hc2siIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJl
+ZmVyZW5jZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJSZWZlcmVuY2VUeXBlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklzRm9yd2FyZCIgdHlw
+ZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+Tm9kZUlkIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZU5hbWUiIHR5cGU9InVhOlF1
+YWxpZmllZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJEaXNwbGF5TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVD
+bGFzcyIgdHlwZT0idG5zOk5vZGVDbGFzcyIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb24iIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlkIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6
+Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZURlc2NyaXB0aW9uIiB0
+eXBlPSJ0bnM6UmVmZXJlbmNlRGVzY3JpcHRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9Ikxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJSZWZlcmVuY2VEZXNjcmlwdGlvbiIgdHlwZT0idG5zOlJlZmVy
+ZW5jZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWZlcmVuY2VEZXNjcmlwdGlvbiIgdHlwZT0idG5z
+Okxpc3RPZlJlZmVyZW5jZURlc2NyaXB0aW9uIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50
+Pg0KDQogIDx4czplbGVtZW50IG5hbWU9IkNvbnRpbnVhdGlvblBvaW50IiB0eXBlPSJ4czpiYXNl
+NjRCaW5hcnkiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZVJlc3VsdCI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlw
+ZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZXMi
+IHR5cGU9InRuczpMaXN0T2ZSZWZlcmVuY2VEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VSZXN1bHQiIHR5cGU9InRuczpCcm93c2VSZXN1bHQi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb3dzZVJlc3VsdCI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUmVzdWx0IiB0eXBl
+PSJ0bnM6QnJvd3NlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VSZXN1bHQiIHR5cGU9InRuczpMaXN0
+T2ZCcm93c2VSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkJyb3dzZVJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVmlldyIgdHlwZT0idG5zOlZpZXdEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZE1heFJlZmVyZW5j
+ZXNQZXJOb2RlIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTm9kZXNUb0Jyb3dzZSIgdHlwZT0idG5zOkxpc3RPZkJyb3dzZURl
+c2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVJl
+cXVlc3QiIHR5cGU9InRuczpCcm93c2VSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJCcm93c2VSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3Vs
+dHMiIHR5cGU9InRuczpMaXN0T2ZCcm93c2VSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9
+InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IkJyb3dzZVJlc3BvbnNlIiB0eXBlPSJ0bnM6QnJvd3NlUmVzcG9uc2UiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IkJyb3dzZU5leHRSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVx
+dWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlJlbGVhc2VDb250aW51YXRpb25Qb2ludHMiIHR5cGU9InhzOmJvb2xlYW4i
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRpbnVhdGlvblBv
+aW50cyIgdHlwZT0idWE6TGlzdE9mQnl0ZVN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJCcm93c2VOZXh0UmVxdWVzdCIgdHlwZT0idG5zOkJyb3dzZU5leHRSZXF1
+ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJCcm93c2VOZXh0UmVzcG9uc2UiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVy
+IiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mQnJv
+d3NlUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5m
+byIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93c2VOZXh0UmVzcG9u
+c2UiIHR5cGU9InRuczpCcm93c2VOZXh0UmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9IlJlbGF0aXZlUGF0aEVsZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZVR5cGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNJbnZl
+cnNlIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJJbmNsdWRlU3VidHlwZXMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRhcmdldE5hbWUiIHR5cGU9InVhOlF1YWxpZmll
+ZE5hbWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVsYXRpdmVQYXRo
+RWxlbWVudCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aEVsZW1lbnQiIC8+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9Ikxpc3RPZlJlbGF0aXZlUGF0aEVsZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGF0aXZlUGF0aEVsZW1lbnQiIHR5cGU9InRu
+czpSZWxhdGl2ZVBhdGhFbGVtZW50IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZSZWxhdGl2ZVBhdGhFbGVtZW50IiB0eXBl
+PSJ0bnM6TGlzdE9mUmVsYXRpdmVQYXRoRWxlbWVudCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxl
+bWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVsYXRpdmVQYXRoIj4NCiAgICA8eHM6
+c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbGVtZW50cyIgdHlwZT0idG5zOkxp
+c3RPZlJlbGF0aXZlUGF0aEVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iUmVsYXRpdmVQYXRoIiB0eXBlPSJ0bnM6UmVsYXRpdmVQYXRoIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJCcm93c2VQYXRoIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJTdGFydGluZ05vZGUiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGF0aXZl
+UGF0aCIgdHlwZT0idG5zOlJlbGF0aXZlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJCcm93c2VQYXRoIiB0eXBlPSJ0bnM6QnJvd3NlUGF0aCIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQnJvd3NlUGF0aCI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aCIgdHlwZT0idG5zOkJyb3dzZVBhdGgi
+IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9Ikxpc3RPZkJyb3dzZVBhdGgiIHR5cGU9InRuczpMaXN0T2ZCcm93c2VQYXRoIiBuaWxsYWJs
+ZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJCcm93c2VQ
+YXRoVGFyZ2V0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJU
+YXJnZXRJZCIgdHlwZT0idWE6RXhwYW5kZWROb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZW1haW5pbmdQYXRoSW5kZXgiIHR5
+cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aFRhcmdl
+dCIgdHlwZT0idG5zOkJyb3dzZVBhdGhUYXJnZXQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9Ikxpc3RPZkJyb3dzZVBhdGhUYXJnZXQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhUYXJnZXQiIHR5cGU9InRuczpCcm93c2VQYXRoVGFy
+Z2V0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZCcm93c2VQYXRoVGFyZ2V0IiB0eXBlPSJ0bnM6TGlzdE9mQnJvd3NlUGF0
+aFRhcmdldCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iQnJvd3NlUGF0aFJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iU3RhdHVzQ29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVGFyZ2V0cyIgdHlwZT0idG5zOkxpc3RP
+ZkJyb3dzZVBhdGhUYXJnZXQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+QnJvd3NlUGF0aFJlc3VsdCIgdHlwZT0idG5zOkJyb3dzZVBhdGhSZXN1bHQiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkJyb3dzZVBhdGhSZXN1bHQiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhSZXN1bHQiIHR5cGU9InRu
+czpCcm93c2VQYXRoUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZCcm93c2VQYXRoUmVzdWx0IiB0eXBlPSJ0bnM6
+TGlzdE9mQnJvd3NlUGF0aFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJZHNSZXF1
+ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0
+SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJyb3dzZVBhdGhzIiB0eXBlPSJ0bnM6
+TGlzdE9mQnJvd3NlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJU
+cmFuc2xhdGVCcm93c2VQYXRoc1RvTm9kZUlkc1JlcXVlc3QiIHR5cGU9InRuczpUcmFuc2xhdGVC
+cm93c2VQYXRoc1RvTm9kZUlkc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IlRyYW5zbGF0ZUJyb3dzZVBhdGhzVG9Ob2RlSWRzUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVz
+cG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mQnJvd3NlUGF0aFJlc3VsdCIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNsYXRlQnJvd3NlUGF0aHNUb05vZGVJ
+ZHNSZXNwb25zZSIgdHlwZT0idG5zOlRyYW5zbGF0ZUJyb3dzZVBhdGhzVG9Ob2RlSWRzUmVzcG9u
+c2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyTm9kZXNSZXF1ZXN0Ij4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVy
+IiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVzVG9SZWdpc3RlciIgdHlwZT0idWE6TGlz
+dE9mTm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZ2lzdGVy
+Tm9kZXNSZXF1ZXN0IiB0eXBlPSJ0bnM6UmVnaXN0ZXJOb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9IlJlZ2lzdGVyTm9kZXNSZXNwb25zZSI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpS
+ZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJlZ2lzdGVyZWROb2RlSWRzIiB0eXBlPSJ1YTpMaXN0T2ZOb2RlSWQi
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0ZXJOb2Rlc1Jlc3Bv
+bnNlIiB0eXBlPSJ0bnM6UmVnaXN0ZXJOb2Rlc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJVbnJlZ2lzdGVyTm9kZXNSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhl
+YWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik5vZGVzVG9VbnJlZ2lzdGVyIiB0eXBlPSJ1YTpMaXN0T2ZOb2RlSWQiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVW5yZWdpc3Rlck5vZGVzUmVxdWVzdCIgdHlw
+ZT0idG5zOlVucmVnaXN0ZXJOb2Rlc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9IlVucmVnaXN0ZXJOb2Rlc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVucmVnaXN0ZXJOb2Rlc1Jl
+c3BvbnNlIiB0eXBlPSJ0bnM6VW5yZWdpc3Rlck5vZGVzUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQ291bnRlciIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIC8+DQoNCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTnVtZXJpY1JhbmdlIiB0eXBlPSJ4czpzdHJpbmciIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkVuZHBvaW50Q29uZmlndXJhdGlvbiI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iT3BlcmF0aW9uVGltZW91dCIgdHlwZT0ieHM6aW50
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VCaW5hcnlFbmNv
+ZGluZyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iTWF4U3RyaW5nTGVuZ3RoIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heEJ5dGVTdHJpbmdMZW5ndGgiIHR5cGU9InhzOmlu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4QXJyYXlMZW5n
+dGgiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTWF4TWVzc2FnZVNpemUiIHR5cGU9InhzOmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTWF4QnVmZmVyU2l6ZSIgdHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDaGFubmVsTGlmZXRpbWUiIHR5cGU9Inhz
+OmludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlU
+b2tlbkxpZmV0aW1lIiB0eXBlPSJ4czppbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRwb2lu
+dENvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpFbmRwb2ludENvbmZpZ3VyYXRpb24iIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkVuZHBvaW50Q29uZmlndXJhdGlvbiI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRDb25maWd1cmF0
+aW9uIiB0eXBlPSJ0bnM6RW5kcG9pbnRDb25maWd1cmF0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9j
+Y3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZFbmRwb2ludENv
+bmZpZ3VyYXRpb24iIHR5cGU9InRuczpMaXN0T2ZFbmRwb2ludENvbmZpZ3VyYXRpb24iIG5pbGxh
+YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF1ZXJ5
+RGF0YURlc2NyaXB0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJSZWxhdGl2ZVBhdGgiIHR5cGU9InRuczpSZWxhdGl2ZVBhdGgiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIg
+dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJRdWVyeURhdGFEZXNjcmlwdGlvbiIgdHlwZT0idG5zOlF1ZXJ5RGF0
+YURlc2NyaXB0aW9uIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdWVyeURh
+dGFEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUXVlcnlEYXRhRGVzY3JpcHRpb24iIHR5cGU9InRuczpRdWVyeURhdGFEZXNjcmlwdGlvbiIg
+bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTGlzdE9mUXVlcnlEYXRhRGVzY3JpcHRpb24iIHR5cGU9InRuczpMaXN0T2ZRdWVyeURhdGFE
+ZXNjcmlwdGlvbiIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTm9kZVR5cGVEZXNjcmlwdGlvbiI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iVHlwZURlZmluaXRpb25Ob2RlIiB0eXBlPSJ1YTpFeHBhbmRl
+ZE5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkluY2x1ZGVTdWJUeXBlcyIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YVRvUmV0dXJuIiB0eXBlPSJ0bnM6TGlz
+dE9mUXVlcnlEYXRhRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iTm9kZVR5cGVEZXNjcmlwdGlvbiIgdHlwZT0idG5zOk5vZGVUeXBlRGVzY3JpcHRpb24i
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk5vZGVUeXBlRGVzY3JpcHRpb24i
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVUeXBlRGVz
+Y3JpcHRpb24iIHR5cGU9InRuczpOb2RlVHlwZURlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG1h
+eE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZOb2RlVHlw
+ZURlc2NyaXB0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mTm9kZVR5cGVEZXNjcmlwdGlvbiIgbmlsbGFi
+bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iRmlsdGVy
+T3BlcmF0b3IiPg0KICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJFcXVhbHNfMCIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iSXNOdWxsXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdyZWF0
+ZXJUaGFuXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikxlc3NUaGFuXzMiIC8+
+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkdyZWF0ZXJUaGFuT3JFcXVhbF80IiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMZXNzVGhhbk9yRXF1YWxfNSIgLz4NCiAgICAg
+IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTGlrZV82IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9u
+IHZhbHVlPSJOb3RfNyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQmV0d2Vlbl84
+IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbkxpc3RfOSIgLz4NCiAgICAgIDx4
+czplbnVtZXJhdGlvbiB2YWx1ZT0iQW5kXzEwIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh
+bHVlPSJPcl8xMSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQ2FzdF8xMiIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW5WaWV3XzEzIiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJPZlR5cGVfMTQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFs
+dWU9IlJlbGF0ZWRUb18xNSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQml0d2lz
+ZUFuZF8xNiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQml0d2lzZU9yXzE3IiAv
+Pg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iRmlsdGVyT3BlcmF0b3IiIHR5cGU9InRuczpGaWx0ZXJPcGVyYXRvciIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUXVlcnlEYXRhU2V0Ij4NCiAgICA8eHM6c2VxdWVuY2U+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2RlSWQiIHR5cGU9InVhOkV4cGFuZGVkTm9kZUlk
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVHlwZURlZmluaXRpb25Ob2RlIiB0eXBlPSJ1YTpFeHBhbmRlZE5vZGVJZCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlZhbHVlcyIg
+dHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJRdWVyeURhdGFTZXQiIHR5cGU9InRuczpRdWVyeURhdGFTZXQiIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF1ZXJ5RGF0YVNldCI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlEYXRhU2V0IiB0eXBlPSJ0bnM6UXVlcnlEYXRh
+U2V0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMaXN0T2ZRdWVyeURhdGFTZXQiIHR5cGU9InRuczpMaXN0T2ZRdWVyeURhdGFTZXQi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+Ik5vZGVSZWZlcmVuY2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ik5vZGVJZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVmZXJlbmNlVHlwZUlkIiB0eXBlPSJ1YTpO
+b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJJc0ZvcndhcmQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJlZmVyZW5jZWROb2RlSWRzIiB0eXBlPSJ1YTpMaXN0T2ZO
+b2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZVJlZmVyZW5j
+ZSIgdHlwZT0idG5zOk5vZGVSZWZlcmVuY2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+Ikxpc3RPZk5vZGVSZWZlcmVuY2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9Ik5vZGVSZWZlcmVuY2UiIHR5cGU9InRuczpOb2RlUmVmZXJlbmNlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZOb2RlUmVmZXJlbmNlIiB0eXBlPSJ0bnM6TGlzdE9mTm9kZVJlZmVyZW5jZSIgbmlsbGFibGU9
+InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ29udGVudEZp
+bHRlckVsZW1lbnQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkZpbHRlck9wZXJhdG9yIiB0eXBlPSJ0bnM6RmlsdGVyT3BlcmF0b3IiIG1pbk9jY3Vycz0iMCIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbHRlck9wZXJhbmRzIiB0eXBlPSJ1YTpMaXN0
+T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+Q29udGVudEZpbHRlckVsZW1lbnQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyRWxlbWVudCIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mQ29udGVudEZpbHRlckVsZW1lbnQiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRlbnRGaWx0ZXJF
+bGVtZW50IiB0eXBlPSJ0bnM6Q29udGVudEZpbHRlckVsZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4
+T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkNvbnRlbnRG
+aWx0ZXJFbGVtZW50IiB0eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlckVsZW1lbnQiIG5pbGxh
+YmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnRl
+bnRGaWx0ZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVs
+ZW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlckVsZW1lbnQiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGVudEZpbHRlciIgdHlwZT0idG5zOkNvbnRl
+bnRGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNvbnRlbnRGaWx0
+ZXIiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRlbnRG
+aWx0ZXIiIHR5cGU9InRuczpDb250ZW50RmlsdGVyIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0i
+dW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZDb250ZW50RmlsdGVyIiB0
+eXBlPSJ0bnM6TGlzdE9mQ29udGVudEZpbHRlciIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu
+dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRmlsdGVyT3BlcmFuZCI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9IkZpbHRlck9wZXJhbmQiIHR5cGU9InRuczpGaWx0ZXJPcGVyYW5kIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFbGVtZW50T3BlcmFuZCI+DQogICAgPHhzOmNvbXBs
+ZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpG
+aWx0ZXJPcGVyYW5kIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkluZGV4IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpj
+b21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+RWxlbWVudE9wZXJhbmQiIHR5cGU9InRuczpFbGVtZW50T3BlcmFuZCIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iTGl0ZXJhbE9wZXJhbmQiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBt
+aXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6RmlsdGVyT3BlcmFu
+ZCI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJW
+YWx1ZSIgdHlwZT0idWE6VmFyaWFudCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICA8L3hzOnNl
+cXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGl0ZXJhbE9wZXJhbmQi
+IHR5cGU9InRuczpMaXRlcmFsT3BlcmFuZCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+QXR0cmlidXRlT3BlcmFuZCI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+
+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpGaWx0ZXJPcGVyYW5kIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIgdHlwZT0i
+dWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkFsaWFzIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnJvd3NlUGF0aCIg
+dHlwZT0idG5zOlJlbGF0aXZlUGF0aCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0ieHM6dW5zaWdu
+ZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRl
+eFJhbmdlIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hz
+OmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJBdHRyaWJ1dGVPcGVyYW5kIiB0eXBlPSJ0bnM6QXR0cmlidXRlT3BlcmFuZCIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iU2ltcGxlQXR0cmlidXRlT3BlcmFuZCI+DQogICAgPHhzOmNv
+bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu
+czpGaWx0ZXJPcGVyYW5kIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlR5cGVEZWZpbml0aW9uSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93
+c2VQYXRoIiB0eXBlPSJ1YTpMaXN0T2ZRdWFsaWZpZWROYW1lIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkF0dHJpYnV0ZUlkIiB0
+eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z
+aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIHR5cGU9InRuczpTaW1wbGVB
+dHRyaWJ1dGVPcGVyYW5kIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTaW1w
+bGVBdHRyaWJ1dGVPcGVyYW5kIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJTaW1wbGVBdHRyaWJ1dGVPcGVyYW5kIiB0eXBlPSJ0bnM6U2ltcGxlQXR0cmlidXRl
+T3BlcmFuZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mU2ltcGxlQXR0cmlidXRlT3BlcmFuZCIgdHlwZT0idG5zOkxpc3RP
+ZlNpbXBsZUF0dHJpYnV0ZU9wZXJhbmQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0Ij4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBl
+PSJ1YTpTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJPcGVyYW5kU3RhdHVzQ29kZXMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPcGVyYW5k
+RGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCIg
+dHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJFbGVtZW50UmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGVudEZpbHRlckVsZW1lbnRSZXN1
+bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyRWxlbWVudFJlc3VsdCIgbWluT2NjdXJzPSIwIiBt
+YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mQ29udGVu
+dEZpbHRlckVsZW1lbnRSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50RmlsdGVyRWxlbWVu
+dFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iQ29udGVudEZpbHRlclJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iRWxlbWVudFJlc3VsdHMiIHR5cGU9InRuczpMaXN0T2ZDb250ZW50
+RmlsdGVyRWxlbWVudFJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkVsZW1lbnREaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxp
+c3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+IkNvbnRlbnRGaWx0ZXJSZXN1bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyUmVzdWx0IiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQYXJzaW5nUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ1YTpTdGF0dXND
+b2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhU3RhdHVz
+Q29kZXMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEYXRhRGlhZ25vc3RpY0luZm9zIiB0
+eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJQYXJzaW5nUmVzdWx0IiB0eXBlPSJ0bnM6UGFyc2luZ1Jlc3VsdCIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mUGFyc2luZ1Jlc3VsdCI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyc2luZ1Jlc3VsdCIgdHlwZT0idG5z
+OlBhcnNpbmdSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlBhcnNpbmdSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZQ
+YXJzaW5nUmVzdWx0IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJRdWVyeUZpcnN0UmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFk
+ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJWaWV3IiB0eXBlPSJ0bnM6Vmlld0Rlc2NyaXB0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZVR5cGVzIiB0eXBlPSJ0
+bnM6TGlzdE9mTm9kZVR5cGVEZXNjcmlwdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkZpbHRlciIgdHlwZT0idG5zOkNvbnRlbnRG
+aWx0ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJNYXhEYXRhU2V0c1RvUmV0dXJuIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4UmVmZXJlbmNlc1RvUmV0dXJu
+IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlF1ZXJ5Rmlyc3RS
+ZXF1ZXN0IiB0eXBlPSJ0bnM6UXVlcnlGaXJzdFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9IlF1ZXJ5Rmlyc3RSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRl
+ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlF1ZXJ5RGF0YVNldHMiIHR5cGU9InRuczpMaXN0T2ZRdWVyeURhdGFTZXQiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDb250aW51
+YXRpb25Qb2ludCIgdHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUGFyc2luZ1Jlc3VsdHMiIHR5cGU9
+InRuczpMaXN0T2ZQYXJzaW5nUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0
+T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IkZpbHRlclJlc3VsdCIgdHlwZT0idG5zOkNvbnRlbnRGaWx0ZXJS
+ZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlGaXJzdFJl
+c3BvbnNlIiB0eXBlPSJ0bnM6UXVlcnlGaXJzdFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJRdWVyeU5leHRSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlJlbGVhc2VDb250aW51YXRpb25Qb2ludCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9Inhz
+OmJhc2U2NEJpbmFyeSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJRdWVy
+eU5leHRSZXF1ZXN0IiB0eXBlPSJ0bnM6UXVlcnlOZXh0UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iUXVlcnlOZXh0UmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VI
+ZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJRdWVyeURhdGFTZXRzIiB0eXBlPSJ0bnM6TGlzdE9mUXVlcnlEYXRhU2V0IiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2
+aXNlZENvbnRpbnVhdGlvblBvaW50IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUXVlcnlOZXh0UmVzcG9uc2UiIHR5cGU9InRuczpR
+dWVyeU5leHRSZXNwb25zZSIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iVGltZXN0YW1w
+c1RvUmV0dXJuIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAgICAg
+IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU291cmNlXzAiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp
+b24gdmFsdWU9IlNlcnZlcl8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJCb3Ro
+XzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ik5laXRoZXJfMyIgLz4NCiAgICAg
+IDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSW52YWxpZF80IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rp
+b24+DQogIDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iVGltZXN0YW1wc1Rv
+UmV0dXJuIiB0eXBlPSJ0bnM6VGltZXN0YW1wc1RvUmV0dXJuIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJSZWFkVmFsdWVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdHRyaWJ1dGVJZCIgdHlwZT0i
+eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRhdGFFbmNvZGluZyIgdHlwZT0idWE6UXVh
+bGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkVmFs
+dWVJZCIgdHlwZT0idG5zOlJlYWRWYWx1ZUlkIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJMaXN0T2ZSZWFkVmFsdWVJZCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUmVhZFZhbHVlSWQiIHR5cGU9InRuczpSZWFkVmFsdWVJZCIgbWluT2NjdXJzPSIw
+IiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mUmVh
+ZFZhbHVlSWQiIHR5cGU9InRuczpMaXN0T2ZSZWFkVmFsdWVJZCIgbmlsbGFibGU9InRydWUiPjwv
+eHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZFJlcXVlc3QiPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5
+cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4QWdlIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpbWVzdGFtcHNUb1JldHVybiIgdHlw
+ZT0idG5zOlRpbWVzdGFtcHNUb1JldHVybiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTm9kZXNUb1JlYWQiIHR5cGU9InRuczpMaXN0T2ZSZWFkVmFsdWVJZCIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hz
+OmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkUmVxdWVzdCIgdHlwZT0idG5z
+OlJlYWRSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkUmVzcG9uc2Ui
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVh
+ZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZE
+YXRhVmFsdWUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZv
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRSZXNwb25zZSIgdHlw
+ZT0idG5zOlJlYWRSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9y
+eVJlYWRWYWx1ZUlkIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJOb2RlSWQiIHR5cGU9InVhOk5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkluZGV4UmFuZ2UiIHR5cGU9InhzOnN0cmluZyIg
+bWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkRhdGFFbmNvZGluZyIgdHlwZT0idWE6UXVhbGlmaWVkTmFtZSIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNvbnRpbnVhdGlvblBvaW50
+IiB0eXBlPSJ4czpiYXNlNjRCaW5hcnkiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQg
+bmFtZT0iSGlzdG9yeVJlYWRWYWx1ZUlkIiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRWYWx1ZUlkIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZIaXN0b3J5UmVhZFZhbHVlSWQiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFkVmFs
+dWVJZCIgdHlwZT0idG5zOkhpc3RvcnlSZWFkVmFsdWVJZCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1
+cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAg
+PC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSGlzdG9yeVJlYWRW
+YWx1ZUlkIiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeVJlYWRWYWx1ZUlkIiBuaWxsYWJsZT0idHJ1
+ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5UmVhZFJl
+c3VsdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVz
+Q29kZSIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQ29udGludWF0aW9uUG9pbnQiIHR5cGU9InhzOmJhc2U2NEJpbmFyeSIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhp
+c3RvcnlEYXRhIiB0eXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAg
+PHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRSZXN1bHQiIHR5cGU9InRuczpIaXN0b3J5UmVh
+ZFJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mSGlzdG9yeVJlYWRS
+ZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3Rv
+cnlSZWFkUmVzdWx0IiB0eXBlPSJ0bnM6SGlzdG9yeVJlYWRSZXN1bHQiIG1pbk9jY3Vycz0iMCIg
+bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkhpc3Rv
+cnlSZWFkUmVzdWx0IiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeVJlYWRSZXN1bHQiIG5pbGxhYmxl
+PSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlS
+ZWFkRGV0YWlscyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFkRGV0YWlscyIg
+dHlwZT0idG5zOkhpc3RvcnlSZWFkRGV0YWlscyIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iUmVhZEV2ZW50RGV0YWlscyI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxz
+ZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0b3J5UmVhZERldGFpbHMiPg0K
+ICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTnVtVmFs
+dWVzUGVyTm9kZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kVGltZSIgdHlwZT0i
+eHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJGaWx0ZXIiIHR5cGU9InRuczpFdmVudEZpbHRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0K
+ICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IlJlYWRFdmVudERldGFpbHMiIHR5cGU9InRuczpSZWFkRXZlbnREZXRhaWxzIiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZWFkUmF3TW9kaWZpZWREZXRhaWxzIj4NCiAg
+ICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24g
+YmFzZT0idG5zOkhpc3RvcnlSZWFkRGV0YWlscyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJc1JlYWRNb2RpZmllZCIgdHlwZT0ieHM6Ym9vbGVh
+biIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGlt
+ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJFbmRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik51bVZhbHVlc1Blck5vZGUiIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UmV0dXJuQm91bmRzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAg
+IDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhD
+b250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFkUmF3
+TW9kaWZpZWREZXRhaWxzIiB0eXBlPSJ0bnM6UmVhZFJhd01vZGlmaWVkRGV0YWlscyIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVhZFByb2Nlc3NlZERldGFpbHMiPg0KICAgIDx4czpj
+b21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0
+bnM6SGlzdG9yeVJlYWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRUaW1lIiB0eXBlPSJ4czpk
+YXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBy
+b2Nlc3NpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdncmVnYXRlVHlwZSIgdHlwZT0idWE6TGlzdE9mTm9k
+ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpBZ2dyZWdhdGVDb25m
+aWd1cmF0aW9uIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hz
+OnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVu
+dD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZFByb2Nlc3Nl
+ZERldGFpbHMiIHR5cGU9InRuczpSZWFkUHJvY2Vzc2VkRGV0YWlscyIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iUmVhZEF0VGltZURldGFpbHMiPg0KICAgIDx4czpjb21wbGV4Q29udGVu
+dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVJl
+YWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlJlcVRpbWVzIiB0eXBlPSJ1YTpMaXN0T2ZEYXRlVGltZSIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVc2VTaW1wbGVC
+b3VuZHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpz
+ZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlYWRBdFRpbWVEZXRh
+aWxzIiB0eXBlPSJ0bnM6UmVhZEF0VGltZURldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9IlJlYWRBbm5vdGF0aW9uRGF0YURldGFpbHMiPg0KICAgIDx4czpjb21wbGV4Q29udGVu
+dCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVJl
+YWREZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlJlcVRpbWVzIiB0eXBlPSJ1YTpMaXN0T2ZEYXRlVGltZSIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0
+ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IlJlYWRBbm5vdGF0aW9uRGF0YURldGFpbHMiIHR5cGU9InRuczpS
+ZWFkQW5ub3RhdGlvbkRhdGFEZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJI
+aXN0b3J5RGF0YSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+RGF0YVZhbHVlcyIgdHlwZT0idWE6TGlzdE9mRGF0YVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlEYXRhIiB0eXBlPSJ0bnM6SGlzdG9yeURhdGEiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vZGlmaWNhdGlvbkluZm8iPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmaWNhdGlvblRpbWUiIHR5cGU9
+InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJV
+cGRhdGVUeXBlIiB0eXBlPSJ0bnM6SGlzdG9yeVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZpY2F0aW9uSW5mbyIgdHlwZT0i
+dG5zOk1vZGlmaWNhdGlvbkluZm8iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RP
+Zk1vZGlmaWNhdGlvbkluZm8iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik1vZGlmaWNhdGlvbkluZm8iIHR5cGU9InRuczpNb2RpZmljYXRpb25JbmZvIiBtaW5P
+Y2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJM
+aXN0T2ZNb2RpZmljYXRpb25JbmZvIiB0eXBlPSJ0bnM6TGlzdE9mTW9kaWZpY2F0aW9uSW5mbyIg
+bmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+SGlzdG9yeU1vZGlmaWVkRGF0YSI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxz
+ZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpIaXN0b3J5RGF0YSI+DQogICAgICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RpZmljYXRpb25J
+bmZvcyIgdHlwZT0idG5zOkxpc3RPZk1vZGlmaWNhdGlvbkluZm8iIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVu
+c2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5TW9kaWZpZWREYXRhIiB0eXBlPSJ0bnM6SGlzdG9yeU1v
+ZGlmaWVkRGF0YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeUV2ZW50Ij4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudHMiIHR5cGU9
+InRuczpMaXN0T2ZIaXN0b3J5RXZlbnRGaWVsZExpc3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhz
+OmVsZW1lbnQgbmFtZT0iSGlzdG9yeUV2ZW50IiB0eXBlPSJ0bnM6SGlzdG9yeUV2ZW50IiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5UmVhZFJlcXVlc3QiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRu
+czpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWREZXRhaWxzIiB0eXBlPSJ1YTpFeHRlbnNpb25P
+YmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5cGU9InRuczpUaW1lc3RhbXBzVG9SZXR1cm4i
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbGVhc2VDb250aW51
+YXRpb25Qb2ludHMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik5vZGVzVG9SZWFkIiB0eXBlPSJ0bnM6TGlzdE9mSGlzdG9yeVJlYWRW
+YWx1ZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFk
+UmVxdWVzdCIgdHlwZT0idG5zOkhpc3RvcnlSZWFkUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iSGlzdG9yeVJlYWRSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhl
+YWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5UmVhZFJlc3VsdCIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdu
+b3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVJlYWRSZXNwb25zZSIgdHlwZT0idG5zOkhp
+c3RvcnlSZWFkUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IldyaXRlVmFs
+dWUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5vZGVJZCIg
+dHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iQXR0cmlidXRlSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJbmRleFJhbmdlIiB0eXBlPSJ4
+czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0idWE6RGF0YVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IldyaXRlVmFsdWUiIHR5cGU9InRuczpXcml0ZVZhbHVlIiAvPg0K
+DQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZXcml0ZVZhbHVlIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJXcml0ZVZhbHVlIiB0eXBlPSJ0bnM6V3Jp
+dGVWYWx1ZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTGlzdE9mV3JpdGVWYWx1ZSIgdHlwZT0idG5zOkxpc3RPZldyaXRlVmFsdWUi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IldyaXRlUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb2Rlc1RvV3JpdGUi
+IHR5cGU9InRuczpMaXN0T2ZXcml0ZVZhbHVlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IldyaXRlUmVxdWVzdCIgdHlwZT0idG5zOldyaXRlUmVxdWVzdCIgLz4NCg0KICA8
+eHM6Y29tcGxleFR5cGUgbmFtZT0iV3JpdGVSZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25z
+ZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGlj
+SW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IldyaXRlUmVzcG9uc2UiIHR5cGU9InRuczpXcml0ZVJlc3BvbnNl
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJIaXN0b3J5VXBkYXRlRGV0YWlscyI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm9kZUlkIiB0eXBlPSJ1
+YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeVVw
+ZGF0ZURldGFpbHMiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlRGV0YWlscyIgLz4NCg0KICA8eHM6
+c2ltcGxlVHlwZSAgbmFtZT0iSGlzdG9yeVVwZGF0ZVR5cGUiPg0KICAgIDx4czpyZXN0cmljdGlv
+biBiYXNlPSJ4czpzdHJpbmciPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJJbnNlcnRf
+MSIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUmVwbGFjZV8yIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJVcGRhdGVfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlv
+biB2YWx1ZT0iRGVsZXRlXzQiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1w
+bGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlVHlwZSIgdHlwZT0idG5z
+Okhpc3RvcnlVcGRhdGVUeXBlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJQZXJmb3Jt
+VXBkYXRlVHlwZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAg
+ICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ikluc2VydF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJSZXBsYWNlXzIiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlVw
+ZGF0ZV8zIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZW1vdmVfNCIgLz4NCiAg
+ICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IlBlcmZvcm1VcGRhdGVUeXBlIiB0eXBlPSJ0bnM6UGVyZm9ybVVwZGF0ZVR5cGUiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZURhdGFEZXRhaWxzIj4NCiAgICA8eHM6Y29t
+cGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5z
+Okhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlBlcmZvcm1JbnNlcnRSZXBsYWNlIiB0eXBlPSJ0bnM6UGVyZm9y
+bVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJVcGRhdGVWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZkRhdGFWYWx1ZSIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0
+ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9IlVwZGF0ZURhdGFEZXRhaWxzIiB0eXBlPSJ0bnM6VXBkYXRlRGF0
+YURldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZVN0cnVjdHVyZURh
+dGFEZXRhaWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAg
+IDx4czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICAgICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlBlcmZvcm1JbnNlcnRS
+ZXBsYWNlIiB0eXBlPSJ0bnM6UGVyZm9ybVVwZGF0ZVR5cGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJVcGRhdGVWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZkRh
+dGFWYWx1ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpz
+ZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlVwZGF0ZVN0cnVjdHVy
+ZURhdGFEZXRhaWxzIiB0eXBlPSJ0bnM6VXBkYXRlU3RydWN0dXJlRGF0YURldGFpbHMiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlVwZGF0ZUV2ZW50RGV0YWlscyI+DQogICAgPHhzOmNv
+bXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRu
+czpIaXN0b3J5VXBkYXRlRGV0YWlscyI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJQZXJmb3JtSW5zZXJ0UmVwbGFjZSIgdHlwZT0idG5zOlBlcmZv
+cm1VcGRhdGVUeXBlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRmlsdGVyIiB0eXBlPSJ0bnM6RXZlbnRGaWx0ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnREYXRhIiB0eXBlPSJ0
+bnM6TGlzdE9mSGlzdG9yeUV2ZW50RmllbGRMaXN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQog
+ICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iVXBkYXRlRXZlbnREZXRhaWxzIiB0eXBlPSJ0bnM6VXBkYXRlRXZlbnREZXRhaWxz
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVSYXdNb2RpZmllZERldGFpbHMi
+Pg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVu
+c2lvbiBiYXNlPSJ0bnM6SGlzdG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSXNEZWxldGVNb2RpZmllZCIgdHlwZT0i
+eHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJFbmRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQog
+ICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1l
+bnQgbmFtZT0iRGVsZXRlUmF3TW9kaWZpZWREZXRhaWxzIiB0eXBlPSJ0bnM6RGVsZXRlUmF3TW9k
+aWZpZWREZXRhaWxzIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVBdFRpbWVE
+ZXRhaWxzIj4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4NCiAgICAgIDx4
+czpleHRlbnNpb24gYmFzZT0idG5zOkhpc3RvcnlVcGRhdGVEZXRhaWxzIj4NCiAgICAgICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcVRpbWVzIiB0eXBlPSJ1
+YTpMaXN0T2ZEYXRlVGltZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+ICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxl
+eENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkRlbGV0
+ZUF0VGltZURldGFpbHMiIHR5cGU9InRuczpEZWxldGVBdFRpbWVEZXRhaWxzIiAvPg0KDQogIDx4
+czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVFdmVudERldGFpbHMiPg0KICAgIDx4czpjb21wbGV4
+Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6SGlz
+dG9yeVVwZGF0ZURldGFpbHMiPg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iRXZlbnRJZHMiIHR5cGU9InVhOkxpc3RPZkJ5dGVTdHJpbmciIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAg
+ICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVFdmVudERldGFpbHMiIHR5cGU9InRu
+czpEZWxldGVFdmVudERldGFpbHMiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3Rv
+cnlVcGRhdGVSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Ik9wZXJhdGlvblJlc3VsdHMiIHR5cGU9InVhOkxpc3RPZlN0
+YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJbmZv
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVSZXN1
+bHQiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlUmVzdWx0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJMaXN0T2ZIaXN0b3J5VXBkYXRlUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlUmVzdWx0IiB0eXBlPSJ0bnM6SGlz
+dG9yeVVwZGF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mSGlzdG9yeVVwZGF0ZVJlc3VsdCIgdHlwZT0idG5z
+Okxpc3RPZkhpc3RvcnlVcGRhdGVSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikhpc3RvcnlVcGRhdGVSZXF1ZXN0Ij4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVhZGVyIiB0eXBl
+PSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVEZXRhaWxzIiB0eXBlPSJ1YTpMaXN0
+T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+SGlzdG9yeVVwZGF0ZVJlcXVlc3QiIHR5cGU9InRuczpIaXN0b3J5VXBkYXRlUmVxdWVzdCIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeVVwZGF0ZVJlc3BvbnNlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlw
+ZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZkhpc3RvcnlV
+cGRhdGVSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0aWNJ
+bmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlVcGRhdGVS
+ZXNwb25zZSIgdHlwZT0idG5zOkhpc3RvcnlVcGRhdGVSZXNwb25zZSIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iQ2FsbE1ldGhvZFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Ik9iamVjdElkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNZXRob2RJ
+ZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5wdXRBcmd1bWVudHMiIHR5cGU9InVhOkxpc3RPZlZhcmlh
+bnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ2FsbE1ldGhvZFJlcXVl
+c3QiIHR5cGU9InRuczpDYWxsTWV0aG9kUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iTGlzdE9mQ2FsbE1ldGhvZFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IkNhbGxNZXRob2RSZXF1ZXN0IiB0eXBlPSJ0bnM6Q2FsbE1ldGhv
+ZFJlcXVlc3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9Ikxpc3RPZkNhbGxNZXRob2RSZXF1ZXN0IiB0eXBlPSJ0bnM6TGlzdE9mQ2Fs
+bE1ldGhvZFJlcXVlc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IkNhbGxNZXRob2RSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IklucHV0QXJndW1lbnRSZXN1
+bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW5wdXRBcmd1bWVudERpYWdub3N0aWNJ
+bmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJPdXRwdXRBcmd1bWVudHMiIHR5
+cGU9InVhOkxpc3RPZlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iQ2FsbE1ldGhvZFJlc3VsdCIgdHlwZT0idG5zOkNhbGxNZXRob2RSZXN1bHQiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkNhbGxNZXRob2RSZXN1bHQiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNhbGxNZXRob2RSZXN1bHQiIHR5cGU9
+InRuczpDYWxsTWV0aG9kUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVk
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZDYWxsTWV0aG9kUmVzdWx0IiB0eXBlPSJ0
+bnM6TGlzdE9mQ2FsbE1ldGhvZFJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ2FsbFJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5j
+ZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1
+ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iTWV0aG9kc1RvQ2FsbCIgdHlwZT0idG5zOkxpc3RPZkNhbGxNZXRob2RSZXF1
+ZXN0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkNhbGxSZXF1ZXN0IiB0
+eXBlPSJ0bnM6Q2FsbFJlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNhbGxS
+ZXNwb25zZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVz
+cG9uc2VIZWFkZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3VsdHMiIHR5cGU9InRu
+czpMaXN0T2ZDYWxsTWV0aG9kUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0
+T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJD
+YWxsUmVzcG9uc2UiIHR5cGU9InRuczpDYWxsUmVzcG9uc2UiIC8+DQoNCiAgPHhzOnNpbXBsZVR5
+cGUgIG5hbWU9Ik1vbml0b3JpbmdNb2RlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6
+c3RyaW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iRGlzYWJsZWRfMCIgLz4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2FtcGxpbmdfMSIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iUmVwb3J0aW5nXzIiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAg
+PC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nTW9kZSIgdHlw
+ZT0idG5zOk1vbml0b3JpbmdNb2RlIiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1lPSJEYXRh
+Q2hhbmdlVHJpZ2dlciI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQog
+ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlN0YXR1c18wIiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJTdGF0dXNWYWx1ZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZh
+bHVlPSJTdGF0dXNWYWx1ZVRpbWVzdGFtcF8yIiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQog
+IDwveHM6c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUNoYW5nZVRyaWdnZXIi
+IHR5cGU9InRuczpEYXRhQ2hhbmdlVHJpZ2dlciIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFt
+ZT0iRGVhZGJhbmRUeXBlIj4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJBYnNvbHV0ZV8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl
+PSJQZXJjZW50XzIiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAgPC94czpzaW1wbGVUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFR5cGUiIHR5cGU9InRuczpEZWFkYmFuZFR5
+cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JpbmdGaWx0ZXIiPg0KICAg
+IDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nRmlsdGVyIiB0eXBlPSJ0bnM6TW9uaXRvcmlu
+Z0ZpbHRlciIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YUNoYW5nZUZpbHRlciI+
+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z
+aW9uIGJhc2U9InRuczpNb25pdG9yaW5nRmlsdGVyIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyaWdnZXIiIHR5cGU9InRuczpEYXRhQ2hhbmdl
+VHJpZ2dlciIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IkRl
+YWRiYW5kVHlwZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEZWFkYmFuZFZhbHVlIiB0eXBlPSJ4czpkb3VibGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5jZT4NCiAgICAgIDwveHM6ZXh0ZW5z
+aW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9IkRhdGFDaGFuZ2VGaWx0ZXIiIHR5cGU9InRuczpEYXRhQ2hhbmdlRmls
+dGVyIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJFdmVudEZpbHRlciI+DQogICAgPHhz
+OmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9
+InRuczpNb25pdG9yaW5nRmlsdGVyIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlNlbGVjdENsYXVzZXMiIHR5cGU9InRuczpMaXN0T2ZTaW1wbGVB
+dHRyaWJ1dGVPcGVyYW5kIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IldoZXJlQ2xhdXNlIiB0eXBlPSJ0bnM6Q29udGVudEZpbHRl
+ciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV2ZW50RmlsdGVyIiB0eXBlPSJ0
+bnM6RXZlbnRGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFnZ3JlZ2F0ZUNv
+bmZpZ3VyYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlVzZVNlcnZlckNhcGFiaWxpdGllc0RlZmF1bHRzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmVhdFVuY2VydGFpbkFzQmFkIiB0
+eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJQZXJjZW50RGF0YUJhZCIgdHlwZT0ieHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQZXJjZW50RGF0YUdvb2QiIHR5cGU9InhzOnVuc2ln
+bmVkQnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVXNlU2xv
+cGVkRXh0cmFwb2xhdGlvbiIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+IkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIHR5cGU9InRuczpBZ2dyZWdhdGVDb25maWd1cmF0aW9u
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJBZ2dyZWdhdGVGaWx0ZXIiPg0KICAgIDx4
+czpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNl
+PSJ0bnM6TW9uaXRvcmluZ0ZpbHRlciI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJTdGFydFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdncmVnYXRlVHlwZSIgdHlw
+ZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlByb2Nlc3NpbmdJbnRlcnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWdncmVnYXRlQ29u
+ZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24iIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hz
+OmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBl
+Pg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdhdGVGaWx0ZXIiIHR5cGU9InRuczpBZ2dyZWdh
+dGVGaWx0ZXIiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JpbmdGaWx0ZXJS
+ZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nRmlsdGVyUmVzdWx0IiB0
+eXBlPSJ0bnM6TW9uaXRvcmluZ0ZpbHRlclJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iRXZlbnRGaWx0ZXJSZXN1bHQiPg0KICAgIDx4czpjb21wbGV4Q29udGVudCBtaXhlZD0i
+ZmFsc2UiPg0KICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6TW9uaXRvcmluZ0ZpbHRlclJl
+c3VsdCI+DQogICAgICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJTZWxlY3RDbGF1c2VSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl
+bGVjdENsYXVzZURpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8i
+IG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iV2hlcmVDbGF1c2VSZXN1bHQiIHR5cGU9InRuczpDb250ZW50RmlsdGVyUmVzdWx0IiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0K
+ICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94czpjb21wbGV4Q29udGVudD4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRGaWx0ZXJSZXN1bHQiIHR5cGU9
+InRuczpFdmVudEZpbHRlclJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQWdn
+cmVnYXRlRmlsdGVyUmVzdWx0Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNl
+Ij4NCiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk1vbml0b3JpbmdGaWx0ZXJSZXN1bHQi
+Pg0KICAgICAgICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2
+aXNlZFN0YXJ0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkUHJvY2Vzc2luZ0ludGVydmFsIiB0eXBlPSJ4
+czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJS
+ZXZpc2VkQWdncmVnYXRlQ29uZmlndXJhdGlvbiIgdHlwZT0idG5zOkFnZ3JlZ2F0ZUNvbmZpZ3Vy
+YXRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICAgIDwveHM6c2Vx
+dWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBZ2dyZWdhdGVGaWx0ZXJS
+ZXN1bHQiIHR5cGU9InRuczpBZ2dyZWdhdGVGaWx0ZXJSZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBs
+ZXhUeXBlIG5hbWU9Ik1vbml0b3JpbmdQYXJhbWV0ZXJzIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRIYW5kbGUiIHR5cGU9InhzOnVuc2lnbmVkSW50
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVy
+dmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkZpbHRlciIgdHlwZT0idWE6RXh0ZW5zaW9uT2JqZWN0IiBtaW5PY2N1cnM9IjAiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUXVldWVTaXplIiB0eXBl
+PSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRGlzY2FyZE9sZGVzdCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+Ik1vbml0b3JpbmdQYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ1BhcmFtZXRlcnMiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXF1ZXN0Ij4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJJdGVtVG9Nb25pdG9y
+IiB0eXBlPSJ0bnM6UmVhZFZhbHVlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yaW5nTW9kZSIgdHlwZT0idG5zOk1vbml0
+b3JpbmdNb2RlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1
+ZXN0ZWRQYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ1BhcmFtZXRlcnMiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3Qi
+IHR5cGU9InRuczpNb25pdG9yZWRJdGVtQ3JlYXRlUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXF1
+ZXN0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlcXVlc3QiIG1pbk9jY3Vycz0iMCIg
+bWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0
+b3JlZEl0ZW1DcmVhdGVSZXF1ZXN0IiB0eXBlPSJ0bnM6TGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0
+ZVJlcXVlc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhU
+eXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1J
+ZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlJldmlzZWRTYW1wbGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRRdWV1ZVNpemUiIHR5
+cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJGaWx0ZXJSZXN1bHQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0IiB0eXBl
+PSJ0bnM6TW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUg
+bmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgdHlw
+ZT0idG5zOk1vbml0b3JlZEl0ZW1DcmVhdGVSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJz
+PSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0ZW1D
+cmVhdGVSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtQ3JlYXRlUmVzdWx0IiBu
+aWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJD
+cmVhdGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+U3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5cGU9InRuczpUaW1l
+c3RhbXBzVG9SZXR1cm4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+Ikl0ZW1zVG9DcmVhdGUiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtQ3JlYXRlUmVxdWVz
+dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0K
+ICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVNb25pdG9yZWRJ
+dGVtc1JlcXVlc3QiIHR5cGU9InRuczpDcmVhdGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNyZWF0ZU1vbml0b3JlZEl0ZW1zUmVzcG9uc2UiPg0K
+ICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVy
+IiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9mTW9u
+aXRvcmVkSXRlbUNyZWF0ZVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9m
+RGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94
+czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ3Jl
+YXRlTW9uaXRvcmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOkNyZWF0ZU1vbml0b3JlZEl0ZW1z
+UmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1Nb2Rp
+ZnlSZXF1ZXN0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJN
+b25pdG9yZWRJdGVtSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRQYXJhbWV0ZXJzIiB0eXBlPSJ0bnM6TW9u
+aXRvcmluZ1BhcmFtZXRlcnMiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIHR5cGU9InRuczpNb25pdG9yZWRJdGVtTW9kaWZ5
+UmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRl
+bU1vZGlmeVJlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ik1vbml0b3JlZEl0ZW1Nb2RpZnlSZXF1ZXN0IiB0eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbU1v
+ZGlmeVJlcXVlc3QiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4
+czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0ZW1Nb2RpZnlSZXF1ZXN0IiB0eXBlPSJ0
+bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlcXVlc3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hz
+OmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1Nb2RpZnlS
+ZXN1bHQiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1
+c0NvZGUiIHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlJldmlzZWRTYW1wbGluZ0ludGVydmFsIiB0eXBlPSJ4czpkb3VibGUiIG1p
+bk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJldmlzZWRRdWV1ZVNpemUi
+IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJGaWx0ZXJSZXN1bHQiIHR5cGU9InVhOkV4dGVuc2lvbk9iamVjdCIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtTW9kaWZ5UmVzdWx0IiB0
+eXBlPSJ0bnM6TW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iTGlzdE9mTW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCI+DQogICAgPHhzOnNlcXVl
+bmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIg
+dHlwZT0idG5zOk1vbml0b3JlZEl0ZW1Nb2RpZnlSZXN1bHQiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj
+dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vbml0b3JlZEl0
+ZW1Nb2RpZnlSZXN1bHQiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtTW9kaWZ5UmVzdWx0
+IiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJNb2RpZnlNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUaW1lc3RhbXBzVG9SZXR1cm4iIHR5cGU9InRuczpU
+aW1lc3RhbXBzVG9SZXR1cm4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9Ikl0ZW1zVG9Nb2RpZnkiIHR5cGU9InRuczpMaXN0T2ZNb25pdG9yZWRJdGVtTW9kaWZ5UmVx
+dWVzdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RpZnlNb25pdG9y
+ZWRJdGVtc1JlcXVlc3QiIHR5cGU9InRuczpNb2RpZnlNb25pdG9yZWRJdGVtc1JlcXVlc3QiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vZGlmeU1vbml0b3JlZEl0ZW1zUmVzcG9uc2Ui
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVh
+ZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ0bnM6TGlzdE9m
+TW9uaXRvcmVkSXRlbU1vZGlmeVJlc3VsdCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlz
+dE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+TW9kaWZ5TW9uaXRvcmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOk1vZGlmeU1vbml0b3JlZEl0
+ZW1zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldE1vbml0b3JpbmdN
+b2RlUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIg
+dHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ik1vbml0b3JpbmdNb2RlIiB0eXBlPSJ0bnM6TW9uaXRvcmluZ01vZGUiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1JZHMiIHR5cGU9
+InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8
+L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJT
+ZXRNb25pdG9yaW5nTW9kZVJlcXVlc3QiIHR5cGU9InRuczpTZXRNb25pdG9yaW5nTW9kZVJlcXVl
+c3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldE1vbml0b3JpbmdNb2RlUmVzcG9u
+c2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNl
+SGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9
+InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0
+T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGlj
+SW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNl
+Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXRNb25pdG9yaW5n
+TW9kZVJlc3BvbnNlIiB0eXBlPSJ0bnM6U2V0TW9uaXRvcmluZ01vZGVSZXNwb25zZSIgLz4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2V0VHJpZ2dlcmluZ1JlcXVlc3QiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRu
+czpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJUcmlnZ2VyaW5nSXRlbUlk
+IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iTGlua3NUb0FkZCIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGlua3NUb1JlbW92
+ZSIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IlNldFRyaWdnZXJpbmdSZXF1ZXN0IiB0eXBlPSJ0bnM6U2V0VHJpZ2dlcmluZ1JlcXVl
+c3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldFRyaWdnZXJpbmdSZXNwb25zZSI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFk
+ZXIiIHR5cGU9InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkFkZFJlc3VsdHMiIHR5cGU9InVhOkxpc3RP
+ZlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJBZGREaWFnbm9zdGljSW5mb3MiIHR5cGU9InVhOkxpc3RPZkRpYWdub3N0
+aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iUmVtb3ZlUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlbW92
+ZURpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2V0VHJpZ2dlcmluZ1Jlc3BvbnNlIiB0eXBl
+PSJ0bnM6U2V0VHJpZ2dlcmluZ1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJEZWxldGVNb25pdG9yZWRJdGVtc1JlcXVlc3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9yZWRJdGVtSWRzIiB0eXBlPSJ1YTpMaXN0
+T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1
+ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlTW9u
+aXRvcmVkSXRlbXNSZXF1ZXN0IiB0eXBlPSJ0bnM6RGVsZXRlTW9uaXRvcmVkSXRlbXNSZXF1ZXN0
+IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJEZWxldGVNb25pdG9yZWRJdGVtc1Jlc3Bv
+bnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25z
+ZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlz
+dE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3Rp
+Y0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRGVsZXRlTW9uaXRv
+cmVkSXRlbXNSZXNwb25zZSIgdHlwZT0idG5zOkRlbGV0ZU1vbml0b3JlZEl0ZW1zUmVzcG9uc2Ui
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3Qi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RIZWFk
+ZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVl
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkUHVibGlzaGluZ0ludGVydmFs
+IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlJlcXVlc3RlZExpZmV0aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0ZWRNYXhLZWVwQWxpdmVD
+b3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9Ik1heE5vdGlmaWNhdGlvbnNQZXJQdWJsaXNoIiB0eXBlPSJ4czp1bnNpZ25l
+ZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaGlu
+Z0VuYWJsZWQiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlByaW9yaXR5IiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxl
+bWVudCBuYW1lPSJDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0IiB0eXBlPSJ0bnM6Q3JlYXRlU3Vi
+c2NyaXB0aW9uUmVxdWVzdCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iQ3JlYXRlU3Vi
+c2NyaXB0aW9uUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3Jp
+cHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9IlJldmlzZWRQdWJsaXNoaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJs
+ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZExpZmV0
+aW1lQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkTWF4S2VlcEFsaXZlQ291bnQiIHR5cGU9InhzOnVuc2ln
+bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21w
+bGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iQ3JlYXRlU3Vic2NyaXB0aW9uUmVzcG9uc2Ui
+IHR5cGU9InRuczpDcmVhdGVTdWJzY3JpcHRpb25SZXNwb25zZSIgLz4NCg0KICA8eHM6Y29tcGxl
+eFR5cGUgbmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9uUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNl
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVl
+c3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RlZFB1Ymxpc2hpbmdJbnRl
+cnZhbCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJSZXF1ZXN0ZWRMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWlu
+T2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdGVkTWF4S2VlcEFs
+aXZlQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJNYXhOb3RpZmljYXRpb25zUGVyUHVibGlzaCIgdHlwZT0ieHM6dW5z
+aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlByaW9y
+aXR5IiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJNb2RpZnlT
+dWJzY3JpcHRpb25SZXF1ZXN0IiB0eXBlPSJ0bnM6TW9kaWZ5U3Vic2NyaXB0aW9uUmVxdWVzdCIg
+Lz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTW9kaWZ5U3Vic2NyaXB0aW9uUmVzcG9uc2Ui
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVh
+ZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXZpc2VkUHVibGlzaGluZ0ludGVydmFs
+IiB0eXBlPSJ4czpkb3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IlJldmlzZWRMaWZldGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV2aXNlZE1heEtlZXBBbGl2ZUNvdW50
+IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2VxdWVu
+Y2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ik1vZGlmeVN1YnNj
+cmlwdGlvblJlc3BvbnNlIiB0eXBlPSJ0bnM6TW9kaWZ5U3Vic2NyaXB0aW9uUmVzcG9uc2UiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlUmVxdWVzdCI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIg
+dHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoaW5nRW5hYmxlZCIgdHlwZT0ieHM6Ym9v
+bGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0
+aW9uSWRzIiB0eXBlPSJ1YTpMaXN0T2ZVSW50MzIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU2V0UHVibGlzaGluZ01vZGVSZXF1ZXN0IiB0eXBlPSJ0bnM6U2V0UHVibGlz
+aGluZ01vZGVSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTZXRQdWJsaXNo
+aW5nTW9kZVJlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVyIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIg
+dHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvcyIgdHlwZT0idWE6TGlz
+dE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+PC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0i
+U2V0UHVibGlzaGluZ01vZGVSZXNwb25zZSIgdHlwZT0idG5zOlNldFB1Ymxpc2hpbmdNb2RlUmVz
+cG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2Ui
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcXVlbmNlTnVt
+YmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iUHVibGlzaFRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJOb3RpZmljYXRpb25EYXRhIiB0eXBlPSJ1YTpM
+aXN0T2ZFeHRlbnNpb25PYmplY3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTm90aWZpY2F0aW9uTWVzc2FnZSIgdHlwZT0idG5zOk5vdGlmaWNhdGlvbk1lc3NhZ2UiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik5vdGlmaWNhdGlvbkRhdGEiPg0KICAgIDx4czpz
+ZXF1ZW5jZT4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJOb3RpZmljYXRpb25EYXRhIiB0eXBlPSJ0bnM6Tm90aWZpY2F0aW9uRGF0
+YSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbiI+
+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1peGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5z
+aW9uIGJhc2U9InRuczpOb3RpZmljYXRpb25EYXRhIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1zIiB0eXBlPSJ0bnM6TGlz
+dE9mTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICAgICAgICA8eHM6ZWxlbWVudCBuYW1lPSJEaWFnbm9zdGljSW5mb3MiIHR5cGU9
+InVhOkxpc3RPZkRpYWdub3N0aWNJbmZvIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAv
+Pg0KICAgICAgICA8L3hzOnNlcXVlbmNlPg0KICAgICAgPC94czpleHRlbnNpb24+DQogICAgPC94
+czpjb21wbGV4Q29udGVudD4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbiIgdHlwZT0idG5zOkRhdGFDaGFuZ2VOb3RpZmljYXRp
+b24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ik1vbml0b3JlZEl0ZW1Ob3RpZmljYXRp
+b24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudEhh
+bmRsZSIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlZhbHVlIiB0eXBlPSJ1YTpEYXRhVmFsdWUiIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgdHlwZT0idG5z
+Ok1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+Ikxpc3RPZk1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Ik1vbml0b3JlZEl0ZW1Ob3RpZmljYXRpb24iIHR5cGU9InRu
+czpNb25pdG9yZWRJdGVtTm90aWZpY2F0aW9uIiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i
+b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZNb25pdG9yZWRJdGVtTm90aWZp
+Y2F0aW9uIiB0eXBlPSJ0bnM6TGlzdE9mTW9uaXRvcmVkSXRlbU5vdGlmaWNhdGlvbiIgbmlsbGFi
+bGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRXZlbnRO
+b3RpZmljYXRpb25MaXN0Ij4NCiAgICA8eHM6Y29tcGxleENvbnRlbnQgbWl4ZWQ9ImZhbHNlIj4N
+CiAgICAgIDx4czpleHRlbnNpb24gYmFzZT0idG5zOk5vdGlmaWNhdGlvbkRhdGEiPg0KICAgICAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRzIiB0eXBl
+PSJ0bnM6TGlzdE9mRXZlbnRGaWVsZExpc3QiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUi
+IC8+DQogICAgICAgIDwveHM6c2VxdWVuY2U+DQogICAgICA8L3hzOmV4dGVuc2lvbj4NCiAgICA8
+L3hzOmNvbXBsZXhDb250ZW50Pg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJFdmVudE5vdGlmaWNhdGlvbkxpc3QiIHR5cGU9InRuczpFdmVudE5vdGlmaWNhdGlvbkxp
+c3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkV2ZW50RmllbGRMaXN0Ij4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRIYW5kbGUiIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJFdmVudEZpZWxkcyIgdHlwZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZpZWxkTGlzdCIgdHlwZT0idG5zOkV2ZW50RmllbGRM
+aXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZFdmVudEZpZWxkTGlzdCI+
+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRXZlbnRGaWVsZExp
+c3QiIHR5cGU9InRuczpFdmVudEZpZWxkTGlzdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVu
+Ym91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mRXZlbnRGaWVsZExpc3QiIHR5
+cGU9InRuczpMaXN0T2ZFdmVudEZpZWxkTGlzdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVu
+dD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iSGlzdG9yeUV2ZW50RmllbGRMaXN0Ij4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFdmVudEZpZWxkcyIgdHlw
+ZT0idWE6TGlzdE9mVmFyaWFudCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJIaXN0b3J5RXZlbnRGaWVsZExpc3QiIHR5cGU9InRuczpIaXN0b3J5RXZlbnRGaWVsZExpc3Qi
+IC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZkhpc3RvcnlFdmVudEZpZWxkTGlz
+dCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSGlzdG9yeUV2
+ZW50RmllbGRMaXN0IiB0eXBlPSJ0bnM6SGlzdG9yeUV2ZW50RmllbGRMaXN0IiBtaW5PY2N1cnM9
+IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZI
+aXN0b3J5RXZlbnRGaWVsZExpc3QiIHR5cGU9InRuczpMaXN0T2ZIaXN0b3J5RXZlbnRGaWVsZExp
+c3QiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9IlN0YXR1c0NoYW5nZU5vdGlmaWNhdGlvbiI+DQogICAgPHhzOmNvbXBsZXhDb250ZW50IG1p
+eGVkPSJmYWxzZSI+DQogICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpOb3RpZmljYXRpb25E
+YXRhIj4NCiAgICAgICAgPHhzOnNlcXVlbmNlPg0KICAgICAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlN0YXR1cyIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgICAg
+IDx4czplbGVtZW50IG5hbWU9IkRpYWdub3N0aWNJbmZvIiB0eXBlPSJ1YTpEaWFnbm9zdGljSW5m
+byIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgICAgPC94czpzZXF1ZW5j
+ZT4NCiAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQogIDwv
+eHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NoYW5nZU5vdGlmaWNh
+dGlvbiIgdHlwZT0idG5zOlN0YXR1c0NoYW5nZU5vdGlmaWNhdGlvbiIgLz4NCg0KICA8eHM6Y29t
+cGxleFR5cGUgbmFtZT0iU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2VtZW50Ij4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlwZT0ieHM6
+dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl
+cXVlbmNlTnVtYmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+IDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9
+IlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgdHlwZT0idG5zOlN1YnNjcmlwdGlvbkFja25v
+d2xlZGdlbWVudCIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mU3Vic2NyaXB0
+aW9uQWNrbm93bGVkZ2VtZW50Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJTdWJzY3JpcHRpb25BY2tub3dsZWRnZW1lbnQiIHR5cGU9InRuczpTdWJzY3JpcHRp
+b25BY2tub3dsZWRnZW1lbnQiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5p
+bGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+
+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIg
+dHlwZT0idG5zOkxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgbmlsbGFibGU9InRy
+dWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUHVibGlzaFJlcXVl
+c3QiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcXVlc3RI
+ZWFkZXIiIHR5cGU9InRuczpSZXF1ZXN0SGVhZGVyIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uQWNrbm93bGVkZ2Vt
+ZW50cyIgdHlwZT0idG5zOkxpc3RPZlN1YnNjcmlwdGlvbkFja25vd2xlZGdlbWVudCIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNoUmVxdWVzdCIgdHlwZT0idG5z
+OlB1Ymxpc2hSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQdWJsaXNoUmVz
+cG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3Bv
+bnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9uc2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZCIgdHlw
+ZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IkF2YWlsYWJsZVNlcXVlbmNlTnVtYmVycyIgdHlwZT0idWE6TGlzdE9mVUludDMyIiBtaW5P
+Y2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9y
+ZU5vdGlmaWNhdGlvbnMiIHR5cGU9InhzOmJvb2xlYW4iIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIHR5cGU9InRuczpOb3RpZmlj
+YXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iUmVzdWx0cyIgdHlwZT0idWE6TGlzdE9mU3RhdHVzQ29kZSIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRpYWdu
+b3N0aWNJbmZvcyIgdHlwZT0idWE6TGlzdE9mRGlhZ25vc3RpY0luZm8iIG1pbk9jY3Vycz0iMCIg
+bmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlw
+ZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaFJlc3BvbnNlIiB0eXBlPSJ0bnM6UHVibGlz
+aFJlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXB1Ymxpc2hSZXF1ZXN0
+Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXF1ZXN0SGVh
+ZGVyIiB0eXBlPSJ0bnM6UmVxdWVzdEhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1
+ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbklkIiB0eXBlPSJ4czp1
+bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmV0
+cmFuc21pdFNlcXVlbmNlTnVtYmVyIiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IlJlcHVibGlzaFJlcXVlc3QiIHR5cGU9InRuczpSZXB1Ymxpc2hSZXF1ZXN0IiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJSZXB1Ymxpc2hSZXNwb25zZSI+DQogICAgPHhz
+OnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVzcG9uc2VIZWFkZXIiIHR5cGU9
+InRuczpSZXNwb25zZUhlYWRlciIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9Ik5vdGlmaWNhdGlvbk1lc3NhZ2UiIHR5cGU9InRuczpOb3Rp
+ZmljYXRpb25NZXNzYWdlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJl
+cHVibGlzaFJlc3BvbnNlIiB0eXBlPSJ0bnM6UmVwdWJsaXNoUmVzcG9uc2UiIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9IlRyYW5zZmVyUmVzdWx0Ij4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNDb2RlIiB0eXBlPSJ1YTpTdGF0dXNDb2RlIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBdmFpbGFibGVTZXF1ZW5j
+ZU51bWJlcnMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclJlc3VsdCIgdHlwZT0idG5zOlRyYW5zZmVyUmVzdWx0IiAv
+Pg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZUcmFuc2ZlclJlc3VsdCI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNmZXJSZXN1bHQiIHR5
+cGU9InRuczpUcmFuc2ZlclJlc3VsdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRl
+ZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4
+VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mVHJhbnNmZXJSZXN1bHQiIHR5cGU9InRu
+czpMaXN0T2ZUcmFuc2ZlclJlc3VsdCIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0K
+ICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zUmVxdWVzdCI+DQog
+ICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIg
+dHlwZT0idG5zOlJlcXVlc3RIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTdWJzY3JpcHRpb25JZHMiIHR5cGU9InVhOkxpc3RP
+ZlVJbnQzMiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlNlbmRJbml0aWFsVmFsdWVzIiB0eXBlPSJ4czpib29sZWFuIiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iVHJhbnNmZXJTdWJzY3JpcHRpb25zUmVxdWVzdCIgdHlwZT0idG5zOlRyYW5z
+ZmVyU3Vic2NyaXB0aW9uc1JlcXVlc3QiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRy
+YW5zZmVyU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJSZXNwb25zZUhlYWRlciIgdHlwZT0idG5zOlJlc3BvbnNlSGVhZGVy
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUmVzdWx0cyIgdHlwZT0idG5zOkxpc3RPZlRyYW5zZmVyUmVzdWx0IiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3RpY0lu
+Zm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJUcmFuc2ZlclN1YnNjcmlwdGlvbnNSZXNwb25zZSIgdHlwZT0idG5z
+OlRyYW5zZmVyU3Vic2NyaXB0aW9uc1Jlc3BvbnNlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBu
+YW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVxdWVzdCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVxdWVzdEhlYWRlciIgdHlwZT0idG5zOlJlcXVlc3RIZWFk
+ZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJTdWJzY3JpcHRpb25JZHMiIHR5cGU9InVhOkxpc3RPZlVJbnQzMiIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhU
+eXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVxdWVzdCIgdHlw
+ZT0idG5zOkRlbGV0ZVN1YnNjcmlwdGlvbnNSZXF1ZXN0IiAvPg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2UiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlc3BvbnNlSGVhZGVyIiB0eXBlPSJ0bnM6UmVzcG9u
+c2VIZWFkZXIiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJSZXN1bHRzIiB0eXBlPSJ1YTpMaXN0T2ZTdGF0dXNDb2RlIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iRGlhZ25vc3Rp
+Y0luZm9zIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0K
+ICA8eHM6ZWxlbWVudCBuYW1lPSJEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2UiIHR5cGU9InRu
+czpEZWxldGVTdWJzY3JpcHRpb25zUmVzcG9uc2UiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9IkJ1aWxkSW5mbyI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iUHJvZHVjdFVyaSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWFudWZhY3R1cmVyTmFtZSIgdHlwZT0i
+eHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iUHJvZHVjdE5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNvZnR3YXJlVmVyc2lv
+biIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVpbGROdW1iZXIiIHR5cGU9InhzOnN0cmluZyIgbWluT2Nj
+dXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkJ1aWxk
+RGF0ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJCdWlsZEluZm8i
+IHR5cGU9InRuczpCdWlsZEluZm8iIC8+DQoNCiAgPHhzOnNpbXBsZVR5cGUgIG5hbWU9IlJlZHVu
+ZGFuY3lTdXBwb3J0Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCiAg
+ICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iTm9uZV8wIiAvPg0KICAgICAgPHhzOmVudW1lcmF0
+aW9uIHZhbHVlPSJDb2xkXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Ildhcm1f
+MiIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iSG90XzMiIC8+DQogICAgICA8eHM6
+ZW51bWVyYXRpb24gdmFsdWU9IlRyYW5zcGFyZW50XzQiIC8+DQogICAgICA8eHM6ZW51bWVyYXRp
+b24gdmFsdWU9IkhvdEFuZE1pcnJvcmVkXzUiIC8+DQogICAgPC94czpyZXN0cmljdGlvbj4NCiAg
+PC94czpzaW1wbGVUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJSZWR1bmRhbmN5U3VwcG9ydCIg
+dHlwZT0idG5zOlJlZHVuZGFuY3lTdXBwb3J0IiAvPg0KDQogIDx4czpzaW1wbGVUeXBlICBuYW1l
+PSJTZXJ2ZXJTdGF0ZSI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQog
+ICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlJ1bm5pbmdfMCIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iRmFpbGVkXzEiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9
+Ik5vQ29uZmlndXJhdGlvbl8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTdXNw
+ZW5kZWRfMyIgLz4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iU2h1dGRvd25fNCIgLz4N
+CiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iVGVzdF81IiAvPg0KICAgICAgPHhzOmVudW1l
+cmF0aW9uIHZhbHVlPSJDb21tdW5pY2F0aW9uRmF1bHRfNiIgLz4NCiAgICAgIDx4czplbnVtZXJh
+dGlvbiB2YWx1ZT0iVW5rbm93bl83IiAvPg0KICAgIDwveHM6cmVzdHJpY3Rpb24+DQogIDwveHM6
+c2ltcGxlVHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyU3RhdGUiIHR5cGU9InRuczpT
+ZXJ2ZXJTdGF0ZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmVkdW5kYW50U2VydmVy
+RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNl
+cnZlcklkIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+
+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2aWNlTGV2ZWwiIHR5cGU9InhzOnVuc2lnbmVk
+Qnl0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyU3Rh
+dGUiIHR5cGU9InRuczpTZXJ2ZXJTdGF0ZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgIDwveHM6c2Vx
+dWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlJlZHVuZGFu
+dFNlcnZlckRhdGFUeXBlIiB0eXBlPSJ0bnM6UmVkdW5kYW50U2VydmVyRGF0YVR5cGUiIC8+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlJlZHVuZGFudFNlcnZlckRhdGFUeXBlIj4N
+CiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWR1bmRhbnRTZXJ2
+ZXJEYXRhVHlwZSIgdHlwZT0idG5zOlJlZHVuZGFudFNlcnZlckRhdGFUeXBlIiBtaW5PY2N1cnM9
+IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNl
+cXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZS
+ZWR1bmRhbnRTZXJ2ZXJEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZlJlZHVuZGFudFNlcnZlckRh
+dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJFbmRwb2ludFVybExpc3REYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmxMaXN0IiB0eXBlPSJ1YTpMaXN0T2ZTdHJp
+bmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRW5kcG9pbnRVcmxMaXN0
+RGF0YVR5cGUiIHR5cGU9InRuczpFbmRwb2ludFVybExpc3REYXRhVHlwZSIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iTGlzdE9mRW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkVuZHBvaW50VXJsTGlzdERhdGFU
+eXBlIiB0eXBlPSJ0bnM6RW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4
+T2NjdXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+
+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZkVuZHBvaW50
+VXJsTGlzdERhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mRW5kcG9pbnRVcmxMaXN0RGF0YVR5cGUi
+IG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+Ik5ldHdvcmtHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJTZXJ2ZXJVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtQYXRocyIgdHlw
+ZT0idG5zOkxpc3RPZkVuZHBvaW50VXJsTGlzdERhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxh
+YmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQog
+IDx4czplbGVtZW50IG5hbWU9Ik5ldHdvcmtHcm91cERhdGFUeXBlIiB0eXBlPSJ0bnM6TmV0d29y
+a0dyb3VwRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZk5ldHdv
+cmtHcm91cERhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJOZXR3b3JrR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOk5ldHdvcmtHcm91cERhdGFUeXBl
+IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBu
+YW1lPSJMaXN0T2ZOZXR3b3JrR3JvdXBEYXRhVHlwZSIgdHlwZT0idG5zOkxpc3RPZk5ldHdvcmtH
+cm91cERhdGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlwZSI+DQogICAg
+PHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2FtcGxpbmdJbnRlcnZhbCIg
+dHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJNb25pdG9yZWRJdGVtQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhNb25pdG9yZWRJdGVtQ291bnQiIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJEaXNhYmxlZE1vbml0b3JlZEl0ZW1Db3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlw
+ZT0idG5zOlNhbXBsaW5nSW50ZXJ2YWxEaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0KDQogIDx4czpj
+b21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlw
+ZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2FtcGxpbmdJ
+bnRlcnZhbERpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTYW1wbGluZ0ludGVydmFsRGlh
+Z25vc3RpY3NEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4N
+CiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2FtcGxpbmdJbnRlcnZhbERpYWdub3N0aWNzRGF0
+YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZTYW1wbGluZ0ludGVydmFsRGlhZ25vc3RpY3NEYXRhVHlw
+ZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFt
+ZT0iU2VydmVyRGlhZ25vc3RpY3NTdW1tYXJ5RGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlcnZlclZpZXdDb3VudCIgdHlwZT0ieHM6dW5zaWdu
+ZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbnRT
+ZXNzaW9uQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJDdW11bGF0ZWRTZXNzaW9uQ291bnQiIHR5cGU9InhzOnVuc2ln
+bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZWN1cml0
+eVJlamVjdGVkU2Vzc2lvbkNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVqZWN0ZWRTZXNzaW9uQ291bnQiIHR5cGU9
+InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJTZXNzaW9uVGltZW91dENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbkFib3J0Q291bnQiIHR5cGU9Inhz
+OnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJD
+dXJyZW50U3Vic2NyaXB0aW9uQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdW11bGF0ZWRTdWJzY3JpcHRpb25Db3Vu
+dCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlB1Ymxpc2hpbmdJbnRlcnZhbENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIg
+bWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2VjdXJpdHlSZWplY3Rl
+ZFJlcXVlc3RzQ291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWplY3RlZFJlcXVlc3RzQ291bnQiIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpj
+b21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iU2VydmVyRGlhZ25vc3RpY3NTdW1tYXJ5
+RGF0YVR5cGUiIHR5cGU9InRuczpTZXJ2ZXJEaWFnbm9zdGljc1N1bW1hcnlEYXRhVHlwZSIgLz4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU2VydmVyU3RhdHVzRGF0YVR5cGUiPg0KICAgIDx4
+czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXJ0VGltZSIgdHlwZT0ieHM6
+ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJl
+bnRUaW1lIiB0eXBlPSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU3RhdGUiIHR5cGU9InRuczpTZXJ2ZXJTdGF0ZSIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQnVpbGRJbmZvIiB0eXBlPSJ0bnM6QnVpbGRJbmZv
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iU2Vjb25kc1RpbGxTaHV0ZG93biIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNodXRkb3duUmVhc29uIiB0eXBlPSJ1YTpM
+b2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6
+c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IlNlcnZl
+clN0YXR1c0RhdGFUeXBlIiB0eXBlPSJ0bnM6U2VydmVyU3RhdHVzRGF0YVR5cGUiIC8+DQoNCiAg
+PHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBlIj4NCiAgICA8
+eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uSWQiIHR5cGU9InVh
+Ok5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlNlc3Npb25OYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnREZXNjcmlwdGlv
+biIgdHlwZT0idG5zOkFwcGxpY2F0aW9uRGVzY3JpcHRpb24iIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXJ2ZXJVcmkiIHR5cGU9Inhz
+OnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkVuZHBvaW50VXJsIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMb2NhbGVJZHMiIHR5cGU9
+InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IkFjdHVhbFNlc3Npb25UaW1lb3V0IiB0eXBlPSJ4czpkb3VibGUi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1heFJlc3BvbnNlTWVz
+c2FnZVNpemUiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRDb25uZWN0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUi
+IG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudExhc3RDb250
+YWN0VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkN1cnJlbnRTdWJzY3JpcHRpb25zQ291bnQiIHR5cGU9InhzOnVuc2lnbmVk
+SW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW50TW9u
+aXRvcmVkSXRlbXNDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9IkN1cnJlbnRQdWJsaXNoUmVxdWVzdHNJblF1ZXVlIiB0
+eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQg
+bmFtZT0iVG90YWxSZXF1ZXN0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBl
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iVW5hdXRob3JpemVkUmVxdWVzdENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2Nj
+dXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVhZENvdW50IiB0eXBlPSJ0bnM6
+U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4N
+CiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikhpc3RvcnlSZWFkQ291bnQiIHR5cGU9InRuczpTZXJ2
+aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iV3JpdGVDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVy
+RGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxl
+bWVudCBuYW1lPSJIaXN0b3J5VXBkYXRlQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRh
+dGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1l
+bnQgbmFtZT0iQ2FsbENvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWlu
+T2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNy
+ZWF0ZU1vbml0b3JlZEl0ZW1zQ291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBl
+IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTW9kaWZ5TW9uaXRvcmVkSXRlbXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0
+YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJTZXRNb25pdG9yaW5nTW9kZUNvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJE
+YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IlNldFRyaWdnZXJpbmdDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0
+YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEZWxldGVNb25pdG9yZWRJdGVtc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50
+ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkNyZWF0ZVN1YnNjcmlwdGlvbkNvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNv
+dW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4
+czplbGVtZW50IG5hbWU9Ik1vZGlmeVN1YnNjcmlwdGlvbkNvdW50IiB0eXBlPSJ0bnM6U2Vydmlj
+ZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlNldFB1Ymxpc2hpbmdNb2RlQ291bnQiIHR5cGU9InRuczpTZXJ2
+aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iUHVibGlzaENvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50
+ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlJlcHVibGlzaENvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRh
+VHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IlRyYW5zZmVyU3Vic2NyaXB0aW9uc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50
+ZXJEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IkRlbGV0ZVN1YnNjcmlwdGlvbnNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VD
+b3VudGVyRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJBZGROb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJE
+YXRhVHlwZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkFkZFJlZmVyZW5jZXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0
+YVR5cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJEZWxldGVOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlw
+ZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5h
+bWU9IkRlbGV0ZVJlZmVyZW5jZXNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5
+cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJCcm93c2VDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJCcm93
+c2VOZXh0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNsYXRl
+QnJvd3NlUGF0aHNUb05vZGVJZHNDb3VudCIgdHlwZT0idG5zOlNlcnZpY2VDb3VudGVyRGF0YVR5
+cGUiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJRdWVyeUZpcnN0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+UXVlcnlOZXh0Q291bnQiIHR5cGU9InRuczpTZXJ2aWNlQ291bnRlckRhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iUmVnaXN0
+ZXJOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVucmVnaXN0
+ZXJOb2Rlc0NvdW50IiB0eXBlPSJ0bnM6U2VydmljZUNvdW50ZXJEYXRhVHlwZSIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIg
+dHlwZT0idG5zOlNlc3Npb25EaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4
+VHlwZSBuYW1lPSJMaXN0T2ZTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbkRpYWdub3N0aWNzRGF0YVR5
+cGUiIHR5cGU9InRuczpTZXNzaW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgbWluT2NjdXJzPSIwIiBt
+YXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5j
+ZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTGlzdE9mU2Vzc2lv
+bkRpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZTZXNzaW9uRGlhZ25vc3RpY3NE
+YXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4NCg0KICA8eHM6Y29tcGxleFR5
+cGUgbmFtZT0iU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSI+DQogICAgPHhzOnNl
+cXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU2Vzc2lvbklkIiB0eXBlPSJ1YTpOb2Rl
+SWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJDbGllbnRVc2VySWRPZlNlc3Npb24iIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkNsaWVudFVzZXJJ
+ZEhpc3RvcnkiIHR5cGU9InVhOkxpc3RPZlN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0i
+dHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkF1dGhlbnRpY2F0aW9uTWVjaGFuaXNt
+IiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJFbmNvZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9
+IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iVHJhbnNwb3J0
+UHJvdG9jb2wiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIg
+Lz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlY3VyaXR5TW9kZSIgdHlwZT0idG5zOk1lc3Nh
+Z2VTZWN1cml0eU1vZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IlNlY3VyaXR5UG9saWN5VXJpIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFi
+bGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDbGllbnRDZXJ0aWZpY2F0ZSIg
+dHlwZT0ieHM6YmFzZTY0QmluYXJ5IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0K
+ICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5h
+bWU9IlNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiIHR5cGU9InRuczpTZXNzaW9u
+U2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1l
+PSJMaXN0T2ZTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGljc0RhdGFUeXBlIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJTZXNzaW9uU2VjdXJpdHlEaWFnbm9zdGlj
+c0RhdGFUeXBlIiB0eXBlPSJ0bnM6U2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIg
+bWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgbmlsbGFibGU9InRydWUiIC8+DQog
+ICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTGlzdE9mU2Vzc2lvblNlY3VyaXR5RGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlwZT0idG5zOkxp
+c3RPZlNlc3Npb25TZWN1cml0eURpYWdub3N0aWNzRGF0YVR5cGUiIG5pbGxhYmxlPSJ0cnVlIj48
+L3hzOmVsZW1lbnQ+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlNlcnZpY2VDb3VudGVyRGF0
+YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRvdGFs
+Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6
+ZWxlbWVudCBuYW1lPSJFcnJvckNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9IlNlcnZpY2VDb3VudGVyRGF0YVR5cGUiIHR5cGU9InRuczpTZXJ2aWNlQ291
+bnRlckRhdGFUeXBlIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJTdGF0dXNSZXN1bHQi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN0YXR1c0NvZGUi
+IHR5cGU9InVhOlN0YXR1c0NvZGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9IkRpYWdub3N0aWNJbmZvIiB0eXBlPSJ1YTpEaWFnbm9zdGljSW5mbyIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBs
+ZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJTdGF0dXNSZXN1bHQiIHR5cGU9InRuczpTdGF0
+dXNSZXN1bHQiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlN0YXR1c1Jlc3Vs
+dCI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iU3RhdHVzUmVz
+dWx0IiB0eXBlPSJ0bnM6U3RhdHVzUmVzdWx0IiBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5i
+b3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNv
+bXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0T2ZTdGF0dXNSZXN1bHQiIHR5cGU9
+InRuczpMaXN0T2ZTdGF0dXNSZXN1bHQiIG5pbGxhYmxlPSJ0cnVlIj48L3hzOmVsZW1lbnQ+DQoN
+CiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUi
+Pg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlc3Npb25JZCIg
+dHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uSWQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQcmlvcml0eSIgdHlwZT0i
+eHM6dW5zaWduZWRCeXRlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1l
+PSJQdWJsaXNoaW5nSW50ZXJ2YWwiIHR5cGU9InhzOmRvdWJsZSIgbWluT2NjdXJzPSIwIiAvPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTWF4S2VlcEFsaXZlQ291bnQiIHR5cGU9InhzOnVuc2ln
+bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNYXhMaWZl
+dGltZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTWF4Tm90aWZpY2F0aW9uc1BlclB1Ymxpc2giIHR5cGU9InhzOnVu
+c2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJs
+aXNoaW5nRW5hYmxlZCIgdHlwZT0ieHM6Ym9vbGVhbiIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTW9kaWZ5Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5P
+Y2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmFibGVDb3VudCIgdHlwZT0i
+eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkRpc2FibGVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IlJlcHVibGlzaFJlcXVlc3RDb3VudCIgdHlwZT0ieHM6dW5z
+aWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlJlcHVi
+bGlzaE1lc3NhZ2VSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZXB1Ymxpc2hNZXNzYWdlQ291bnQiIHR5
+cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBu
+YW1lPSJUcmFuc2ZlclJlcXVlc3RDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRyYW5zZmVycmVkVG9BbHRDbGllbnRD
+b3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czpl
+bGVtZW50IG5hbWU9IlRyYW5zZmVycmVkVG9TYW1lQ2xpZW50Q291bnQiIHR5cGU9InhzOnVuc2ln
+bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJQdWJsaXNo
+UmVxdWVzdENvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAg
+ICAgPHhzOmVsZW1lbnQgbmFtZT0iRGF0YUNoYW5nZU5vdGlmaWNhdGlvbnNDb3VudCIgdHlwZT0i
+eHM6dW5zaWduZWRJbnQiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9
+IkV2ZW50Tm90aWZpY2F0aW9uc0NvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJz
+PSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTm90aWZpY2F0aW9uc0NvdW50IiB0eXBl
+PSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFt
+ZT0iTGF0ZVB1Ymxpc2hSZXF1ZXN0Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1
+cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDdXJyZW50S2VlcEFsaXZlQ291bnQi
+IHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJDdXJyZW50TGlmZXRpbWVDb3VudCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVuYWNrbm93bGVkZ2VkTWVzc2Fn
+ZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iRGlzY2FyZGVkTWVzc2FnZUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZElu
+dCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9uaXRvcmVkSXRl
+bUNvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iRGlzYWJsZWRNb25pdG9yZWRJdGVtQ291bnQiIHR5cGU9InhzOnVuc2ln
+bmVkSW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJNb25pdG9y
+aW5nUXVldWVPdmVyZmxvd0NvdW50IiB0eXBlPSJ4czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTmV4dFNlcXVlbmNlTnVtYmVyIiB0eXBlPSJ4
+czp1bnNpZ25lZEludCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+RXZlbnRRdWV1ZU92ZXJGbG93Q291bnQiIHR5cGU9InhzOnVuc2lnbmVkSW50IiBtaW5PY2N1cnM9
+IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU3Vic2NyaXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgdHlwZT0idG5zOlN1
+YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9Ikxpc3RPZlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlN1YnNjcmlwdGlvbkRpYWdub3N0aWNzRGF0
+YVR5cGUiIHR5cGU9InRuczpTdWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZTdWJzY3JpcHRpb25EaWFnbm9zdGljc0RhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mU3Vic2Ny
+aXB0aW9uRGlhZ25vc3RpY3NEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVWZXJiTWFzayI+
+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVy
+YXRpb24gdmFsdWU9Ik5vZGVBZGRlZF8xIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVl
+PSJOb2RlRGVsZXRlZF8yIiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZlcmVu
+Y2VBZGRlZF80IiAvPg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJSZWZlcmVuY2VEZWxl
+dGVkXzgiIC8+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRhdGFUeXBlQ2hhbmdlZF8x
+NiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNpbXBsZVR5cGU+DQogIDx4czpl
+bGVtZW50IG5hbWU9Ik1vZGVsQ2hhbmdlU3RydWN0dXJlVmVyYk1hc2siIHR5cGU9InRuczpNb2Rl
+bENoYW5nZVN0cnVjdHVyZVZlcmJNYXNrIiAvPg0KDQogIDx4czpjb21wbGV4VHlwZSBuYW1lPSJN
+b2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJBZmZlY3RlZCIgdHlwZT0idWE6Tm9kZUlkIiBtaW5PY2N1cnM9IjAi
+IG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iQWZmZWN0ZWRUeXBl
+IiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJWZXJiIiB0eXBlPSJ4czp1bnNpZ25lZEJ5dGUiIG1pbk9jY3Vy
+cz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6
+ZWxlbWVudCBuYW1lPSJNb2RlbENoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiB0eXBlPSJ0bnM6TW9k
+ZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgLz4NCg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0i
+TGlzdE9mTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0K
+ICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTW9kZWxDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgdHlw
+ZT0idG5zOk1vZGVsQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIG1pbk9jY3Vycz0iMCIgbWF4T2Nj
+dXJzPSJ1bmJvdW5kZWQiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQog
+IDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9Ikxpc3RPZk1vZGVsQ2hhbmdl
+U3RydWN0dXJlRGF0YVR5cGUiIHR5cGU9InRuczpMaXN0T2ZNb2RlbENoYW5nZVN0cnVjdHVyZURh
+dGFUeXBlIiBuaWxsYWJsZT0idHJ1ZSI+PC94czplbGVtZW50Pg0KDQogIDx4czpjb21wbGV4VHlw
+ZSBuYW1lPSJTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIj4NCiAgICA8eHM6c2VxdWVu
+Y2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBZmZlY3RlZCIgdHlwZT0idWE6Tm9kZUlkIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+QWZmZWN0ZWRUeXBlIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRy
+dWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVs
+ZW1lbnQgbmFtZT0iU2VtYW50aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgdHlwZT0idG5zOlNl
+bWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5h
+bWU9Ikxpc3RPZlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1
+ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlNlbWFudGljQ2hhbmdlU3RydWN0dXJlRGF0
+YVR5cGUiIHR5cGU9InRuczpTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiBtaW5PY2N1
+cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICA8L3hz
+OnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJMaXN0
+T2ZTZW1hbnRpY0NoYW5nZVN0cnVjdHVyZURhdGFUeXBlIiB0eXBlPSJ0bnM6TGlzdE9mU2VtYW50
+aWNDaGFuZ2VTdHJ1Y3R1cmVEYXRhVHlwZSIgbmlsbGFibGU9InRydWUiPjwveHM6ZWxlbWVudD4N
+Cg0KICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iUmFuZ2UiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkxvdyIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAi
+IC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJIaWdoIiB0eXBlPSJ4czpkb3VibGUiIG1pbk9j
+Y3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8
+eHM6ZWxlbWVudCBuYW1lPSJSYW5nZSIgdHlwZT0idG5zOlJhbmdlIiAvPg0KDQogIDx4czpjb21w
+bGV4VHlwZSBuYW1lPSJFVUluZm9ybWF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJOYW1lc3BhY2VVcmkiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJz
+PSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlVuaXRJZCIg
+dHlwZT0ieHM6aW50IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJE
+aXNwbGF5TmFtZSIgdHlwZT0idWE6TG9jYWxpemVkVGV4dCIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkRlc2NyaXB0aW9uIiB0eXBlPSJ1
+YTpMb2NhbGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgIDwv
+eHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkVV
+SW5mb3JtYXRpb24iIHR5cGU9InRuczpFVUluZm9ybWF0aW9uIiAvPg0KDQogIDx4czpzaW1wbGVU
+eXBlICBuYW1lPSJBeGlzU2NhbGVFbnVtZXJhdGlvbiI+DQogICAgPHhzOnJlc3RyaWN0aW9uIGJh
+c2U9InhzOnN0cmluZyI+DQogICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkxpbmVhcl8wIiAv
+Pg0KICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJMb2dfMSIgLz4NCiAgICAgIDx4czplbnVt
+ZXJhdGlvbiB2YWx1ZT0iTG5fMiIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hzOnNp
+bXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkF4aXNTY2FsZUVudW1lcmF0aW9uIiB0eXBl
+PSJ0bnM6QXhpc1NjYWxlRW51bWVyYXRpb24iIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9
+IkNvbXBsZXhOdW1iZXJUeXBlIj4NCiAgICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJSZWFsIiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iSW1hZ2luYXJ5IiB0eXBlPSJ4czpmbG9hdCIgbWluT2NjdXJzPSIwIiAv
+Pg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVtZW50
+IG5hbWU9IkNvbXBsZXhOdW1iZXJUeXBlIiB0eXBlPSJ0bnM6Q29tcGxleE51bWJlclR5cGUiIC8+
+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkRvdWJsZUNvbXBsZXhOdW1iZXJUeXBlIj4NCiAg
+ICA8eHM6c2VxdWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJSZWFsIiB0eXBlPSJ4czpk
+b3VibGUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IkltYWdpbmFy
+eSIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgPC94czpzZXF1ZW5jZT4N
+CiAgPC94czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iRG91YmxlQ29tcGxleE51
+bWJlclR5cGUiIHR5cGU9InRuczpEb3VibGVDb21wbGV4TnVtYmVyVHlwZSIgLz4NCg0KICA8eHM6
+Y29tcGxleFR5cGUgbmFtZT0iQXhpc0luZm9ybWF0aW9uIj4NCiAgICA8eHM6c2VxdWVuY2U+DQog
+ICAgICA8eHM6ZWxlbWVudCBuYW1lPSJFbmdpbmVlcmluZ1VuaXRzIiB0eXBlPSJ0bnM6RVVJbmZv
+cm1hdGlvbiIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkVVUmFuZ2UiIHR5cGU9InRuczpSYW5nZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJs
+ZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9IlRpdGxlIiB0eXBlPSJ1YTpMb2Nh
+bGl6ZWRUZXh0IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVs
+ZW1lbnQgbmFtZT0iQXhpc1NjYWxlVHlwZSIgdHlwZT0idG5zOkF4aXNTY2FsZUVudW1lcmF0aW9u
+IiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBeGlzU3RlcHMiIHR5
+cGU9InVhOkxpc3RPZkRvdWJsZSIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAg
+ICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1l
+PSJBeGlzSW5mb3JtYXRpb24iIHR5cGU9InRuczpBeGlzSW5mb3JtYXRpb24iIC8+DQoNCiAgPHhz
+OmNvbXBsZXhUeXBlIG5hbWU9IlhWVHlwZSI+DQogICAgPHhzOnNlcXVlbmNlPg0KICAgICAgPHhz
+OmVsZW1lbnQgbmFtZT0iWCIgdHlwZT0ieHM6ZG91YmxlIiBtaW5PY2N1cnM9IjAiIC8+DQogICAg
+ICA8eHM6ZWxlbWVudCBuYW1lPSJWYWx1ZSIgdHlwZT0ieHM6ZmxvYXQiIG1pbk9jY3Vycz0iMCIg
+Lz4NCiAgICA8L3hzOnNlcXVlbmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVu
+dCBuYW1lPSJYVlR5cGUiIHR5cGU9InRuczpYVlR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBl
+IG5hbWU9IlByb2dyYW1EaWFnbm9zdGljRGF0YVR5cGUiPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAg
+ICAgIDx4czplbGVtZW50IG5hbWU9IkNyZWF0ZVNlc3Npb25JZCIgdHlwZT0idWE6Tm9kZUlkIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+Q3JlYXRlQ2xpZW50TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxl
+PSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iSW52b2NhdGlvbkNyZWF0aW9uVGlt
+ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ikxhc3RUcmFuc2l0aW9uVGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0i
+MCIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RDYWxsIiB0eXBlPSJ4czpz
+dHJpbmciIG1pbk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVu
+dCBuYW1lPSJMYXN0TWV0aG9kU2Vzc2lvbklkIiB0eXBlPSJ1YTpOb2RlSWQiIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9k
+SW5wdXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbWluT2NjdXJzPSIwIiBu
+aWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RPdXRw
+dXRBcmd1bWVudHMiIHR5cGU9InRuczpMaXN0T2ZBcmd1bWVudCIgbWluT2NjdXJzPSIwIiBuaWxs
+YWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikxhc3RNZXRob2RDYWxsVGlt
+ZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICAgIDx4czplbGVtZW50
+IG5hbWU9Ikxhc3RNZXRob2RSZXR1cm5TdGF0dXMiIHR5cGU9InRuczpTdGF0dXNSZXN1bHQiIG1p
+bk9jY3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgPC94czpzZXF1ZW5jZT4NCiAgPC94
+czpjb21wbGV4VHlwZT4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iUHJvZ3JhbURpYWdub3N0aWNEYXRh
+VHlwZSIgdHlwZT0idG5zOlByb2dyYW1EaWFnbm9zdGljRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNv
+bXBsZXhUeXBlIG5hbWU9IlByb2dyYW1EaWFnbm9zdGljMkRhdGFUeXBlIj4NCiAgICA8eHM6c2Vx
+dWVuY2U+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJDcmVhdGVTZXNzaW9uSWQiIHR5cGU9InVh
+Ok5vZGVJZCIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVt
+ZW50IG5hbWU9IkNyZWF0ZUNsaWVudE5hbWUiIHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIw
+IiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ikludm9jYXRpb25D
+cmVhdGlvblRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBtaW5PY2N1cnM9IjAiIC8+DQogICAgICA8
+eHM6ZWxlbWVudCBuYW1lPSJMYXN0VHJhbnNpdGlvblRpbWUiIHR5cGU9InhzOmRhdGVUaW1lIiBt
+aW5PY2N1cnM9IjAiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9kQ2FsbCIg
+dHlwZT0ieHM6c3RyaW5nIiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAg
+PHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZFNlc3Npb25JZCIgdHlwZT0idWE6Tm9kZUlkIiBt
+aW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGFzdE1ldGhvZElucHV0QXJndW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQXJndW1lbnQiIG1pbk9j
+Y3Vycz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0
+TWV0aG9kT3V0cHV0QXJndW1lbnRzIiB0eXBlPSJ0bnM6TGlzdE9mQXJndW1lbnQiIG1pbk9jY3Vy
+cz0iMCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0
+aG9kSW5wdXRWYWx1ZXMiIHR5cGU9InVhOkxpc3RPZlZhcmlhbnQiIG1pbk9jY3Vycz0iMCIgbmls
+bGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJMYXN0TWV0aG9kT3V0cHV0
+VmFsdWVzIiB0eXBlPSJ1YTpMaXN0T2ZWYXJpYW50IiBtaW5PY2N1cnM9IjAiIG5pbGxhYmxlPSJ0
+cnVlIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iTGFzdE1ldGhvZENhbGxUaW1lIiB0eXBl
+PSJ4czpkYXRlVGltZSIgbWluT2NjdXJzPSIwIiAvPg0KICAgICAgPHhzOmVsZW1lbnQgbmFtZT0i
+TGFzdE1ldGhvZFJldHVyblN0YXR1cyIgdHlwZT0idWE6U3RhdHVzQ29kZSIgbWluT2NjdXJzPSIw
+IiAvPg0KICAgIDwveHM6c2VxdWVuY2U+DQogIDwveHM6Y29tcGxleFR5cGU+DQogIDx4czplbGVt
+ZW50IG5hbWU9IlByb2dyYW1EaWFnbm9zdGljMkRhdGFUeXBlIiB0eXBlPSJ0bnM6UHJvZ3JhbURp
+YWdub3N0aWMyRGF0YVR5cGUiIC8+DQoNCiAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IkFubm90YXRp
+b24iPg0KICAgIDx4czpzZXF1ZW5jZT4NCiAgICAgIDx4czplbGVtZW50IG5hbWU9Ik1lc3NhZ2Ui
+IHR5cGU9InhzOnN0cmluZyIgbWluT2NjdXJzPSIwIiBuaWxsYWJsZT0idHJ1ZSIgLz4NCiAgICAg
+IDx4czplbGVtZW50IG5hbWU9IlVzZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIG1pbk9jY3Vycz0i
+MCIgbmlsbGFibGU9InRydWUiIC8+DQogICAgICA8eHM6ZWxlbWVudCBuYW1lPSJBbm5vdGF0aW9u
+VGltZSIgdHlwZT0ieHM6ZGF0ZVRpbWUiIG1pbk9jY3Vycz0iMCIgLz4NCiAgICA8L3hzOnNlcXVl
+bmNlPg0KICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8eHM6ZWxlbWVudCBuYW1lPSJBbm5vdGF0aW9u
+IiB0eXBlPSJ0bnM6QW5ub3RhdGlvbiIgLz4NCg0KICA8eHM6c2ltcGxlVHlwZSAgbmFtZT0iRXhj
+ZXB0aW9uRGV2aWF0aW9uRm9ybWF0Ij4NCiAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3Ry
+aW5nIj4NCiAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iQWJzb2x1dGVWYWx1ZV8wIiAvPg0K
+ICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZWYWx1ZV8xIiAvPg0KICAgICAg
+PHhzOmVudW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZSYW5nZV8yIiAvPg0KICAgICAgPHhzOmVu
+dW1lcmF0aW9uIHZhbHVlPSJQZXJjZW50T2ZFVVJhbmdlXzMiIC8+DQogICAgICA8eHM6ZW51bWVy
+YXRpb24gdmFsdWU9IlVua25vd25fNCIgLz4NCiAgICA8L3hzOnJlc3RyaWN0aW9uPg0KICA8L3hz
+OnNpbXBsZVR5cGU+DQogIDx4czplbGVtZW50IG5hbWU9IkV4Y2VwdGlvbkRldmlhdGlvbkZvcm1h
+dCIgdHlwZT0idG5zOkV4Y2VwdGlvbkRldmlhdGlvbkZvcm1hdCIgLz4NCg0KPC94czpzY2hlbWE+
+
+
+
+ NamespaceUri
+
+ i=68
+ i=8252
+
+
+ http://opcfoundation.org/UA/2008/02/Types.xsd
+
+
+
+ Deprecated
+
+ i=68
+ i=8252
+
+
+ true
+
+
+
+ Union
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Union']
+
+
+
+ KeyValuePair
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='KeyValuePair']
+
+
+
+ AdditionalParametersType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AdditionalParametersType']
+
+
+
+ EphemeralKeyType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EphemeralKeyType']
+
+
+
+ EndpointType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EndpointType']
+
+
+
+ RationalNumber
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RationalNumber']
+
+
+
+ Vector
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Vector']
+
+
+
+ 3DVector
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ThreeDVector']
+
+
+
+ CartesianCoordinates
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='CartesianCoordinates']
+
+
+
+ 3DCartesianCoordinates
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ThreeDCartesianCoordinates']
+
+
+
+ Orientation
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Orientation']
+
+
+
+ 3DOrientation
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ThreeDOrientation']
+
+
+
+ Frame
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Frame']
+
+
+
+ 3DFrame
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ThreeDFrame']
+
+
+
+ IdentityMappingRuleType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='IdentityMappingRuleType']
+
+
+
+ CurrencyUnitType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='CurrencyUnitType']
+
+
+
+ TrustListDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TrustListDataType']
+
+
+
+ TransactionErrorType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TransactionErrorType']
+
+
+
+ DataTypeSchemaHeader
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataTypeSchemaHeader']
+
+
+
+ DataTypeDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataTypeDescription']
+
+
+
+ StructureDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StructureDescription']
+
+
+
+ EnumDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EnumDescription']
+
+
+
+ SimpleTypeDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SimpleTypeDescription']
+
+
+
+ UABinaryFileDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UABinaryFileDataType']
+
+
+
+ PortableQualifiedName
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PortableQualifiedName']
+
+
+
+ PortableNodeId
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PortableNodeId']
+
+
+
+ UnsignedRationalNumber
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UnsignedRationalNumber']
+
+
+
+ DataSetMetaDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetMetaDataType']
+
+
+
+ FieldMetaData
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='FieldMetaData']
+
+
+
+ ConfigurationVersionDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ConfigurationVersionDataType']
+
+
+
+ PublishedDataSetDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedDataSetDataType']
+
+
+
+ PublishedDataSetSourceDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedDataSetSourceDataType']
+
+
+
+ PublishedVariableDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedVariableDataType']
+
+
+
+ PublishedDataItemsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedDataItemsDataType']
+
+
+
+ PublishedEventsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedEventsDataType']
+
+
+
+ PublishedDataSetCustomSourceDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PublishedDataSetCustomSourceDataType']
+
+
+
+ DataSetWriterDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetWriterDataType']
+
+
+
+ DataSetWriterTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetWriterTransportDataType']
+
+
+
+ DataSetWriterMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetWriterMessageDataType']
+
+
+
+ PubSubGroupDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubGroupDataType']
+
+
+
+ WriterGroupDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='WriterGroupDataType']
+
+
+
+ WriterGroupTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='WriterGroupTransportDataType']
+
+
+
+ WriterGroupMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='WriterGroupMessageDataType']
+
+
+
+ PubSubConnectionDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubConnectionDataType']
+
+
+
+ ConnectionTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ConnectionTransportDataType']
+
+
+
+ NetworkAddressDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='NetworkAddressDataType']
+
+
+
+ NetworkAddressUrlDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='NetworkAddressUrlDataType']
+
+
+
+ ReaderGroupDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReaderGroupDataType']
+
+
+
+ ReaderGroupTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReaderGroupTransportDataType']
+
+
+
+ ReaderGroupMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReaderGroupMessageDataType']
+
+
+
+ DataSetReaderDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetReaderDataType']
+
+
+
+ DataSetReaderTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetReaderTransportDataType']
+
+
+
+ DataSetReaderMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataSetReaderMessageDataType']
+
+
+
+ SubscribedDataSetDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SubscribedDataSetDataType']
+
+
+
+ TargetVariablesDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TargetVariablesDataType']
+
+
+
+ FieldTargetDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='FieldTargetDataType']
+
+
+
+ SubscribedDataSetMirrorDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SubscribedDataSetMirrorDataType']
+
+
+
+ PubSubConfigurationDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubConfigurationDataType']
+
+
+
+ StandaloneSubscribedDataSetRefDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StandaloneSubscribedDataSetRefDataType']
+
+
+
+ StandaloneSubscribedDataSetDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StandaloneSubscribedDataSetDataType']
+
+
+
+ SecurityGroupDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SecurityGroupDataType']
+
+
+
+ PubSubKeyPushTargetDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubKeyPushTargetDataType']
+
+
+
+ PubSubConfiguration2DataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubConfiguration2DataType']
+
+
+
+ UadpWriterGroupMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UadpWriterGroupMessageDataType']
+
+
+
+ UadpDataSetWriterMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UadpDataSetWriterMessageDataType']
+
+
+
+ UadpDataSetReaderMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UadpDataSetReaderMessageDataType']
+
+
+
+ JsonWriterGroupMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='JsonWriterGroupMessageDataType']
+
+
+
+ JsonDataSetWriterMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='JsonDataSetWriterMessageDataType']
+
+
+
+ JsonDataSetReaderMessageDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='JsonDataSetReaderMessageDataType']
+
+
+
+ QosDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='QosDataType']
+
+
+
+ TransmitQosDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TransmitQosDataType']
+
+
+
+ TransmitQosPriorityDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TransmitQosPriorityDataType']
+
+
+
+ ReceiveQosDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReceiveQosDataType']
+
+
+
+ ReceiveQosPriorityDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReceiveQosPriorityDataType']
+
+
+
+ DatagramConnectionTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DatagramConnectionTransportDataType']
+
+
+
+ DatagramConnectionTransport2DataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DatagramConnectionTransport2DataType']
+
+
+
+ DatagramWriterGroupTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DatagramWriterGroupTransportDataType']
+
+
+
+ DatagramWriterGroupTransport2DataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DatagramWriterGroupTransport2DataType']
+
+
+
+ DatagramDataSetReaderTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DatagramDataSetReaderTransportDataType']
+
+
+
+ BrokerConnectionTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='BrokerConnectionTransportDataType']
+
+
+
+ BrokerWriterGroupTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='BrokerWriterGroupTransportDataType']
+
+
+
+ BrokerDataSetWriterTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='BrokerDataSetWriterTransportDataType']
+
+
+
+ BrokerDataSetReaderTransportDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='BrokerDataSetReaderTransportDataType']
+
+
+
+ PubSubConfigurationRefDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubConfigurationRefDataType']
+
+
+
+ PubSubConfigurationValueDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PubSubConfigurationValueDataType']
+
+
+
+ AliasNameDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AliasNameDataType']
+
+
+
+ UserManagementDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UserManagementDataType']
+
+
+
+ PriorityMappingEntryType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='PriorityMappingEntryType']
+
+
+
+ ReferenceDescriptionDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReferenceDescriptionDataType']
+
+
+
+ ReferenceListEntryDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ReferenceListEntryDataType']
+
+
+
+ RolePermissionType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RolePermissionType']
+
+
+
+ DataTypeDefinition
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DataTypeDefinition']
+
+
+
+ StructureField
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StructureField']
+
+
+
+ StructureDefinition
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StructureDefinition']
+
+
+
+ EnumDefinition
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EnumDefinition']
+
+
+
+ Argument
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Argument']
+
+
+
+ EnumValueType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EnumValueType']
+
+
+
+ EnumField
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EnumField']
+
+
+
+ OptionSet
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='OptionSet']
+
+
+
+ TimeZoneDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='TimeZoneDataType']
+
+
+
+ ApplicationDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ApplicationDescription']
+
+
+
+ ServerOnNetwork
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ServerOnNetwork']
+
+
+
+ UserTokenPolicy
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UserTokenPolicy']
+
+
+
+ EndpointDescription
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EndpointDescription']
+
+
+
+ RegisteredServer
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RegisteredServer']
+
+
+
+ DiscoveryConfiguration
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DiscoveryConfiguration']
+
+
+
+ MdnsDiscoveryConfiguration
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='MdnsDiscoveryConfiguration']
+
+
+
+ SignedSoftwareCertificate
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SignedSoftwareCertificate']
+
+
+
+ UserIdentityToken
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UserIdentityToken']
+
+
+
+ AnonymousIdentityToken
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AnonymousIdentityToken']
+
+
+
+ UserNameIdentityToken
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='UserNameIdentityToken']
+
+
+
+ X509IdentityToken
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='X509IdentityToken']
+
+
+
+ IssuedIdentityToken
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='IssuedIdentityToken']
+
+
+
+ AddNodesItem
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AddNodesItem']
+
+
+
+ AddReferencesItem
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AddReferencesItem']
+
+
+
+ DeleteNodesItem
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DeleteNodesItem']
+
+
+
+ DeleteReferencesItem
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DeleteReferencesItem']
+
+
+
+ RelativePathElement
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RelativePathElement']
+
+
+
+ RelativePath
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RelativePath']
+
+
+
+ EndpointConfiguration
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EndpointConfiguration']
+
+
+
+ ContentFilterElement
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ContentFilterElement']
+
+
+
+ ContentFilter
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ContentFilter']
+
+
+
+ FilterOperand
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='FilterOperand']
+
+
+
+ ElementOperand
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ElementOperand']
+
+
+
+ LiteralOperand
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='LiteralOperand']
+
+
+
+ AttributeOperand
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AttributeOperand']
+
+
+
+ SimpleAttributeOperand
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SimpleAttributeOperand']
+
+
+
+ HistoryEvent
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='HistoryEvent']
+
+
+
+ MonitoringFilter
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='MonitoringFilter']
+
+
+
+ EventFilter
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EventFilter']
+
+
+
+ AggregateConfiguration
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AggregateConfiguration']
+
+
+
+ HistoryEventFieldList
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='HistoryEventFieldList']
+
+
+
+ BuildInfo
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='BuildInfo']
+
+
+
+ RedundantServerDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='RedundantServerDataType']
+
+
+
+ EndpointUrlListDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EndpointUrlListDataType']
+
+
+
+ NetworkGroupDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='NetworkGroupDataType']
+
+
+
+ SamplingIntervalDiagnosticsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SamplingIntervalDiagnosticsDataType']
+
+
+
+ ServerDiagnosticsSummaryDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ServerDiagnosticsSummaryDataType']
+
+
+
+ ServerStatusDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ServerStatusDataType']
+
+
+
+ SessionDiagnosticsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SessionDiagnosticsDataType']
+
+
+
+ SessionSecurityDiagnosticsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SessionSecurityDiagnosticsDataType']
+
+
+
+ ServiceCounterDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ServiceCounterDataType']
+
+
+
+ StatusResult
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='StatusResult']
+
+
+
+ SubscriptionDiagnosticsDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SubscriptionDiagnosticsDataType']
+
+
+
+ ModelChangeStructureDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ModelChangeStructureDataType']
+
+
+
+ SemanticChangeStructureDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='SemanticChangeStructureDataType']
+
+
+
+ Range
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Range']
+
+
+
+ EUInformation
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='EUInformation']
+
+
+
+ ComplexNumberType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ComplexNumberType']
+
+
+
+ DoubleComplexNumberType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='DoubleComplexNumberType']
+
+
+
+ AxisInformation
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='AxisInformation']
+
+
+
+ XVType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='XVType']
+
+
+
+ ProgramDiagnosticDataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ProgramDiagnosticDataType']
+
+
+
+ ProgramDiagnostic2DataType
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='ProgramDiagnostic2DataType']
+
+
+
+ Annotation
+
+ i=69
+ i=8252
+
+
+ //xs:element[@name='Annotation']
+
+
+
+ Default JSON
+
+ i=12756
+ i=76
+
+
+
+ Default JSON
+
+ i=14533
+ i=76
+
+
+
+ Default JSON
+
+ i=16313
+ i=76
+
+
+
+ Default JSON
+
+ i=17548
+ i=76
+
+
+
+ Default JSON
+
+ i=15528
+ i=76
+
+
+
+ Default JSON
+
+ i=18806
+ i=76
+
+
+
+ Default JSON
+
+ i=18807
+ i=76
+
+
+
+ Default JSON
+
+ i=18808
+ i=76
+
+
+
+ Default JSON
+
+ i=18809
+ i=76
+
+
+
+ Default JSON
+
+ i=18810
+ i=76
+
+
+
+ Default JSON
+
+ i=18811
+ i=76
+
+
+
+ Default JSON
+
+ i=18812
+ i=76
+
+
+
+ Default JSON
+
+ i=18813
+ i=76
+
+
+
+ Default JSON
+
+ i=18814
+ i=76
+
+
+
+ Default JSON
+
+ i=15634
+ i=76
+
+
+
+ Default JSON
+
+ i=23498
+ i=76
+
+
+
+ Default JSON
+
+ i=12554
+ i=76
+
+
+
+ Default JSON
+
+ i=32285
+ i=76
+
+
+
+ Default JSON
+
+ i=15534
+ i=76
+
+
+
+ Default JSON
+
+ i=14525
+ i=76
+
+
+
+ Default JSON
+
+ i=15487
+ i=76
+
+
+
+ Default JSON
+
+ i=15488
+ i=76
+
+
+
+ Default JSON
+
+ i=15005
+ i=76
+
+
+
+ Default JSON
+
+ i=15006
+ i=76
+
+
+
+ Default JSON
+
+ i=24105
+ i=76
+
+
+
+ Default JSON
+
+ i=24106
+ i=76
+
+
+
+ Default JSON
+
+ i=24107
+ i=76
+
+
+
+ Default JSON
+
+ i=14523
+ i=76
+
+
+
+ Default JSON
+
+ i=14524
+ i=76
+
+
+
+ Default JSON
+
+ i=14593
+ i=76
+
+
+
+ Default JSON
+
+ i=15578
+ i=76
+
+
+
+ Default JSON
+
+ i=15580
+ i=76
+
+
+
+ Default JSON
+
+ i=14273
+ i=76
+
+
+
+ Default JSON
+
+ i=15581
+ i=76
+
+
+
+ Default JSON
+
+ i=15582
+ i=76
+
+
+
+ Default JSON
+
+ i=25269
+ i=76
+
+
+
+ Default JSON
+
+ i=15597
+ i=76
+
+
+
+ Default JSON
+
+ i=15598
+ i=76
+
+
+
+ Default JSON
+
+ i=15605
+ i=76
+
+
+
+ Default JSON
+
+ i=15609
+ i=76
+
+
+
+ Default JSON
+
+ i=15480
+ i=76
+
+
+
+ Default JSON
+
+ i=15611
+ i=76
+
+
+
+ Default JSON
+
+ i=15616
+ i=76
+
+
+
+ Default JSON
+
+ i=15617
+ i=76
+
+
+
+ Default JSON
+
+ i=15618
+ i=76
+
+
+
+ Default JSON
+
+ i=15502
+ i=76
+
+
+
+ Default JSON
+
+ i=15510
+ i=76
+
+
+
+ Default JSON
+
+ i=15520
+ i=76
+
+
+
+ Default JSON
+
+ i=15621
+ i=76
+
+
+
+ Default JSON
+
+ i=15622
+ i=76
+
+
+
+ Default JSON
+
+ i=15623
+ i=76
+
+
+
+ Default JSON
+
+ i=15628
+ i=76
+
+
+
+ Default JSON
+
+ i=15629
+ i=76
+
+
+
+ Default JSON
+
+ i=15630
+ i=76
+
+
+
+ Default JSON
+
+ i=15631
+ i=76
+
+
+
+ Default JSON
+
+ i=14744
+ i=76
+
+
+
+ Default JSON
+
+ i=15635
+ i=76
+
+
+
+ Default JSON
+
+ i=15530
+ i=76
+
+
+
+ Default JSON
+
+ i=23599
+ i=76
+
+
+
+ Default JSON
+
+ i=23600
+ i=76
+
+
+
+ Default JSON
+
+ i=23601
+ i=76
+
+
+
+ Default JSON
+
+ i=25270
+ i=76
+
+
+
+ Default JSON
+
+ i=23602
+ i=76
+
+
+
+ Default JSON
+
+ i=15645
+ i=76
+
+
+
+ Default JSON
+
+ i=15652
+ i=76
+
+
+
+ Default JSON
+
+ i=15653
+ i=76
+
+
+
+ Default JSON
+
+ i=15657
+ i=76
+
+
+
+ Default JSON
+
+ i=15664
+ i=76
+
+
+
+ Default JSON
+
+ i=15665
+ i=76
+
+
+
+ Default JSON
+
+ i=23603
+ i=76
+
+
+
+ Default JSON
+
+ i=23604
+ i=76
+
+
+
+ Default JSON
+
+ i=23605
+ i=76
+
+
+
+ Default JSON
+
+ i=23608
+ i=76
+
+
+
+ Default JSON
+
+ i=23609
+ i=76
+
+
+
+ Default JSON
+
+ i=17467
+ i=76
+
+
+
+ Default JSON
+
+ i=23612
+ i=76
+
+
+
+ Default JSON
+
+ i=15532
+ i=76
+
+
+
+ Default JSON
+
+ i=23613
+ i=76
+
+
+
+ Default JSON
+
+ i=23614
+ i=76
+
+
+
+ Default JSON
+
+ i=15007
+ i=76
+
+
+
+ Default JSON
+
+ i=15667
+ i=76
+
+
+
+ Default JSON
+
+ i=15669
+ i=76
+
+
+
+ Default JSON
+
+ i=15670
+ i=76
+
+
+
+ Default JSON
+
+ i=25519
+ i=76
+
+
+
+ Default JSON
+
+ i=25520
+ i=76
+
+
+
+ Default JSON
+
+ i=23468
+ i=76
+
+
+
+ Default JSON
+
+ i=24281
+ i=76
+
+
+
+ Default JSON
+
+ i=25220
+ i=76
+
+
+
+ Default JSON
+
+ i=32659
+ i=76
+
+
+
+ Default JSON
+
+ i=32660
+ i=76
+
+
+
+ Default JSON
+
+ i=96
+ i=76
+
+
+
+ Default JSON
+
+ i=97
+ i=76
+
+
+
+ Default JSON
+
+ i=101
+ i=76
+
+
+
+ Default JSON
+
+ i=99
+ i=76
+
+
+
+ Default JSON
+
+ i=100
+ i=76
+
+
+
+ Default JSON
+
+ i=296
+ i=76
+
+
+
+ Default JSON
+
+ i=7594
+ i=76
+
+
+
+ Default JSON
+
+ i=102
+ i=76
+
+
+
+ Default JSON
+
+ i=12755
+ i=76
+
+
+
+ Default JSON
+
+ i=8912
+ i=76
+
+
+
+ Default JSON
+
+ i=308
+ i=76
+
+
+
+ Default JSON
+
+ i=12189
+ i=76
+
+
+
+ Default JSON
+
+ i=304
+ i=76
+
+
+
+ Default JSON
+
+ i=312
+ i=76
+
+
+
+ Default JSON
+
+ i=432
+ i=76
+
+
+
+ Default JSON
+
+ i=12890
+ i=76
+
+
+
+ Default JSON
+
+ i=12891
+ i=76
+
+
+
+ Default JSON
+
+ i=344
+ i=76
+
+
+
+ Default JSON
+
+ i=316
+ i=76
+
+
+
+ Default JSON
+
+ i=319
+ i=76
+
+
+
+ Default JSON
+
+ i=322
+ i=76
+
+
+
+ Default JSON
+
+ i=325
+ i=76
+
+
+
+ Default JSON
+
+ i=938
+ i=76
+
+
+
+ Default JSON
+
+ i=376
+ i=76
+
+
+
+ Default JSON
+
+ i=379
+ i=76
+
+
+
+ Default JSON
+
+ i=382
+ i=76
+
+
+
+ Default JSON
+
+ i=385
+ i=76
+
+
+
+ Default JSON
+
+ i=537
+ i=76
+
+
+
+ Default JSON
+
+ i=540
+ i=76
+
+
+
+ Default JSON
+
+ i=331
+ i=76
+
+
+
+ Default JSON
+
+ i=583
+ i=76
+
+
+
+ Default JSON
+
+ i=586
+ i=76
+
+
+
+ Default JSON
+
+ i=589
+ i=76
+
+
+
+ Default JSON
+
+ i=592
+ i=76
+
+
+
+ Default JSON
+
+ i=595
+ i=76
+
+
+
+ Default JSON
+
+ i=598
+ i=76
+
+
+
+ Default JSON
+
+ i=601
+ i=76
+
+
+
+ Default JSON
+
+ i=659
+ i=76
+
+
+
+ Default JSON
+
+ i=719
+ i=76
+
+
+
+ Default JSON
+
+ i=725
+ i=76
+
+
+
+ Default JSON
+
+ i=948
+ i=76
+
+
+
+ Default JSON
+
+ i=920
+ i=76
+
+
+
+ Default JSON
+
+ i=338
+ i=76
+
+
+
+ Default JSON
+
+ i=853
+ i=76
+
+
+
+ Default JSON
+
+ i=11943
+ i=76
+
+
+
+ Default JSON
+
+ i=11944
+ i=76
+
+
+
+ Default JSON
+
+ i=856
+ i=76
+
+
+
+ Default JSON
+
+ i=859
+ i=76
+
+
+
+ Default JSON
+
+ i=862
+ i=76
+
+
+
+ Default JSON
+
+ i=865
+ i=76
+
+
+
+ Default JSON
+
+ i=868
+ i=76
+
+
+
+ Default JSON
+
+ i=871
+ i=76
+
+
+
+ Default JSON
+
+ i=299
+ i=76
+
+
+
+ Default JSON
+
+ i=874
+ i=76
+
+
+
+ Default JSON
+
+ i=877
+ i=76
+
+
+
+ Default JSON
+
+ i=897
+ i=76
+
+
+
+ Default JSON
+
+ i=884
+ i=76
+
+
+
+ Default JSON
+
+ i=887
+ i=76
+
+
+
+ Default JSON
+
+ i=12171
+ i=76
+
+
+
+ Default JSON
+
+ i=12172
+ i=76
+
+
+
+ Default JSON
+
+ i=12079
+ i=76
+
+
+
+ Default JSON
+
+ i=12080
+ i=76
+
+
+
+ Default JSON
+
+ i=894
+ i=76
+
+
+
+ Default JSON
+
+ i=24033
+ i=76
+
+
+
+ Default JSON
+
+ i=891
+ i=76
+
+
+
diff --git a/schema/UANodeSet.xsd b/schema/UANodeSet.xsd
new file mode 100644
index 00000000..2245ceff
--- /dev/null
+++ b/schema/UANodeSet.xsd
@@ -0,0 +1,501 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/schema/uaNodeSet.go b/schema/uaNodeSet.go
new file mode 100644
index 00000000..0d55db88
--- /dev/null
+++ b/schema/uaNodeSet.go
@@ -0,0 +1,349 @@
+// Code generated by xgen. But it has been edited! see EDIT comments for what was changed and why.
+
+package schema
+
+import _ "embed"
+
+//go:embed Opc.Ua.NodeSet2.xml
+var OpcUaNodeSet2 []byte
+
+// UANodeSet ...
+type UANodeSet struct {
+ LastModifiedAttr string `xml:"LastModified,attr,omitempty"`
+ NamespaceUris *UriTable `xml:"NamespaceUris"`
+ ServerUris *UriTable `xml:"ServerUris"`
+ Models *ModelTable `xml:"Models"`
+ Aliases *AliasTable `xml:"Aliases"`
+ Extensions *ListOfExtensions `xml:"Extensions"`
+ UAObject []*UAObject `xml:"UAObject"`
+ UAVariable []*UAVariable `xml:"UAVariable"`
+ UAMethod []*UAMethod `xml:"UAMethod"`
+ UAView []*UAView `xml:"UAView"`
+ UAObjectType []*UAObjectType `xml:"UAObjectType"`
+ UAVariableType []*UAVariableType `xml:"UAVariableType"`
+ UADataType []*UADataType `xml:"UADataType"`
+ UAReferenceType []*UAReferenceType `xml:"UAReferenceType"`
+}
+
+// UANodeSetChanges ...
+type UANodeSetChanges struct {
+ LastModifiedAttr string `xml:"LastModified,attr,omitempty"`
+ TransactionIdAttr string `xml:"TransactionId,attr"`
+ AcceptAllOrNothingAttr bool `xml:"AcceptAllOrNothing,attr,omitempty"`
+ NamespaceUris *UriTable `xml:"NamespaceUris"`
+ ServerUris *UriTable `xml:"ServerUris"`
+ Aliases *AliasTable `xml:"Aliases"`
+ Extensions *ListOfExtensions `xml:"Extensions"`
+ NodesToAdd *NodesToAdd `xml:"NodesToAdd"`
+ ReferencesToAdd *ReferencesToChange `xml:"ReferencesToAdd"`
+ NodesToDelete *NodesToDelete `xml:"NodesToDelete"`
+ ReferencesToDelete *ReferencesToChange `xml:"ReferencesToDelete"`
+}
+
+// UANodeSetChangesStatus ...
+type UANodeSetChangesStatus struct {
+ LastModifiedAttr string `xml:"LastModified,attr,omitempty"`
+ TransactionIdAttr string `xml:"TransactionId,attr"`
+ NodesToAdd *NodeSetStatusList `xml:"NodesToAdd"`
+ ReferencesToAdd *NodeSetStatusList `xml:"ReferencesToAdd"`
+ NodesToDelete *NodeSetStatusList `xml:"NodesToDelete"`
+ ReferencesToDelete *NodeSetStatusList `xml:"ReferencesToDelete"`
+}
+
+// NodesToAdd ...
+type NodesToAdd struct {
+ UAObject []*UAObject `xml:"UAObject"`
+ UAVariable []*UAVariable `xml:"UAVariable"`
+ UAMethod []*UAMethod `xml:"UAMethod"`
+ UAView []*UAView `xml:"UAView"`
+ UAObjectType []*UAObjectType `xml:"UAObjectType"`
+ UAVariableType []*UAVariableType `xml:"UAVariableType"`
+ UADataType []*UADataType `xml:"UADataType"`
+ UAReferenceType []*UAReferenceType `xml:"UAReferenceType"`
+}
+
+// NodesToDelete ...
+type NodesToDelete struct {
+ Node []*NodeToDelete `xml:"Node"`
+}
+
+// NodeToDelete ...
+type NodeToDelete struct {
+ DeleteReverseReferencesAttr bool `xml:"DeleteReverseReferences,attr,omitempty"`
+ *NodeId
+}
+
+// ReferencesToChange ...
+type ReferencesToChange struct {
+ Reference []*ReferenceChange `xml:"Reference"`
+}
+
+// ReferenceChange ...
+type ReferenceChange struct {
+ SourceAttr string `xml:"Source,attr"`
+ ReferenceTypeAttr string `xml:"ReferenceType,attr"`
+ IsForwardAttr *bool `xml:"IsForward,attr,omitempty"` // EDIT: this was changed from a bool to a *bool because the default value if this attribute isn't present is true
+ *NodeId
+}
+
+// NodeSetStatus ...
+type NodeSetStatus struct {
+ CodeAttr uint32 `xml:"Code,attr,omitempty"`
+ Value string `xml:",chardata"`
+}
+
+// NodeSetStatusList ...
+type NodeSetStatusList struct {
+ Status []*NodeSetStatus `xml:"Status"`
+}
+
+// UriTable ...
+type UriTable struct {
+ Uri []string `xml:"Uri"`
+}
+
+// ModelTableEntry ...
+type ModelTableEntry struct {
+ ModelUriAttr string `xml:"ModelUri,attr"`
+ XmlSchemaUriAttr string `xml:"XmlSchemaUri,attr,omitempty"`
+ VersionAttr string `xml:"Version,attr,omitempty"`
+ PublicationDateAttr string `xml:"PublicationDate,attr,omitempty"`
+ AccessRestrictionsAttr uint16 `xml:"AccessRestrictions,attr,omitempty"`
+ RolePermissions *ListOfRolePermissions `xml:"RolePermissions"`
+ RequiredModel []*ModelTableEntry `xml:"RequiredModel"`
+}
+
+// ModelTable ...
+type ModelTable struct {
+ Model []*ModelTableEntry `xml:"Model"`
+}
+
+// NodeId ...
+type NodeId string
+
+// QualifiedName ...
+type QualifiedName string
+
+// NodeIdAlias ...
+type NodeIdAlias struct {
+ AliasAttr string `xml:"Alias,attr"`
+ Value string `xml:",chardata"`
+}
+
+// AliasTable ...
+type AliasTable struct {
+ Alias []*NodeIdAlias `xml:"Alias"`
+}
+
+// Locale ...
+type Locale string
+
+// LocalizedText ...
+type LocalizedText struct {
+ LocaleAttr string `xml:"Locale,attr,omitempty"`
+ Value string `xml:",chardata"`
+}
+
+// WriteMask ...
+type WriteMask uint32
+
+// EventNotifier ...
+type EventNotifier uint8
+
+// ValueRank ...
+type ValueRank int
+
+// AccessRestriction ...
+type AccessRestriction uint16
+
+// ArrayDimensions ...
+type ArrayDimensions string
+
+// SymbolicName ...
+type SymbolicName string
+
+// Duration ...
+type Duration float64
+
+// AccessLevel ...
+type AccessLevel uint32
+
+// Reference ...
+type Reference struct {
+ ReferenceTypeAttr string `xml:"ReferenceType,attr"`
+ IsForwardAttr *bool `xml:"IsForward,attr,omitempty"` // EDIT: this was changed from a bool to a *bool because the default value if this attribute isn't present is true
+ Value string `xml:",chardata"`
+}
+
+// ListOfReferences ...
+type ListOfReferences struct {
+ Reference []*Reference `xml:"Reference"`
+}
+
+// RolePermission ...
+type RolePermission struct {
+ PermissionsAttr uint32 `xml:"Permissions,attr,omitempty"`
+ Value string `xml:",chardata"`
+}
+
+// ListOfRolePermissions ...
+type ListOfRolePermissions struct {
+ RolePermission []*RolePermission `xml:"RolePermission"`
+}
+
+// Extension ...
+type Extension struct {
+}
+
+// ListOfExtensions ...
+type ListOfExtensions struct {
+ Extension []*Extension `xml:"Extension"`
+}
+
+// ReleaseStatus ...
+type ReleaseStatus string
+
+// UANode ...
+type UANode struct {
+ NodeIdAttr string `xml:"NodeId,attr"`
+ BrowseNameAttr string `xml:"BrowseName,attr"`
+ WriteMaskAttr uint32 `xml:"WriteMask,attr,omitempty"`
+ UserWriteMaskAttr uint32 `xml:"UserWriteMask,attr,omitempty"`
+ AccessRestrictionsAttr uint16 `xml:"AccessRestrictions,attr,omitempty"`
+ HasNoPermissionsAttr bool `xml:"HasNoPermissions,attr,omitempty"`
+ SymbolicNameAttr string `xml:"SymbolicName,attr,omitempty"`
+ ReleaseStatusAttr string `xml:"ReleaseStatus,attr,omitempty"`
+ DisplayName []*LocalizedText `xml:"DisplayName"`
+ Description []*LocalizedText `xml:"Description"`
+ Category []string `xml:"Category"`
+ Documentation string `xml:"Documentation"`
+ References *ListOfReferences `xml:"References"`
+ RolePermissions *ListOfRolePermissions `xml:"RolePermissions"`
+ Extensions *ListOfExtensions `xml:"Extensions"`
+}
+
+// UAInstance ...
+type UAInstance struct {
+ ParentNodeIdAttr string `xml:"ParentNodeId,attr,omitempty"`
+ *UANode
+}
+
+// UAObject ...
+type UAObject struct {
+ EventNotifierAttr uint8 `xml:"EventNotifier,attr,omitempty"`
+ *UAInstance
+}
+
+// Value ...
+type Value struct {
+}
+
+// UAVariable ...
+type UAVariable struct {
+ DataTypeAttr string `xml:"DataType,attr,omitempty"`
+ ValueRankAttr int `xml:"ValueRank,attr,omitempty"`
+ ArrayDimensionsAttr string `xml:"ArrayDimensions,attr,omitempty"`
+ AccessLevelAttr uint32 `xml:"AccessLevel,attr,omitempty"`
+ UserAccessLevelAttr uint32 `xml:"UserAccessLevel,attr,omitempty"`
+ MinimumSamplingIntervalAttr float64 `xml:"MinimumSamplingInterval,attr,omitempty"`
+ HistorizingAttr bool `xml:"Historizing,attr,omitempty"`
+ Value *Value `xml:"Value"`
+ Translation []*TranslationType `xml:"Translation"`
+ *UAInstance
+}
+
+// UAMethodArgument ...
+type UAMethodArgument struct {
+ Name string `xml:"Name"`
+ Description []*LocalizedText `xml:"Description"`
+}
+
+// UAMethod ...
+type UAMethod struct {
+ ExecutableAttr bool `xml:"Executable,attr,omitempty"`
+ UserExecutableAttr bool `xml:"UserExecutable,attr,omitempty"`
+ MethodDeclarationIdAttr string `xml:"MethodDeclarationId,attr,omitempty"`
+ ArgumentDescription []*UAMethodArgument `xml:"ArgumentDescription"`
+ *UAInstance
+}
+
+// TranslationType ...
+type TranslationType struct {
+ Text []*LocalizedText `xml:"Text"`
+ Field []*StructureTranslationType `xml:"Field"`
+}
+
+// StructureTranslationType ...
+type StructureTranslationType struct {
+ NameAttr string `xml:"Name,attr"`
+ Text []*LocalizedText `xml:"Text"`
+}
+
+// UAView ...
+type UAView struct {
+ ContainsNoLoopsAttr bool `xml:"ContainsNoLoops,attr,omitempty"`
+ EventNotifierAttr uint8 `xml:"EventNotifier,attr,omitempty"`
+ *UAInstance
+}
+
+// UAType ...
+type UAType struct {
+ IsAbstractAttr bool `xml:"IsAbstract,attr,omitempty"`
+ *UANode
+}
+
+// UAObjectType ...
+type UAObjectType struct {
+ *UAType
+}
+
+// UAVariableType ...
+type UAVariableType struct {
+ DataTypeAttr string `xml:"DataType,attr,omitempty"`
+ ValueRankAttr int `xml:"ValueRank,attr,omitempty"`
+ ArrayDimensionsAttr string `xml:"ArrayDimensions,attr,omitempty"`
+ Value *Value `xml:"Value"`
+ *UAType
+}
+
+// DataTypePurpose ...
+type DataTypePurpose string
+
+// UADataType ...
+type UADataType struct {
+ PurposeAttr string `xml:"Purpose,attr,omitempty"`
+ Definition *DataTypeDefinition `xml:"Definition"`
+ *UAType
+}
+
+// DataTypeDefinition ...
+type DataTypeDefinition struct {
+ NameAttr string `xml:"Name,attr"`
+ SymbolicNameAttr string `xml:"SymbolicName,attr,omitempty"`
+ IsUnionAttr bool `xml:"IsUnion,attr,omitempty"`
+ IsOptionSetAttr bool `xml:"IsOptionSet,attr,omitempty"`
+ BaseTypeAttr string `xml:"BaseType,attr,omitempty"`
+ Field []*DataTypeField `xml:"Field"`
+}
+
+// DataTypeField ...
+type DataTypeField struct {
+ NameAttr string `xml:"Name,attr"`
+ SymbolicNameAttr string `xml:"SymbolicName,attr,omitempty"`
+ DataTypeAttr string `xml:"DataType,attr,omitempty"`
+ ValueRankAttr int `xml:"ValueRank,attr,omitempty"`
+ ArrayDimensionsAttr string `xml:"ArrayDimensions,attr,omitempty"`
+ MaxStringLengthAttr uint32 `xml:"MaxStringLength,attr,omitempty"`
+ ValueAttr int `xml:"Value,attr,omitempty"`
+ IsOptionalAttr bool `xml:"IsOptional,attr,omitempty"`
+ AllowSubTypesAttr bool `xml:"AllowSubTypes,attr,omitempty"`
+ DisplayName []*LocalizedText `xml:"DisplayName"`
+ Description []*LocalizedText `xml:"Description"`
+}
+
+// UAReferenceType ...
+type UAReferenceType struct {
+ SymmetricAttr bool `xml:"Symmetric,attr,omitempty"`
+ InverseName []*LocalizedText `xml:"InverseName"`
+ *UAType
+}
diff --git a/schema/update-schema.sh b/schema/update-schema.sh
index cf765abb..30eeebca 100755
--- a/schema/update-schema.sh
+++ b/schema/update-schema.sh
@@ -8,3 +8,5 @@ script_dir=$(cd $(dirname $0); pwd)
wget -nv https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/Schema/NodeIds.csv -O "${script_dir}/NodeIds.csv"
wget -nv https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/Schema/StatusCode.csv -O "${script_dir}/StatusCode.csv"
wget -nv https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/Schema/Opc.Ua.Types.bsd -O "${script_dir}/Opc.Ua.Types.bsd"
+wget -nv https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/DotNet/Opc.Ua.PredefinedNodes.xml -O "${script_dir}/Opc.Ua.PredefinedNodes.xml"
+wget -nv https://raw.githubusercontent.com/OPCFoundation/UA-Nodeset/master/Schema/Opc.Ua.NodeSet2.xml -O "${script_dir}/Opc.Ua.NodeSet2.xml"
\ No newline at end of file
diff --git a/server/attribute_service.go b/server/attribute_service.go
new file mode 100644
index 00000000..68900707
--- /dev/null
+++ b/server/attribute_service.go
@@ -0,0 +1,120 @@
+package server
+
+import (
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// AttributeService implements the Attribute Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10
+type AttributeService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.2
+func (s *AttributeService) Read(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.ReadRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ results := make([]*ua.DataValue, len(req.NodesToRead))
+ for i, n := range req.NodesToRead {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("read: node=%s attr=%s", n.NodeID, n.AttributeID)
+ }
+
+ ns, err := s.srv.Namespace(int(n.NodeID.Namespace()))
+ if err != nil {
+ results[i] = &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBad,
+ }
+ continue
+ }
+ results[i] = ns.Attribute(n.NodeID, n.AttributeID)
+
+ }
+
+ response := &ua.ReadResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ Results: results,
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.3
+func (s *AttributeService) HistoryRead(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.HistoryReadRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.4
+func (s *AttributeService) Write(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+
+ req, err := safeReq[*ua.WriteRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ status := make([]ua.StatusCode, len(req.NodesToWrite))
+
+ for i := range req.NodesToWrite {
+ n := req.NodesToWrite[i]
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("write: node=%s attr=%v", n.NodeID, n.AttributeID)
+ }
+
+ ns, err := s.srv.Namespace(int(n.NodeID.Namespace()))
+ if err != nil {
+ status[i] = ua.StatusBadNodeNotInView
+ }
+
+ status[i] = ns.SetAttribute(n.NodeID, n.AttributeID, n.Value)
+
+ }
+ response := &ua.WriteResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: status,
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+
+ return response, nil
+
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.5
+func (s *AttributeService) HistoryUpdate(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.HistoryUpdateRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/attrs/attrs.go b/server/attrs/attrs.go
new file mode 100644
index 00000000..21eb01b8
--- /dev/null
+++ b/server/attrs/attrs.go
@@ -0,0 +1,27 @@
+package attrs
+
+import "github.com/gopcua/opcua/ua"
+
+func BrowseName(name string) *ua.QualifiedName {
+ return &ua.QualifiedName{Name: name}
+}
+
+func DisplayName(name, locale string) *ua.LocalizedText {
+ lt := &ua.LocalizedText{Text: name, Locale: locale}
+ lt.UpdateMask()
+ return lt
+}
+
+func InverseName(name, locale string) *ua.LocalizedText {
+ lt := &ua.LocalizedText{Text: name, Locale: locale}
+ lt.UpdateMask()
+ return lt
+}
+
+func NodeClass(n ua.NodeClass) uint32 {
+ return uint32(n)
+}
+
+func DataType(id *ua.NodeID) *ua.ExpandedNodeID {
+ return &ua.ExpandedNodeID{NodeID: id}
+}
diff --git a/server/channel_broker.go b/server/channel_broker.go
new file mode 100644
index 00000000..89d09f00
--- /dev/null
+++ b/server/channel_broker.go
@@ -0,0 +1,161 @@
+package server
+
+import (
+ "context"
+ "crypto/rsa"
+ "io"
+ mrand "math/rand"
+ "sync"
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uacp"
+ "github.com/gopcua/opcua/uasc"
+)
+
+type channelBroker struct {
+ endpoints map[string]*ua.EndpointDescription
+
+ wg sync.WaitGroup
+
+ // mu protects concurrent modification of s, secureChannelID, and secureTokenID
+ mu sync.RWMutex
+ // s is a slice of all SecureChannels watched by the channelBroker
+ s map[uint32]*uasc.SecureChannel
+
+ // Next Secure Channel ID to issue to a client
+ secureChannelID uint32
+
+ // Next Token ID to issue to a client
+ secureTokenID uint32
+
+ // msgChan is the common channel that all messages from all channels
+ // get funneled into for handling
+ msgChan chan *uasc.MessageBody
+ logger Logger
+}
+
+func newChannelBroker(logger Logger) *channelBroker {
+ rng := mrand.New(mrand.NewSource(time.Now().UnixNano()))
+ return &channelBroker{
+ endpoints: make(map[string]*ua.EndpointDescription),
+ s: make(map[uint32]*uasc.SecureChannel),
+ msgChan: make(chan *uasc.MessageBody),
+ secureChannelID: uint32(rng.Int31()),
+ secureTokenID: uint32(rng.Int31()),
+ logger: logger,
+ }
+}
+
+// RegisterConn connects a new UACP connection to the channel broker's list
+// of connections and starts waiting for data on it. Data is pushed onto the broker's
+// Response channel
+// Blocks until the context is done, the connection closes, or a critical error
+func (c *channelBroker) RegisterConn(ctx context.Context, conn *uacp.Conn, localCert []byte, localKey *rsa.PrivateKey) error {
+ cfg := defaultChannelConfig()
+ cfg.Certificate = localCert
+ cfg.LocalKey = localKey
+
+ c.mu.Lock()
+ c.secureChannelID++
+ c.secureTokenID++
+ secureChannelID := c.secureChannelID
+ secureTokenID := c.secureTokenID
+ sequenceNumber := uint32(mrand.Int31n(1023) + 1)
+ c.mu.Unlock()
+
+ errch := make(chan error, 1)
+ sc, err := uasc.NewServerSecureChannel(
+ "", // todo(fs): this is most likely wrong
+ conn,
+ cfg,
+ errch,
+ secureChannelID,
+ sequenceNumber,
+ secureTokenID,
+ )
+ if err != nil {
+ if c.logger != nil {
+ c.logger.Error("Error creating secure channel for new connection: %s", err)
+ }
+ return err
+ }
+
+ c.mu.Lock()
+ c.s[secureChannelID] = sc
+ if c.logger != nil {
+ c.logger.Info("Registered new channel (id %d) now at %d channels", secureChannelID, len(c.s))
+ }
+ c.mu.Unlock()
+ c.wg.Add(1)
+outer:
+ for {
+ select {
+ case <-ctx.Done():
+ // todo(fs): return error?
+ if c.logger != nil {
+ c.logger.Warn("Context done, closing Secure Channel %d", secureChannelID)
+ }
+ break outer
+
+ default:
+ msg := sc.Receive(ctx)
+ if msg.Err == io.EOF {
+ if c.logger != nil {
+ c.logger.Warn("Secure Channel %d closed", secureChannelID)
+ }
+ break outer
+ } else if msg.Err != nil {
+ if c.logger != nil {
+ c.logger.Error("Secure Channel %d error: %s", secureChannelID, msg.Err)
+ }
+ break outer
+ }
+ // todo(fs): honor ctx
+ c.msgChan <- msg
+ }
+ }
+
+ c.mu.Lock()
+ delete(c.s, secureChannelID)
+ c.mu.Unlock()
+ c.wg.Done()
+
+ return nil
+}
+
+// Close gracefully closes all secure channels
+// todo(fs): use ctx
+func (c *channelBroker) Close() error {
+ var err error
+ c.mu.Lock()
+ for _, s := range c.s {
+ s.Close()
+ }
+ c.mu.Unlock()
+
+ // Wait for all goroutines to finish or timeout
+ done := make(chan struct{})
+ go func() {
+ defer close(done)
+ c.wg.Wait()
+ }()
+ select {
+ case <-done:
+ case <-time.After(10 * time.Second): // todo(fs): magic number
+ if c.logger != nil {
+ c.logger.Error("CloseAll: timed out waiting for channels to exit")
+ }
+ }
+
+ return err
+}
+
+func (c *channelBroker) ReadMessage(ctx context.Context) *uasc.MessageBody {
+ select {
+ case <-ctx.Done():
+ return nil
+ case msg := <-c.msgChan:
+ return msg
+ }
+}
diff --git a/server/discovery_service.go b/server/discovery_service.go
new file mode 100644
index 00000000..7ba271a2
--- /dev/null
+++ b/server/discovery_service.go
@@ -0,0 +1,103 @@
+package server
+
+import (
+ "strings"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// DiscoveryService implements the Discovery Service Set
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4
+type DiscoveryService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4.2
+func (s *DiscoveryService) FindServers(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.FindServersRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ response := &ua.FindServersResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ Servers: []*ua.ApplicationDescription{
+ s.srv.Endpoints()[0].Server,
+ },
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4.3
+func (s *DiscoveryService) FindServersOnNetwork(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.FindServersOnNetworkRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4.4
+func (s *DiscoveryService) GetEndpoints(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.GetEndpointsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ requrl := strings.ToLower(req.EndpointURL)
+ matching_endpoints := make([]*ua.EndpointDescription, 0)
+ for i := range s.srv.endpoints {
+ ep := s.srv.endpoints[i]
+ if strings.ToLower(ep.EndpointURL) == requrl {
+ matching_endpoints = append(matching_endpoints, ep)
+ }
+ }
+
+ response := &ua.GetEndpointsResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ Endpoints: matching_endpoints,
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4.5
+func (s *DiscoveryService) RegisterServer(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.RegisterServerRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.4.6
+func (s *DiscoveryService) RegisterServer2(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.RegisterServer2Request](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/method_service.go b/server/method_service.go
new file mode 100644
index 00000000..ce41a42b
--- /dev/null
+++ b/server/method_service.go
@@ -0,0 +1,26 @@
+package server
+
+import (
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// MethodService implements the Method Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11
+type MethodService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2
+func (s *MethodService) Call(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CallRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/monitored_item_service.go b/server/monitored_item_service.go
new file mode 100644
index 00000000..a561148c
--- /dev/null
+++ b/server/monitored_item_service.go
@@ -0,0 +1,369 @@
+package server
+
+import (
+ "errors"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+ "golang.org/x/exp/slices"
+)
+
+// MonitoredItemService implements the MonitoredItem Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12
+type MonitoredItemService struct {
+ SubService *SubscriptionService
+ Mu sync.Mutex
+
+ // items tracked by ID
+ Items map[uint32]*MonitoredItem
+ // items tracked by node
+ Nodes map[string][]*MonitoredItem
+ // items tracked by subscription
+ Subs map[uint32][]*MonitoredItem
+
+ id uint32
+}
+
+// function to get rid of all references to a specific Monitored Item (by ID number)
+func (s *MonitoredItemService) DeleteMonitoredItem(id uint32) {
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+ item, ok := s.Items[id]
+ if !ok {
+ // id does not exist.
+ return
+ }
+
+ if item == nil || item.Req == nil || item.Req.ItemToMonitor == nil || item.Req.ItemToMonitor.NodeID == nil {
+ return
+ }
+ nodeid := item.Req.ItemToMonitor.NodeID.String()
+
+ if s == nil || s.Nodes == nil || s.Nodes[nodeid] == nil {
+ return
+ }
+
+ // delete the monitored item from all nodes
+ // was using slices.DeleteFunc but that is from a newer go version so we'll do it manually with /exp/slices
+ // we've got to go backwards because we're deleting from the slice as we go.
+ // I'm guessing this loop is less efficient than slices.DeleteFunc but it's what we've got.
+ delete(s.Items, id)
+ for i := len(s.Nodes[nodeid]) - 1; i >= 0; i-- {
+ n := s.Nodes[nodeid][i]
+ if n == nil {
+ continue
+ }
+ if n.ID == id {
+ slices.Delete(s.Nodes[nodeid], i, i+1)
+ }
+ }
+ //slices.DeleteFunc(s.Nodes[nodeid], func(i *MonitoredItem) bool { return i.ID == item.ID })
+ if len(s.Nodes[nodeid]) == 0 {
+ delete(s.Nodes, nodeid)
+ }
+
+ for i := len(s.Subs[item.Sub.ID]) - 1; i >= 0; i-- {
+ n := s.Subs[item.Sub.ID][i]
+ if n == nil {
+ continue
+ }
+ if n.ID == id {
+ slices.Delete(s.Subs[item.Sub.ID], i, i+1)
+ }
+ }
+ //slices.DeleteFunc(s.Subs[item.Sub.ID], func(i *MonitoredItem) bool { return i.ID == item.ID })
+ if len(s.Subs[item.Sub.ID]) == 0 {
+ delete(s.Subs, item.Sub.ID)
+ }
+}
+
+// function to delete all monitored items associated with a specific sub (as indicated by id number)
+func (s *MonitoredItemService) DeleteSub(id uint32) {
+ s.Mu.Lock()
+ items, ok := s.Subs[id]
+ delete(s.Subs, id)
+ s.Mu.Unlock()
+ if !ok {
+ return
+ }
+ for i := range items {
+ if items[i] != nil {
+ s.DeleteMonitoredItem(items[i].ID)
+ }
+ }
+}
+
+func (s *MonitoredItemService) ChangeNotification(n *ua.NodeID) {
+
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+ items, ok := s.Nodes[n.String()]
+
+ if !ok {
+ // this node isn't monitored - don't have to do anything.
+ return
+ }
+
+ ns, err := s.SubService.srv.Namespace(int(n.Namespace()))
+
+ for i := range items {
+ item := items[i]
+ if item == nil {
+ continue
+ }
+ val := new(ua.MonitoredItemNotification)
+ val.ClientHandle = item.Req.RequestedParameters.ClientHandle
+ if err != nil {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Warn("error getting namespace %d: %v", n.Namespace(), err)
+ }
+ val.Value = &ua.DataValue{}
+ val.Value.Status = ua.StatusBad
+ val.Value.EncodingMask |= ua.DataValueStatusCode
+ item.Sub.NotifyChannel <- val
+ continue
+ }
+ dv := ns.Attribute(n, item.Req.ItemToMonitor.AttributeID)
+ val.Value = dv
+ item.Sub.NotifyChannel <- val
+ }
+
+}
+
+func (s *MonitoredItemService) NextID() uint32 {
+ i := atomic.AddUint32(&s.id, 1)
+ if i == 0 {
+ i = atomic.AddUint32(&s.id, 1)
+ }
+ return i
+}
+
+type MonitoredItem struct {
+ ID uint32
+ Sub *Subscription
+ Req *ua.MonitoredItemCreateRequest
+
+ //TODO: use this
+ Mode ua.MonitoringMode
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.2
+func (s *MonitoredItemService) CreateMonitoredItems(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CreateMonitoredItemsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ count := len(req.ItemsToCreate)
+
+ res := make([]*ua.MonitoredItemCreateResult, count)
+
+ subID := req.SubscriptionID
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Creating monitored items for sub #%d", subID)
+ }
+ s.SubService.Mu.Lock()
+ sub, ok := s.SubService.Subs[subID]
+ s.SubService.Mu.Unlock()
+ if !ok {
+ return nil, errors.New("sub doesn't exist")
+ }
+
+ sess := s.SubService.srv.Session(req.RequestHeader)
+ if sub.Session.AuthTokenID.String() != sess.AuthTokenID.String() {
+ return nil, errors.New("not your subscription, bro")
+ }
+
+ for i := range req.ItemsToCreate {
+ itemreq := req.ItemsToCreate[i]
+ nodeid := itemreq.ItemToMonitor.NodeID
+ item := MonitoredItem{
+ ID: s.NextID(),
+ Sub: sub,
+ Req: itemreq,
+ }
+
+ // book keeping of the new item
+ s.Items[item.ID] = &item
+ list, ok := s.Nodes[item.Req.ItemToMonitor.NodeID.String()]
+ if !ok {
+ list = make([]*MonitoredItem, 0, 1)
+ }
+ s.Nodes[item.Req.ItemToMonitor.NodeID.String()] = append(list, &item)
+
+ list, ok = s.Subs[item.Sub.ID]
+ if !ok {
+ list = make([]*MonitoredItem, 0, 1)
+ }
+ s.Subs[item.Sub.ID] = append(list, &item)
+
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Adding monitored item '%s' to sub #%d as %d->%d",
+ nodeid.String(),
+ subID,
+ item.ID,
+ itemreq.RequestedParameters.ClientHandle)
+ }
+ res[i] = &ua.MonitoredItemCreateResult{
+ StatusCode: ua.StatusOK,
+ MonitoredItemID: item.ID,
+ RevisedSamplingInterval: sub.RevisedPublishingInterval,
+ RevisedQueueSize: 1,
+ FilterResult: ua.NewExtensionObject(nil),
+ }
+ // do an initial update for the nodeids in the background.
+ // These lock the mutex so we can't do them inline here.
+ // This will cause them to happen once we unlock.
+ go s.ChangeNotification(nodeid)
+
+ }
+
+ resp := &ua.CreateMonitoredItemsResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: res, // []StatusCode
+ DiagnosticInfos: []*ua.DiagnosticInfo{}, // []*DiagnosticInfo
+ }
+
+ return resp, nil
+
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.3
+func (s *MonitoredItemService) ModifyMonitoredItems(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.ModifyMonitoredItemsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.4
+func (s *MonitoredItemService) SetMonitoringMode(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.SetMonitoringModeRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ results := make([]ua.StatusCode, len(req.MonitoredItemIDs))
+
+ sess := s.SubService.srv.Session(req.RequestHeader)
+
+ for i := range req.MonitoredItemIDs {
+ id := req.MonitoredItemIDs[i]
+ item, ok := s.Items[id]
+
+ if item.Sub.Session.AuthTokenID.String() != sess.AuthTokenID.String() {
+ results[i] = ua.StatusBadSessionIDInvalid
+ }
+
+ if !ok {
+ results[i] = ua.StatusBadMonitoredItemIDInvalid
+ continue
+ }
+ item.Mode = req.MonitoringMode
+ results[i] = ua.StatusOK
+ }
+
+ return &ua.SetMonitoringModeResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: results,
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }, nil
+
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.5
+func (s *MonitoredItemService) SetTriggering(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.SetTriggeringRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.6
+func (s *MonitoredItemService) DeleteMonitoredItems(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.SubService.srv.cfg.logger != nil {
+ s.SubService.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.DeleteMonitoredItemsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ sess := s.SubService.srv.Session(req.RequestHeader)
+
+ results := make([]ua.StatusCode, len(req.MonitoredItemIDs))
+ for i := range req.MonitoredItemIDs {
+ id := req.MonitoredItemIDs[i]
+ item, ok := s.Items[id]
+ if !ok {
+ results[i] = ua.StatusBadMonitoredItemIDInvalid
+ }
+
+ if item.Sub.Session.AuthTokenID.String() != sess.AuthTokenID.String() {
+ results[i] = ua.StatusBadSessionIDInvalid
+ }
+
+ // this function gets the lock so we need to do it in the background so it can happen after our lock is released.
+ go s.DeleteMonitoredItem(id)
+ results[i] = ua.StatusOK
+ }
+
+ response := &ua.DeleteMonitoredItemsResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: results,
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+ return response, nil
+
+}
diff --git a/server/namespace_map.go b/server/namespace_map.go
new file mode 100644
index 00000000..dcbabf7c
--- /dev/null
+++ b/server/namespace_map.go
@@ -0,0 +1,415 @@
+package server
+
+import (
+ "sync"
+ "time"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/ua"
+)
+
+// This namespaces give a convenient way to have data mapped to the OPC server
+// without having to map your application data to the OCP-UA data abstraction
+//
+// It (currently) supports ints, floats, strings, and timestamps. No maps inside of maps and no arrays.
+//
+// To notify subscribers of changes, be sure to call ChangeNotification(key) after changing the value.
+// To be notified of changes from the opc-ua server to the map, receive on ExternalNotification channel
+type MapNamespace struct {
+ srv *Server
+ name string
+ Mu sync.RWMutex
+ Data map[string]any
+
+ // This can be used to be alerted when a value is changed from the opc server
+ ExternalNotification chan string
+
+ id uint16
+}
+
+// Get the value associated with key from the MapNamespace.
+// This function handles locking and getting the value.
+//
+// Returns nil if the value doesn't exist.
+func (s *MapNamespace) GetValue(key string) any {
+ s.Mu.RLock()
+ defer s.Mu.RUnlock()
+ return s.Data[key]
+}
+
+// update the value associated with a key and trigger the change notification
+// to the OPC server
+func (s *MapNamespace) SetValue(key string, value any) {
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+ s.Data[key] = value
+ s.ChangeNotification(key)
+}
+
+// This function is used to notify OPC UA subscribers if a key was changed without using the
+// SetValue() function
+func (s *MapNamespace) ChangeNotification(key string) {
+ s.srv.ChangeNotification(ua.NewStringNodeID(s.id, key))
+}
+
+func NewMapNamespace(srv *Server, name string) *MapNamespace {
+ mrw := MapNamespace{
+ srv: srv,
+ name: name,
+ Data: make(map[string]any),
+ ExternalNotification: make(chan string),
+ }
+ srv.AddNamespace(&mrw)
+ return &mrw
+}
+
+func (s *MapNamespace) ID() uint16 {
+ return s.id
+}
+func (ns *MapNamespace) SetID(id uint16) {
+ ns.id = id
+}
+
+func (ns *MapNamespace) Browse(bd *ua.BrowseDescription) *ua.BrowseResult {
+ ns.Mu.RLock()
+ defer ns.Mu.RUnlock()
+
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Debug("BrowseRequest: id=%s mask=%08b\n", bd.NodeID, bd.ResultMask)
+ ns.srv.cfg.logger.Debug("Browse req for %s", bd.NodeID.String())
+ }
+ if bd.NodeID.IntID() != id.RootFolder && bd.NodeID.IntID() != id.ObjectsFolder {
+ refs := make([]*ua.ReferenceDescription, 0)
+ return &ua.BrowseResult{
+ StatusCode: ua.StatusGood,
+ References: refs,
+ }
+ //return &ua.BrowseResult{StatusCode: ua.StatusBadNodeIDUnknown}
+ }
+
+ if bd.NodeID.IntID() == id.RootFolder {
+
+ refs := make([]*ua.ReferenceDescription, 1)
+ newid := ua.NewNumericNodeID(ns.id, id.ObjectsFolder)
+ expnewid := ua.NewNumericExpandedNodeID(ns.id, id.ObjectsFolder)
+ refs[0] = &ua.ReferenceDescription{
+ ReferenceTypeID: newid,
+ NodeID: expnewid,
+ BrowseName: &ua.QualifiedName{NamespaceIndex: ns.id, Name: "Objects"},
+ DisplayName: &ua.LocalizedText{EncodingMask: ua.LocalizedTextText, Text: "Objects"},
+ TypeDefinition: expnewid,
+ }
+
+ return &ua.BrowseResult{
+ StatusCode: ua.StatusGood,
+ References: refs,
+ }
+
+ }
+
+ refs := make([]*ua.ReferenceDescription, len(ns.Data))
+
+ keyid := 0
+ for k := range ns.Data {
+ key := k
+ refid := ua.NewNumericNodeID(0, id.HasComponent)
+ expnewid := ua.NewStringExpandedNodeID(ns.id, key)
+
+ refs[keyid] = &ua.ReferenceDescription{
+ ReferenceTypeID: refid,
+ IsForward: true,
+ NodeID: expnewid,
+ BrowseName: &ua.QualifiedName{NamespaceIndex: ns.ID(), Name: key},
+ DisplayName: &ua.LocalizedText{EncodingMask: ua.LocalizedTextText, Text: key},
+ NodeClass: ua.NodeClassVariable, // when support is added for nested maps, this will be NodeClassObject
+ TypeDefinition: expnewid,
+ }
+ keyid++
+ }
+
+ return &ua.BrowseResult{
+ StatusCode: ua.StatusGood,
+ References: refs,
+ }
+
+}
+
+func (ns *MapNamespace) Attribute(n *ua.NodeID, a ua.AttributeID) *ua.DataValue {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Debug("read: node=%s attr=%s", n.String(), a)
+ }
+
+ if n.IntID() != 0 {
+ // this is not one of our normal tags.
+ if n.IntID() != id.ObjectsFolder {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadNodeIDInvalid,
+ }
+ }
+
+ attrval, err := ns.Objects().Attribute(a)
+ if err != nil {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadAttributeIDInvalid,
+ }
+ }
+
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode | ua.DataValueValue,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusOK,
+ Value: attrval.Value,
+ }
+
+ }
+
+ dv := &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBad,
+ }
+
+ key := n.StringID()
+
+ var err error
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Debug("Read req for %s", key)
+ ns.srv.cfg.logger.Debug("'%s' Data at read: %v", ns.name, ns.Data)
+ }
+
+ // because our data is native go types we don't have any of the ua "attributes" attached to it.
+ // so depending on what attribute the client wants, we'll inspect the data and return the appropriate
+ // thing
+ switch a {
+
+ case ua.AttributeIDNodeID:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(n)
+
+ // we are going to use the node id directly to look it up from our data map.
+ case ua.AttributeIDValue:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ v, ok := ns.Data[key]
+ if !ok {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadNodeIDUnknown,
+ }
+ }
+ switch tv := v.(type) {
+ case string:
+ dv.Value = ua.MustVariant(tv)
+ case int:
+ // we can't use an int because it is of unspecified length. I'm going to use int64 so that we don't
+ // have to worry about cutting data off. probably.
+ dv.Value = ua.MustVariant(int64(tv))
+ case int32:
+ dv.Value = ua.MustVariant(tv)
+ case float32:
+ dv.Value = ua.MustVariant(tv)
+ case float64:
+ dv.Value = ua.MustVariant(tv)
+ case bool:
+ dv.Value = ua.MustVariant(tv)
+ default:
+ dv.Value = ua.MustVariant(tv)
+ }
+ // nothing in this namespace has an ID Description
+ case ua.AttributeIDDescription:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(&ua.LocalizedText{EncodingMask: ua.LocalizedTextText, Text: ""})
+
+ case ua.AttributeIDBrowseName:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(attrs.BrowseName(key))
+ case ua.AttributeIDDisplayName:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(attrs.DisplayName(key, key))
+ case ua.AttributeIDAccessLevel:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ level := byte(ua.AccessLevelExTypeCurrentWrite | ua.AccessLevelExTypeCurrentRead)
+ dv.Value = ua.MustVariant(level)
+
+ case ua.AttributeIDNodeClass:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(int32(ua.NodeClassVariable))
+ // nothing in this namespace has event notifiers
+ case ua.AttributeIDEventNotifier:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(int16(0))
+
+ // values are in section 5.1.2 of the standard.
+ // https://reference.opcfoundation.org/Core/Part6/v104/docs/5.1.2
+ case ua.AttributeIDDataType:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ v := ns.Data[key]
+ switch v.(type) {
+ case string:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 12))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ case int:
+ // we can't use an int because it is of unspecified length. I'm going to use int64 so that we don't
+ // have to worry about cutting data off.
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 6))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ case int32:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 6))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ case float32:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 10))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ case float64:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 11))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ case bool:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 1))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ default:
+ dv.Value, err = ua.NewVariant(ua.NewNumericNodeID(0, 24))
+ if err != nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("problem creating variant: %v", err)
+ }
+ }
+ }
+
+ // when we support arrays this will have to change.
+ case ua.AttributeIDValueRank:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant(int32(-1))
+
+ // when we support arrays this will have to change.
+ case ua.AttributeIDArrayDimensions:
+ dv.Status = ua.StatusOK
+ dv.EncodingMask |= ua.DataValueValue
+ dv.Value = ua.MustVariant([]uint32{})
+ default:
+ return dv
+ }
+
+ if dv.Value == nil {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Warn("bad dv value")
+ }
+ } else {
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Debug("Read '%s' = '%v' (%v)", key, dv.Value, dv.Value.Value())
+ }
+ }
+
+ return dv
+}
+
+func (s *MapNamespace) SetAttribute(node *ua.NodeID, attr ua.AttributeID, val *ua.DataValue) ua.StatusCode {
+
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("'%s' Data pre-write: %v", s.name, s.Data)
+ }
+
+ key := node.StringID()
+
+ // we would normally look up the node in our actual address space, but since that's dumb, we're just
+ // going to use the node id directly to look it up from our data map.
+ if attr == ua.AttributeIDValue {
+ v := val.Value.Value()
+ s.Data[key] = v
+ }
+
+ // notify the opc ua server the value has changed.
+ s.srv.ChangeNotification(node)
+ // notify the non-opc application the value has changed.
+ select {
+ case s.ExternalNotification <- key:
+ default:
+ }
+
+ return ua.StatusOK
+}
+
+func (ns *MapNamespace) Name() string {
+ return ns.name
+}
+func (ns *MapNamespace) AddNode(n *Node) *Node {
+ return n
+}
+func (ns *MapNamespace) Node(id *ua.NodeID) *Node {
+ return nil
+
+}
+func (ns *MapNamespace) Objects() *Node {
+ oid := ua.NewNumericNodeID(ns.ID(), id.ObjectsFolder)
+ //eoid := ua.NewNumericExpandedNodeID(ns.ID(), id.ObjectsFolder)
+ typedef := ua.NewNumericExpandedNodeID(0, id.ObjectsFolder)
+ //reftype := ua.NewTwoByteNodeID(uint8(id.HasComponent)) // folder
+ n := NewNode(
+ oid,
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(int32(ua.NodeClassObject)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName(ns.name)),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName(ns.name, ns.name)),
+ ua.AttributeIDDescription: ua.MustVariant(uint32(ua.NodeClassObject)),
+ ua.AttributeIDDataType: ua.MustVariant(typedef),
+ ua.AttributeIDEventNotifier: ua.MustVariant(int16(0)),
+ },
+ []*ua.ReferenceDescription{},
+ nil,
+ )
+ return n
+
+}
+func (ns *MapNamespace) Root() *Node {
+ n := NewNode(
+ ua.NewNumericNodeID(ns.ID(), id.RootFolder),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(int32(ua.NodeClassObject)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("Root")),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName("Root", "")),
+ },
+ []*ua.ReferenceDescription{},
+ nil,
+ )
+ return n
+
+}
diff --git a/server/namespace_node.go b/server/namespace_node.go
new file mode 100644
index 00000000..102613da
--- /dev/null
+++ b/server/namespace_node.go
@@ -0,0 +1,277 @@
+package server
+
+import (
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/ua"
+)
+
+// the base "node-centric" namespace
+type NodeNameSpace struct {
+ srv *Server
+ name string
+ mu sync.RWMutex
+ nodes []*Node
+ m map[string]*Node
+ id uint16
+ nodeid_sequence uint32
+
+ ExternalNotification chan *ua.NodeID
+}
+
+func (ns *NodeNameSpace) GetNextNodeID() uint32 {
+ if ns.nodeid_sequence < 100 {
+ ns.nodeid_sequence = 100
+ }
+ return atomic.AddUint32(&(ns.nodeid_sequence), 1)
+}
+
+func NewNodeNameSpace(srv *Server, name string) *NodeNameSpace {
+ ns := &NodeNameSpace{
+ srv: srv,
+ name: name,
+ nodes: make([]*Node, 0),
+ m: make(map[string]*Node),
+ ExternalNotification: make(chan *ua.NodeID),
+ }
+ srv.AddNamespace(ns)
+
+ //objectsNode := NewFolderNode(ua.NewNumericNodeID(ns.id, id.ObjectsFolder), ns.name)
+ oid := ua.NewNumericNodeID(ns.ID(), id.ObjectsFolder)
+ //eoid := ua.NewNumericExpandedNodeID(ns.ID(), id.ObjectsFolder)
+ typedef := ua.NewNumericExpandedNodeID(0, id.ObjectsFolder)
+ //reftype := ua.NewTwoByteNodeID(uint8(id.HasComponent)) // folder
+ objectsNode := NewNode(
+ oid,
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassObject)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName(ns.name)),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName(ns.name, ns.name)),
+ ua.AttributeIDDescription: ua.MustVariant(uint32(ua.NodeClassObject)),
+ ua.AttributeIDDataType: ua.MustVariant(typedef),
+ ua.AttributeIDEventNotifier: ua.MustVariant(int16(0)),
+ },
+ []*ua.ReferenceDescription{},
+ nil,
+ )
+
+ ns.AddNode(objectsNode)
+
+ return ns
+
+}
+
+// This function is to notify opc subscribers if a node was changed
+// without using the SetAttribute method
+func (s *NodeNameSpace) ChangeNotification(nodeid *ua.NodeID) {
+ s.srv.ChangeNotification(nodeid)
+}
+
+func (ns *NodeNameSpace) Name() string {
+ return ns.name
+}
+
+func NewNameSpace(name string) *NodeNameSpace {
+ return &NodeNameSpace{name: name, m: map[string]*Node{}}
+}
+
+func (as *NodeNameSpace) AddNode(n *Node) *Node {
+ as.mu.Lock()
+ defer as.mu.Unlock()
+
+ /*
+ nn := &Node{
+ id: n.id,
+ attr: maps.Clone(n.attr),
+ refs: slices.Clone(n.refs),
+ val: n.val,
+ ns: as,
+ }
+ */
+
+ // todo(fs): this is wrong since this leaves the old node in the list.
+ as.nodes = append(as.nodes, n)
+ k := n.ID().String()
+
+ as.m[k] = n
+ return n
+}
+
+func (as *NodeNameSpace) AddNewVariableNode(name string, value any) *Node {
+ n := NewVariableNode(ua.NewNumericNodeID(as.id, as.GetNextNodeID()), name, value)
+ as.AddNode(n)
+ return n
+}
+func (as *NodeNameSpace) AddNewVariableStringNode(name string, value any) *Node {
+ n := NewVariableNode(ua.NewStringNodeID(as.id, name), name, value)
+ as.AddNode(n)
+ return n
+}
+
+func (as *NodeNameSpace) Attribute(id *ua.NodeID, attr ua.AttributeID) *ua.DataValue {
+ n := as.Node(id)
+ if n == nil {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadNodeIDUnknown,
+ }
+ }
+ var a *AttrValue
+ var err error
+
+ switch attr {
+ case ua.AttributeIDNodeID:
+ a = &AttrValue{Value: ua.MustVariant(id)}
+ case ua.AttributeIDEventNotifier:
+ // TODO: this is a hack to force the EventNotifier to false for everything.
+ // If at some point someone or something needs to use this, this will have to go away and be
+ // fixed properly.
+ a = &AttrValue{Value: ua.MustVariant(byte(0))}
+ case ua.AttributeIDNodeClass:
+ a, err = n.Attribute(attr)
+ if err != nil {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadAttributeIDInvalid,
+ }
+ }
+ // TODO: we need int32 instead of uint32 here. this isn't the right place to fix it, but it is a bandaid
+ x, ok := a.Value.Value().(uint32)
+ if ok {
+ a.Value = ua.MustVariant(int32(x))
+ }
+ default:
+ a, err = n.Attribute(attr)
+ }
+
+ if err != nil {
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusBadAttributeIDInvalid,
+ }
+ }
+ return &ua.DataValue{
+ EncodingMask: ua.DataValueServerTimestamp | ua.DataValueStatusCode | ua.DataValueValue,
+ ServerTimestamp: time.Now(),
+ Status: ua.StatusOK,
+ Value: a.Value,
+ }
+}
+
+func (as *NodeNameSpace) Node(id *ua.NodeID) *Node {
+ as.mu.RLock()
+ defer as.mu.RUnlock()
+ if id == nil {
+ return nil
+ }
+ k := id.String()
+
+ n := as.m[k]
+ if n == nil {
+ return nil
+ }
+ return n
+}
+
+func (as *NodeNameSpace) Objects() *Node {
+ of := ua.NewNumericNodeID(as.id, id.ObjectsFolder)
+ return as.Node(of)
+}
+
+func (as *NodeNameSpace) Root() *Node {
+ return as.Node(RootFolder)
+}
+
+func (ns *NodeNameSpace) Browse(bd *ua.BrowseDescription) *ua.BrowseResult {
+ ns.mu.RLock()
+ defer ns.mu.RUnlock()
+
+ if ns.srv.cfg.logger != nil {
+ ns.srv.cfg.logger.Debug("BrowseRequest: id=%s mask=%08b\n", bd.NodeID, bd.ResultMask)
+ }
+
+ n := ns.Node(bd.NodeID)
+ if n == nil {
+ return &ua.BrowseResult{StatusCode: ua.StatusBadNodeIDUnknown}
+ }
+
+ refs := make([]*ua.ReferenceDescription, 0, len(n.refs))
+
+ for i := range n.refs {
+ r := n.refs[i]
+ // we can't have nils in these or the encoder will fail.
+ if r.NodeID == nil || r.BrowseName == nil || r.DisplayName == nil || r.TypeDefinition == nil {
+ continue
+ }
+
+ // see if this is a ref the client was interested in.
+ if !suitableRef(ns.srv, bd, r) {
+ continue
+ }
+
+ td := ns.srv.Node(r.NodeID.NodeID)
+
+ rf := &ua.ReferenceDescription{
+ ReferenceTypeID: r.ReferenceTypeID,
+ IsForward: r.IsForward,
+ NodeID: r.NodeID,
+ BrowseName: r.BrowseName,
+ DisplayName: r.DisplayName,
+ NodeClass: r.NodeClass,
+ TypeDefinition: td.DataType(),
+ }
+
+ if rf.ReferenceTypeID.IntID() == id.HasTypeDefinition && rf.IsForward {
+ // this one has to be first!
+ refs = append([]*ua.ReferenceDescription{rf}, refs...)
+ } else {
+ refs = append(refs, rf)
+ }
+ }
+
+ return &ua.BrowseResult{
+ StatusCode: ua.StatusGood,
+ References: refs,
+ }
+
+}
+
+func (ns *NodeNameSpace) ID() uint16 {
+ return ns.id
+}
+
+func (ns *NodeNameSpace) SetID(id uint16) {
+ ns.id = id
+}
+func (as *NodeNameSpace) SetAttribute(id *ua.NodeID, attr ua.AttributeID, val *ua.DataValue) ua.StatusCode {
+ n := as.Node(id)
+ if n == nil {
+ return ua.StatusBadNodeIDUnknown
+ }
+
+ access, err := n.Attribute(ua.AttributeIDUserAccessLevel)
+ if err == nil {
+ x := access.Value.Value()
+ _ = x
+ return ua.StatusBadUserAccessDenied
+ }
+
+ err = n.SetAttribute(attr, *val)
+ if err != nil {
+ return ua.StatusBadAttributeIDInvalid
+ }
+ as.srv.ChangeNotification(id)
+ select {
+ case as.ExternalNotification <- id:
+ default:
+ }
+
+ return ua.StatusOK
+}
diff --git a/server/namespaces.go b/server/namespaces.go
new file mode 100644
index 00000000..b56da946
--- /dev/null
+++ b/server/namespaces.go
@@ -0,0 +1,49 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package server
+
+import (
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/ua"
+)
+
+var (
+ ObjectsFolder = ua.NewNumericNodeID(0, id.ObjectsFolder)
+ RootFolder = ua.NewNumericNodeID(0, id.RootFolder)
+)
+
+// These are all the functions a namespace needs in order to provide nodes into the server
+type NameSpace interface {
+ // Name of the namespace. Per the standard it should be an URI.
+ Name() string
+
+ // This function should create a new node
+ AddNode(n *Node) *Node
+
+ // This function should lookup and return the node indicated by the Node ID
+ Node(id *ua.NodeID) *Node
+
+ // This function should return the base Objects node that contains other nodes
+ Objects() *Node
+
+ // This function should return the root node
+ Root() *Node
+
+ // This is the function to list all available nodes to the client that is browsing.
+ // The BrowseDescription has the root node of the browse and what kind of nodes the
+ // client is looking for. The Browse Result should have the list of matching nodes.
+ Browse(req *ua.BrowseDescription) *ua.BrowseResult
+
+ // ID and SetID are the namespace ID number of this namespace. When you add it to the server
+ // with srv.AddNamespace(xxx) it will set these for you.
+ ID() uint16
+ SetID(uint16)
+
+ // These are the functions for reading and writing arbitrary attributes. The most common
+ // is the value attribute, but many clients also read the datatype and description attributes.
+ // as well as attributes related to array bounds
+ Attribute(*ua.NodeID, ua.AttributeID) *ua.DataValue
+ SetAttribute(*ua.NodeID, ua.AttributeID, *ua.DataValue) ua.StatusCode
+}
diff --git a/server/node.go b/server/node.go
new file mode 100644
index 00000000..d32d45fc
--- /dev/null
+++ b/server/node.go
@@ -0,0 +1,310 @@
+package server
+
+import (
+ "log"
+ "time"
+
+ "golang.org/x/exp/maps"
+ "golang.org/x/exp/slices"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/server/refs"
+ "github.com/gopcua/opcua/ua"
+)
+
+type Attributes map[ua.AttributeID]*ua.Variant
+
+type References []*ua.ReferenceDescription
+
+type ValueFunc func() *ua.Variant
+
+type AttrValue struct {
+ Value *ua.Variant
+ SourceTimestamp time.Time
+}
+
+func NewAttrValue(v *ua.Variant) *AttrValue {
+ return &AttrValue{Value: v}
+}
+
+type Node struct {
+ id *ua.NodeID
+ attr Attributes
+ refs References
+ val ValueFunc
+
+ ns NameSpace
+}
+
+func NewNode(id *ua.NodeID, attr Attributes, refs References, val ValueFunc) *Node {
+ n := &Node{id, attr, refs, val, nil}
+ n.sanitize()
+ return n
+}
+
+func NewFolderNode(nodeID *ua.NodeID, name string) *Node {
+ reftype := ua.NewTwoByteNodeID(uint8(id.HasComponent)) // folder
+ eoid := ua.NewNumericExpandedNodeID(nodeID.Namespace(), id.ObjectsFolder)
+ typedef := ua.NewNumericExpandedNodeID(0, id.ObjectsFolder)
+ n := NewNode(
+ nodeID,
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassObject)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName(name)),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName(name, name)),
+ ua.AttributeIDDescription: ua.MustVariant(ua.NodeClassObject),
+ ua.AttributeIDEventNotifier: ua.MustVariant(int16(0)),
+ },
+ []*ua.ReferenceDescription{{
+ ReferenceTypeID: reftype,
+ IsForward: true,
+ NodeID: eoid,
+ BrowseName: &ua.QualifiedName{NamespaceIndex: nodeID.Namespace(), Name: name},
+ DisplayName: &ua.LocalizedText{EncodingMask: ua.LocalizedTextText, Text: name},
+ NodeClass: ua.NodeClassObject,
+ TypeDefinition: typedef,
+ }},
+ nil,
+ )
+ return n
+}
+
+func NewVariableNode(nodeID *ua.NodeID, name string, value any) *Node {
+ //eoid := ua.NewNumericExpandedNodeID(nodeID.Namespace(), nodeID.IntID())
+ vf, ok := value.(func() *ua.Variant)
+ if !ok {
+ typedef := ua.NewNumericExpandedNodeID(0, id.VariableNode)
+ n := NewNode(
+ nodeID,
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName(name)),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName(name, name)),
+ ua.AttributeIDDescription: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ ua.AttributeIDDataType: ua.MustVariant(typedef),
+ ua.AttributeIDEventNotifier: ua.MustVariant(int16(0)),
+ },
+ []*ua.ReferenceDescription{},
+ func() *ua.Variant {
+ return ua.MustVariant(value)
+ },
+ )
+ return n
+ }
+ typedef := ua.NewNumericExpandedNodeID(0, id.VariableNode)
+ n := NewNode(
+ nodeID,
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName(name)),
+ ua.AttributeIDDisplayName: ua.MustVariant(attrs.DisplayName(name, name)),
+ ua.AttributeIDDescription: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ ua.AttributeIDDataType: ua.MustVariant(typedef),
+ ua.AttributeIDEventNotifier: ua.MustVariant(int16(0)),
+ },
+ []*ua.ReferenceDescription{},
+ vf,
+ )
+ return n
+}
+
+func (n *Node) sanitize() {
+ if n.attr == nil {
+ n.attr = Attributes{}
+ }
+ if n.attr[ua.AttributeIDBrowseName] == nil {
+ n.SetBrowseName("")
+ }
+ if n.attr[ua.AttributeIDDisplayName] == nil {
+ n.SetDisplayName("", "")
+ }
+ if n.DisplayName().Text == "" {
+ n.SetDisplayName(n.BrowseName().Name, "")
+ }
+ if n.attr[ua.AttributeIDDescription] == nil {
+ n.SetDescription("", "")
+ }
+ //if n.attr[ua.AttributeIDDataType] == nil {
+ //n.attr[ua.AttributeIDDataType] = ua.MustVariant(ua.NewTwoByteExpandedNodeID(0))
+ //}
+}
+
+func (n *Node) ID() *ua.NodeID {
+ return n.id
+}
+
+func (n *Node) Value() *ua.Variant {
+ if n.val == nil {
+ return nil
+ }
+ return n.val()
+}
+
+func (n *Node) Attribute(id ua.AttributeID) (*AttrValue, error) {
+ switch {
+ case id == ua.AttributeIDValue:
+ if n.val != nil {
+ return NewAttrValue(n.val()), nil
+ }
+ return nil, ua.StatusBadAttributeIDInvalid
+ case n.attr == nil:
+ return nil, ua.StatusBadAttributeIDInvalid
+ default:
+ if v := n.attr[id]; v != nil {
+ return NewAttrValue(v), nil
+ }
+ return nil, ua.StatusBadAttributeIDInvalid
+ }
+}
+func (n *Node) SetAttribute(id ua.AttributeID, val ua.DataValue) error {
+ switch {
+ case id == ua.AttributeIDValue:
+
+ // TODO: probably need to do some type checking here.
+ // And some permissions tests
+ n.val = func() *ua.Variant {
+ return ua.MustVariant(val.Value.Value())
+ }
+
+ return nil
+ default:
+ n.attr[id] = val.Value
+ }
+ return ua.StatusBadNodeAttributesInvalid
+}
+
+func (n *Node) BrowseName() *ua.QualifiedName {
+ v := n.attr[ua.AttributeIDBrowseName]
+ if v == nil || v.Value() == nil {
+ return &ua.QualifiedName{}
+ }
+ return v.Value().(*ua.QualifiedName)
+}
+
+func (n *Node) SetBrowseName(s string) {
+ n.attr[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{Name: s})
+}
+
+func (n *Node) DisplayName() *ua.LocalizedText {
+ v := n.attr[ua.AttributeIDDisplayName]
+ if v == nil || v.Value() == nil {
+ return &ua.LocalizedText{}
+ }
+ val := v.Value().(*ua.LocalizedText)
+ val.UpdateMask()
+ return val
+}
+
+func (n *Node) SetDisplayName(text, locale string) {
+ lt := &ua.LocalizedText{Text: text, Locale: locale}
+ lt.UpdateMask()
+ n.attr[ua.AttributeIDDisplayName] = ua.MustVariant(lt)
+}
+
+func (n *Node) Description() *ua.LocalizedText {
+ v := n.attr[ua.AttributeIDDescription]
+ if v == nil || v.Value() == nil {
+ return &ua.LocalizedText{}
+ }
+ return v.Value().(*ua.LocalizedText)
+}
+
+func (n *Node) SetDescription(text, locale string) {
+ n.attr[ua.AttributeIDDescription] = ua.MustVariant(&ua.LocalizedText{Text: text, Locale: locale})
+}
+
+func (n *Node) DataType() *ua.ExpandedNodeID {
+ if n == nil {
+ log.Printf("n was nil!")
+ return ua.NewTwoByteExpandedNodeID(0)
+ }
+ v := n.attr[ua.AttributeIDDataType]
+ if v == nil || v.Value() == nil {
+ // if we have a type definition, return that?
+ for i := range n.refs {
+ r := n.refs[i]
+ if r.ReferenceTypeID == nil {
+ log.Printf("reftypeid was nil!")
+ }
+ if r.ReferenceTypeID.IntID() == id.HasTypeDefinition && r.IsForward {
+ return r.NodeID
+ }
+ }
+ return ua.NewTwoByteExpandedNodeID(0)
+ }
+ return v.Value().(*ua.ExpandedNodeID)
+}
+
+func (n *Node) SetNodeClass(nc ua.NodeClass) {
+ n.attr[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(nc))
+}
+
+func (n *Node) NodeClass() ua.NodeClass {
+ v := n.attr[ua.AttributeIDNodeClass]
+ if v == nil || v.Value() == nil {
+ return ua.NodeClassObject
+ }
+ vi32, ok := v.Value().(int32)
+ if !ok {
+ vui32, ok := v.Value().(uint32)
+ if !ok {
+ return ua.NodeClassObject
+ }
+ return ua.NodeClass(int32(vui32))
+ }
+ return ua.NodeClass(vi32)
+
+}
+
+func (n *Node) AddObject(o *Node) *Node {
+ nn := &Node{
+ id: o.id,
+ attr: maps.Clone(o.attr),
+ refs: slices.Clone(o.refs),
+ }
+ if n.attr == nil {
+ n.attr = Attributes{}
+ }
+ nn.SetNodeClass(ua.NodeClassObject)
+ n.refs = append(n.refs, refs.Organizes(nn.id, nn.BrowseName().Name, nn.DisplayName().Text, nn.DataType()))
+ return n.ns.AddNode(nn)
+}
+
+func (n *Node) AddVariable(o *Node) *Node {
+ nn := &Node{
+ id: o.id,
+ attr: maps.Clone(o.attr),
+ refs: slices.Clone(o.refs),
+ val: o.val,
+ }
+ if n.attr == nil {
+ n.attr = Attributes{}
+ }
+ nn.SetNodeClass(ua.NodeClassVariable)
+ n.refs = append(n.refs, refs.Organizes(nn.id, nn.BrowseName().Name, nn.DisplayName().Text, nn.DataType()))
+ return nn
+}
+
+type RefType int
+
+const (
+ RefTypeIDHasComponent = id.HasComponent
+ RefTypeIDOrganizes = id.Organizes
+)
+
+func (n *Node) AddRef(o *Node, rt RefType, forward bool) {
+ //eoid := ua.NewNumericExpandedNodeID(o.ns.ID(), o.)
+ eoid := ua.NewExpandedNodeID(o.ID(), "", 0)
+
+ ref := ua.ReferenceDescription{
+ ReferenceTypeID: ua.NewNumericNodeID(0, uint32(rt)), //o.refs[0].ReferenceTypeID,
+ IsForward: forward,
+ NodeID: eoid,
+ BrowseName: o.BrowseName(),
+ DisplayName: o.DisplayName(),
+ NodeClass: o.NodeClass(),
+ TypeDefinition: o.DataType(),
+ }
+ n.refs = append(n.refs, &ref)
+}
diff --git a/server/node_mgmt_service.go b/server/node_mgmt_service.go
new file mode 100644
index 00000000..084f5e4f
--- /dev/null
+++ b/server/node_mgmt_service.go
@@ -0,0 +1,65 @@
+package server
+
+import (
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// NodeManagementService implements the Node Management Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7
+type NodeManagementService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2
+func (s *NodeManagementService) AddNodes(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.AddNodesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.3
+func (s *NodeManagementService) AddReferences(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.AddReferencesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.4
+func (s *NodeManagementService) DeleteNodes(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.DeleteNodesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.5
+func (s *NodeManagementService) DeleteReferences(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.DeleteReferencesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/nodeset2_import.go b/server/nodeset2_import.go
new file mode 100644
index 00000000..56ebb319
--- /dev/null
+++ b/server/nodeset2_import.go
@@ -0,0 +1,558 @@
+package server
+
+import (
+ "fmt"
+ "log"
+
+ "github.com/gopcua/opcua/schema"
+ "github.com/gopcua/opcua/ua"
+)
+
+func (srv *Server) ImportNodeSet(nodes *schema.UANodeSet) error {
+ err := srv.namespacesImportNodeSet(nodes)
+ if err != nil {
+ return fmt.Errorf("problem creating namespaces: %w", err)
+ }
+ err = srv.nodesImportNodeSet(nodes)
+ if err != nil {
+ return fmt.Errorf("problem creating nodes: %w", err)
+ }
+ srv.refsImportNodeSet(nodes)
+ if err != nil {
+ return fmt.Errorf("problem creating references: %w", err)
+ }
+ return nil
+}
+
+func (srv *Server) namespacesImportNodeSet(nodes *schema.UANodeSet) error {
+ if nodes.NamespaceUris == nil {
+ return nil
+ }
+ for i := range nodes.NamespaceUris.Uri {
+ _ = NewNodeNameSpace(srv, nodes.NamespaceUris.Uri[i])
+ }
+ return nil
+}
+
+func (srv *Server) nodesImportNodeSet(nodes *schema.UANodeSet) error {
+
+ log.Printf("New Node Set: %s", nodes.LastModifiedAttr)
+
+ reftypes := make(map[string]*schema.UAReferenceType)
+
+ // the first thing we have to do is go thorugh and define all the nodes.
+ // set up the reference types.
+ for i := range nodes.UAReferenceType {
+ rt := nodes.UAReferenceType[i]
+ reftypes[rt.BrowseNameAttr] = rt // sometimes they use browse name
+ reftypes[rt.NodeIdAttr] = rt // sometimes they use node id
+
+ nid := ua.MustParseNodeID(rt.NodeIdAttr)
+
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(rt.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: rt.BrowseNameAttr})
+ attrs[ua.AttributeIDIsAbstract] = ua.MustVariant(rt.IsAbstractAttr)
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(rt.UserWriteMaskAttr)
+ attrs[ua.AttributeIDSymmetric] = ua.MustVariant(rt.SymmetricAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(rt.WriteMaskAttr)
+ if len(rt.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(rt.DisplayName[0].Value))
+ }
+ if len(rt.InverseName) > 0 {
+ attrs[ua.AttributeIDInverseName] = ua.MustVariant(ua.NewLocalizedText(rt.InverseName[0].Value))
+ } else {
+ attrs[ua.AttributeIDInverseName] = ua.MustVariant(ua.NewLocalizedText(""))
+ }
+ if len(rt.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(rt.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassReferenceType))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the data types.
+ for i := range nodes.UADataType {
+ dt := nodes.UADataType[i]
+ nid := ua.MustParseNodeID(dt.NodeIdAttr)
+
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(dt.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: dt.BrowseNameAttr})
+ attrs[ua.AttributeIDIsAbstract] = ua.MustVariant(dt.IsAbstractAttr)
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(dt.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(dt.WriteMaskAttr)
+ if len(dt.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(dt.DisplayName[0].Value))
+ }
+ if len(dt.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(dt.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassDataType))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the object types
+ for i := range nodes.UAObjectType {
+ ot := nodes.UAObjectType[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(ot.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: ot.BrowseNameAttr})
+ attrs[ua.AttributeIDIsAbstract] = ua.MustVariant(ot.IsAbstractAttr)
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(ot.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(ot.WriteMaskAttr)
+ if len(ot.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(ot.DisplayName[0].Value))
+ }
+ if len(ot.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(ot.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassObjectType))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the variable Types
+ for i := range nodes.UAVariableType {
+ ot := nodes.UAVariableType[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(ot.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: ot.BrowseNameAttr})
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(ot.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(ot.WriteMaskAttr)
+ if len(ot.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(ot.DisplayName[0].Value))
+ }
+ if len(ot.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(ot.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassVariableType))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the variables
+ for i := range nodes.UAVariable {
+ ot := nodes.UAVariable[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(ot.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: ot.BrowseNameAttr})
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(ot.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(ot.WriteMaskAttr)
+ if len(ot.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(ot.DisplayName[0].Value))
+ }
+ if len(ot.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(ot.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassVariable))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the methods
+ for i := range nodes.UAMethod {
+ ot := nodes.UAMethod[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(ot.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: ot.BrowseNameAttr})
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(ot.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(ot.WriteMaskAttr)
+ if len(ot.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(ot.DisplayName[0].Value))
+ }
+ if len(ot.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(ot.Description[0].Value))
+ }
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassMethod))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ // set up the objects
+ for i := range nodes.UAObject {
+ ot := nodes.UAObject[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ if ot.NodeIdAttr == "i=85" {
+ log.Printf("doing objects.")
+ }
+ var attrs Attributes = make(map[ua.AttributeID]*ua.Variant)
+ attrs[ua.AttributeIDAccessRestrictions] = ua.MustVariant(ot.AccessRestrictionsAttr)
+ attrs[ua.AttributeIDBrowseName] = ua.MustVariant(&ua.QualifiedName{NamespaceIndex: nid.Namespace(), Name: ot.BrowseNameAttr})
+ attrs[ua.AttributeIDUserWriteMask] = ua.MustVariant(ot.UserWriteMaskAttr)
+ attrs[ua.AttributeIDWriteMask] = ua.MustVariant(ot.WriteMaskAttr)
+ if len(ot.DisplayName) > 0 {
+ attrs[ua.AttributeIDDisplayName] = ua.MustVariant(ua.NewLocalizedText(ot.DisplayName[0].Value))
+ }
+ if len(ot.Description) > 0 {
+ attrs[ua.AttributeIDDescription] = ua.MustVariant(ua.NewLocalizedText(ot.Description[0].Value))
+ }
+
+ attrs[ua.AttributeIDNodeClass] = ua.MustVariant(uint32(ua.NodeClassObject))
+
+ var refs References = make([]*ua.ReferenceDescription, 0)
+
+ n := NewNode(nid, attrs, refs, nil)
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // This namespace doesn't exist.
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("Could Not Find Namespace %d", nid.Namespace())
+ }
+ return err
+ }
+ ns.AddNode(n)
+ }
+
+ return nil
+}
+func (srv *Server) refsImportNodeSet(nodes *schema.UANodeSet) error {
+
+ log.Printf("New Node Set: %s", nodes.LastModifiedAttr)
+
+ failures := 0
+ reftypes := make(map[string]*schema.UAReferenceType)
+ for i := range nodes.UAReferenceType {
+ rt := nodes.UAReferenceType[i]
+ reftypes[rt.BrowseNameAttr] = rt // sometimes they use browse name
+ reftypes[rt.NodeIdAttr] = rt // sometimes they use node id
+ }
+
+ aliases := make(map[string]string)
+ for i := range nodes.Aliases.Alias {
+ alias := nodes.Aliases.Alias[i]
+ aliases[alias.AliasAttr] = alias.Value
+ }
+
+ // any of the aliases could be reference types, so we have to check them all and add them to the reftypes map
+ // if they are.
+ for alias := range aliases {
+ aliasID := ua.MustParseNodeID(aliases[alias])
+ refnode := srv.Node(aliasID)
+ if refnode == nil {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Warn("error loading alias %s", alias)
+ }
+ continue
+ }
+ rt := new(schema.UAReferenceType)
+ rt.UAType = new(schema.UAType)
+ rt.UAType.UANode = new(schema.UANode)
+ rt.BrowseNameAttr = alias
+ rt.NodeIdAttr = aliases[alias]
+ isSymmetricValue, err := refnode.Attribute(ua.AttributeIDSymmetric)
+ if err == nil {
+ rt.SymmetricAttr = isSymmetricValue.Value.Value().(bool)
+ }
+
+ _, ok := reftypes[alias]
+ if !ok {
+ reftypes[alias] = rt // sometimes they use browse name
+ } else {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Error("Duplicate reference type %s", alias)
+ }
+ continue
+ }
+
+ _, ok = reftypes[aliases[alias]]
+ if !ok {
+ reftypes[aliases[alias]] = rt // sometimes they use node id
+ } else {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Error("Duplicate reference type %s", aliases[alias])
+ }
+ continue
+ }
+
+ }
+
+ // the first thing we have to do is go thorugh and define all the nodes.
+ // set up the reference types.
+ for i := range nodes.UAReferenceType {
+ rt := nodes.UAReferenceType[i]
+
+ nodeid := ua.MustParseNodeID(rt.NodeIdAttr)
+ node := srv.Node(nodeid)
+ if node == nil {
+ log.Printf("Error loading node %s", rt.NodeIdAttr)
+ }
+
+ for rid := range rt.References.Reference {
+ ref := rt.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, rt.BrowseNameAttr)
+ failures++
+ continue
+ }
+
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+ }
+
+ }
+
+ // set up the data types.
+ for i := range nodes.UADataType {
+ dt := nodes.UADataType[i]
+ nid := ua.MustParseNodeID(dt.NodeIdAttr)
+ node := srv.Node(nid)
+
+ if nid.IntID() == 24 {
+ log.Printf("doing BaseDataType")
+ }
+
+ for rid := range dt.References.Reference {
+ ref := dt.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, dt.BrowseNameAttr)
+ failures++
+ continue
+ }
+
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+
+ }
+
+ }
+
+ // set up the object types
+ for i := range nodes.UAObjectType {
+ ot := nodes.UAObjectType[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ node := srv.Node(nid)
+
+ for rid := range ot.References.Reference {
+ ref := ot.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, ot.BrowseNameAttr)
+ failures++
+ continue
+ }
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+ }
+ }
+
+ // set up the variable Types
+ for i := range nodes.UAVariableType {
+ ot := nodes.UAVariableType[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ node := srv.Node(nid)
+
+ for rid := range ot.References.Reference {
+ ref := ot.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, ot.BrowseNameAttr)
+ failures++
+ continue
+ }
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+
+ }
+
+ }
+
+ // set up the variables
+ for i := range nodes.UAVariable {
+ ot := nodes.UAVariable[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ node := srv.Node(nid)
+
+ for rid := range ot.References.Reference {
+ ref := ot.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, ot.BrowseNameAttr)
+ failures++
+ continue
+ }
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+
+ }
+
+ }
+
+ // set up the methods
+ for i := range nodes.UAMethod {
+ ot := nodes.UAMethod[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ node := srv.Node(nid)
+
+ for rid := range ot.References.Reference {
+ ref := ot.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, ot.BrowseNameAttr)
+ failures++
+ continue
+ }
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+ }
+
+ }
+
+ // set up the objects
+ for i := range nodes.UAObject {
+ ot := nodes.UAObject[i]
+ nid := ua.MustParseNodeID(ot.NodeIdAttr)
+ node := srv.Node(nid)
+ if ot.NodeIdAttr == "i=84" {
+ log.Printf("doing root.")
+ }
+
+ for rid := range ot.References.Reference {
+ ref := ot.References.Reference[rid]
+ refnodeid := ua.MustParseNodeID(ref.Value)
+ n := srv.Node(refnodeid)
+ if n == nil {
+ log.Printf("can't find node %s as %s reference to %s", ref.Value, ref.ReferenceTypeAttr, ot.BrowseNameAttr)
+ failures++
+ continue
+ }
+ if ref.IsForwardAttr == nil {
+ v := true
+ ref.IsForwardAttr = &v
+ }
+ reftypeid := ua.MustParseNodeID(reftypes[ref.ReferenceTypeAttr].NodeIdAttr)
+ node.AddRef(n, RefType(reftypeid.IntID()), *ref.IsForwardAttr)
+ if !reftypes[ref.ReferenceTypeAttr].SymmetricAttr {
+ n.AddRef(node, RefType(reftypeid.IntID()), !*ref.IsForwardAttr)
+ }
+
+ }
+
+ }
+
+ return nil
+}
diff --git a/server/query_service.go b/server/query_service.go
new file mode 100644
index 00000000..d4d9712c
--- /dev/null
+++ b/server/query_service.go
@@ -0,0 +1,39 @@
+package server
+
+import (
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// QueryService implements the Query Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9
+type QueryService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.3
+func (s *QueryService) QueryFirst(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.QueryFirstRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.9.4
+func (s *QueryService) QueryNext(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.QueryNextRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/refs/refs.go b/server/refs/refs.go
new file mode 100644
index 00000000..d7931bc4
--- /dev/null
+++ b/server/refs/refs.go
@@ -0,0 +1,28 @@
+package refs
+
+import (
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/ua"
+)
+
+// HasSubtype returns a HasSubtype reference.
+func HasSubtype(typeID *ua.ExpandedNodeID) *ua.ReferenceDescription {
+ return &ua.ReferenceDescription{
+ ReferenceTypeID: ua.NewNumericNodeID(0, id.HasSubtype),
+ TypeDefinition: typeID,
+ IsForward: true,
+ }
+}
+
+// HasSubtype returns a HasSubtype reference.
+func Organizes(nid *ua.NodeID, browseName, displayName string, typeID *ua.ExpandedNodeID) *ua.ReferenceDescription {
+ return &ua.ReferenceDescription{
+ ReferenceTypeID: ua.NewNumericNodeID(0, id.Organizes),
+ NodeID: &ua.ExpandedNodeID{NodeID: nid},
+ BrowseName: attrs.BrowseName(browseName),
+ DisplayName: attrs.DisplayName(displayName, ""),
+ TypeDefinition: typeID,
+ IsForward: true,
+ }
+}
diff --git a/server/server.go b/server/server.go
new file mode 100644
index 00000000..c7e569d1
--- /dev/null
+++ b/server/server.go
@@ -0,0 +1,447 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package server
+
+import (
+ "context"
+ "crypto/rsa"
+ "encoding/xml"
+ "fmt"
+ "log"
+ "net"
+ "strings"
+ "sync"
+ "time"
+
+ "golang.org/x/exp/slices"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/schema"
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uacp"
+ "github.com/gopcua/opcua/uapolicy"
+)
+
+//go:generate go run ../cmd/predefined-nodes/main.go
+
+const defaultListenAddr = "opc.tcp://localhost:0"
+
+// Server is a high-level OPC-UA Server
+type Server struct {
+ url string
+
+ cfg *serverConfig
+
+ mu sync.Mutex
+ status *ua.ServerStatusDataType
+ endpoints []*ua.EndpointDescription
+ namespaces []NameSpace
+
+ l *uacp.Listener
+ cb *channelBroker
+ sb *sessionBroker
+
+ // nextSecureChannelID uint32
+
+ // Service Handlers are methods called to respond to service requests from clients
+ // All services should have a method here.
+ handlers map[uint16]Handler
+
+ SubscriptionService *SubscriptionService
+ MonitoredItemService *MonitoredItemService
+}
+
+type serverConfig struct {
+ privateKey *rsa.PrivateKey
+ certificate []byte
+ applicationURI string
+
+ endpoints []string
+
+ applicationName string
+ manufacturerName string
+ productName string
+ softwareVersion string
+
+ enabledSec []security
+ enabledAuth []authMode
+
+ cap ServerCapabilities
+
+ logger Logger
+}
+
+var capabilities = ServerCapabilities{
+ OperationalLimits: OperationalLimits{
+ MaxNodesPerRead: 32,
+ },
+}
+
+type ServerCapabilities struct {
+ OperationalLimits OperationalLimits
+}
+
+type OperationalLimits struct {
+ MaxNodesPerRead uint32
+}
+
+type authMode struct {
+ tokenType ua.UserTokenType
+}
+
+type security struct {
+ secPolicy string
+ secMode ua.MessageSecurityMode
+}
+
+// New returns an initialized OPC-UA server.
+// Call Start() afterwards to begin listening and serving connections
+func New(opts ...Option) *Server {
+ cfg := &serverConfig{
+ cap: capabilities,
+ applicationName: "GOPCUA", // override with the ServerName option
+ manufacturerName: "The gopcua Team", // override with the ManufacturerName option
+ productName: "gopcua OPC/UA Server", // override with the ProductName option
+ softwareVersion: "0.0.0-dev", // override with the SoftwareVersion option
+ }
+ for _, opt := range opts {
+ opt(cfg)
+ }
+ if len(cfg.endpoints) == 0 {
+ log.Fatalf("No endpoints defined!")
+ }
+ s := &Server{
+ url: cfg.endpoints[0],
+ cfg: cfg,
+ cb: newChannelBroker(cfg.logger),
+ sb: newSessionBroker(cfg.logger),
+ handlers: make(map[uint16]Handler),
+ namespaces: []NameSpace{
+ NewNameSpace("http://opcfoundation.org/UA/"), // ns:0
+ },
+ status: &ua.ServerStatusDataType{
+ StartTime: time.Now(),
+ CurrentTime: time.Now(),
+ State: ua.ServerStateSuspended,
+ BuildInfo: &ua.BuildInfo{
+ ProductURI: "https://github.com/gopcua/opcua",
+ ManufacturerName: cfg.manufacturerName,
+ ProductName: cfg.productName,
+ SoftwareVersion: "0.0.0-dev",
+ BuildNumber: "",
+ BuildDate: time.Time{},
+ },
+ SecondsTillShutdown: 0,
+ ShutdownReason: &ua.LocalizedText{},
+ },
+ }
+
+ // init server address space
+ //for _, n := range PredefinedNodes() {
+ //s.namespaces[0].AddNode(n)
+ //}
+
+ var nodes schema.UANodeSet
+ xml.Unmarshal(schema.OpcUaNodeSet2, &nodes)
+
+ n0, ok := s.namespaces[0].(*NodeNameSpace)
+ n0.srv = s
+ if !ok {
+ log.Fatalf("not a node namespace!")
+ }
+ s.ImportNodeSet(&nodes)
+
+ s.namespaces[0].AddNode(CurrentTimeNode())
+ s.namespaces[0].AddNode(NamespacesNode(s))
+ for _, n := range ServerStatusNodes(s, s.namespaces[0].Node(ua.NewNumericNodeID(0, id.Server))) {
+ s.namespaces[0].AddNode(n)
+ }
+ for _, n := range ServerCapabilitiesNodes(s) {
+ s.namespaces[0].AddNode(n)
+ }
+
+ return s
+}
+
+func (s *Server) Session(hdr *ua.RequestHeader) *session {
+ return s.sb.Session(hdr.AuthenticationToken)
+}
+
+func (s *Server) Namespace(id int) (NameSpace, error) {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if id < len(s.namespaces) {
+ return s.namespaces[id], nil
+ }
+ return nil, fmt.Errorf("namespace %d not found", id)
+}
+
+func (s *Server) Namespaces() []NameSpace {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ return s.namespaces
+}
+
+func (s *Server) ChangeNotification(n *ua.NodeID) {
+ s.MonitoredItemService.ChangeNotification(n)
+}
+
+// for now, the address space of the server is split up into namespaces.
+// this means that when we look up a node, we need to ask the specific namespace
+// it belongs to for it instead of just a general lookup by ID
+//
+// the refRoot and refObjects flags can be used to automatically add a reference to the new Namespaces
+// root or objects object respectively to the namespace 0
+func (s *Server) AddNamespace(ns NameSpace) int {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ if idx := slices.Index(s.namespaces, ns); idx >= 0 {
+ return idx
+ }
+ ns.SetID(uint16(len(s.namespaces)))
+ s.namespaces = append(s.namespaces, ns)
+
+ if ns.ID() == 0 {
+ return 0
+
+ }
+
+ return len(s.namespaces) - 1
+}
+
+func (s *Server) Endpoints() []*ua.EndpointDescription {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ return slices.Clone(s.endpoints)
+}
+
+// Status returns the current server status.
+func (s *Server) Status() *ua.ServerStatusDataType {
+ status := new(ua.ServerStatusDataType)
+ s.mu.Lock()
+ *status = *s.status
+ s.mu.Unlock()
+ status.CurrentTime = time.Now()
+ return status
+}
+
+// URLs returns opc endpoint that the server is listening on.
+func (s *Server) URLs() []string {
+ return s.cfg.endpoints
+}
+
+// Start initializes and starts a Server listening on addr
+// If s was not initialized with NewServer(), addr defaults
+// to localhost:0 to let the OS select a random port
+func (s *Server) Start(ctx context.Context) error {
+ var err error
+
+ // Register all service handlers
+ s.initHandlers()
+
+ if s.url == "" {
+ s.url = defaultListenAddr
+ }
+ s.l, err = uacp.Listen(s.url, nil)
+ if err != nil {
+ return err
+ }
+ log.Printf("Started listening on %v", s.URLs())
+
+ s.initEndpoints()
+ s.setServerState(ua.ServerStateRunning)
+
+ if s.cb == nil {
+ s.cb = newChannelBroker(s.cfg.logger)
+ }
+
+ go s.acceptAndRegister(ctx, s.l)
+ go s.monitorConnections(ctx)
+
+ return nil
+}
+
+func (s *Server) setServerState(state ua.ServerState) {
+ s.mu.Lock()
+ s.status.State = state
+ s.mu.Unlock()
+}
+
+// Close gracefully shuts the server down by closing all open connections,
+// and stops listening on all endpoints
+func (s *Server) Close() error {
+ s.setServerState(ua.ServerStateShutdown)
+
+ // Close the listener, preventing new sessions from starting
+ if s.l != nil {
+ s.l.Close()
+ }
+
+ // Shut down all secure channels and UACP connections
+ return s.cb.Close()
+}
+
+type temporary interface {
+ Temporary() bool
+}
+
+func (s *Server) acceptAndRegister(ctx context.Context, l *uacp.Listener) {
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ c, err := l.Accept(ctx)
+ if err != nil {
+ switch x := err.(type) {
+ case *net.OpError:
+ // socket closed. Cannot recover from this.
+ if s.cfg.logger != nil {
+ s.cfg.logger.Error("socket closed: %s", err)
+ }
+ return
+ case temporary:
+ if x.Temporary() {
+ continue
+ }
+ default:
+ if s.cfg.logger != nil {
+ s.cfg.logger.Error("error accepting connection: %s", err)
+ }
+ continue
+ }
+ }
+
+ go s.cb.RegisterConn(ctx, c, s.cfg.certificate, s.cfg.privateKey)
+ if s.cfg.logger != nil {
+ s.cfg.logger.Info("registered connection: %s", c.RemoteAddr())
+ }
+ }
+ }
+}
+
+// monitorConnections reads messages off the secure channel connection and
+// sends the message to the service handler
+func (s *Server) monitorConnections(ctx context.Context) {
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ msg := s.cb.ReadMessage(ctx)
+ if msg.Err != nil {
+ if s.cfg.logger != nil {
+ s.cfg.logger.Error("monitorConnections: Error received: %s\n", msg.Err)
+ }
+ continue // todo(fs): close SC???
+ }
+ if resp := msg.Response(); resp != nil {
+ if s.cfg.logger != nil {
+ s.cfg.logger.Error("monitorConnections: Server received response %T ???", resp)
+ }
+ continue // todo(fs): close SC???
+ }
+ if s.cfg.logger != nil {
+ s.cfg.logger.Debug("monitorConnections: Received Message: %T", msg.Request())
+ }
+ s.cb.mu.RLock()
+ sc, ok := s.cb.s[msg.SecureChannelID]
+ s.cb.mu.RUnlock()
+ if !ok {
+ // if the secure channel ID is 0, this is probably a open secure channel request.
+ if s.cfg.logger != nil && msg.SecureChannelID != 0 {
+ s.cfg.logger.Error("monitorConnections: Unknown SecureChannel: %d", msg.SecureChannelID)
+ }
+ continue
+ }
+
+ // todo: should this be delegated to another goroutine in case handling this hangs?
+ s.handleService(ctx, sc, msg.RequestID, msg.Request())
+ }
+ }
+}
+
+// initEndpoints builds the endpoint list from the server's configuration
+func (s *Server) initEndpoints() {
+ var endpoints []*ua.EndpointDescription
+ for _, sec := range s.cfg.enabledSec {
+ for _, url := range s.cfg.endpoints {
+ secLevel := uapolicy.SecurityLevel(sec.secPolicy, sec.secMode)
+
+ ep := &ua.EndpointDescription{
+ EndpointURL: url, // todo: be able to listen on multiple adapters
+ SecurityLevel: secLevel,
+ Server: &ua.ApplicationDescription{
+ ApplicationURI: s.cfg.applicationURI,
+ ProductURI: "urn:github.com:gopcua:server",
+ ApplicationName: &ua.LocalizedText{
+ EncodingMask: ua.LocalizedTextText,
+ Text: s.cfg.applicationName,
+ },
+ ApplicationType: ua.ApplicationTypeServer,
+ GatewayServerURI: "",
+ DiscoveryProfileURI: "",
+ DiscoveryURLs: s.URLs(),
+ },
+ ServerCertificate: s.cfg.certificate,
+ SecurityMode: sec.secMode,
+ SecurityPolicyURI: sec.secPolicy,
+ TransportProfileURI: "http://opcfoundation.org/UA-Profile/Transport/uatcp-uasc-uabinary",
+ }
+
+ for _, auth := range s.cfg.enabledAuth {
+ for _, authSec := range s.cfg.enabledSec {
+ if auth.tokenType == ua.UserTokenTypeAnonymous {
+ authSec.secPolicy = "http://opcfoundation.org/UA/SecurityPolicy#None"
+ }
+
+ if auth.tokenType != ua.UserTokenTypeAnonymous && authSec.secPolicy == "http://opcfoundation.org/UA/SecurityPolicy#None" {
+ continue
+ }
+
+ policyID := strings.ToLower(
+ strings.TrimPrefix(auth.tokenType.String(), "UserTokenType") +
+ "_" +
+ strings.TrimPrefix(authSec.secPolicy, "http://opcfoundation.org/UA/SecurityPolicy#"),
+ )
+
+ var dup bool
+ for _, uit := range ep.UserIdentityTokens {
+ if uit.PolicyID == policyID {
+ dup = true
+ break
+ }
+ }
+
+ if dup {
+ continue
+ }
+ tok := &ua.UserTokenPolicy{
+ PolicyID: policyID,
+ TokenType: auth.tokenType,
+ IssuedTokenType: "",
+ IssuerEndpointURL: "",
+ SecurityPolicyURI: authSec.secPolicy,
+ }
+
+ ep.UserIdentityTokens = append(ep.UserIdentityTokens, tok)
+ }
+ }
+ endpoints = append(endpoints, ep)
+ }
+ }
+
+ s.mu.Lock()
+ s.endpoints = endpoints
+ s.mu.Unlock()
+}
+
+func (s *Server) Node(nid *ua.NodeID) *Node {
+ ns := int(nid.Namespace())
+ if ns < len(s.namespaces) {
+ return s.namespaces[ns].Node(nid)
+ }
+ return nil
+}
diff --git a/server/server_config.go b/server/server_config.go
new file mode 100644
index 00000000..bf5c6587
--- /dev/null
+++ b/server/server_config.go
@@ -0,0 +1,168 @@
+// Copyright 2018-2019 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package server
+
+import (
+ "crypto/rsa"
+ "crypto/x509"
+ "fmt"
+ "log"
+ "strings"
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uapolicy"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// Option is an option function type to modify the configuration.
+type Option func(*serverConfig)
+
+// PrivateKey sets the RSA private key in the secure channel configuration.
+func PrivateKey(key *rsa.PrivateKey) Option {
+ return func(s *serverConfig) {
+ s.privateKey = key
+ }
+}
+
+// EndPointHostName adds an additional endpoint to the server based on the host name
+func EndPoint(host string, port int) Option {
+ return func(s *serverConfig) {
+ if s.endpoints == nil {
+ s.endpoints = make([]string, 0)
+ }
+ ep := fmt.Sprintf("opc.tcp://%s:%d", host, port)
+ s.endpoints = append(s.endpoints, ep)
+ }
+}
+
+// Certificate sets the client X509 certificate in the secure channel configuration
+// and also detects and sets the ApplicationURI from the URI within the certificate
+func Certificate(cert []byte) Option {
+ return func(s *serverConfig) {
+ s.certificate = cert
+
+ // Extract the application URI from the certificate.
+ var appURI string
+ x509cert, err := x509.ParseCertificate(cert)
+ if err == nil && len(x509cert.URIs) > 0 {
+ appURI = x509cert.URIs[0].String()
+ }
+
+ s.applicationURI = appURI
+ }
+}
+
+// EnableSecurity registers a new endpoint security mode to the server.
+// This will also register the security policy against each enabled auth mode
+func EnableSecurity(secPolicy string, secMode ua.MessageSecurityMode) Option {
+ return func(s *serverConfig) {
+ if !strings.HasPrefix(secPolicy, "http://opcfoundation.org/UA/SecurityPolicy#") {
+ secPolicy = "http://opcfoundation.org/UA/SecurityPolicy#" + secPolicy
+ }
+
+ var ok bool
+ ss := uapolicy.SupportedPolicies()
+ for _, sp := range ss {
+ if sp == secPolicy {
+ ok = true
+ break
+ }
+ }
+ if !ok {
+ log.Printf("error adding endpoint to config, %s is unsupported", secPolicy)
+ return
+ }
+
+ for _, sec := range s.enabledSec {
+ if sec.secPolicy == secPolicy && sec.secMode == secMode {
+ if s.logger != nil {
+ s.logger.Warn("security policy already exists, skipping")
+ }
+ return
+ }
+ }
+
+ sec := security{
+ secPolicy: secPolicy,
+ secMode: secMode,
+ }
+
+ s.enabledSec = append(s.enabledSec, sec)
+ }
+}
+
+// EnableAuthMode registers a new user authentication mode to the server.
+// All AuthModes except Anonymous require encryption by default, so EnableSecurity()
+// must also be called with at least one non-"None" SecurityPolicy
+func EnableAuthMode(tokenType ua.UserTokenType) Option {
+ return func(s *serverConfig) {
+
+ for _, a := range s.enabledAuth {
+ if a.tokenType == tokenType {
+ if s.logger != nil {
+ s.logger.Warn("auth mode already registered, skipping")
+ }
+ return
+ }
+ }
+
+ a := authMode{
+ tokenType: tokenType,
+ }
+
+ s.enabledAuth = append(s.enabledAuth, a)
+ }
+}
+
+func defaultChannelConfig() *uasc.Config {
+ return &uasc.Config{
+ SecurityPolicyURI: ua.SecurityPolicyURINone,
+ SecurityMode: ua.MessageSecurityModeNone,
+ Lifetime: uint32(time.Hour / time.Millisecond),
+ }
+}
+
+func ServerName(name string) Option {
+ return func(s *serverConfig) {
+ s.applicationName = name
+ }
+}
+
+func ManufacturerName(name string) Option {
+ return func(s *serverConfig) {
+ s.manufacturerName = name
+ }
+}
+
+func ProductName(name string) Option {
+ return func(s *serverConfig) {
+ s.productName = name
+ }
+}
+
+func SoftwareVersion(name string) Option {
+ return func(s *serverConfig) {
+ s.softwareVersion = name
+ }
+}
+
+// this logger interface is used to allow the user to provide their own logger
+// it is compatible with slog.Logger
+type Logger interface {
+ Debug(msg string, args ...any)
+ Error(msg string, args ...any)
+ Info(msg string, args ...any)
+ Warn(msg string, args ...any)
+}
+
+// the server.SetLogger takes a server.Logger interface. This interface is met by
+// slog.Logger{}. A simple wrapper could be made for other loggers if they don't already
+// meet the interface.
+func SetLogger(logger Logger) Option {
+ return func(s *serverConfig) {
+ s.logger = logger
+ }
+}
diff --git a/server/server_nodes.go b/server/server_nodes.go
new file mode 100644
index 00000000..77d0a238
--- /dev/null
+++ b/server/server_nodes.go
@@ -0,0 +1,242 @@
+package server
+
+import (
+ "time"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server/attrs"
+ "github.com/gopcua/opcua/ua"
+)
+
+func CurrentTimeNode() *Node {
+ return NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_CurrentTime),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("CurrentTime")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(time.Now()) },
+ )
+}
+
+func NamespacesNode(s *Server) *Node {
+ return NewNode(
+ ua.NewNumericNodeID(0, id.Server_NamespaceArray),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("Namespaces")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassObject)),
+ },
+ nil,
+ func() *ua.Variant {
+ n := s.Namespaces()
+ ns := make([]string, len(n))
+ for i := range ns {
+ ns[i] = n[i].Name()
+ }
+ return ua.MustVariant(ns)
+ },
+ )
+}
+
+func ServerCapabilitiesNodes(s *Server) []*Node {
+ var nodes []*Node
+ nodes = append(nodes, NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerCapabilities_OperationLimits_MaxNodesPerRead),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("MaxNodesPerRead")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.cap.OperationalLimits.MaxNodesPerRead) },
+ ))
+ return nodes
+}
+
+func RootNode() *Node {
+ return NewNode(
+ ua.NewNumericNodeID(0, id.RootFolder),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDNodeClass: ua.MustVariant(attrs.NodeClass(ua.NodeClassObject)),
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("Root")),
+ ua.AttributeIDDataType: ua.MustVariant(ua.NewNumericExpandedNodeID(0, id.DataTypesFolder)),
+ },
+ nil,
+ nil,
+ )
+}
+
+func ServerStatusNodes(s *Server, ServerNode *Node) []*Node {
+
+ /*
+ Server_ServerArray = 2254
+ Server_NamespaceArray = 2255
+ Server_ServerStatus_BuildInfo = 2260
+ Server_ServerStatus_BuildInfo_ProductName = 2261
+ Server_ServerStatus_BuildInfo_ProductURI = 2262
+ Server_ServerStatus_BuildInfo_ManufacturerName = 2263
+ Server_ServerStatus_BuildInfo_SoftwareVersion = 2264
+ Server_ServerStatus_BuildInfo_BuildNumber = 2265
+ Server_ServerStatus_BuildInfo_BuildDate = 2266
+ Server_ServiceLevel = 2267
+ Server_ServerCapabilities = 2268
+ Server_ServerCapabilities_ServerProfileArray = 2269
+ Server_ServerCapabilities_LocaleIDArray = 2271
+ Server_ServerCapabilities_MinSupportedSampleRate = 2272
+ Server_ServerDiagnostics = 2274
+ Server_ServerDiagnostics_ServerDiagnosticsSummary = 2275
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_ServerViewCount = 2276
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_CurrentSessionCount = 2277
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_CumulatedSessionCount = 2278
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_SecurityRejectedSessionCount = 2279
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_SessionTimeoutCount = 2281
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_SessionAbortCount = 2282
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_PublishingIntervalCount = 2284
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_CurrentSubscriptionCount = 2285
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_CumulatedSubscriptionCount = 2286
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_SecurityRejectedRequestsCount = 2287
+ Server_ServerDiagnostics_ServerDiagnosticsSummary_RejectedRequestsCount = 2288
+ Server_ServerDiagnostics_SamplingIntervalDiagnosticsArray = 2289
+ Server_ServerDiagnostics_SubscriptionDiagnosticsArray = 2290
+ Server_ServerDiagnostics_EnabledFlag = 2294
+ Server_VendorServerInfo = 2295
+ Server_ServerRedundancy = 2296
+ */
+
+ sStatus := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("Status")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(ua.NewExtensionObject(s.Status())) },
+ )
+
+ sState := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_State),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("ServerStatus")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(int32(s.Status().State)) },
+ )
+ mName := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_ManufacturerName),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("ProductName")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.manufacturerName) },
+ )
+ pName := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_ProductName),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("ProductName")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.productName) },
+ )
+
+ pURI := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_ProductURI),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("ProductURI")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.applicationURI) },
+ )
+
+ bInfo := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("BuildInfo")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant("") },
+ )
+ sVersion := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_SoftwareVersion),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("SoftwareVersion")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.softwareVersion) },
+ )
+
+ bNumber := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_BuildNumber),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("BuildNumber")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(s.cfg.softwareVersion) },
+ )
+
+ ts := time.Now()
+ bDate := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_BuildInfo_BuildDate),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("BuildDate")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(ts) },
+ )
+ timeStart := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_StartTime),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("StartTime")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(ts) },
+ )
+ timeCurrent := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_CurrentTime),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("CurrentTime")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(time.Now()) },
+ )
+
+ //Server_ServerStatus_SecondsTillShutdown = 2992
+ //Server_ServerStatus_ShutdownReason = 2993
+ sTillShutdown := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_SecondsTillShutdown),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("SecondsTillShutdown")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(int32(0)) },
+ )
+ sReason := NewNode(
+ ua.NewNumericNodeID(0, id.Server_ServerStatus_ShutdownReason),
+ map[ua.AttributeID]*ua.Variant{
+ ua.AttributeIDBrowseName: ua.MustVariant(attrs.BrowseName("ShutdownReason")),
+ ua.AttributeIDNodeClass: ua.MustVariant(uint32(ua.NodeClassVariable)),
+ },
+ nil,
+ func() *ua.Variant { return ua.MustVariant(int32(0)) },
+ )
+
+ nodes := []*Node{sState, mName, pName, pURI, sVersion, bNumber, bDate, timeStart, timeCurrent, bInfo, sTillShutdown, sReason}
+ for i := range nodes {
+ sStatus.AddRef(nodes[i], id.HasComponent, true)
+ }
+ ServerNode.AddRef(sStatus, id.HasComponent, true)
+
+ nodes = append(nodes, sStatus)
+
+ return nodes
+}
diff --git a/server/service_handlers.go b/server/service_handlers.go
new file mode 100644
index 00000000..0b4708e4
--- /dev/null
+++ b/server/service_handlers.go
@@ -0,0 +1,183 @@
+// Copyright 2018-2019 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package server
+
+import (
+ "context"
+ "time"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+type Handler func(*uasc.SecureChannel, ua.Request, uint32) (ua.Response, error)
+
+func (s *Server) initHandlers() {
+ // s.registerHandlerFunc(id.ServiceFault_Encoding_DefaultBinary, handleServiceFault)
+
+ discovery := &DiscoveryService{s}
+ s.RegisterHandler(id.FindServersRequest_Encoding_DefaultBinary, discovery.FindServers)
+ s.RegisterHandler(id.FindServersOnNetworkRequest_Encoding_DefaultBinary, discovery.FindServersOnNetwork)
+ s.RegisterHandler(id.GetEndpointsRequest_Encoding_DefaultBinary, discovery.GetEndpoints)
+ s.RegisterHandler(id.RegisterServerRequest_Encoding_DefaultBinary, discovery.RegisterServer)
+ s.RegisterHandler(id.RegisterServer2Request_Encoding_DefaultBinary, discovery.RegisterServer2)
+
+ // SecureChannel service (handled in the uasc stack)
+ // s.registerHandlerFunc(id.OpenSecureChannelRequest_Encoding_DefaultBinary, handleOpenSecureChannel)
+ // s.registerHandlerFunc(id.CloseSecureChannelRequest_Encoding_DefaultBinary, handleCloseSecureChannel)
+
+ session := &SessionService{s}
+ s.RegisterHandler(id.CreateSessionRequest_Encoding_DefaultBinary, session.CreateSession)
+ s.RegisterHandler(id.ActivateSessionRequest_Encoding_DefaultBinary, session.ActivateSession)
+ s.RegisterHandler(id.CloseSessionRequest_Encoding_DefaultBinary, session.CloseSession)
+ s.RegisterHandler(id.CancelRequest_Encoding_DefaultBinary, session.Cancel)
+
+ node := &NodeManagementService{s}
+ s.RegisterHandler(id.AddNodesRequest_Encoding_DefaultBinary, node.AddNodes)
+ s.RegisterHandler(id.AddReferencesRequest_Encoding_DefaultBinary, node.AddReferences)
+ s.RegisterHandler(id.DeleteNodesRequest_Encoding_DefaultBinary, node.DeleteNodes)
+ s.RegisterHandler(id.DeleteReferencesRequest_Encoding_DefaultBinary, node.DeleteReferences)
+
+ view := &ViewService{s}
+ s.RegisterHandler(id.BrowseRequest_Encoding_DefaultBinary, view.Browse)
+ s.RegisterHandler(id.BrowseNextRequest_Encoding_DefaultBinary, view.BrowseNext)
+ s.RegisterHandler(id.TranslateBrowsePathsToNodeIDsRequest_Encoding_DefaultBinary, view.TranslateBrowsePathsToNodeIDs)
+ s.RegisterHandler(id.RegisterNodesRequest_Encoding_DefaultBinary, view.RegisterNodes)
+ s.RegisterHandler(id.UnregisterNodesRequest_Encoding_DefaultBinary, view.UnregisterNodes)
+
+ query := &QueryService{s}
+ s.RegisterHandler(id.QueryFirstRequest_Encoding_DefaultBinary, query.QueryFirst)
+ s.RegisterHandler(id.QueryNextRequest_Encoding_DefaultBinary, query.QueryNext)
+
+ attr := &AttributeService{s}
+ s.RegisterHandler(id.ReadRequest_Encoding_DefaultBinary, attr.Read)
+ s.RegisterHandler(id.HistoryReadRequest_Encoding_DefaultBinary, attr.HistoryRead)
+ s.RegisterHandler(id.WriteRequest_Encoding_DefaultBinary, attr.Write)
+ s.RegisterHandler(id.HistoryUpdateRequest_Encoding_DefaultBinary, attr.HistoryUpdate)
+
+ method := &MethodService{s}
+ // s.registerHandler(id.CallMethodRequest_Encoding_DefaultBinary, method.CallMethod) // todo(fs): I think this is bogus
+ s.RegisterHandler(id.CallRequest_Encoding_DefaultBinary, method.Call)
+
+ sub := &SubscriptionService{
+ srv: s,
+ Subs: make(map[uint32]*Subscription),
+ }
+ s.SubscriptionService = sub
+ s.RegisterHandler(id.CreateSubscriptionRequest_Encoding_DefaultBinary, sub.CreateSubscription)
+ s.RegisterHandler(id.ModifySubscriptionRequest_Encoding_DefaultBinary, sub.ModifySubscription)
+ s.RegisterHandler(id.SetPublishingModeRequest_Encoding_DefaultBinary, sub.SetPublishingMode)
+ s.RegisterHandler(id.PublishRequest_Encoding_DefaultBinary, sub.Publish)
+ s.RegisterHandler(id.RepublishRequest_Encoding_DefaultBinary, sub.Republish)
+ s.RegisterHandler(id.TransferSubscriptionsRequest_Encoding_DefaultBinary, sub.TransferSubscriptions)
+ s.RegisterHandler(id.DeleteSubscriptionsRequest_Encoding_DefaultBinary, sub.DeleteSubscriptions)
+
+ item := &MonitoredItemService{
+ SubService: sub,
+ Items: make(map[uint32]*MonitoredItem),
+ Nodes: make(map[string][]*MonitoredItem),
+ Subs: make(map[uint32][]*MonitoredItem),
+ }
+ s.MonitoredItemService = item
+ // s.registerHandler(id.MonitoredItemCreateRequest_Encoding_DefaultBinary, item.MonitoredItemCreate)
+ s.RegisterHandler(id.CreateMonitoredItemsRequest_Encoding_DefaultBinary, item.CreateMonitoredItems)
+ //s.RegisterHandler(id.CreateMonitoredItemsRequest_Encoding_DefaultBinary, s.CreateMonitoredItems)
+ // s.registerHandler(id.MonitoredItemModifyRequest_Encoding_DefaultBinary, item.MonitoredItemModify)
+ s.RegisterHandler(id.ModifyMonitoredItemsRequest_Encoding_DefaultBinary, item.ModifyMonitoredItems)
+ s.RegisterHandler(id.SetMonitoringModeRequest_Encoding_DefaultBinary, item.SetMonitoringMode)
+ s.RegisterHandler(id.SetTriggeringRequest_Encoding_DefaultBinary, item.SetTriggering)
+ s.RegisterHandler(id.DeleteMonitoredItemsRequest_Encoding_DefaultBinary, item.DeleteMonitoredItems)
+}
+
+// This function allows you to overwrite a handler before you call start.
+func (s *Server) RegisterHandler(typeID uint16, h Handler) {
+ _, ok := s.handlers[typeID]
+ if !ok {
+ s.handlers[typeID] = h
+ }
+}
+
+func (s *Server) handleService(ctx context.Context, sc *uasc.SecureChannel, reqID uint32, req ua.Request) {
+ if s.cfg.logger != nil {
+ s.cfg.logger.Debug("handleService: Got: %T\n", req)
+ }
+
+ var resp ua.Response
+ var err error
+
+ typeID := ua.ServiceTypeID(req)
+ h, ok := s.handlers[typeID]
+ if ok {
+ resp, err = h(sc, req, reqID)
+ } else {
+ if typeID == 0 {
+ if s.cfg.logger != nil {
+ s.cfg.logger.Warn("unknown service %T. Did you call register?", req)
+ }
+ }
+ err = ua.StatusBadServiceUnsupported
+ }
+
+ if err != nil {
+ if statusCode, ok := err.(ua.StatusCode); ok {
+ resp = &ua.ServiceFault{ResponseHeader: responseHeader(0, statusCode)}
+ } else {
+ resp = &ua.ServiceFault{ResponseHeader: responseHeader(0, ua.StatusBadUnexpectedError)}
+ }
+ }
+
+ if resp == nil {
+ return
+ }
+
+ err = sc.SendResponseWithContext(ctx, reqID, resp)
+ if err != nil {
+ if s.cfg.logger != nil {
+ s.cfg.logger.Warn("Error sending response: %s\n", err)
+ }
+ }
+}
+
+func responseHeader(reqID uint32, statusCode ua.StatusCode) *ua.ResponseHeader {
+ return &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: reqID,
+ ServiceResult: statusCode,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ }
+}
+
+func serviceUnsupported(hdr *ua.RequestHeader) ua.Response {
+ return &ua.ServiceFault{
+ ResponseHeader: responseHeader(hdr.RequestHandle, ua.StatusBadServiceUnsupported),
+ }
+}
+
+func safeReq[T ua.Request](r ua.Request) (T, error) {
+ var t T
+ req, ok := r.(T)
+ if !ok {
+ //debug.Printf("expected %T, got %T", t, r)
+ return t, ua.StatusBadRequestTypeInvalid
+ }
+ return req, nil
+}
+
+// func handleServiceFault(s *Server, sc *uasc.SecureChannel, r ua.Request) (ua.Response, error) {
+// debug.Printf("Handling %T", r)
+
+// req, ok := r.(*ua.ServiceFault)
+// if !ok {
+// debug.Printf("handleServiceFault: Expected *ua.ServiceFault, got %T", r)
+// return nil, ua.StatusBadRequestTypeInvalid
+// }
+// debug.Printf("Got ServiceFault: %s", req.ResponseHeader.ServiceResult)
+
+// // No response required
+// return nil, nil
+// }
diff --git a/server/session_broker.go b/server/session_broker.go
new file mode 100644
index 00000000..6d2cd783
--- /dev/null
+++ b/server/session_broker.go
@@ -0,0 +1,84 @@
+package server
+
+import (
+ mrand "math/rand"
+ "sync"
+ "time"
+
+ "github.com/google/uuid"
+
+ "github.com/gopcua/opcua/ua"
+)
+
+type session struct {
+ cfg sessionConfig
+
+ ID *ua.NodeID
+ AuthTokenID *ua.NodeID
+ serverNonce []byte
+ remoteCertificate []byte
+
+ PublishRequests chan PubReq
+}
+
+type sessionConfig struct {
+ sessionTimeout time.Duration
+}
+
+type sessionBroker struct {
+ // mu protects concurrent modification of s
+ mu sync.Mutex
+
+ // s contains all sessions watched by the session broker
+ s map[string]*session
+ logger Logger
+}
+
+func newSessionBroker(logger Logger) *sessionBroker {
+ return &sessionBroker{
+ s: make(map[string]*session),
+ logger: logger,
+ }
+}
+
+func (sb *sessionBroker) NewSession() *session {
+ s := &session{
+ ID: ua.NewGUIDNodeID(1, uuid.New().String()),
+ AuthTokenID: ua.NewNumericNodeID(0, uint32(mrand.Int31())),
+ PublishRequests: make(chan PubReq, 100),
+ }
+
+ sb.mu.Lock()
+ sb.s[s.AuthTokenID.String()] = s
+ sb.mu.Unlock()
+
+ return s
+}
+
+func (sb *sessionBroker) Close(authToken *ua.NodeID) error {
+ sb.mu.Lock()
+ defer sb.mu.Unlock()
+
+ if sb.s[authToken.String()] == nil {
+ if sb.logger != nil {
+ sb.logger.Warn("sessionBroker.Close: error looking up session %v", authToken)
+ }
+ }
+ delete(sb.s, authToken.String())
+
+ return nil
+}
+
+func (sb *sessionBroker) Session(authToken *ua.NodeID) *session {
+ sb.mu.Lock()
+ defer sb.mu.Unlock()
+
+ s := sb.s[authToken.String()]
+ if s == nil {
+ if sb.logger != nil {
+ sb.logger.Warn("sessionBroker.Session: error looking up session %v", authToken)
+ }
+ }
+
+ return s
+}
diff --git a/server/session_service.go b/server/session_service.go
new file mode 100644
index 00000000..af62401b
--- /dev/null
+++ b/server/session_service.go
@@ -0,0 +1,163 @@
+package server
+
+import (
+ "crypto/rand"
+ "log"
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+const (
+ sessionTimeoutMin = 100 // 100ms
+ sessionTimeoutMax = 30 * 60 * 1000 // 30 minutes
+ sessionTimeoutDefault = 60 * 1000 // 60s
+
+ sessionNonceLength = 32
+)
+
+// SessionService implements the Session Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.6
+type SessionService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.6.2
+func (s *SessionService) CreateSession(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CreateSessionRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ // New session
+ sess := s.srv.sb.NewSession()
+
+ // Ensure session timeout is reasonable
+ sess.cfg.sessionTimeout = time.Duration(req.RequestedSessionTimeout) * time.Millisecond
+ if sess.cfg.sessionTimeout > sessionTimeoutMax || sess.cfg.sessionTimeout < sessionTimeoutMin {
+ sess.cfg.sessionTimeout = sessionTimeoutDefault
+ }
+
+ nonce := make([]byte, sessionNonceLength)
+ if _, err := rand.Read(nonce); err != nil {
+ log.Printf("error creating session nonce")
+ return nil, ua.StatusBadInternalError
+ }
+ sess.serverNonce = nonce
+ sess.remoteCertificate = req.ClientCertificate
+
+ sig, alg, err := sc.NewSessionSignature(req.ClientCertificate, req.ClientNonce)
+ if err != nil {
+ log.Printf("error creating session signature")
+ return nil, ua.StatusBadInternalError
+ }
+
+ matching_endpoints := make([]*ua.EndpointDescription, 0)
+ for i := range s.srv.endpoints {
+ ep := s.srv.endpoints[i]
+ if ep.EndpointURL == req.EndpointURL {
+ matching_endpoints = append(matching_endpoints, ep)
+ }
+ }
+
+ response := &ua.CreateSessionResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ SessionID: sess.ID,
+ AuthenticationToken: sess.AuthTokenID,
+ RevisedSessionTimeout: float64(sess.cfg.sessionTimeout / time.Millisecond),
+ MaxRequestMessageSize: 0, // Not used
+ ServerSignature: &ua.SignatureData{
+ Signature: sig,
+ Algorithm: alg,
+ },
+ ServerCertificate: s.srv.cfg.certificate,
+ ServerNonce: nonce,
+ ServerEndpoints: matching_endpoints,
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.6.3
+func (s *SessionService) ActivateSession(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.ActivateSessionRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ sess := s.srv.sb.Session(req.RequestHeader.AuthenticationToken)
+ if sess == nil {
+ return nil, ua.StatusBadSessionIDInvalid
+ }
+
+ err = sc.VerifySessionSignature(sess.remoteCertificate, sess.serverNonce, req.ClientSignature.Signature)
+ if err != nil {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Warn("error verifying session signature with nonce: %s", err)
+ }
+ return nil, ua.StatusBadSecurityChecksFailed
+ }
+
+ nonce := make([]byte, sessionNonceLength)
+ if _, err := rand.Read(nonce); err != nil {
+ log.Printf("error creating session nonce")
+ return nil, ua.StatusBadInternalError
+ }
+ sess.serverNonce = nonce
+
+ response := &ua.ActivateSessionResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ ServerNonce: nonce,
+ // Results: []ua.StatusCode{},
+ // DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.6.4
+func (s *SessionService) CloseSession(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CloseSessionRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ err = s.srv.sb.Close(req.RequestHeader.AuthenticationToken)
+ if err != nil {
+ return nil, ua.StatusBadSessionIDInvalid
+ }
+
+ //TODO: deal with 'delete subscriptions' field in request
+ response := &ua.CloseSessionResponse{
+ ResponseHeader: responseHeader(req.RequestHeader.RequestHandle, ua.StatusOK),
+ }
+
+ return response, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.6.5
+func (s *SessionService) Cancel(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CancelRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/server/subscription_service.go b/server/subscription_service.go
new file mode 100644
index 00000000..bb3c65e0
--- /dev/null
+++ b/server/subscription_service.go
@@ -0,0 +1,511 @@
+package server
+
+import (
+ "context"
+ "sync"
+ "time"
+
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+// SubscriptionService implements the Subscription Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13
+type SubscriptionService struct {
+ srv *Server
+ // pub sub stuff
+ Mu sync.Mutex
+ Subs map[uint32]*Subscription
+}
+
+// get rid of all references to a subscription and all monitored items that are pointed at this subscription.
+func (s *SubscriptionService) DeleteSubscription(id uint32) {
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ sub, ok := s.Subs[id]
+ if ok {
+ sub.Mu.Lock()
+ if sub.running {
+ sub.running = false
+ close(sub.shutdown)
+ }
+ sub.Mu.Unlock()
+ }
+
+ delete(s.Subs, id)
+
+ // ask the monitored item service to purge out any items that use this subscription
+ s.srv.MonitoredItemService.DeleteSub(id)
+
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.2
+func (s *SubscriptionService) CreateSubscription(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.CreateSubscriptionRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ newsubid := uint32(len(s.Subs)) + 1
+
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Info("New Sub %d for %v", newsubid, sc.RemoteAddr())
+ }
+
+ sub := NewSubscription()
+ sub.srv = s
+ sub.Session = s.srv.Session(r.Header())
+ sub.Channel = sc
+ sub.ID = newsubid
+ sub.RevisedPublishingInterval = req.RequestedPublishingInterval
+ sub.RevisedLifetimeCount = req.RequestedLifetimeCount
+ sub.RevisedMaxKeepAliveCount = req.RequestedMaxKeepAliveCount
+
+ s.Subs[newsubid] = sub
+ sub.running = true
+ sub.Start()
+
+ resp := &ua.CreateSubscriptionResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ SubscriptionID: uint32(newsubid),
+ RevisedPublishingInterval: req.RequestedPublishingInterval,
+ RevisedLifetimeCount: req.RequestedLifetimeCount,
+ RevisedMaxKeepAliveCount: req.RequestedMaxKeepAliveCount,
+ }
+ return resp, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.3
+func (s *SubscriptionService) ModifySubscription(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.ModifySubscriptionRequest](r)
+ if err != nil {
+ return nil, err
+ }
+
+ // When this gets implemented, be sure to check the subscription session vs the request session!
+
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.4
+func (s *SubscriptionService) SetPublishingMode(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.SetPublishingModeRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ // When this gets implemented, be sure to check the subscription session vs the request session!
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.5
+func (s *SubscriptionService) Publish(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Raw Publish req")
+ }
+
+ req, err := safeReq[*ua.PublishRequest](r)
+ if err != nil {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Error("ERROR: bad PublishRequest Struct")
+ }
+ return nil, err
+ }
+
+ session := s.srv.Session(req.RequestHeader)
+
+ if session == nil {
+ response := &ua.PublishResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusBadSessionIDInvalid,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ SubscriptionID: 0,
+ MoreNotifications: false,
+ NotificationMessage: &ua.NotificationMessage{NotificationData: []*ua.ExtensionObject{}},
+ AvailableSequenceNumbers: []uint32{}, // an empty array indicates taht we don't support retransmission of messages
+ Results: []ua.StatusCode{},
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+
+ return response, nil
+ }
+
+ select {
+ case session.PublishRequests <- PubReq{Req: req, ID: reqID}:
+ default:
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Warn("Too many publish reqs.")
+ }
+ }
+
+ // per opcua spec, we don't respond now. When data is available on the subscription,
+ // the Subscription will respond in the background.
+ return nil, nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.6
+func (s *SubscriptionService) Republish(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.RepublishRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.7
+func (s *SubscriptionService) TransferSubscriptions(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.TransferSubscriptionsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ // When this gets implemented, be sure to check the subscription session vs the request session!
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.8
+func (s *SubscriptionService) DeleteSubscriptions(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.DeleteSubscriptionsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ session := s.srv.Session(req.Header())
+
+ s.Mu.Lock()
+ defer s.Mu.Unlock()
+
+ results := make([]ua.StatusCode, len(req.SubscriptionIDs))
+ for i := range req.SubscriptionIDs {
+
+ subid := req.SubscriptionIDs[i]
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Info("Subscription %d deleted by client", subid)
+ }
+ sub, ok := s.Subs[subid]
+ if !ok {
+ results[i] = ua.StatusBadSubscriptionIDInvalid
+ continue
+ }
+ if session.AuthTokenID.String() != sub.Session.AuthTokenID.String() {
+ results[i] = ua.StatusBadSessionIDInvalid
+ continue
+ }
+ // delete subscription gets the lock so we set them up to run in the background
+ // once this function releases its lock
+ go s.DeleteSubscription(subid)
+ results[i] = ua.StatusOK
+ }
+ return &ua.DeleteSubscriptionsResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: results, // []StatusCode
+ DiagnosticInfos: []*ua.DiagnosticInfo{}, // []*DiagnosticInfo
+ }, nil
+}
+
+type PubReq struct {
+ // The data of the publish request
+ Req *ua.PublishRequest
+
+ // The request ID (from the header) of the publish request. This has to be used when replying.
+ ID uint32
+}
+
+// This is the type that with its run() function will work in the bakground fullfilling subscription
+// publishes.
+//
+// MonitoredItems will send updates on the NotifyChannel to let the background task know that
+// an event has occured that needs to be published.
+type Subscription struct {
+ srv *SubscriptionService
+ Session *session
+ ID uint32
+ RevisedPublishingInterval float64
+ RevisedLifetimeCount uint32
+ RevisedMaxKeepAliveCount uint32
+ Channel *uasc.SecureChannel
+ SequenceID uint32
+ //SeqNums map[uint32]struct{}
+ T *time.Ticker
+
+ NotifyChannel chan *ua.MonitoredItemNotification
+ ModifyChannel chan *ua.ModifySubscriptionRequest
+
+ // the running flag and shutdown channel are used to signal the background task that it should stop.
+ // multiple places can kill the subscription so make sure you check the running flag using the mutex
+ // before closing the shutdown channel.
+ Mu sync.Mutex
+ running bool
+ shutdown chan struct{}
+}
+
+func NewSubscription() *Subscription {
+ return &Subscription{
+ //SeqNums: map[uint32]struct{}{},
+ NotifyChannel: make(chan *ua.MonitoredItemNotification, 100),
+ ModifyChannel: make(chan *ua.ModifySubscriptionRequest, 2),
+ shutdown: make(chan struct{}),
+ }
+}
+
+func (s *Subscription) Update(req *ua.ModifySubscriptionRequest) {
+ s.RevisedPublishingInterval = req.RequestedPublishingInterval
+ s.RevisedLifetimeCount = req.RequestedLifetimeCount
+ s.RevisedMaxKeepAliveCount = req.RequestedMaxKeepAliveCount
+}
+
+func (s *Subscription) Start() {
+ go s.run()
+
+}
+
+func (s *Subscription) keepalive(pubreq PubReq) error {
+ eo := make([]*ua.ExtensionObject, 0)
+
+ msg := ua.NotificationMessage{
+ SequenceNumber: s.SequenceID + 1, // not sure why but ua expert wants the next sequence number on keepalives.
+ PublishTime: time.Now(),
+ NotificationData: eo,
+ }
+
+ response := &ua.PublishResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: pubreq.Req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ SubscriptionID: s.ID,
+ MoreNotifications: false,
+ NotificationMessage: &msg,
+ AvailableSequenceNumbers: []uint32{}, // an empty array indicates taht we don't support retransmission of messages
+ Results: []ua.StatusCode{},
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+ err := s.Channel.SendResponseWithContext(context.Background(), pubreq.ID, response)
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+// this function should be run as a go-routine and will handle sending data out
+// to the client at the correct rate assuming there are publish requests queued up.
+// if the function returns it deletes the subscription
+func (s *Subscription) run() {
+ // if this go routine dies, we need to delete ourselves.
+ defer func() {
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Info("Subscription %d shutting down.", s.ID)
+ }
+ s.srv.DeleteSubscription(s.ID)
+ }()
+
+ keepalive_counter := 0
+ lifetime_counter := 0
+ //TODO: if a sub is modified, this ticker time may need to change.
+ s.T = time.NewTicker(time.Millisecond * time.Duration(s.RevisedPublishingInterval))
+ defer s.T.Stop()
+
+ // This is the master run event loop. It has effectively 3 states that it can be in. The first two are designated with
+ // the labels L0, and L2. Everything after the L2 loop is the third state where we send any pending notifications.
+ // The states always go L0 -> L2 -> Sending -> L0. L0 and L2 are both places where we wait so they are done as for loops with
+ // breaks to go to the next state.
+ // The sending state always runs to completion.
+ //
+ // L0 waits for our notification interval to expire. Any notifications that come in
+ // while waiting will be stored in the publishQueue. Once the interval expires, we'll move on to L2 if we've got notifications.
+ // In L2 we wait for a publish request. If we get one, we'll publish the notifications in the publishQueue. If we don't
+ // get a publish request, we'll continue to count intervals without a publish request.
+ //
+ // In L0 and L2, If we get to the lifetime count without a publish request, we'll kill the subscription.
+ for {
+ // we don't need to do anything if we don't have at least one thing to publish so lets get that first
+ publishQueue := make(map[uint32]*ua.MonitoredItemNotification)
+
+ // Collect notifications until our publication interval is ready
+ L0:
+ for {
+ select {
+ case <-s.shutdown:
+ return
+ case newNotification := <-s.NotifyChannel:
+ publishQueue[newNotification.ClientHandle] = newNotification
+ case <-s.T.C:
+ if len(publishQueue) == 0 {
+ // nothing to publish, increment the keepalive counter and send a keepalive if it
+ // has been enough intervals.
+ keepalive_counter++
+ if keepalive_counter > int(s.RevisedMaxKeepAliveCount) {
+ keepalive_counter = 0
+ select {
+ case pubreq := <-s.Session.PublishRequests:
+ err := s.keepalive(pubreq)
+ if err != nil {
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Warn("problem sending keepalive to subscription #%d: %v", s.ID, err)
+ }
+ return
+ }
+ default:
+ lifetime_counter++
+ if lifetime_counter > int(s.RevisedLifetimeCount) {
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Warn("Subscription #%d timed out.", s.ID)
+ }
+ return
+ }
+ }
+ }
+ continue // nothing to publish this interval
+ }
+ // we have things to publish so we'll break out to do that.
+ break L0
+ case update := <-s.ModifyChannel:
+ s.Update(update)
+ }
+ }
+ var pubreq PubReq
+
+ // now we need to continue to collect notifications until we've got a publish request
+ L2:
+ for {
+ select {
+ case <-s.shutdown:
+ return
+ case pubreq = <-s.Session.PublishRequests:
+ // once we get a publish request, we should move on to publish them back
+ break L2
+ case newNotification := <-s.NotifyChannel:
+ publishQueue[newNotification.ClientHandle] = newNotification
+
+ case <-s.T.C:
+ // we had another tick without a publish request.
+ lifetime_counter++
+ if lifetime_counter > int(s.RevisedLifetimeCount) {
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Warn("Subscription %d timed out.", s.ID)
+ }
+ return
+ }
+ }
+ }
+ lifetime_counter = 0
+ keepalive_counter = 0
+
+ s.SequenceID++
+ if s.SequenceID == 0 {
+ // per the spec, the sequence ID cannot be 0
+ s.SequenceID = 1
+ }
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Debug("Got publish req on sub #%d. Sequence %d", s.ID, s.SequenceID)
+ }
+ // then get all the tags and send them back to the client
+
+ //for x := range pubreq.Req.SubscriptionAcknowledgements {
+ //a := pubreq.Req.SubscriptionAcknowledgements[x]
+ //delete(s.SeqNums, a.SequenceNumber)
+ //}
+
+ final_items := make([]*ua.MonitoredItemNotification, len(publishQueue))
+ i := 0
+ for k := range publishQueue {
+ final_items[i] = publishQueue[k]
+ i++
+ }
+
+ dcn := ua.DataChangeNotification{
+ MonitoredItems: final_items,
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+ eo := make([]*ua.ExtensionObject, 1)
+ eo[0] = ua.NewExtensionObject(&dcn)
+ eo[0].UpdateMask()
+
+ msg := ua.NotificationMessage{
+ SequenceNumber: s.SequenceID,
+ PublishTime: time.Now(),
+ NotificationData: eo,
+ }
+ //s.SeqNums[s.SequenceID] = struct{}{}
+
+ response := &ua.PublishResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: pubreq.Req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ SubscriptionID: s.ID,
+ MoreNotifications: false,
+ NotificationMessage: &msg,
+ AvailableSequenceNumbers: []uint32{}, // an empty array indicates taht we don't support retransmission of messages
+ Results: []ua.StatusCode{},
+ DiagnosticInfos: []*ua.DiagnosticInfo{},
+ }
+ err := s.Channel.SendResponseWithContext(context.Background(), pubreq.ID, response)
+ if err != nil {
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Error("problem sending channel response: %v", err)
+ s.srv.srv.cfg.logger.Error("Killing subscription %d", s.ID)
+ }
+ return
+ }
+ if s.srv.srv.cfg.logger != nil {
+ s.srv.srv.cfg.logger.Debug("Published %d items OK for %d", len(publishQueue), s.ID)
+ }
+ // wait till we've got a publish request.
+ }
+}
+
+//PublishRequest_Encoding_DefaultBinary
diff --git a/server/view_service.go b/server/view_service.go
new file mode 100644
index 00000000..5f3a2524
--- /dev/null
+++ b/server/view_service.go
@@ -0,0 +1,190 @@
+package server
+
+import (
+ "time"
+
+ "golang.org/x/exp/slices"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/ua"
+ "github.com/gopcua/opcua/uasc"
+)
+
+var (
+ hasSubtype = ua.NewNumericNodeID(0, id.HasSubtype)
+)
+
+// ViewService implements the View Service Set.
+//
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8
+type ViewService struct {
+ srv *Server
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.2
+func (s *ViewService) Browse(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+
+ req, err := safeReq[*ua.BrowseRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("=== Browse incoming")
+ }
+
+ resp := &ua.BrowseResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: time.Now(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceResult: ua.StatusOK,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ Results: make([]*ua.BrowseResult, len(req.NodesToBrowse)),
+
+ DiagnosticInfos: []*ua.DiagnosticInfo{{}},
+ }
+
+ for i := range req.NodesToBrowse {
+ br := req.NodesToBrowse[i]
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug(" Browse of %s", br.NodeID.String())
+ }
+ ns, err := s.srv.Namespace(int(br.NodeID.Namespace()))
+ if err != nil {
+ resp.Results[i] = &ua.BrowseResult{StatusCode: ua.StatusBad}
+ continue
+ }
+ resp.Results[i] = ns.Browse(br)
+ }
+
+ return resp, nil
+
+}
+
+func suitableRef(srv *Server, desc *ua.BrowseDescription, ref *ua.ReferenceDescription) bool {
+ if !suitableDirection(desc.BrowseDirection, ref.IsForward) {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Debug("%v not suitable because of direction", ref)
+ }
+ return false
+ }
+ if !suitableRefType(srv, desc.ReferenceTypeID, ref.ReferenceTypeID, desc.IncludeSubtypes) {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Debug("%v not suitable because of ref type", ref)
+ }
+ return false
+ }
+ if desc.NodeClassMask > 0 && desc.NodeClassMask&uint32(ref.NodeClass) == 0 {
+ if srv.cfg.logger != nil {
+ srv.cfg.logger.Debug("%v not suitable because of node class", ref)
+ }
+ return false
+ }
+ return true
+}
+
+func suitableDirection(bd ua.BrowseDirection, isForward bool) bool {
+ switch {
+ case bd == ua.BrowseDirectionBoth:
+ return true
+ case bd == ua.BrowseDirectionForward && isForward:
+ return true
+ case bd == ua.BrowseDirectionInverse && !isForward:
+ return true
+ default:
+ return false
+ }
+}
+
+func suitableRefType(srv *Server, ref1, ref2 *ua.NodeID, subtypes bool) bool {
+ if ref1.Equal(ua.NewNumericNodeID(0, 0)) {
+ // refType is not specified in browse description. Return all types
+ return true
+ }
+ if ref1.Equal(ref2) {
+ return true
+ }
+ hasRef2Fn := func(nid *ua.NodeID) bool { return nid.Equal(ref2) }
+ hasSubtypeFn := func(nid *ua.NodeID) bool { return nid.Equal(hasSubtype) }
+ oktypes := getSubRefs(srv, ref1)
+ if !subtypes && slices.ContainsFunc(oktypes, hasSubtypeFn) {
+ for n := slices.IndexFunc(oktypes, hasSubtypeFn); n > 0; {
+ slices.Delete(oktypes, n, n+1)
+ }
+ }
+ return slices.ContainsFunc(oktypes, hasRef2Fn)
+}
+
+func getSubRefs(srv *Server, nid *ua.NodeID) []*ua.NodeID {
+ var refs []*ua.NodeID
+ ns, err := srv.Namespace(int(nid.Namespace()))
+ if err != nil {
+ // TODO: return error
+ return nil
+ }
+ node := ns.Node(nid)
+ if node == nil {
+ return nil
+ }
+ for _, ref := range node.refs {
+ if ref.ReferenceTypeID.Equal(hasSubtype) && ref.IsForward && ref.NodeID != nil {
+ refs = append(refs, ref.NodeID.NodeID)
+ refs = append(refs, getSubRefs(srv, ref.NodeID.NodeID)...)
+ }
+ }
+ return refs
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.3
+func (s *ViewService) BrowseNext(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.BrowseNextRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.4
+func (s *ViewService) TranslateBrowsePathsToNodeIDs(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.TranslateBrowsePathsToNodeIDsRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.5
+func (s *ViewService) RegisterNodes(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.RegisterNodesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
+
+// https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.6
+func (s *ViewService) UnregisterNodes(sc *uasc.SecureChannel, r ua.Request, reqID uint32) (ua.Response, error) {
+ if s.srv.cfg.logger != nil {
+ s.srv.cfg.logger.Debug("Handling %T", r)
+ }
+
+ req, err := safeReq[*ua.UnregisterNodesRequest](r)
+ if err != nil {
+ return nil, err
+ }
+ return serviceUnsupported(req.RequestHeader), nil
+}
diff --git a/subscription.go b/subscription.go
index 5436856d..80f5a6d1 100644
--- a/subscription.go
+++ b/subscription.go
@@ -94,7 +94,7 @@ func (s *Subscription) delete(ctx context.Context) error {
}
var res *ua.DeleteSubscriptionsResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
@@ -123,7 +123,7 @@ func (s *Subscription) Monitor(ctx context.Context, ts ua.TimestampsToReturn, it
}
var res *ua.CreateMonitoredItemsResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
@@ -156,7 +156,7 @@ func (s *Subscription) Unmonitor(ctx context.Context, monitoredItemIDs ...uint32
}
var res *ua.DeleteMonitoredItemsResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
@@ -198,7 +198,9 @@ func (s *Subscription) ModifyMonitoredItems(ctx context.Context, ts ua.Timestamp
ItemsToModify: items,
}
var res *ua.ModifyMonitoredItemsResponse
- err = s.c.Send(ctx, req, func(v interface{}) error {
+
+ err = s.c.Send(ctx, req, func(v ua.Response) error {
+
return safeAssign(v, &res)
})
if err != nil {
@@ -250,7 +252,7 @@ func (s *Subscription) SetMonitoringMode(ctx context.Context, monitoringMode ua.
MonitoredItemIDs: monitoredItemIDs,
}
var res *ua.SetMonitoringModeResponse
- err = s.c.Send(ctx, req, func(v interface{}) error {
+ err = s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
@@ -275,7 +277,7 @@ func (s *Subscription) SetTriggering(ctx context.Context, triggeringItemID uint3
}
var res *ua.SetTriggeringResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
return res, err
@@ -372,7 +374,7 @@ func (s *Subscription) recreate_NeedsSubMuxLock(ctx context.Context) error {
SubscriptionIDs: []uint32{s.SubscriptionID},
}
var res *ua.DeleteSubscriptionsResponse
- _ = s.c.Send(ctx, req, func(v interface{}) error {
+ _ = s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
dlog.Print("subscription deleted")
@@ -389,7 +391,7 @@ func (s *Subscription) recreate_NeedsSubMuxLock(ctx context.Context) error {
Priority: params.Priority,
}
var res *ua.CreateSubscriptionResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
@@ -432,7 +434,7 @@ func (s *Subscription) recreate_NeedsSubMuxLock(ctx context.Context) error {
}
var res *ua.CreateMonitoredItemsResponse
- err := s.c.Send(ctx, req, func(v interface{}) error {
+ err := s.c.Send(ctx, req, func(v ua.Response) error {
return safeAssign(v, &res)
})
if err != nil {
diff --git a/tests/go/generate_cert.go b/tests/go/generate_cert.go
new file mode 100644
index 00000000..0f19c155
--- /dev/null
+++ b/tests/go/generate_cert.go
@@ -0,0 +1,109 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Generate a self-signed X.509 certificate for a TLS server. Outputs to
+// 'cert.pem' and 'key.pem' and will overwrite existing files.
+
+// Based on src/crypto/tls/generate_cert.go from the Go SDK
+// Modified by the Gopcua Authors for use in creating an OPC-UA compliant client certificate
+
+package uatest2
+
+import (
+ "crypto/ecdsa"
+ "crypto/rand"
+ "crypto/rsa"
+ "crypto/x509"
+ "crypto/x509/pkix"
+ "encoding/pem"
+ "fmt"
+ "math/big"
+ "net"
+ "net/url"
+ "os"
+ "strings"
+ "time"
+)
+
+func GenerateCert(host string, rsaBits int, validFor time.Duration) (certPEM, keyPEM []byte, err error) {
+ if len(host) == 0 {
+ return nil, nil, fmt.Errorf("missing required host parameter")
+ }
+ if rsaBits == 0 {
+ rsaBits = 2048
+ }
+
+ priv, err := rsa.GenerateKey(rand.Reader, rsaBits)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate private key: %s", err)
+ }
+
+ notBefore := time.Now()
+ notAfter := notBefore.Add(validFor)
+
+ serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128)
+ serialNumber, err := rand.Int(rand.Reader, serialNumberLimit)
+ if err != nil {
+ return nil, nil, fmt.Errorf("failed to generate serial number: %s", err)
+ }
+
+ template := x509.Certificate{
+ SerialNumber: serialNumber,
+ Subject: pkix.Name{
+ Organization: []string{"Gopcua Test Client"},
+ },
+ NotBefore: notBefore,
+ NotAfter: notAfter,
+
+ KeyUsage: x509.KeyUsageContentCommitment | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageDataEncipherment | x509.KeyUsageCertSign,
+ ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth, x509.ExtKeyUsageClientAuth},
+ BasicConstraintsValid: true,
+ }
+
+ hosts := strings.Split(host, ",")
+ for _, h := range hosts {
+ if ip := net.ParseIP(h); ip != nil {
+ template.IPAddresses = append(template.IPAddresses, ip)
+ } else {
+ template.DNSNames = append(template.DNSNames, h)
+ }
+ if uri, err := url.Parse(h); err == nil {
+ template.URIs = append(template.URIs, uri)
+ }
+ }
+
+ derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, publicKey(priv), priv)
+ if err != nil {
+ return nil, nil, fmt.Errorf("Failed to create certificate: %s", err)
+ }
+
+ return pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: derBytes}), pem.EncodeToMemory(pemBlockForKey(priv)), nil
+}
+
+func publicKey(priv interface{}) interface{} {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &k.PublicKey
+ case *ecdsa.PrivateKey:
+ return &k.PublicKey
+ default:
+ return nil
+ }
+}
+
+func pemBlockForKey(priv interface{}) *pem.Block {
+ switch k := priv.(type) {
+ case *rsa.PrivateKey:
+ return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)}
+ case *ecdsa.PrivateKey:
+ b, err := x509.MarshalECPrivateKey(k)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "Unable to marshal ECDSA private key: %v", err)
+ os.Exit(2)
+ }
+ return &pem.Block{Type: "EC PRIVATE KEY", Bytes: b}
+ default:
+ return nil
+ }
+}
diff --git a/tests/go/namespace_test.go b/tests/go/namespace_test.go
new file mode 100644
index 00000000..ff91b974
--- /dev/null
+++ b/tests/go/namespace_test.go
@@ -0,0 +1,61 @@
+//go:build integration
+// +build integration
+
+package uatest2
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/pascaldekloe/goe/verify"
+
+ "github.com/gopcua/opcua"
+ "github.com/gopcua/opcua/ua"
+)
+
+func TestNamespace(t *testing.T) {
+ ctx := context.Background()
+
+ srv := startServer()
+ defer srv.Close()
+
+ c, err := opcua.NewClient("opc.tcp://localhost:4840", opcua.SecurityMode(ua.MessageSecurityModeNone))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := c.Connect(ctx); err != nil {
+ t.Fatal(err)
+ }
+ defer c.Close(ctx)
+
+ time.Sleep(2 * time.Second)
+
+ t.Run("NamespaceArray", func(t *testing.T) {
+ got, err := c.NamespaceArray(ctx)
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := []string{
+ "http://opcfoundation.org/UA/",
+ "NodeNamespace",
+ "http://gopcua.com/",
+ }
+ verify.Values(t, "", got, want)
+ })
+ t.Run("FindNamespace", func(t *testing.T) {
+ ns, err := c.FindNamespace(ctx, "http://gopcua.com/")
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got, want := ns, uint16(2); got != want {
+ t.Fatalf("got namespace id %d want %d", got, want)
+ }
+ })
+ t.Run("UpdateNamespaces", func(t *testing.T) {
+ err := c.UpdateNamespaces(ctx)
+ if err != nil {
+ t.Fatal(err)
+ }
+ })
+}
diff --git a/tests/go/read_test.go b/tests/go/read_test.go
new file mode 100644
index 00000000..9cad5166
--- /dev/null
+++ b/tests/go/read_test.go
@@ -0,0 +1,104 @@
+//go:build integration
+// +build integration
+
+package uatest2
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/pascaldekloe/goe/verify"
+
+ "github.com/gopcua/opcua"
+ "github.com/gopcua/opcua/ua"
+)
+
+// TestRead performs an integration test to read values
+// from an OPC/UA server.
+func TestRead(t *testing.T) {
+ tests := []struct {
+ id *ua.NodeID
+ v interface{}
+ }{
+ {ua.NewStringNodeID(1, "ro_bool"), true},
+ {ua.NewStringNodeID(1, "rw_bool"), true},
+ {ua.NewStringNodeID(1, "ro_int32"), int32(5)},
+ {ua.NewStringNodeID(1, "rw_int32"), int32(5)},
+ // TODO: not implemented in server yet.
+ //{ua.NewStringNodeID(2, "array_int32"), []int32{1, 2, 3}},
+ //{ua.NewStringNodeID(2, "2d_array_int32"), [][]int32{{1}, {2}, {3}}},
+ }
+
+ ctx := context.Background()
+
+ srv := startServer()
+ defer srv.Close()
+
+ time.Sleep(2 * time.Second)
+
+ c, err := opcua.NewClient("opc.tcp://localhost:4840", opcua.SecurityMode(ua.MessageSecurityModeNone))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := c.Connect(ctx); err != nil {
+ t.Fatal(err)
+ }
+ defer c.Close(ctx)
+
+ for _, tt := range tests {
+ t.Run(tt.id.String(), func(t *testing.T) {
+ t.Run("Read", func(t *testing.T) {
+ testRead(t, ctx, c, tt.v, tt.id)
+ })
+ t.Run("RegisteredRead", func(t *testing.T) {
+ t.Skip("Not implemented in server")
+ testRegisteredRead(t, ctx, c, tt.v, tt.id)
+ })
+ })
+ }
+}
+
+func testRead(t *testing.T, ctx context.Context, c *opcua.Client, v interface{}, id *ua.NodeID) {
+ t.Helper()
+
+ resp, err := c.Read(ctx, &ua.ReadRequest{
+ NodesToRead: []*ua.ReadValueID{
+ {NodeID: id},
+ },
+ TimestampsToReturn: ua.TimestampsToReturnBoth,
+ })
+ if err != nil {
+ t.Fatalf("Read failed: %s", err)
+ }
+ if resp.Results[0].Status != ua.StatusOK {
+ t.Fatalf("Status not OK: %v", resp.Results[0].Status)
+ }
+ if got, want := resp.Results[0].Value.Value(), v; !verify.Values(t, "", got, want) {
+ t.Fail()
+ }
+}
+
+func testRegisteredRead(t *testing.T, ctx context.Context, c *opcua.Client, v interface{}, id *ua.NodeID) {
+ t.Helper()
+
+ resp, err := c.RegisterNodes(ctx, &ua.RegisterNodesRequest{
+ NodesToRegister: []*ua.NodeID{id},
+ })
+ if err != nil {
+ t.Fatalf("RegisterNodes failed: %s", err)
+ }
+
+ testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
+ testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
+ testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
+ testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
+ testRead(t, ctx, c, v, resp.RegisteredNodeIDs[0])
+
+ _, err = c.UnregisterNodes(ctx, &ua.UnregisterNodesRequest{
+ NodesToUnregister: []*ua.NodeID{id},
+ })
+ if err != nil {
+ t.Fatalf("UnregisterNodes failed: %s", err)
+ }
+}
diff --git a/tests/go/readme.md b/tests/go/readme.md
new file mode 100644
index 00000000..136cdc12
--- /dev/null
+++ b/tests/go/readme.md
@@ -0,0 +1 @@
+this package is for testing the gopcua client against the gopcua server
\ No newline at end of file
diff --git a/tests/go/server.go b/tests/go/server.go
new file mode 100644
index 00000000..46cfb9d2
--- /dev/null
+++ b/tests/go/server.go
@@ -0,0 +1,85 @@
+// Copyright 2018-2020 opcua authors. All rights reserved.
+// Use of this source code is governed by a MIT-style license that can be
+// found in the LICENSE file.
+
+package uatest2
+
+import (
+ "context"
+ "log"
+
+ "github.com/gopcua/opcua/id"
+ "github.com/gopcua/opcua/server"
+ "github.com/gopcua/opcua/ua"
+)
+
+func startServer() *server.Server {
+ var opts []server.Option
+ port := 4840
+
+ opts = append(opts,
+ server.EnableSecurity("None", ua.MessageSecurityModeNone),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic128Rsa15", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Basic256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Basic256Sha256", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes128_Sha256_RsaOaep", ua.MessageSecurityModeSignAndEncrypt),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSign),
+ server.EnableSecurity("Aes256_Sha256_RsaPss", ua.MessageSecurityModeSignAndEncrypt),
+ )
+
+ opts = append(opts,
+ server.EnableAuthMode(ua.UserTokenTypeAnonymous),
+ server.EnableAuthMode(ua.UserTokenTypeUserName),
+ server.EnableAuthMode(ua.UserTokenTypeCertificate),
+ // server.EnableAuthWithoutEncryption(), // Dangerous and not recommended, shown for illustration only
+ )
+
+ opts = append(opts,
+ server.EndPoint("localhost", port),
+ )
+
+ s := server.New(opts...)
+
+ root_ns, _ := s.Namespace(0)
+ obj_node := root_ns.Objects()
+
+ // Create a new node namespace. You can add namespaces before or after starting the server.
+ nodeNS := server.NewNodeNameSpace(s, "NodeNamespace")
+ // add it to the server.
+ s.AddNamespace(nodeNS)
+ nns_obj := nodeNS.Objects()
+ // add the reference for this namespace's root object folder to the server's root object folder
+ obj_node.AddRef(nns_obj, id.HasComponent, true)
+
+ // Create some nodes for it.
+ n := nodeNS.AddNewVariableStringNode("ro_bool", true)
+ n.SetAttribute(ua.AttributeIDUserAccessLevel, ua.DataValue{EncodingMask: ua.DataValueValue, Value: ua.MustVariant(uint32(1))})
+ nns_obj.AddRef(n, id.HasComponent, true)
+ n = nodeNS.AddNewVariableStringNode("rw_bool", true)
+ nns_obj.AddRef(n, id.HasComponent, true)
+
+ n = nodeNS.AddNewVariableStringNode("ro_int32", int32(5))
+ n.SetAttribute(ua.AttributeIDUserAccessLevel, ua.DataValue{EncodingMask: ua.DataValueValue, Value: ua.MustVariant(uint32(1))})
+ nns_obj.AddRef(n, id.HasComponent, true)
+ n = nodeNS.AddNewVariableStringNode("rw_int32", int32(5))
+ nns_obj.AddRef(n, id.HasComponent, true)
+
+ // Create a new node namespace. You can add namespaces before or after starting the server.
+ gopcuaNS := server.NewNodeNameSpace(s, "http://gopcua.com/")
+ // add it to the server.
+ s.AddNamespace(gopcuaNS)
+ nns_obj = gopcuaNS.Objects()
+ // add the reference for this namespace's root object folder to the server's root object folder
+ obj_node.AddRef(nns_obj, id.HasComponent, true)
+
+ // Create a new node namespace. You can add namespaces before or after starting the server.
+ // Start the server
+ if err := s.Start(context.Background()); err != nil {
+ log.Fatalf("Error starting server, exiting: %s", err)
+ }
+ return s
+}
diff --git a/tests/go/stats_test.go b/tests/go/stats_test.go
new file mode 100644
index 00000000..4e9df96f
--- /dev/null
+++ b/tests/go/stats_test.go
@@ -0,0 +1,72 @@
+package uatest2
+
+import (
+ "context"
+ "expvar"
+ "testing"
+
+ "github.com/pascaldekloe/goe/verify"
+
+ "github.com/gopcua/opcua"
+ "github.com/gopcua/opcua/stats"
+ "github.com/gopcua/opcua/ua"
+)
+
+func newExpVarInt(i int64) *expvar.Int {
+ v := &expvar.Int{}
+ v.Set(i)
+ return v
+}
+
+func TestStats(t *testing.T) {
+ stats.Reset()
+
+ ctx := context.Background()
+
+ srv := startServer()
+ defer srv.Close()
+
+ c, err := opcua.NewClient("opc.tcp://localhost:4840", opcua.SecurityMode(ua.MessageSecurityModeNone))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := c.Connect(ctx); err != nil {
+ t.Fatal(err)
+ }
+ c.Close(ctx)
+
+ want := map[string]*expvar.Int{
+ "Dial": newExpVarInt(1),
+ "ActivateSession": newExpVarInt(1),
+ "NamespaceArray": newExpVarInt(1),
+ "UpdateNamespaces": newExpVarInt(1),
+ "NodesToRead": newExpVarInt(1),
+ "Read": newExpVarInt(1),
+ "Send": newExpVarInt(2),
+ "Close": newExpVarInt(1),
+ "CloseSession": newExpVarInt(2),
+ "SecureChannel": newExpVarInt(3),
+ "Session": newExpVarInt(4),
+ "State": newExpVarInt(0),
+ }
+
+ got := map[string]expvar.Var{}
+ stats.Client().Do(func(kv expvar.KeyValue) { got[kv.Key] = kv.Value })
+ for k := range got {
+ if _, ok := want[k]; !ok {
+ t.Fatalf("got unexpected key %q", k)
+ }
+ }
+ for k := range want {
+ if _, ok := got[k]; !ok {
+ t.Fatalf("missing expected key %q", k)
+ }
+ }
+
+ for k, ev := range want {
+ v := stats.Client().Get(k)
+ if !verify.Values(t, "", v, ev) {
+ t.Errorf("got %s for %q, want %s", v.String(), k, ev.String())
+ }
+ }
+}
diff --git a/tests/go/write_test.go b/tests/go/write_test.go
new file mode 100644
index 00000000..475bbbae
--- /dev/null
+++ b/tests/go/write_test.go
@@ -0,0 +1,82 @@
+//go:build integration
+// +build integration
+
+package uatest2
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/gopcua/opcua"
+ "github.com/gopcua/opcua/ua"
+)
+
+// TestWrite performs an integration test to first write
+// and then read values from an OPC/UA server.
+func TestWrite(t *testing.T) {
+ tests := []struct {
+ id *ua.NodeID
+ v interface{}
+ status ua.StatusCode
+ }{
+ // happy flows
+ {ua.NewStringNodeID(1, "rw_bool"), false, ua.StatusOK},
+ {ua.NewStringNodeID(1, "rw_int32"), int32(9), ua.StatusOK},
+
+ // error flows
+ {ua.NewStringNodeID(1, "ro_bool"), false, ua.StatusBadUserAccessDenied},
+ }
+
+ ctx := context.Background()
+
+ srv := startServer()
+ defer srv.Close()
+
+ time.Sleep(2 * time.Second)
+
+ c, err := opcua.NewClient("opc.tcp://localhost:4840", opcua.SecurityMode(ua.MessageSecurityModeNone))
+ if err != nil {
+ t.Fatal(err)
+ }
+ if err := c.Connect(ctx); err != nil {
+ t.Fatal(err)
+ }
+ defer c.Close(ctx)
+
+ for _, tt := range tests {
+ t.Run(tt.id.String(), func(t *testing.T) {
+ testWrite(t, ctx, c, tt.status, &ua.WriteRequest{
+ NodesToWrite: []*ua.WriteValue{
+ &ua.WriteValue{
+ NodeID: tt.id,
+ AttributeID: ua.AttributeIDValue,
+ Value: &ua.DataValue{
+ EncodingMask: ua.DataValueValue,
+ Value: ua.MustVariant(tt.v),
+ },
+ },
+ },
+ })
+
+ // skip read tests if the write is expected to fail
+ if tt.status != ua.StatusOK {
+ return
+ }
+
+ testRead(t, ctx, c, tt.v, tt.id)
+ })
+ }
+}
+
+func testWrite(t *testing.T, ctx context.Context, c *opcua.Client, status ua.StatusCode, req *ua.WriteRequest) {
+ t.Helper()
+
+ resp, err := c.Write(ctx, req)
+ if err != nil {
+ t.Fatalf("Write failed: %s", err)
+ }
+ if got, want := resp.Results[0], status; got != want {
+ t.Fatalf("got status %v want %v", got, want)
+ }
+}
diff --git a/uatest/generate_cert.go b/tests/python/generate_cert.go
similarity index 100%
rename from uatest/generate_cert.go
rename to tests/python/generate_cert.go
diff --git a/uatest/method_server.py b/tests/python/method_server.py
old mode 100755
new mode 100644
similarity index 100%
rename from uatest/method_server.py
rename to tests/python/method_server.py
diff --git a/uatest/method_test.go b/tests/python/method_test.go
similarity index 97%
rename from uatest/method_test.go
rename to tests/python/method_test.go
index 77172714..4739af5f 100644
--- a/uatest/method_test.go
+++ b/tests/python/method_test.go
@@ -58,7 +58,7 @@ func TestCallMethod(t *testing.T) {
ctx := context.Background()
- srv := NewServer("method_server.py")
+ srv := NewPythonServer("method_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/uatest/namespace_test.go b/tests/python/namespace_test.go
similarity index 96%
rename from uatest/namespace_test.go
rename to tests/python/namespace_test.go
index ddec547b..bf59d1f3 100644
--- a/uatest/namespace_test.go
+++ b/tests/python/namespace_test.go
@@ -15,7 +15,7 @@ import (
func TestNamespace(t *testing.T) {
ctx := context.Background()
- srv := NewServer("rw_server.py")
+ srv := NewPythonServer("rw_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/uatest/server.go b/tests/python/py_server.go
similarity index 82%
rename from uatest/server.go
rename to tests/python/py_server.go
index 1ed9441e..1fd50ff4 100644
--- a/uatest/server.go
+++ b/tests/python/py_server.go
@@ -15,8 +15,14 @@ import (
"github.com/gopcua/opcua/ua"
)
-// Server runs a python test server.
-type Server struct {
+// todo(fs): not sure we need this here
+type Server interface {
+ URL() string
+ Close() error
+}
+
+// PythonServer runs a python test server.
+type PythonServer struct {
// Path is the path to the Python server.
Path string
@@ -32,17 +38,17 @@ type Server struct {
waitch chan error
}
-// NewServer creates a test server and starts it. The function
+// NewPythonServer creates a test server and starts it. The function
// panics if the server cannot be started.
-func NewServer(path string) *Server {
- s := &Server{Path: path, waitch: make(chan error)}
+func NewPythonServer(path string) *PythonServer {
+ s := &PythonServer{Path: path, waitch: make(chan error)}
if err := s.Run(); err != nil {
panic(err)
}
return s
}
-func (s *Server) Run() error {
+func (s *PythonServer) Run() error {
wd, err := os.Getwd()
if err != nil {
return err
@@ -93,7 +99,7 @@ func (s *Server) Run() error {
}
}
-func (s *Server) Close() error {
+func (s *PythonServer) Close() error {
if s.cmd == nil {
return errors.Errorf("not running")
}
diff --git a/uatest/read_test.go b/tests/python/read_test.go
similarity index 98%
rename from uatest/read_test.go
rename to tests/python/read_test.go
index b23c46cf..1f8e5207 100644
--- a/uatest/read_test.go
+++ b/tests/python/read_test.go
@@ -30,7 +30,7 @@ func TestRead(t *testing.T) {
ctx := context.Background()
- srv := NewServer("rw_server.py")
+ srv := NewPythonServer("rw_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/uatest/read_unknow_node_id_server.py b/tests/python/read_unknow_node_id_server.py
old mode 100755
new mode 100644
similarity index 100%
rename from uatest/read_unknow_node_id_server.py
rename to tests/python/read_unknow_node_id_server.py
diff --git a/uatest/read_unknow_node_id_test.go b/tests/python/read_unknow_node_id_test.go
similarity index 95%
rename from uatest/read_unknow_node_id_test.go
rename to tests/python/read_unknow_node_id_test.go
index b5fd4249..c3335652 100644
--- a/uatest/read_unknow_node_id_test.go
+++ b/tests/python/read_unknow_node_id_test.go
@@ -17,7 +17,7 @@ import (
func TestReadUnknowNodeID(t *testing.T) {
ctx := context.Background()
- srv := NewServer("read_unknow_node_id_server.py")
+ srv := NewPythonServer("read_unknow_node_id_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/tests/python/readme.md b/tests/python/readme.md
new file mode 100644
index 00000000..7df18d21
--- /dev/null
+++ b/tests/python/readme.md
@@ -0,0 +1 @@
+This test package is for testing the gopcua client against an external OPC server (python)
\ No newline at end of file
diff --git a/uatest/reconnection_server.py b/tests/python/reconnection_server.py
similarity index 100%
rename from uatest/reconnection_server.py
rename to tests/python/reconnection_server.py
diff --git a/uatest/reconnection_test.go b/tests/python/reconnection_test.go
similarity index 98%
rename from uatest/reconnection_test.go
rename to tests/python/reconnection_test.go
index e919c53c..ff7899ad 100644
--- a/uatest/reconnection_test.go
+++ b/tests/python/reconnection_test.go
@@ -24,7 +24,7 @@ const (
func TestAutoReconnection(t *testing.T) {
ctx := context.Background()
- srv := NewServer("reconnection_server.py")
+ srv := NewPythonServer("reconnection_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/uatest/rw_server.py b/tests/python/rw_server.py
old mode 100755
new mode 100644
similarity index 100%
rename from uatest/rw_server.py
rename to tests/python/rw_server.py
diff --git a/uatest/stats_test.go b/tests/python/stats_test.go
similarity index 97%
rename from uatest/stats_test.go
rename to tests/python/stats_test.go
index f15bf333..1a99bdf3 100644
--- a/uatest/stats_test.go
+++ b/tests/python/stats_test.go
@@ -25,7 +25,7 @@ func TestStats(t *testing.T) {
ctx := context.Background()
- srv := NewServer("rw_server.py")
+ srv := NewPythonServer("rw_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/uatest/timeout_test.go b/tests/python/timeout_test.go
similarity index 100%
rename from uatest/timeout_test.go
rename to tests/python/timeout_test.go
diff --git a/uatest/write_test.go b/tests/python/write_test.go
similarity index 97%
rename from uatest/write_test.go
rename to tests/python/write_test.go
index f1b76b7b..3b72edf1 100644
--- a/uatest/write_test.go
+++ b/tests/python/write_test.go
@@ -29,7 +29,7 @@ func TestWrite(t *testing.T) {
ctx := context.Background()
- srv := NewServer("rw_server.py")
+ srv := NewPythonServer("rw_server.py")
defer srv.Close()
c, err := opcua.NewClient(srv.Endpoint, srv.Opts...)
diff --git a/ua/expanded_node_id.go b/ua/expanded_node_id.go
index 404a6edb..0e351438 100644
--- a/ua/expanded_node_id.go
+++ b/ua/expanded_node_id.go
@@ -104,12 +104,19 @@ func (e *ExpandedNodeID) Decode(b []byte) (int, error) {
func (e *ExpandedNodeID) Encode() ([]byte, error) {
buf := NewBuffer(nil)
- buf.WriteStruct(e.NodeID)
- if e.HasNamespaceURI() {
- buf.WriteString(e.NamespaceURI)
- }
- if e.HasServerIndex() {
- buf.WriteUint32(e.ServerIndex)
+ if e == nil {
+ return []byte{}, errors.New("e was nil")
+ }
+ if e.NodeID == nil {
+ buf.WriteInt16(0)
+ } else {
+ buf.WriteStruct(e.NodeID)
+ if e.HasNamespaceURI() {
+ buf.WriteString(e.NamespaceURI)
+ }
+ if e.HasServerIndex() {
+ buf.WriteUint32(e.ServerIndex)
+ }
}
return buf.Bytes(), buf.Error()
diff --git a/ua/node_id.go b/ua/node_id.go
index 81c892ea..bae34aac 100644
--- a/ua/node_id.go
+++ b/ua/node_id.go
@@ -7,6 +7,7 @@ package ua
import (
"encoding/base64"
"encoding/json"
+ "encoding/xml"
"fmt"
"math"
@@ -290,8 +291,13 @@ func (n *NodeID) SetStringID(v string) error {
// String returns the string representation of the NodeID
// in the format described by ParseNodeID.
func (n *NodeID) String() string {
+ if n == nil {
+ return ""
+ }
+
switch n.Type() {
case NodeIDTypeTwoByte:
+
return fmt.Sprintf("i=%d", n.nid)
case NodeIDTypeFourByte:
@@ -391,6 +397,10 @@ func (n *NodeID) Encode() ([]byte, error) {
return buf.Bytes(), buf.Error()
}
+func (n *NodeID) Equal(o *NodeID) bool {
+ return n.String() == o.String()
+}
+
func (n *NodeID) MarshalJSON() ([]byte, error) {
if n == nil {
return []byte(`null`), nil
@@ -410,3 +420,17 @@ func (n *NodeID) UnmarshalJSON(b []byte) error {
*n = *nid
return nil
}
+
+// todo(fs): not sure if this should exist here. Maybe there are multiple different xml formats?
+func (n *NodeID) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
+ var s string
+ if err := d.DecodeElement(&s, &start); err != nil {
+ return err
+ }
+ id, err := ParseNodeID(s)
+ if err != nil {
+ return err
+ }
+ *n = *id
+ return nil
+}
diff --git a/ua/variant.go b/ua/variant.go
index 21d4f43f..60fda05d 100644
--- a/ua/variant.go
+++ b/ua/variant.go
@@ -505,6 +505,8 @@ func (m *Variant) String() string {
return m.value.(*LocalizedText).Text
case TypeIDQualifiedName:
return m.value.(*QualifiedName).Name
+ case TypeIDFloat:
+ return fmt.Sprintf("%f", m.value)
default:
return ""
}
diff --git a/uacp/conn.go b/uacp/conn.go
index c2acb79c..5dcf15bd 100644
--- a/uacp/conn.go
+++ b/uacp/conn.go
@@ -298,10 +298,12 @@ func (c *Conn) srvhandshake(endpoint string) error {
c.SendError(ua.StatusBadTCPInternalError)
return err
}
- if hel.EndpointURL != endpoint {
- c.SendError(ua.StatusBadTCPEndpointURLInvalid)
- return errors.Errorf("uacp: invalid endpoint url %s", hel.EndpointURL)
- }
+ // TODO (dh): Temporarily disabled until a proper fix can be implemented.
+ // Problem is that when listening on a random port, (eg. :0), this check fails
+ //if hel.EndpointURL != endpoint {
+ // c.SendError(ua.StatusBadTCPEndpointURLInvalid)
+ // return fmt.Errorf("uacp: invalid endpoint url %s", hel.EndpointURL)
+ //}
if err := c.Send("ACKF", c.ack); err != nil {
c.SendError(ua.StatusBadTCPInternalError)
return err
diff --git a/uapolicy/securitypolicy.go b/uapolicy/securitypolicy.go
index 3b309338..d31f0488 100644
--- a/uapolicy/securitypolicy.go
+++ b/uapolicy/securitypolicy.go
@@ -183,3 +183,19 @@ type policy struct {
asymmetric func(localKey *rsa.PrivateKey, remoteKey *rsa.PublicKey) (*EncryptionAlgorithm, error)
symmetric func(localNonce []byte, remoteNonce []byte) (*EncryptionAlgorithm, error)
}
+
+// SecurityLevel returns the recommended security level for endpoints
+// It is a ranking of security quality, higher is better
+var securityLevels = map[string][4]uint8{
+ // Array indicies are : {Invalid, None, Sign, SignAndEncrypt}
+ ua.SecurityPolicyURINone: {00, 01, 00, 00},
+ ua.SecurityPolicyURIBasic128Rsa15: {00, 00, 12, 13},
+ ua.SecurityPolicyURIBasic256: {00, 00, 22, 23},
+ ua.SecurityPolicyURIBasic256Sha256: {00, 00, 32, 33},
+ ua.SecurityPolicyURIAes128Sha256RsaOaep: {00, 00, 42, 43},
+ ua.SecurityPolicyURIAes256Sha256RsaPss: {00, 00, 52, 53},
+}
+
+func SecurityLevel(policy string, mode ua.MessageSecurityMode) uint8 {
+ return securityLevels[policy][mode]
+}
diff --git a/uasc/message.go b/uasc/message.go
index 8657d111..64806695 100644
--- a/uasc/message.go
+++ b/uasc/message.go
@@ -7,6 +7,7 @@ package uasc
import (
"math"
+ "github.com/gopcua/opcua/debug"
"github.com/gopcua/opcua/errors"
"github.com/gopcua/opcua/ua"
)
@@ -129,6 +130,13 @@ func (m *Message) EncodeChunks(maxBodySize uint32) ([][]byte, error) {
return nil, dataBody.Error()
}
+ // todo(fs): sometimes maxBodySize == 0 probably we get an invalid channel instance
+ // todo(fs): log this and investigate
+ if maxBodySize == 0 {
+ debug.Printf("maxBodySize == 0 !!!")
+ maxBodySize = 1 << 12
+ }
+
nrChunks := uint32(dataBody.Len())/(maxBodySize) + 1
chunks := make([][]byte, nrChunks)
diff --git a/uasc/secure_channel.go b/uasc/secure_channel.go
index 78822642..a8e8f6ed 100644
--- a/uasc/secure_channel.go
+++ b/uasc/secure_channel.go
@@ -6,11 +6,15 @@ package uasc
import (
"context"
+ "crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/binary"
"io"
+ "log"
"math"
+ "net"
+ "strings"
"sync"
"sync/atomic"
"time"
@@ -27,11 +31,40 @@ const (
MaxTimeout = math.MaxUint32 * time.Millisecond
)
-type response struct {
- ReqID uint32
- SCID uint32
- V interface{}
- Err error
+type channelKind int
+
+const (
+ client channelKind = iota
+ server
+)
+
+// ResponseHandler handles the response of a service request and
+// is used by the client.
+type ResponseHandler func(ua.Response) error
+
+// MessageBody is the content of a secure channel message sent
+// between a client and a server and represents a service
+// request or response.
+type MessageBody struct {
+ RequestID uint32
+ SecureChannelID uint32
+ Err error
+
+ body any
+}
+
+func (b MessageBody) Request() ua.Request {
+ if x, ok := b.body.(ua.Request); ok {
+ return x
+ }
+ return nil
+}
+
+func (b MessageBody) Response() ua.Response {
+ if x, ok := b.body.(ua.Response); ok {
+ return x
+ }
+ return nil
}
type conditionLocker struct {
@@ -100,8 +133,8 @@ type SecureChannel struct {
rcvLocker *conditionLocker
pendingReq sync.WaitGroup
- // handles maps request IDs to response channels
- handlers map[uint32]chan *response
+ // handles maps requestIDs to response channels
+ handlers map[uint32]chan *MessageBody
handlersMu sync.Mutex
// chunks maintains a temporary list of chunks for a given request ID
@@ -115,12 +148,55 @@ type SecureChannel struct {
openingMu sync.Mutex
// errorCh receive dispatcher errors
- errCh chan<- error
+ errch chan<- error
+
+ // required for the server channel
+
+ // // secureChannelID is a unique identifier for the SecureChannel assigned by the Server.
+ // // If a Server receives a SecureChannelId which it does not recognize it shall return an
+ // // appropriate transport layer error.
+ // //
+ // // When a Server starts the first SecureChannelId used should be a value that is likely to
+ // // be unique after each restart. This ensures that a Server restart does not cause
+ // // previously connected Clients to accidentally ‘reuse’ SecureChannels that did not belong
+ // // to them.
+ // secureChannelID uint32
+
+ // // sequenceNumber is a monotonically increasing sequence number assigned by the sender to each
+ // // MessageChunk sent over the SecureChannel.
+ // sequenceNumber uint32
+
+ // // securityTokenID is a unique identifier for the SecureChannel SecurityToken used to secure the Message.
+ // // This identifier is returned by the Server in an OpenSecureChannel response Message.
+ // // If a Server receives a TokenId which it does not recognize it shall return an appropriate
+ // // transport layer error.
+ // securityTokenID uint32
+
+ // kind indicates whether this is a server or a client channel.
+ kind channelKind
closeOnce sync.Once
}
func NewSecureChannel(endpoint string, c *uacp.Conn, cfg *Config, errCh chan<- error) (*SecureChannel, error) {
+ return newSecureChannel(endpoint, c, cfg, client, errCh, 0, 0, 0)
+}
+
+func NewServerSecureChannel(endpoint string, c *uacp.Conn, cfg *Config, errCh chan<- error, secureChannelID, sequenceNumber, securityTokenID uint32) (*SecureChannel, error) {
+ s, err := newSecureChannel(endpoint, c, cfg, server, errCh, secureChannelID, sequenceNumber, securityTokenID)
+ if err != nil {
+ return nil, err
+ }
+
+ s.openingInstance = newChannelInstance(s)
+ s.openingInstance.secureChannelID = secureChannelID
+ s.openingInstance.sequenceNumber = sequenceNumber
+ s.openingInstance.securityTokenID = securityTokenID
+
+ return s, nil
+}
+
+func newSecureChannel(endpoint string, c *uacp.Conn, cfg *Config, kind channelKind, errCh chan<- error, secureChannelID, sequenceNumber, securityTokenID uint32) (*SecureChannel, error) {
if c == nil {
return nil, errors.Errorf("no connection")
}
@@ -143,23 +219,31 @@ func NewSecureChannel(endpoint string, c *uacp.Conn, cfg *Config, errCh chan<- e
}
s := &SecureChannel{
- endpointURL: endpoint,
- c: c,
- cfg: cfg,
- requestID: cfg.RequestIDSeed,
+ endpointURL: endpoint,
+ c: c,
+ cfg: cfg,
+ requestID: cfg.RequestIDSeed,
+ kind: kind,
+ // secureChannelID: secureChannelID,
+ // sequenceNumber: sequenceNumber,
+ // securityTokenID: securityTokenID,
reqLocker: newConditionLocker(),
rcvLocker: newConditionLocker(),
- errCh: errCh,
+ errch: errCh,
closing: make(chan struct{}),
disconnected: make(chan struct{}),
instances: make(map[uint32][]*channelInstance),
chunks: make(map[uint32][]*MessageChunk),
- handlers: make(map[uint32]chan *response),
+ handlers: make(map[uint32]chan *MessageBody),
}
return s, nil
}
+func (s *SecureChannel) RemoteAddr() net.Addr {
+ return s.c.TCPConn.RemoteAddr()
+}
+
func (s *SecureChannel) getActiveChannelInstance() (*channelInstance, error) {
s.instancesMu.Lock()
defer s.instancesMu.Unlock()
@@ -182,48 +266,47 @@ func (s *SecureChannel) dispatcher() {
case <-s.closing:
return
default:
- resp := s.receive(ctx)
-
- if resp.Err != nil {
+ msg := s.Receive(ctx)
+ if msg.Err != nil {
select {
case <-s.closing:
return
default:
select {
- case s.errCh <- resp.Err:
+ case s.errch <- msg.Err:
default:
}
}
}
- if resp.Err == io.EOF {
+ if msg.Err == io.EOF {
return
}
- if resp.Err != nil {
- debug.Printf("uasc %d/%d: err: %v", s.c.ID(), resp.ReqID, resp.Err)
+ if msg.Err != nil {
+ debug.Printf("uasc %d/%d: err: %v", s.c.ID(), msg.RequestID, msg.Err)
} else {
- debug.Printf("uasc %d/%d: recv %T", s.c.ID(), resp.ReqID, resp.V)
+ debug.Printf("uasc %d/%d: recv %T", s.c.ID(), msg.RequestID, msg.body)
}
- ch, ok := s.popHandler(resp.ReqID)
+ ch, ok := s.popHandler(msg.RequestID)
if !ok {
- debug.Printf("uasc %d/%d: no handler for %T", s.c.ID(), resp.ReqID, resp.V)
+ debug.Printf("uasc %d/%d: no handler for %T", s.c.ID(), msg.RequestID, msg.body)
continue
}
// HACK
- if _, ok := resp.V.(*ua.OpenSecureChannelResponse); ok {
+ if _, ok := msg.Response().(*ua.OpenSecureChannelResponse); ok {
s.rcvLocker.lock()
}
- debug.Printf("uasc %d/%d: sending %T to handler", s.c.ID(), resp.ReqID, resp.V)
+ debug.Printf("uasc %d/%d: sending %T to handler", s.c.ID(), msg.RequestID, msg.body)
select {
- case ch <- resp:
+ case ch <- msg:
default:
// this should never happen since the chan is of size one
- debug.Printf("uasc %d/%d: unexpected state. channel write should always succeed.", s.c.ID(), resp.ReqID)
+ debug.Printf("uasc %d/%d: unexpected state. channel write should always succeed.", s.c.ID(), msg.RequestID)
}
s.rcvLocker.waitIfLock()
@@ -231,32 +314,37 @@ func (s *SecureChannel) dispatcher() {
}
}
-// receive receives message chunks from the secure channel, decodes and forwards
+// Receive receives message chunks from the secure channel, decodes and forwards
// them to the registered callback channel, if there is one. Otherwise,
// the message is dropped.
-func (s *SecureChannel) receive(ctx context.Context) *response {
+func (s *SecureChannel) Receive(ctx context.Context) *MessageBody {
for {
select {
case <-ctx.Done():
- return &response{Err: ctx.Err()}
+ return &MessageBody{Err: ctx.Err()}
default:
chunk, err := s.readChunk()
if err == io.EOF {
debug.Printf("uasc %d: readChunk EOF", s.c.ID())
- return &response{Err: err}
+ return &MessageBody{Err: err}
}
if err != nil {
- return &response{Err: err}
+ return &MessageBody{Err: err}
}
hdr := chunk.Header
reqID := chunk.SequenceHeader.RequestID
- resp := &response{
- ReqID: reqID,
- SCID: chunk.MessageHeader.Header.SecureChannelID,
+ strdat := string(chunk.Data)
+ if strings.Contains(strdat, "CurrentTime") {
+ debug.Printf("Requested CurrentTime.")
+ }
+
+ msg := &MessageBody{
+ RequestID: reqID,
+ SecureChannelID: chunk.MessageHeader.Header.SecureChannelID,
}
debug.Printf("uasc %d/%d: recv %s%c with %d bytes", s.c.ID(), reqID, hdr.MessageType, hdr.ChunkType, hdr.MessageSize)
@@ -271,19 +359,19 @@ func (s *SecureChannel) receive(ctx context.Context) *response {
msga := new(MessageAbort)
if _, err := msga.Decode(chunk.Data); err != nil {
debug.Printf("uasc %d/%d: invalid MSGA chunk. %s", s.c.ID(), reqID, err)
- resp.Err = ua.StatusBadDecodingError
- return resp
+ msg.Err = ua.StatusBadDecodingError
+ return msg
}
- return &response{ReqID: reqID, Err: ua.StatusCode(msga.ErrorCode)}
+ return &MessageBody{RequestID: reqID, Err: ua.StatusCode(msga.ErrorCode)}
case 'C':
s.chunks[reqID] = append(s.chunks[reqID], chunk)
if n := len(s.chunks[reqID]); uint32(n) > s.c.MaxChunkCount() {
delete(s.chunks, reqID)
s.chunksMu.Unlock()
- resp.Err = errors.Errorf("too many chunks: %d > %d", n, s.c.MaxChunkCount())
- return resp
+ msg.Err = errors.Errorf("too many chunks: %d > %d", n, s.c.MaxChunkCount())
+ return msg
}
s.chunksMu.Unlock()
continue
@@ -297,15 +385,18 @@ func (s *SecureChannel) receive(ctx context.Context) *response {
b, err := mergeChunks(all)
if err != nil {
- resp.Err = err
- return resp
+ msg.Err = err
+ return msg
}
if uint32(len(b)) > s.c.MaxMessageSize() {
- resp.Err = errors.Errorf("message too large: %d > %d", uint32(len(b)), s.c.MaxMessageSize())
- return resp
+ msg.Err = errors.Errorf("message too large: %d > %d", uint32(len(b)), s.c.MaxMessageSize())
+ return msg
}
+ // todo(fs): Why are we talking about ResponseHeaders here?
+ // todo(fs): this should apply to both requests and responses
+
// since we are not decoding the ResponseHeader separately
// we need to drop every message that has an error since we
// cannot get to the RequestHandle in the ResponseHeader.
@@ -313,24 +404,34 @@ func (s *SecureChannel) receive(ctx context.Context) *response {
// and subsequently remove it and the TypeID from all service
// structs and tests. We also need to add a deadline to all
// handlers and check them periodically to time them out.
- _, svc, err := ua.DecodeService(b)
+ _, body, err := ua.DecodeService(b)
if err != nil {
- resp.Err = err
- return resp
+ msg.Err = err
+ return msg
}
- resp.V = svc
+ msg.body = body
+
+ // todo(fs): not sure this is correct
+ if req, ok := msg.Request().(*ua.OpenSecureChannelRequest); ok {
+ err := s.handleOpenSecureChannelRequest(reqID, req)
+ if err != nil {
+ debug.Printf("uasc %d/%d: handling %T failed: %v", s.c.ID(), reqID, req, err)
+ return &MessageBody{Err: err}
+ }
+ return &MessageBody{}
+ }
// If the service status is not OK then bubble
// that error up to the caller.
- if r, ok := svc.(ua.Response); ok {
- if status := r.Header().ServiceResult; status != ua.StatusOK {
- resp.Err = status
- return resp
+ if resp := msg.Response(); resp != nil {
+ if status := resp.Header().ServiceResult; status != ua.StatusOK {
+ msg.Err = status
+ return msg
}
}
- return resp
+ return msg
}
}
}
@@ -375,12 +476,31 @@ func (s *SecureChannel) readChunk() (*MessageChunk, error) {
return nil, errors.Errorf("sechan: invalid state. openingInstance is nil.")
}
+ s.cfg.SecurityPolicyURI = m.SecurityPolicyURI
if m.SecurityPolicyURI != ua.SecurityPolicyURINone {
s.cfg.RemoteCertificate = m.AsymmetricSecurityHeader.SenderCertificate
debug.Printf("uasc %d: setting securityPolicy to %s", s.c.ID(), m.SecurityPolicyURI)
- }
- s.cfg.SecurityPolicyURI = m.SecurityPolicyURI
+ // TODO: where does this need to actually be set? It should be independent of the securitypolicy
+ // but here I'm just assuming it is sign and encrypt when we have anything other than None
+ // The problem is we need to know whether the message has to be decrypted before we can look at the
+ // security mode field in the open request to see if it is encrypted!
+ s.cfg.SecurityMode = ua.MessageSecurityModeSignAndEncrypt
+ remoteCert, err := x509.ParseCertificate(s.cfg.RemoteCertificate)
+ if err != nil {
+ return nil, err
+ }
+ remoteKey, ok := remoteCert.PublicKey.(*rsa.PublicKey)
+ if !ok {
+ return nil, ua.StatusBadCertificateInvalid
+ }
+ algo, err := uapolicy.Asymmetric(s.cfg.SecurityPolicyURI, s.openingInstance.sc.cfg.LocalKey, remoteKey)
+ if err != nil {
+ return nil, err
+ }
+
+ s.openingInstance.algo = algo
+ }
decryptWith = s.openingInstance
case "CLO":
@@ -438,7 +558,7 @@ func (s *SecureChannel) getInstancesBySecureChannelID(id uint32) []*channelInsta
defer s.instancesMu.Unlock()
instances := s.instances[id]
- if instances == nil {
+ if len(instances) == 0 {
return nil
}
@@ -458,6 +578,7 @@ func (s *SecureChannel) Open(ctx context.Context) error {
}
func (s *SecureChannel) open(ctx context.Context, instance *channelInstance, requestType ua.SecurityTokenRequestType) error {
+ debug.Printf("sc.open")
defer s.rcvLocker.unlock()
s.openingMu.Lock()
@@ -502,6 +623,9 @@ func (s *SecureChannel) open(ctx context.Context, instance *channelInstance, req
}
s.openingInstance = newChannelInstance(s)
+ // s.openingInstance.secureChannelID = s.secureChannelID
+ // s.openingInstance.sequenceNumber = s.sequenceNumber
+ // s.openingInstance.securityTokenID = s.securityTokenID
if requestType == ua.SecurityTokenRequestTypeRenew {
// TODO: lock? sequenceNumber++?
@@ -537,7 +661,8 @@ func (s *SecureChannel) open(ctx context.Context, instance *channelInstance, req
RequestedLifetime: s.cfg.Lifetime,
}
- return s.sendRequestWithTimeout(ctx, req, reqID, s.openingInstance, nil, s.cfg.RequestTimeout, func(v interface{}) error {
+ return s.sendRequestWithTimeout(ctx, req, reqID, s.openingInstance, nil, s.cfg.RequestTimeout, func(v ua.Response) error {
+ debug.Printf("OpenSecureChannelResponse handler")
resp, ok := v.(*ua.OpenSecureChannelResponse)
if !ok {
return errors.Errorf("got %T, want OpenSecureChannelResponse", v)
@@ -547,6 +672,7 @@ func (s *SecureChannel) open(ctx context.Context, instance *channelInstance, req
}
func (s *SecureChannel) handleOpenSecureChannelResponse(resp *ua.OpenSecureChannelResponse, localNonce []byte, instance *channelInstance) (err error) {
+ debug.Printf("sc.handleOpenSecureChannelResponse")
instance.state = channelActive
instance.secureChannelID = resp.SecurityToken.ChannelID
instance.securityTokenID = resp.SecurityToken.TokenID
@@ -576,12 +702,135 @@ func (s *SecureChannel) handleOpenSecureChannelResponse(resp *ua.OpenSecureChann
debug.Printf("uasc %d: received security token. channelID=%d tokenID=%d createdAt=%s lifetime=%s", s.c.ID(), instance.secureChannelID, instance.securityTokenID, instance.createdAt.Format(time.RFC3339), instance.revisedLifetime)
- go s.scheduleRenewal(instance)
- go s.scheduleExpiration(instance)
+ // depending on whether the channel is used in a client
+ // or a server we need to trigger different behavior.
+ // client channels trigger token renewals and need to cleanup old
+ // channel crypto configs. server channels only need to do the
+ // channel cleanup.
+ switch s.kind {
+ case client:
+ go s.scheduleRenewal(instance)
+ go s.scheduleExpiration(instance)
+
+ case server:
+ go s.scheduleExpiration(instance)
+ }
return
}
+func (s *SecureChannel) handleOpenSecureChannelRequest(reqID uint32, svc ua.Request) error {
+ debug.Printf("handleOpenSecureChannelRequest: Got OPN Request\n")
+
+ var err error
+
+ req, ok := svc.(*ua.OpenSecureChannelRequest)
+ if !ok {
+ debug.Printf("Expected OpenSecureChannel Request, got %T\n", svc)
+ }
+
+ // Part 6.7.4: https://reference.opcfoundation.org/Core/Part6/v105/docs/6.7.4
+ // todo(fs): check that ClientProtocolVersion matches HELLO.Version
+ // todo(fs): respond with Bad_ProtocolVersionUnsupported if they don't match
+ // todo(fs): also make sure that ServerProtocolVersion in the response is the
+ // todo(fs): the same as ACK.Version. Return the error if we don't support
+ // todo(fs): the client protocol version.
+ // todo(fs): how do we get the HELLO.Version here?
+ // if hello.Version != req.ClientProtocolVersion || req.ClientProtocolVersion != 0 {
+ if req.ClientProtocolVersion != 0 {
+ return ua.StatusBadProtocolVersionUnsupported
+ }
+
+ // Part 6.7.4: The AuthenticationToken should be nil. ???
+ if req.RequestHeader.AuthenticationToken.IntID() != 0 {
+ return ua.StatusBadSecureChannelTokenUnknown
+ }
+
+ s.cfg.Lifetime = req.RequestedLifetime
+ s.cfg.SecurityMode = req.SecurityMode
+
+ // I had to do the encryption setup in the chunk decoding logic because you have to
+ // decrypt the thing before you even know you have an open message.
+ // so this is redundant.
+ var (
+ localKey *rsa.PrivateKey
+ remoteKey *rsa.PublicKey
+ )
+
+ // Set the encryption methods to Asymmetric with the appropriate
+ // public keys. OpenSecureChannel is always encrypted with the
+ // asymmetric algorithms.
+ // The default value of the encryption algorithm method is the
+ // SecurityModeNone so no additional work is required for that case
+ if s.cfg.SecurityMode != ua.MessageSecurityModeNone {
+ localKey = s.cfg.LocalKey
+ // todo(dh): move this into the uapolicy package proper or
+ // adjust the Asymmetric method to receive a certificate instead
+ remoteCert, err := x509.ParseCertificate(s.cfg.RemoteCertificate)
+ if err != nil {
+ return err
+ }
+ var ok bool
+ if remoteKey, ok = remoteCert.PublicKey.(*rsa.PublicKey); !ok {
+ return ua.StatusBadCertificateInvalid
+ }
+ }
+
+ algo, err := uapolicy.Asymmetric(s.cfg.SecurityPolicyURI, localKey, remoteKey)
+ if err != nil {
+ return err
+ }
+
+ instance := s.openingInstance
+ instance.algo = algo
+ instance.sc.requestID = req.RequestHeader.RequestHandle // todo(fs): is this correct?
+
+ nonce := make([]byte, instance.algo.NonceLength())
+ if _, err := rand.Read(nonce); err != nil {
+ return err
+ }
+ resp := &ua.OpenSecureChannelResponse{
+ ResponseHeader: &ua.ResponseHeader{
+ Timestamp: s.timeNow(),
+ RequestHandle: req.RequestHeader.RequestHandle,
+ ServiceDiagnostics: &ua.DiagnosticInfo{},
+ StringTable: []string{},
+ AdditionalHeader: ua.NewExtensionObject(nil),
+ },
+ ServerProtocolVersion: 0,
+ SecurityToken: &ua.ChannelSecurityToken{
+ ChannelID: instance.secureChannelID,
+ TokenID: instance.securityTokenID,
+ CreatedAt: s.timeNow(),
+ RevisedLifetime: req.RequestedLifetime,
+ },
+ ServerNonce: nonce,
+ }
+
+ ctx := context.Background() // todo(fs): fixme
+ if err := s.sendResponseWithContext(ctx, instance, reqID, resp); err != nil {
+ return err
+ }
+
+ instance.algo, err = uapolicy.Symmetric(s.cfg.SecurityPolicyURI, nonce, req.ClientNonce)
+ if err != nil {
+ return err
+ }
+
+ instance.state = channelActive // todo(fs): is this correct?
+ // s.setState(secureChannelOpen)
+
+ s.instancesMu.Lock()
+ s.instances[instance.secureChannelID] = append(
+ s.instances[instance.secureChannelID],
+ instance,
+ )
+ s.activeInstance = instance
+ s.instancesMu.Unlock()
+
+ return nil
+}
+
func (s *SecureChannel) scheduleRenewal(instance *channelInstance) {
// https://reference.opcfoundation.org/v104/Core/docs/Part4/5.5.2/#5.5.2.1
// Clients should request a new SecurityToken after 75 % of its lifetime has elapsed. This should ensure that
@@ -661,7 +910,7 @@ func (s *SecureChannel) sendRequestWithTimeout(
instance *channelInstance,
authToken *ua.NodeID,
timeout time.Duration,
- h func(interface{}) error) error {
+ h ResponseHandler) error {
s.pendingReq.Add(1)
respRequired := h != nil
@@ -687,21 +936,21 @@ func (s *SecureChannel) sendRequestWithTimeout(
case <-s.disconnected:
s.popHandler(reqID)
return io.EOF
- case resp := <-ch:
- if resp.Err != nil {
- if resp.V != nil {
- _ = h(resp.V) // ignore result because resp.Err takes precedence
+ case msg := <-ch:
+ if msg.Err != nil {
+ if msg.Response() != nil {
+ _ = h(msg.Response()) // ignore result because msg.Err takes precedence
}
- return resp.Err
+ return msg.Err
}
- return h(resp.V)
+ return h(msg.Response())
case <-timer.C:
s.popHandler(reqID)
return ua.StatusBadTimeout
}
}
-func (s *SecureChannel) popHandler(reqID uint32) (chan *response, bool) {
+func (s *SecureChannel) popHandler(reqID uint32) (chan *MessageBody, bool) {
s.handlersMu.Lock()
defer s.handlersMu.Unlock()
@@ -721,12 +970,12 @@ func (s *SecureChannel) Renew(ctx context.Context) error {
return s.renew(instance)
}
-// SendRequest sends the service request and calls h with the response.
-func (s *SecureChannel) SendRequest(ctx context.Context, req ua.Request, authToken *ua.NodeID, h func(interface{}) error) error {
+func (s *SecureChannel) SendRequest(ctx context.Context, req ua.Request, authToken *ua.NodeID, h ResponseHandler) error {
+ // SendRequest sends the service request and calls h with the response.
return s.SendRequestWithTimeout(ctx, req, authToken, s.cfg.RequestTimeout, h)
}
-func (s *SecureChannel) SendRequestWithTimeout(ctx context.Context, req ua.Request, authToken *ua.NodeID, timeout time.Duration, h func(interface{}) error) error {
+func (s *SecureChannel) SendRequestWithTimeout(ctx context.Context, req ua.Request, authToken *ua.NodeID, timeout time.Duration, h ResponseHandler) error {
s.reqLocker.waitIfLock()
active, err := s.getActiveChannelInstance()
if err != nil {
@@ -744,7 +993,7 @@ func (s *SecureChannel) sendAsyncWithTimeout(
authToken *ua.NodeID,
respRequired bool,
timeout time.Duration,
-) (<-chan *response, error) {
+) (<-chan *MessageBody, error) {
instance.Lock()
defer instance.Unlock()
@@ -754,11 +1003,11 @@ func (s *SecureChannel) sendAsyncWithTimeout(
return nil, err
}
- var resp chan *response
+ var resp chan *MessageBody
if respRequired {
// register the handler if a callback was passed
- resp = make(chan *response, 1)
+ resp = make(chan *MessageBody, 1)
s.handlersMu.Lock()
@@ -784,6 +1033,7 @@ func (s *SecureChannel) sendAsyncWithTimeout(
}
if i > 0 { // fix sequence number on subsequent chunks
number := instance.nextSequenceNumber()
+ log.Printf("burning sequence number %d", number)
binary.LittleEndian.PutUint32(chunk[16:], uint32(number))
}
@@ -807,6 +1057,108 @@ func (s *SecureChannel) sendAsyncWithTimeout(
return resp, nil
}
+func (s *SecureChannel) SendResponseWithContext(ctx context.Context, reqID uint32, resp ua.Response) error {
+ return s.sendResponseWithContext(ctx, nil, reqID, resp)
+}
+
+func (s *SecureChannel) SendMsgWithContext(ctx context.Context, instance *channelInstance, reqID uint32, resp any) error {
+ typeID := ua.ServiceTypeID(resp)
+ if typeID == 0 {
+ return errors.Errorf("uasc: unknown service %T. Did you call register?", resp)
+ }
+
+ var err error
+ if instance == nil {
+ instance, err = s.getActiveChannelInstance()
+ if err != nil {
+ return err
+ }
+ }
+
+ // we need to get a lock on the sequence number so we are sure to send them in the correct order.
+ // encode the message
+ m := instance.newMessage(resp, typeID, reqID)
+ b, err := m.Encode()
+ if err != nil {
+ return err
+ }
+
+ // encrypt the message prior to sending it
+ // if SecurityMode == None, this returns the byte stream untouched
+ b, err = instance.signAndEncrypt(m, b)
+ if err != nil {
+ return err
+ }
+
+ // send the message
+ n, err := s.c.Write(b)
+ if err != nil {
+ return err
+ }
+
+ // todo(fs): what if len(b) != n? Can this happen?
+ if len(b) != n {
+ return errors.Errorf("uasc: incomplete message %T sent len=%d sent=%d", resp, len(b), n)
+ }
+
+ atomic.AddUint64(&instance.bytesSent, uint64(n))
+ atomic.AddUint32(&instance.messagesSent, 1)
+
+ debug.Printf("uasc %d/%d: send %T with %d bytes", s.c.ID(), reqID, resp, len(b))
+
+ return nil
+}
+
+func (s *SecureChannel) sendResponseWithContext(ctx context.Context, instance *channelInstance, reqID uint32, resp ua.Response) error {
+ typeID := ua.ServiceTypeID(resp)
+ if typeID == 0 {
+ return errors.Errorf("uasc: unknown service %T. Did you call register?", resp)
+ }
+
+ var err error
+ if instance == nil {
+ instance, err = s.getActiveChannelInstance()
+ if err != nil {
+ return err
+ }
+ }
+ instance.Lock()
+ defer instance.Unlock()
+
+ // encode the message
+ m := instance.newMessage(resp, typeID, reqID)
+ b, err := m.Encode()
+ if err != nil {
+ log.Printf("Error encoding msg: %v", err)
+ return err
+ }
+
+ // encrypt the message prior to sending it
+ // if SecurityMode == None, this returns the byte stream untouched
+ b, err = instance.signAndEncrypt(m, b)
+ if err != nil {
+ return err
+ }
+
+ // send the message
+ n, err := s.c.Write(b)
+ if err != nil {
+ return err
+ }
+
+ // todo(fs): what if len(b) != n? Can this happen?
+ if len(b) != n {
+ return errors.Errorf("uasc: incomplete message %T sent len=%d sent=%d", resp, len(b), n)
+ }
+
+ atomic.AddUint64(&instance.bytesSent, uint64(n))
+ atomic.AddUint32(&instance.messagesSent, 1)
+
+ debug.Printf("uasc %d/%d: send %T with %d bytes", s.c.ID(), reqID, resp, len(b))
+
+ return nil
+}
+
func (s *SecureChannel) nextRequestID() uint32 {
s.requestIDMu.Lock()
defer s.requestIDMu.Unlock()
diff --git a/uasc/secure_channel_instance.go b/uasc/secure_channel_instance.go
index bf123eb8..895041a5 100644
--- a/uasc/secure_channel_instance.go
+++ b/uasc/secure_channel_instance.go
@@ -10,6 +10,7 @@ import (
"sync"
"time"
+ "github.com/gopcua/opcua/debug"
"github.com/gopcua/opcua/errors"
"github.com/gopcua/opcua/id"
"github.com/gopcua/opcua/ua"
@@ -85,6 +86,7 @@ func (c *channelInstance) newRequestMessage(req ua.Request, reqID uint32, authTo
func (c *channelInstance) newMessage(srv interface{}, typeID uint16, requestID uint32) *Message {
sequenceNumber := c.nextSequenceNumber()
+ debug.Printf("got sequence number %d", sequenceNumber)
switch typeID {
case id.OpenSecureChannelRequest_Encoding_DefaultBinary, id.OpenSecureChannelResponse_Encoding_DefaultBinary:
diff --git a/uasc/secure_channel_test.go b/uasc/secure_channel_test.go
index c31f1d99..0065e739 100644
--- a/uasc/secure_channel_test.go
+++ b/uasc/secure_channel_test.go
@@ -12,10 +12,10 @@ import (
"time"
"github.com/gopcua/opcua/id"
+ uatest "github.com/gopcua/opcua/tests/python"
"github.com/gopcua/opcua/ua"
"github.com/gopcua/opcua/uacp"
"github.com/gopcua/opcua/uapolicy"
- "github.com/gopcua/opcua/uatest"
"github.com/pascaldekloe/goe/verify"
)