diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8de33ee9869141beb2d80e46118830d25041f54f..cb6839da39999ed987596c885dbb2aa6c5198acf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,4 +13,5 @@ include: - local: '/build/ci/.code-quality-ci.yml' - local: '/build/ci/.documentation-ci.yml' - local: '/build/ci/.security-and-compliance-ci.yml' - - local: '/build/ci/.build-container.yml' \ No newline at end of file + - local: '/build/ci/.build-container.yml' + - local: '/build/ci/.test.yml' \ No newline at end of file diff --git a/README.md b/README.md index e146373c4a27c01997b597c1782f315c07d82d24..aecc71b49a1faf1c2fffd9b6a76317c2f33c5e15 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # GoSDN +### CI Status Master + +[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) +[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/master) + +### CI Status Develop + +[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) +[](https://code.fbi.h-da.de/cocsn/gosdn/-/commits/develop) + The GIT repo for the GoSDN design and implementation. GoSDN is intended to be controller for Software Defined Networks (SDN) that follows a modern software architecture design and a well-documented implementation in the go language. ## Generate Code Stubs @@ -15,4 +25,4 @@ gosdn ## Documentation -The latest documentatiion generated on the master branch can be downloaded [here](https://code.fbi.h-da.de/cocsn/gosdn/-/jobs). \ No newline at end of file +The latest documentatiion generated on the master branch can be downloaded [here](https://code.fbi.h-da.de/cocsn/gosdn/-/jobs). diff --git a/build/ci/.test.yml b/build/ci/.test.yml new file mode 100644 index 0000000000000000000000000000000000000000..f6114fcf3ecfa37a8c54e199fdc35a9629369de5 --- /dev/null +++ b/build/ci/.test.yml @@ -0,0 +1,23 @@ +unit-test-master: + image: golang:1.14 + stage: test + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + script: + - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out + after_script: + - go tool cover -func=coverage.out + + +unit-test: + image: golang:1.14 + stage: test + allow_failure: true + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + script: + - go test -race $(go list ./... | grep -v /forks/ | grep -v /api/ | grep -v /mocks ) -v -coverprofile=coverage.out + after_script: + - go tool cover -func=coverage.out \ No newline at end of file diff --git a/cmd/gnmi-target/target.go b/cmd/gnmi-target/target.go index 4239ea9faaa0bb556e3f122cba9441b0e9b352e5..e72ef7acb77d43cefb5770f79828f8cc6128cac0 100644 --- a/cmd/gnmi-target/target.go +++ b/cmd/gnmi-target/target.go @@ -6,7 +6,6 @@ import ( oc "code.fbi.h-da.de/cocsn/yang-models/generated/arista" "context" "flag" - "fmt" "github.com/google/gnxi/utils/credentials" pb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/ygot/ygot" @@ -16,7 +15,6 @@ import ( "google.golang.org/grpc/reflection" "google.golang.org/grpc/status" "net" - "os" "reflect" ) @@ -76,19 +74,6 @@ func main() { oc.Unmarshal, oc.ΛEnum) - flag.Usage = func() { - fmt.Fprintf(os.Stderr, "Supported models:\n") - for _, m := range model.SupportedModels() { - fmt.Fprintf(os.Stderr, " %s\n", m) - } - fmt.Fprintf(os.Stderr, "\n") - fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) - flag.PrintDefaults() - } - - flag.Set("logtostderr", "true") - flag.Parse() - g := grpc.NewServer() var configData []byte diff --git a/cmd/gnmi/gnmi.go b/cmd/gnmi/gnmi.go index 00a80b3e5f0efcb7e5b0be1768b33426348859d8..0f30b05abff9dc56f4db082503ecc792a9713c1e 100644 --- a/cmd/gnmi/gnmi.go +++ b/cmd/gnmi/gnmi.go @@ -30,7 +30,21 @@ func main() { log.Fatal(err) } - p := []string{"/interfaces/interface[name=*]/state/name"} + cfg := &gnmi.Config{ + Addr: "[fdfd::ce05]:6030", + Username: "admin", + Password: "arista", + Encoding: gpb.Encoding_JSON_IETF, + } + transport, err := nucleus.NewGnmiTransport(cfg) + if err != nil { + log.Fatal(err) + } + transport.SetNode = sbi.SetNode() + + device.Transport = transport + + p := []string{"/interfaces/interface"} errors := 0 for _, path := range p { err := pnd.RequestAll(path) diff --git a/cmd/gosdn-cli/main.go b/cmd/gosdn-cli/main.go deleted file mode 100644 index 5ed64517e9f1d2f7d63ad9e98d70774e58043abf..0000000000000000000000000000000000000000 --- a/cmd/gosdn-cli/main.go +++ /dev/null @@ -1,200 +0,0 @@ -package main - -import ( - pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" - "context" - "flag" - "fmt" - log "github.com/sirupsen/logrus" - "google.golang.org/grpc" - "os" - "time" -) - -const ( - defaultName = "gosdn-cli" -) - -// Based on the helloworld example of grpc.io -- thx! - -type cliClientConfig struct { - goSDNCLIAddr4 *string - goSDNCLIPort4 *int - interactive *bool - goSDNCommand *string -} - -type commandOptions struct { - name string - description string - command func(conn *grpc.ClientConn) -} - -var commandList = map[string]commandOptions{ - "hello": {"hello", "test connection to goSDN controller", goSDNSayHello}, - "shutdown": {"shutdown", "request goSDN controller to shutdown", goSDNShutdown}, - "testdb": {"testdb", "test all database connections", goSDNTestDB}, - "tapigetedge": {"tapigetedge", "get list of edges", TAPIGetEdge}, - "tapigetedgenode": {"tapigetedgenode", "get list of edgenodes", TAPIGetEdgeNode}, - "tapigetlink": {"tapigetlink", "get list of links", TAPIGetLink}, -} - -/* - gosdn-cli allows to mode of operations: - - interactive: text GUI to operate goSDN - - non-interactive: basic CLI without text GUI -*/ - -func main() { - // This holds the basic configuration for gosdn-cli - var myConfiguration = new(cliClientConfig) - - myConfiguration.goSDNCLIAddr4 = flag.String("cliServerAddr", "127.0.0.1", "The IPv4 Address of the grpcCLI.") - myConfiguration.goSDNCLIPort4 = flag.Int("cliServerPort", 55055, "The port number of the grpcCLI") - myConfiguration.interactive = flag.Bool("interactive", false, "interactive: text gui or just not") - var printCommandList = flag.Bool("commandlist", false, "interactive: print command list") - myConfiguration.goSDNCommand = flag.String("command", "", "-command: <your command> ; show commands with -commandlist") - - flag.Parse() - - // Print complete command list and exit - if *printCommandList { - for _, element := range commandList { - fmt.Println(element.name + "\t" + element.description) - } - os.Exit(0) - } - - log.Info("Starting " + defaultName + " to access the goSDN controller") - // Prepare string with socket for connection to the goSDN controller - goSDNSocketAddress := fmt.Sprintf("%s:%d", *myConfiguration.goSDNCLIAddr4, *myConfiguration.goSDNCLIPort4) - - log.Info("Connecting to the goSDN server at: " + goSDNSocketAddress) - // Set up a connection to the server. - address := "localhost:55055" - - conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) - if err != nil { - log.Fatal(err) - } - defer conn.Close() - log.Info("Connected to " + conn.Target()) - - // Check for non-interactive or interactive mode - if !*myConfiguration.interactive { - log.Info("starting in non-interactive mode") - // Lookup command or die - _, found := commandList[*myConfiguration.goSDNCommand] - if found { - // Excecute desired command - commandList[*myConfiguration.goSDNCommand].command(conn) - } else { - // TODO: change once gosdn/errors exist - log.Fatal("Your desired command is not available: ", commandList[*myConfiguration.goSDNCommand].name) - os.Exit(1) - } - - } else { - log.Info("starting in interactive mode -- do not use yet") - os.Exit(1) - } -} - -func goSDNSayHello(conn *grpc.ClientConn) { - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[1] - } - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) - if err != nil { - log.Fatal(err) - } - log.Info("Greeting: ", r.String()) - -} - -func goSDNShutdown(conn *grpc.ClientConn) { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[0] - } - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.Shutdown(ctx, &pb.ShutdownRequest{Name: name}) - if err != nil { - log.Fatal(err) - } - log.Info("Greeting: ", r.GetMessage()) -} - -func goSDNTestDB(conn *grpc.ClientConn) { - // TODO: fill with code and also see if grpc interface has this stub implemented. -} - -// TAPIGetEdge triggers the GetEdge function of the Ciena -// flavoured TAPI ciena -func TAPIGetEdge(conn *grpc.ClientConn) { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[0] - } - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetEdge(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - log.Fatal(err) - } - log.Info("TAPIGetEdge said: ", r.GetMessage()) -} - -// TAPIGetEdgeNode triggers the GetEdgeNode function of the Ciena -// flavoured TAPI ciena -func TAPIGetEdgeNode(conn *grpc.ClientConn) { - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[0] - } - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetEdgeNode(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - log.Fatal(err) - } - log.Info("TAPIGetEdgeNode said: ", r.GetMessage()) -} - -// TAPIGetLink triggers the GetLink function of the Ciena -// flavoured TAPI ciena -func TAPIGetLink(conn *grpc.ClientConn) { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - if len(os.Args) > 1 { - name = os.Args[0] - } - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetLink(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - log.Fatal(err) - } - log.Info("TAPIGetLink said: ", r.GetMessage()) -} diff --git a/cmd/gosdn-tview/app/app.go b/cmd/gosdn-tview/app/app.go deleted file mode 100644 index 3570285c4b481c7608b6490c345cf3d9c20dc2cb..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/app/app.go +++ /dev/null @@ -1,68 +0,0 @@ -package app - -//TODO: App should be a Singleton i guess -import ( - "github.com/rivo/tview" -) - -type view interface { - GetContent() tview.Primitive -} - -//App is a GUI-Application bases on tview -type App struct { - app *tview.Application - pages *tview.Pages -} - -//NewApp creates a new GUI-Application -func NewApp() *App { - a := &App{ - app: tview.NewApplication(), - } - - return a -} - -//SetRoot sets the root of the GUI-Application -func (a *App) SetRoot(v view) { - a.pages = v.GetContent().(*tview.Pages) - a.app.SetRoot(a.pages, true) -} - -//SwitchPage switches to the given (as string) tview page -func (a *App) SwitchPage(s string) { - if a.pages.HasPage(s) { - a.pages.SwitchToPage(s) - } -} - -//AddPage adds a new view as page that can be switched to -func (a *App) AddPage(name string, p view) { - a.pages.AddPage(name, p.GetContent(), true, false) -} - -//Run starts the GUI-Application -func (a *App) Run() error { - return a.app.Run() -} - -//Stop stops the GUI-Application -func (a *App) Stop() { - a.app.Stop() -} - -//Draw calls tview.Draw() -func (a *App) Draw() { - a.app.Draw() -} - -//QueueUpdateDraw calls tview.QueueUpdateDraw() -func (a *App) QueueUpdateDraw(f func()) { - a.app.QueueUpdateDraw(f) -} - -//SetFocus sets the focus on new tview.Primitive -func (a *App) SetFocus(v tview.Primitive) { - a.app.SetFocus(v) -} diff --git a/cmd/gosdn-tview/grpc/commands.go b/cmd/gosdn-tview/grpc/commands.go deleted file mode 100644 index b1d4bc6da052cdd8dadc9dc4b84eea825550652d..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/grpc/commands.go +++ /dev/null @@ -1,219 +0,0 @@ -package commands - -import ( - "context" - "time" - - pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/rivo/tview" - grpc "google.golang.org/grpc" - //Package google.golang.org/grpc/health is needed to make gRPC Health Check work - _ "google.golang.org/grpc/health" - healthpb "google.golang.org/grpc/health/grpc_health_v1" - "google.golang.org/protobuf/types/known/emptypb" -) - -const ( - defaultName = "gosdn-cli" -) - -type command struct { - Name string - Description string - Function func(conn *grpc.ClientConn) string -} - -//CommandList contains the specific goSDN gRPC calls -var CommandList = []command{ - {"hello", "test connection to controller", goSDNSayHello}, - {"testdb", "test all database connections", goSDNTestDB}, - {"tapiGetDevices", "creates devices", TAPIGetEdge}, - {"tapiGetInterfaces", "creates interfaces", TAPIGetEdgeNode}, - {"tapiGetLinks", "creates links between devices", TAPIGetLink}, - {"shutdown", "request controller to shutdown", goSDNShutdown}, -} - -var serviceConfig = `{ - "loadBalancingPolicy": "round_robin", - "healthCheckConfig": { - "serviceName": "" - } -}` - -//Connect creates a new connection to the gRPC server -func Connect(address string) (*grpc.ClientConn, error) { - options := []grpc.DialOption{ - grpc.WithInsecure(), - grpc.WithBlock(), - grpc.WithDefaultServiceConfig(serviceConfig), - grpc.WithTimeout(5 * time.Second), - } - - return grpc.Dial(address, options...) -} - -//GoSDNLogStream creates a continuous gRPC stream to recieve goSDN logs -func GoSDNLogStream(app *app.App, conn *grpc.ClientConn, tv *tview.TextView) error { - var streamError error - c := pb.NewGrpcCliClient(conn) - stream, err := c.CreateLogStream(context.Background(), &emptypb.Empty{}) - if err != nil { - return err - } - - go func(stream pb.GrpcCli_CreateLogStreamClient) { - for { - msg, err := stream.Recv() - if err != nil { - streamError = err - - go func() { - ticker := time.NewTicker(5 * time.Second) - for range ticker.C { - if err := GoSDNLogStream(app, conn, tv); err == nil { - ticker.Stop() - return - } - } - }() - - break - } - response := []byte(msg.Log) - app.QueueUpdateDraw(func() { - tv.Write(response) - }) - } - }(stream) - - return streamError -} - -func goSDNSayHello(conn *grpc.ClientConn) string { - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) - if err != nil { - return err.Error() - } - - return r.GetMessage() -} - -//WatchHealth continuous gRPC Health Check stream to recieve health changes -func WatchHealth(service string, app *app.App, conn *grpc.ClientConn, tv *tview.TextView) error { - var streamError error - - c := healthpb.NewHealthClient(conn) - stream, err := c.Watch(context.Background(), &healthpb.HealthCheckRequest{Service: service}) - if err != nil { - app.QueueUpdateDraw(func() { - tv.Clear() - tv.SetText(err.Error()) - }) - return err - } - - go func(stream healthpb.Health_WatchClient) { - for { - msg, err := stream.Recv() - if err != nil { - streamError = err - go func() { - ticker := time.NewTicker(5 * time.Second) - for range ticker.C { - if err := WatchHealth(service, app, conn, tv); err == nil { - ticker.Stop() - return - } - } - }() - - break - } - - app.QueueUpdateDraw(func() { - tv.Clear() - tv.SetText(msg.GetStatus().String()) - }) - - } - }(stream) - - return streamError -} - -func goSDNShutdown(conn *grpc.ClientConn) string { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.Shutdown(ctx, &pb.ShutdownRequest{Name: name}) - if err != nil { - return err.Error() - } - return r.GetMessage() -} - -func goSDNTestDB(conn *grpc.ClientConn) string { - // TODO: fill with code and also see if grpc interface has this stub implemented. - return "not implemented yet" -} - -// TAPIGetEdge triggers the GetEdge function of the Ciena -// flavoured TAPI ciena -func TAPIGetEdge(conn *grpc.ClientConn) string { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetEdge(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - return err.Error() - } - return r.GetMessage() -} - -// TAPIGetEdgeNode triggers the GetEdgeNode function of the Ciena -// flavoured TAPI ciena -func TAPIGetEdgeNode(conn *grpc.ClientConn) string { - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetEdgeNode(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - return err.Error() - } - return r.GetMessage() -} - -// TAPIGetLink triggers the GetLink function of the Ciena -// flavoured TAPI ciena -func TAPIGetLink(conn *grpc.ClientConn) string { - - c := pb.NewGrpcCliClient(conn) - - // Contact the server and print out its response. - name := defaultName - ctx, cancel := context.WithTimeout(context.Background(), time.Second) - defer cancel() - r, err := c.TAPIGetLink(ctx, &pb.TAPIRequest{Name: name}) - if err != nil { - return err.Error() - } - return r.GetMessage() -} diff --git a/cmd/gosdn-tview/main.go b/cmd/gosdn-tview/main.go deleted file mode 100644 index 8cb4d784de141462644e0edd29e379bfd7ceaf0d..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/main.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "flag" - "strconv" - "strings" - - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - grpc "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/grpc" - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/views" - log "github.com/sirupsen/logrus" -) - -func main() { - addrIPv4 := flag.String("addr", "localhost", "IPv4 server adress to connect to") - port := flag.Int("port", 55055, "Port of gRPC") - flag.Parse() - - addr := strings.Join([]string{*addrIPv4, strconv.Itoa(*port)}, ":") - conn, err := grpc.Connect(addr) - if err != nil { - log.Fatal(err) - } - - app := app.NewApp() - mainView := views.NewMainView(app, conn) - - app.SetRoot(mainView) - - app.Run() - defer app.Stop() -} diff --git a/cmd/gosdn-tview/views/addPNDView.go b/cmd/gosdn-tview/views/addPNDView.go deleted file mode 100644 index 65a9adb6ee0c5f668104432e3b278dd4c77aed9a..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/addPNDView.go +++ /dev/null @@ -1,49 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/rivo/tview" -) - -//AddPNDView is an application view to create a new goSDN PND -type AddPNDView struct { - title string - addPNDView *tview.Form -} - -//NewAddPNDView creates a new AddPNDView -func NewAddPNDView(title string, app *app.App) *AddPNDView { - pndv := &AddPNDView{ - title: title, - addPNDView: tview.NewForm(), - } - pndv.addPNDView. - SetBorder(true). - SetTitle(pndv.title) - - pndv.addPNDView. - AddInputField("Name", "", 20, nil, nil). - AddInputField("description", "", 20, nil, nil). - AddDropDown("SI", []string{"Southbound 1", "Southbound 2", "Southbound 3", "Southbound 4"}, 0, nil). - AddButton("Send", func() { - //TODO: call grpc function here - }). - AddButton("Abort", func() { - app.SwitchPage("main") - }). - SetCancelFunc(func() { - app.SwitchPage("main") - }) - - return pndv -} - -//GetContent returns the tview.Primitive belonging to the AddPNDView -func (pndv *AddPNDView) GetContent() tview.Primitive { - return pndv.addPNDView -} - -//GetTitle returns the title of the specific view -func (pndv *AddPNDView) GetTitle() string { - return pndv.title -} diff --git a/cmd/gosdn-tview/views/commandsListView.go b/cmd/gosdn-tview/views/commandsListView.go deleted file mode 100644 index 745fd4523a568c081cf66b37c078ae831d2ec3ca..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/commandsListView.go +++ /dev/null @@ -1,70 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - commands "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/grpc" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//CommandListView is an application view to display all the goSDN commands -type CommandListView struct { - title string - commandsList *tview.List -} - -//NewCommandListView creates a new CommandListView -func NewCommandListView(title string) *CommandListView { - cv := &CommandListView{ - title: title, - commandsList: tview.NewList(), - } - cv.commandsList. - SetBorder(true). - SetTitle(cv.title) - - return cv -} - -//GetContent returns the tview.Primitive belonging to the CommandListView -func (cv *CommandListView) GetContent() tview.Primitive { - return cv.commandsList -} - -//GetTitle returns the title of the specific view -func (cv *CommandListView) GetTitle() string { - return cv.title -} - -//GetCommands gets all goSDN commands from a command list and creates new -//tview.List items for each one of them. The specific gRPC functions are added -//as tview.Selected() function -func (cv *CommandListView) GetCommands(app *app.App, rv *ResultAndInputView, - conn *grpc.ClientConn) { - //TODO: create own command in grpc -> commands - cv.commandsList.AddItem("addPND", "closes the application", 'a', func() { - rv.ChangeContentView(rv.pndInputView.GetTitle()) - app.SetFocus(rv.GetContent()) - }) - - for i, command := range commands.CommandList { - f := command.Function - cv.commandsList. - AddItem(command.Name, command.Description, rune('b'+i), func() { - r := f(conn) - rv.SetContent(r) - rv.ChangeContentView(rv.GetTitle()) - app.SetFocus(rv.GetContent()) - }) - } - - cv.commandsList.AddItem("log", "shows the log of goSDN", 'l', func() { - rv.ChangeContentView(rv.consoleLogView.GetTitle()) - app.SetFocus(rv.GetContent()) - }) - - cv.commandsList.AddItem("quit", "closes the application", 'q', func() { - app.Stop() - }) - -} diff --git a/cmd/gosdn-tview/views/consoleLogView.go b/cmd/gosdn-tview/views/consoleLogView.go deleted file mode 100644 index 35af59cdad223200f66ce041c3f406305d4a9bfa..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/consoleLogView.go +++ /dev/null @@ -1,51 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - commands "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/grpc" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//ConsoleLogView is an application view to create a view for goSDN log messages -type ConsoleLogView struct { - title string - consoleLogView *tview.TextView -} - -//NewConsoleLogView creates a new ConsoleLogView -func NewConsoleLogView(title string, app *app.App, conn *grpc.ClientConn) *ConsoleLogView { - clv := &ConsoleLogView{ - consoleLogView: tview.NewTextView(), - title: title, - } - clv.consoleLogView. - SetDynamicColors(true). - SetTextAlign(tview.AlignLeft). - SetScrollable(true). - SetRegions(true). - SetBorder(true). - SetTitle(clv.title) - - commands.GoSDNLogStream(app, conn, clv.consoleLogView) - - return clv -} - -//GetContent returns the tview.Primitive belonging to the ConsoleLogView -func (clv *ConsoleLogView) GetContent() tview.Primitive { - return clv.consoleLogView -} - -//Write implements the io.Writer interface via tview.textView.Write(). -//Gets a string and converts it to a byte slice and writes it to the textView -//buffer -func (clv *ConsoleLogView) Write(s string) (n int, err error) { - b := []byte(s) - return clv.consoleLogView.Write(b) -} - -//GetTitle returns the title of the specific view -func (clv *ConsoleLogView) GetTitle() string { - return clv.title -} diff --git a/cmd/gosdn-tview/views/datbaseStatusView.go b/cmd/gosdn-tview/views/datbaseStatusView.go deleted file mode 100644 index 3c8e3c36689e893a3b812dce3386779340e34aa4..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/datbaseStatusView.go +++ /dev/null @@ -1,43 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/rivo/tview" - //"time" -) - -//DatabaseStatusView is an application view to display the current status of -//the database (e.g. connected, disconnected,...) -type DatabaseStatusView struct { - databaseStatusView *tview.TextView -} - -//NewDatabaseStatusView creates a new DatabaseStatusView -func NewDatabaseStatusView(app *app.App) *DatabaseStatusView { - dv := &DatabaseStatusView{ - databaseStatusView: tview.NewTextView(), - } - dv.databaseStatusView. - SetDynamicColors(true). - SetTextAlign(tview.AlignCenter). - SetRegions(true). - SetBorder(true). - SetTitle("Database") - - //TODO: dummy text at the moment. database status check has to be initilized - //here - dv.databaseStatusView.SetText("[green]" + "connected") - - return dv -} - -//GetContent returns the tview.Primitive belonging to the DatabaseStatusView -func (dv *DatabaseStatusView) GetContent() tview.Primitive { - return dv.databaseStatusView -} - -//SetContent sets new string content for the DatabaseStatusView -func (dv *DatabaseStatusView) SetContent(s string) { - dv.databaseStatusView.Clear() - dv.databaseStatusView.SetText(s) -} diff --git a/cmd/gosdn-tview/views/footerView.go b/cmd/gosdn-tview/views/footerView.go deleted file mode 100644 index b79ce1054a104b24040860d7fa20eef1da42519e..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/footerView.go +++ /dev/null @@ -1,36 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//FooterView is an application view to display the footer of the application it -//consists multiple other application views -type FooterView struct { - footerView *tview.Flex - databaseStatusView *DatabaseStatusView - gRPCStatusView *GRPCStatusView -} - -//NewFooterView creates a new FooterView -func NewFooterView(app *app.App, conn *grpc.ClientConn) *FooterView { - - fw := &FooterView{ - footerView: tview.NewFlex(), - databaseStatusView: NewDatabaseStatusView(app), - gRPCStatusView: NewGRPCStatusView(app, conn), - } - - fw.footerView. - AddItem(fw.gRPCStatusView.GetContent(), 0, 1, false). - AddItem(fw.databaseStatusView.GetContent(), 0, 1, false) - - return fw -} - -//GetContent returns the tview.Primitive belonging to the FooterView -func (fw *FooterView) GetContent() tview.Primitive { - return fw.footerView -} diff --git a/cmd/gosdn-tview/views/gRPCStatusView.go b/cmd/gosdn-tview/views/gRPCStatusView.go deleted file mode 100644 index a4d9df9e65f9908b7e21ddc5fdd20ece2da34982..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/gRPCStatusView.go +++ /dev/null @@ -1,43 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - commands "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/grpc" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//GRPCStatusView is an application view to display the current status of -//the gRPC server (e.g. connected, unavailable,...) -type GRPCStatusView struct { - gRPCStatusView *tview.TextView -} - -//NewGRPCStatusView creates a new GRPCStatusView -func NewGRPCStatusView(app *app.App, conn *grpc.ClientConn) *GRPCStatusView { - sv := &GRPCStatusView{ - gRPCStatusView: tview.NewTextView(), - } - - sv.gRPCStatusView. - SetDynamicColors(true). - SetTextAlign(tview.AlignCenter). - SetRegions(true). - SetBorder(true). - SetTitle("gRPC") - - commands.WatchHealth("", app, conn, sv.gRPCStatusView) - - return sv -} - -//GetContent returns the tview.Primitive belonging to the gRPCStatusView -func (sv *GRPCStatusView) GetContent() tview.Primitive { - return sv.gRPCStatusView -} - -//SetContent sets new string content for the gRPCStatusView -func (sv *GRPCStatusView) SetContent(s string) { - sv.gRPCStatusView.Clear() - sv.gRPCStatusView.SetText(s) -} diff --git a/cmd/gosdn-tview/views/headerView.go b/cmd/gosdn-tview/views/headerView.go deleted file mode 100644 index 8f7198383324722f84e80ccb0cb81dcc15b100fc..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/headerView.go +++ /dev/null @@ -1,35 +0,0 @@ -package views - -import "github.com/rivo/tview" - -var goSDNAscii = ` ____ ____ _ _ _ __ _ _ _ - __ _ ___/ ___|| _ \| \ | | __| | __ _ / / __ ___| |_ | |__ __| | __ _ - / _ |/ _ \___ \| | | | \| | _____ / _ |/ _ | / / _ \ / _ \ __| _____ | _ \ / _ |/ _ | -| (_| | (_) |__) | |_| | |\ | |_____| | (_| | (_| |/ /| | | | __/ |_ |_____| | | | | | (_| | (_| | - \__, |\___/____/|____/|_| \_| \__,_|\__,_/_/ |_| |_|\___|\__| |_| |_|___\__,_|\__,_| - |___/ |_____| ` - -//HeaderView is an application view to display the header of the application -type HeaderView struct { - headerFlex *tview.Flex - titleView *tview.TextView -} - -//NewHeaderView creates a new HeaderView -func NewHeaderView() *HeaderView { - //TODO: change to uses FlexBox if there is more to display in the header - hv := &HeaderView{ - titleView: tview.NewTextView(), - } - hv.titleView. - SetText(goSDNAscii). - SetTextAlign(tview.AlignCenter). - SetBorder(true) - - return hv -} - -//GetContent returns the tview.Primitive belonging to the HeaderView -func (hv *HeaderView) GetContent() tview.Primitive { - return hv.titleView -} diff --git a/cmd/gosdn-tview/views/mainView.go b/cmd/gosdn-tview/views/mainView.go deleted file mode 100644 index 22aa23ed911316da10e7a14fd89c199e81513730..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/mainView.go +++ /dev/null @@ -1,51 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//MainView is an application view to display the main content of the application. -//It is the entry point for the application and contains all necessary views for -//for that purpose -type MainView struct { - pages *tview.Pages - mainGrid *tview.Grid - commandsListView *CommandListView - resultAndInputView *ResultAndInputView - headerView *HeaderView - footerView *FooterView -} - -//NewMainView creates a new MainView -func NewMainView(app *app.App, conn *grpc.ClientConn) *MainView { - mv := &MainView{ - pages: tview.NewPages(), - mainGrid: tview.NewGrid(), - commandsListView: NewCommandListView("commands"), - headerView: NewHeaderView(), - footerView: NewFooterView(app, conn), - } - mv.resultAndInputView = NewResultAndInputView("result and input", app, mv.commandsListView.GetContent(), conn) - mv.commandsListView.GetCommands(app, mv.resultAndInputView, conn) - - mv.mainGrid. - SetRows(8, 0, 5). - SetColumns(40, 0). - AddItem(mv.headerView.GetContent(), 0, 0, 1, 2, 0, 0, false). - AddItem(mv.footerView.GetContent(), 2, 0, 1, 2, 0, 0, false) - - mv.mainGrid. - AddItem(mv.commandsListView.GetContent(), 1, 0, 1, 1, 0, 0, true). - AddItem(mv.resultAndInputView.GetContent(), 1, 1, 1, 1, 0, 0, false) - - mv.pages.AddPage("main", mv.mainGrid, true, true) - - return mv -} - -//GetContent returns the tview.Primitive belonging to the MainView -func (mv *MainView) GetContent() tview.Primitive { - return mv.pages -} diff --git a/cmd/gosdn-tview/views/resultAndInputView.go b/cmd/gosdn-tview/views/resultAndInputView.go deleted file mode 100644 index 5b83868c2accdcca59146ad5178f3413167c4d33..0000000000000000000000000000000000000000 --- a/cmd/gosdn-tview/views/resultAndInputView.go +++ /dev/null @@ -1,72 +0,0 @@ -package views - -import ( - "code.fbi.h-da.de/cocsn/gosdn/cmd/gosdn-tview/app" - "github.com/gdamore/tcell/v2" - "github.com/rivo/tview" - "google.golang.org/grpc" -) - -//ResultAndInputView is an application view to display different other views. -//Depending on the required features the views are changed. -type ResultAndInputView struct { - title string - pages *tview.Pages - resultView *tview.TextView - pndInputView *AddPNDView - consoleLogView *ConsoleLogView -} - -//NewResultAndInputView creates a new ResultAndInputView -func NewResultAndInputView(title string, app *app.App, commandListView tview.Primitive, conn *grpc.ClientConn) *ResultAndInputView { - rv := &ResultAndInputView{ - title: title, - pages: tview.NewPages(), - pndInputView: NewAddPNDView("add PND", app), - resultView: tview.NewTextView(), - consoleLogView: NewConsoleLogView("logs", app, conn), - } - rv.resultView. - SetDynamicColors(true). - SetRegions(true). - SetScrollable(true). - SetTitle(rv.title). - SetBorder(true) - - rv.pages. - AddPage(rv.title, rv.resultView, true, true). - AddPage(rv.pndInputView.GetTitle(), rv.pndInputView.GetContent(), true, false). - AddPage(rv.consoleLogView.GetTitle(), rv.consoleLogView.GetContent(), true, false) - - rv.pages.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { - k := event.Key() - if k == tcell.KeyESC { - app.SetFocus(commandListView) - } - return event - }) - - return rv -} - -//GetContent returns the tview.Primitive belonging to the ResultAndInputView -func (rv *ResultAndInputView) GetContent() tview.Primitive { - return rv.pages -} - -//ChangeContentView changes the current content (tview.Primitive) that is visible -//inside this view -func (rv *ResultAndInputView) ChangeContentView(s string) { - rv.pages.SwitchToPage(s) -} - -//SetContent sets new string content for the ResultAndInputView -func (rv *ResultAndInputView) SetContent(s string) { - rv.resultView.Clear() - rv.resultView.SetText(s) -} - -//GetTitle returns the title of the specific view -func (rv *ResultAndInputView) GetTitle() string { - return rv.title -} diff --git a/database/client.go b/database/client.go index ecd24e25c13eb8af4d0522f4bfe00958041cabb3..10e5414835fb523e273eecb87bf011535617f955 100644 --- a/database/client.go +++ b/database/client.go @@ -7,19 +7,20 @@ import ( "github.com/spf13/viper" ) -//Database is a database +// Database is a database +// deprecated type Database struct { driver neo4j.Driver } -//PND is a principle network domain +// PND is a principle network domain type PND struct { name string description string interfaces []string } -//NewDatabaseClient creates a database ciena +// NewDatabaseClient creates a database ciena func NewDatabaseClient() Database { uri := viper.GetString("db.socket") username := viper.GetString("db.user") @@ -32,7 +33,7 @@ func NewDatabaseClient() Database { } } -//createDriver creates a neo4j.Driver instance +// createDriver creates a neo4j.Driver instance func createDriver(uri, username, password string, encrypted bool) neo4j.Driver { driver, err := neo4j.NewDriver( uri, @@ -49,7 +50,7 @@ func createDriver(uri, username, password string, encrypted bool) neo4j.Driver { return driver } -//createSession creates a neo4j.Session +// createSession creates a neo4j.Session func createSession(driver neo4j.Driver, write bool) neo4j.Session { var sessionConfig neo4j.SessionConfig @@ -68,7 +69,7 @@ func createSession(driver neo4j.Driver, write bool) neo4j.Session { return session } -//storePndTxFunc transaction to store a pnd in the database +// storePndTxFunc transaction to store a pnd in the database func storePndTxFunc(name, description string, interfaces []string) neo4j.TransactionWork { return func(tx neo4j.Transaction) (interface{}, error) { query := @@ -98,7 +99,7 @@ func storePndTxFunc(name, description string, interfaces []string) neo4j.Transac } } -//StorePND stores the given principle network domain +// StorePND stores the given principle network domain func (d Database) StorePND(pnd *PND) neo4j.Node { session := createSession(d.driver, true) defer session.Close() @@ -170,8 +171,8 @@ func storeNodesTxFunc(json string, id int64) neo4j.TransactionWork { } } -//StoreNodes stores the given nodes to the database and adds them to a -//principle networt domain (PND). It is required for a node to belong to a PND. +// StoreNodes stores the given nodes to the database and adds them to a +// principle networt domain (PND). It is required for a node to belong to a PND. func (d Database) StoreNodes(json string) []neo4j.Node { //TODO: remove this after testing and add own gRPC call for it testPND := PND{name: "test_PND", description: "very interesting", interfaces: []string{"TAPI", "RESTCONF"}} @@ -189,15 +190,15 @@ func (d Database) StoreNodes(json string) []neo4j.Node { return result.([]neo4j.Node) } -//RemoveNodes removes the given nodes and their relationships +// RemoveNodes removes the given nodes and their relationships func (d Database) RemoveNodes(json string) {} -//RemoveSingleNode removes the given node and their relationship by id. +// RemoveSingleNode removes the given node and their relationship by id. func (d Database) RemoveSingleNode(id string) {} -//storeLinksTxFunc transaction to store links from a json. -//creates relation between different devices. -//returns a slice of those created relations. +// storeLinksTxFunc transaction to store links from a json. +// creates relation between different devices. +// returns a slice of those created relations. func storeLinksTxFunc(json string) neo4j.TransactionWork { return func(tx neo4j.Transaction) (interface{}, error) { var relationsList []neo4j.Relationship @@ -235,7 +236,7 @@ func storeLinksTxFunc(json string) neo4j.TransactionWork { } } -//StoreLinks stores the links between nodes +// StoreLinks stores the links between nodes func (d Database) StoreLinks(json string) []neo4j.Relationship { session := createSession(d.driver, true) defer session.Close() @@ -250,8 +251,8 @@ func (d Database) StoreLinks(json string) []neo4j.Relationship { return result.([]neo4j.Relationship) } -//storeNodeEdgePointsTxFunc transaction to store interfaces from a json. -//returns count of added/updated interfaces +// storeNodeEdgePointsTxFunc transaction to store interfaces from a json. +// returns count of added/updated interfaces func storeNodeEdgePointsTxFunc(json string) neo4j.TransactionWork { return func(tx neo4j.Transaction) (interface{}, error) { query := @@ -287,8 +288,8 @@ func storeNodeEdgePointsTxFunc(json string) neo4j.TransactionWork { //TODO: currently this goes over each and every device/interface and adds // a interface_of relation. -> do it only for the newly added interfaces -//storeNodeEdgePointsRelationTxFunc transaction to create relations between interfaces and devices -//returns count of added/updated relations +// storeNodeEdgePointsRelationTxFunc transaction to create relations between interfaces and devices +// returns count of added/updated relations func storeNodeEdgePointsRelationTxFunc() neo4j.TransactionWork { return func(tx neo4j.Transaction) (interface{}, error) { query := @@ -314,7 +315,7 @@ func storeNodeEdgePointsRelationTxFunc() neo4j.TransactionWork { } } -//StoreNodeEdgePoints stores the given node edge points (interfaces) +// StoreNodeEdgePoints stores the given node edge points (interfaces) func (d Database) StoreNodeEdgePoints(json string) { session := createSession(d.driver, true) defer session.Close() @@ -332,27 +333,27 @@ func (d Database) StoreNodeEdgePoints(json string) { log.Info("added/updated nodeEdgePoints (count): ", result) } -//StoreConnections stores relations between nodes +// StoreConnections stores relations between nodes func (d Database) StoreConnections(json string) {} -//StoreTopology creates a new network topology node. Can also create a relation +// StoreTopology creates a new network topology node. Can also create a relation //the new node and a existing one if desired func StoreTopology() {} -//RemoveTopology removes the given network topology. This includes the node itself +// RemoveTopology removes the given network topology. This includes the node itself //aswell as the containing links and relations func RemoveTopology() {} -//CreateTopologyRelation creates a relation between two given topologies +// CreateTopologyRelation creates a relation between two given topologies func CreateTopologyRelation() {} -//CreateLink creates a link between two network elements +// CreateLink creates a link between two network elements func CreateLink() {} -//RemoveLink removes a link between two network elements +// RemoveLink removes a link between two network elements func RemoveLink() {} -//Shutdown closes the connection to the database +// Shutdown closes the connection to the database func (d Database) Shutdown() error { return d.driver.Close() } diff --git a/forks/goarista/openconfig/client/client.go b/forks/goarista/openconfig/client/client.go deleted file mode 100644 index 1d7d1992f375d06b747161dc4570124696202fac..0000000000000000000000000000000000000000 --- a/forks/goarista/openconfig/client/client.go +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) 2016 Arista Networks, Inc. -// Use of this source code is governed by the Apache License 2.0 -// that can be found in the COPYING file. - -// Package ciena provides helper functions for OpenConfig CLI tools. -package client - -import ( - "io" - "strings" - "sync" - - "github.com/golang/glog" - "github.com/golang/protobuf/proto" - "github.com/openconfig/reference/rpc/openconfig" - "golang.org/x/net/context" - "google.golang.org/grpc" - "google.golang.org/grpc/metadata" -) - -const defaultPort = "6030" - -// PublishFunc is the method to publish responses -type PublishFunc func(addr string, message proto.Message) - -// Client is a connected gRPC ciena -type Client struct { - client openconfig.OpenConfigClient - ctx context.Context - device string -} - -// New creates a new gRPC ciena and connects it -func New(username, password, addr string, opts []grpc.DialOption) *Client { - device := addr - if !strings.ContainsRune(addr, ':') { - addr += ":" + defaultPort - } - // Make sure we don't move past the grpc.Dial() call until we actually - // established an HTTP/2 connection successfully. - opts = append(opts, grpc.WithBlock()) - conn, err := grpc.Dial(addr, opts...) - if err != nil { - glog.Fatalf("Failed to dial: %s", err) - } - glog.Infof("Connected to %s", addr) - client := openconfig.NewOpenConfigClient(conn) - - ctx := context.Background() - if username != "" { - ctx = metadata.NewOutgoingContext(ctx, metadata.Pairs( - "username", username, - "password", password)) - } - return &Client{ - client: client, - device: device, - ctx: ctx, - } -} - -// Get sends a get request and returns the responses -func (c *Client) Get(path string) []*openconfig.Notification { - req := &openconfig.GetRequest{ - Path: []*openconfig.Path{ - { - Element: strings.Split(path, "/"), - }, - }, - } - response, err := c.client.Get(c.ctx, req) - if err != nil { - glog.Fatalf("Get failed: %s", err) - } - return response.Notification -} - -// Subscribe sends subscriptions, and consumes responses. -// The given publish function is used to publish SubscribeResponses received -// for the given subscriptions, when connected to the given host, with the -// given user/pass pair, or the ciena-side cert specified in the gRPC opts. -// This function does not normally return so it should probably be run in its -// own goroutine. When this function returns, the given WaitGroup is marked -// as done. -func (c *Client) Subscribe(wg *sync.WaitGroup, subscriptions []string, - publish PublishFunc) { - defer wg.Done() - stream, err := c.client.Subscribe(c.ctx) - if err != nil { - glog.Fatalf("Subscribe failed: %s", err) - } - defer stream.CloseSend() - - for _, path := range subscriptions { - sub := &openconfig.SubscribeRequest{ - Request: &openconfig.SubscribeRequest_Subscribe{ - Subscribe: &openconfig.SubscriptionList{ - Subscription: []*openconfig.Subscription{ - { - Path: &openconfig.Path{Element: strings.Split(path, "/")}, - }, - }, - }, - }, - } - - glog.Infof("Sending subscribe request: %s", sub) - err = stream.Send(sub) - if err != nil { - glog.Fatalf("Failed to subscribe: %s", err) - } - } - - for { - resp, err := stream.Recv() - if err != nil { - if err != io.EOF { - glog.Fatalf("Error received from the server: %s", err) - } - return - } - switch resp := resp.Response.(type) { - case *openconfig.SubscribeResponse_SyncResponse: - if !resp.SyncResponse { - panic("initial sync failed," + - " check that you're using a ciena compatible with the server") - } - } - glog.V(3).Info(resp) - publish(c.device, resp) - } -} diff --git a/forks/goarista/openconfig/client/flags.go b/forks/goarista/openconfig/client/flags.go deleted file mode 100644 index fb91bba3715c286babedb3e58caf221b576d213b..0000000000000000000000000000000000000000 --- a/forks/goarista/openconfig/client/flags.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright (c) 2016 Arista Networks, Inc. -// Use of this source code is governed by the Apache License 2.0 -// that can be found in the COPYING file. - -package client - -import ( - "crypto/tls" - "crypto/x509" - "flag" - "io/ioutil" - "os" - "strings" - - "github.com/golang/glog" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" -) - -const ( - // HostnameArg is the value to be replaced by the actual hostname - HostnameArg = "HOSTNAME" -) - -// ParseHostnames parses a comma-separated list of names and replaces HOSTNAME with the current -// hostname in it -func ParseHostnames(list string) ([]string, error) { - items := strings.Split(list, ",") - hostname, err := os.Hostname() - if err != nil { - return nil, err - } - names := make([]string, len(items)) - for i, name := range items { - if name == HostnameArg { - name = hostname - } - names[i] = name - } - return names, nil -} - -// ParseFlags registers some additional common flags, -// parses the flags, and returns the resulting gRPC options, -// and other settings to connect to the gRPC interface. -func ParseFlags() (username string, password string, subscriptions, addrs []string, - opts []grpc.DialOption) { - - var ( - addrsFlag = flag.String("addrs", "localhost:6030", - "Comma-separated list of addresses of OpenConfig gRPC servers. The address 'HOSTNAME' "+ - "is replaced by the current hostname.") - - caFileFlag = flag.String("cafile", "", - "Path to server TLS certificate file") - - certFileFlag = flag.String("certfile", "", - "Path to ciena TLS certificate file") - - keyFileFlag = flag.String("keyfile", "", - "Path to ciena TLS private key file") - - passwordFlag = flag.String("password", "", - "Password to authenticate with") - - subscribeFlag = flag.String("subscribe", "", - "Comma-separated list of paths to subscribe to upon connecting to the server") - - usernameFlag = flag.String("username", "", - "Username to authenticate with") - - tlsFlag = flag.Bool("tls", false, - "Enable TLS") - ) - - flag.Parse() - if *tlsFlag || *caFileFlag != "" || *certFileFlag != "" { - config := &tls.Config{} - if *caFileFlag != "" { - b, err := ioutil.ReadFile(*caFileFlag) - if err != nil { - glog.Fatal(err) - } - cp := x509.NewCertPool() - if !cp.AppendCertsFromPEM(b) { - glog.Fatalf("credentials: failed to append certificates") - } - config.RootCAs = cp - } else { - config.InsecureSkipVerify = true - } - if *certFileFlag != "" { - if *keyFileFlag == "" { - glog.Fatalf("Please provide both -certfile and -keyfile") - } - cert, err := tls.LoadX509KeyPair(*certFileFlag, *keyFileFlag) - if err != nil { - glog.Fatal(err) - } - config.Certificates = []tls.Certificate{cert} - } - opts = append(opts, grpc.WithTransportCredentials(credentials.NewTLS(config))) - } else { - opts = append(opts, grpc.WithInsecure()) - } - var err error - addrs, err = ParseHostnames(*addrsFlag) - if err != nil { - glog.Fatal(err) - } - subscriptions = strings.Split(*subscribeFlag, ",") - return *usernameFlag, *passwordFlag, subscriptions, addrs, opts -} diff --git a/forks/goarista/openconfig/json.go b/forks/goarista/openconfig/json.go deleted file mode 100644 index 8eba88baded76b426451ef862d332a3c712a1db2..0000000000000000000000000000000000000000 --- a/forks/goarista/openconfig/json.go +++ /dev/null @@ -1,237 +0,0 @@ -// Copyright (c) 2016 Arista Networks, Inc. -// Use of this source code is governed by the Apache License 2.0 -// that can be found in the COPYING file. - -package openconfig - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - - "github.com/openconfig/reference/rpc/openconfig" -) - -// joinPath builds a string out of an Element -func joinPath(path *openconfig.Path) string { - if path == nil { - return "" - } - return strings.Join(path.Element, "/") -} - -func convertUpdate(update *openconfig.Update) (interface{}, error) { - switch update.Value.Type { - case openconfig.Type_JSON: - var value interface{} - decoder := json.NewDecoder(bytes.NewReader(update.Value.Value)) - decoder.UseNumber() - if err := decoder.Decode(&value); err != nil { - return nil, fmt.Errorf("Malformed JSON update %q in %s", - update.Value.Value, update) - } - return value, nil - case openconfig.Type_BYTES: - return update.Value.Value, nil - default: - return nil, - fmt.Errorf("Unhandled type of value %v in %s", update.Value.Type, update) - } -} - -// NotificationToJSON converts a Notification into a JSON string -func NotificationToJSON(notif *openconfig.Notification) (string, error) { - m := make(map[string]interface{}, 1) - m["timestamp"] = notif.Timestamp - m["path"] = "/" + joinPath(notif.Prefix) - if len(notif.Update) != 0 { - updates := make(map[string]interface{}, len(notif.Update)) - var err error - for _, update := range notif.Update { - updates[joinPath(update.Path)], err = convertUpdate(update) - if err != nil { - return "", err - } - } - m["updates"] = updates - } - if len(notif.Delete) != 0 { - deletes := make([]string, len(notif.Delete)) - for i, del := range notif.Delete { - deletes[i] = joinPath(del) - } - m["deletes"] = deletes - } - m = map[string]interface{}{"notification": m} - js, err := json.MarshalIndent(m, "", " ") - if err != nil { - return "", err - } - return string(js), nil -} - -// SubscribeResponseToJSON converts a SubscribeResponse into a JSON string -func SubscribeResponseToJSON(resp *openconfig.SubscribeResponse) (string, error) { - m := make(map[string]interface{}, 1) - var err error - switch resp := resp.Response.(type) { - case *openconfig.SubscribeResponse_Update: - return NotificationToJSON(resp.Update) - case *openconfig.SubscribeResponse_Heartbeat: - m["heartbeat"] = resp.Heartbeat.Interval - case *openconfig.SubscribeResponse_SyncResponse: - m["syncResponse"] = resp.SyncResponse - default: - return "", fmt.Errorf("Unknown type of response: %T: %s", resp, resp) - } - js, err := json.MarshalIndent(m, "", " ") - if err != nil { - return "", err - } - return string(js), nil -} - -// EscapeFunc is the escaping method for attribute names -type EscapeFunc func(k string) string - -// escapeValue looks for maps in an interface and escapes their keys -func escapeValue(value interface{}, escape EscapeFunc) interface{} { - valueMap, ok := value.(map[string]interface{}) - if !ok { - return value - } - escapedMap := make(map[string]interface{}, len(valueMap)) - for k, v := range valueMap { - escapedKey := escape(k) - escapedMap[escapedKey] = escapeValue(v, escape) - } - return escapedMap -} - -// addPathToMap creates a map[string]interface{} from a path. It returns the node in -// the map corresponding to the last element in the path -func addPathToMap(root map[string]interface{}, path []string, escape EscapeFunc) ( - map[string]interface{}, error) { - parent := root - for _, element := range path { - k := escape(element) - node, found := parent[k] - if !found { - node = map[string]interface{}{} - parent[k] = node - } - var ok bool - parent, ok = node.(map[string]interface{}) - if !ok { - return nil, fmt.Errorf( - "Node %s is of type %T (expected map[string]interface traversing %q)", - element, node, path) - } - } - return parent, nil -} - -// NotificationToMap maps a Notification into a nested map of entities -func NotificationToMap(addr string, notification *openconfig.Notification, - escape EscapeFunc) (map[string]interface{}, error) { - if escape == nil { - escape = func(name string) string { - return name - } - } - prefix := notification.GetPrefix() - - // Convert deletes - var deletes map[string]interface{} - notificationDeletes := notification.GetDelete() - if notificationDeletes != nil { - deletes = make(map[string]interface{}) - node := deletes - if prefix != nil { - var err error - node, err = addPathToMap(node, prefix.Element, escape) - if err != nil { - return nil, err - } - } - for _, delete := range notificationDeletes { - _, err := addPathToMap(node, delete.Element, escape) - if err != nil { - return nil, err - } - } - } - - // Convert updates - var updates map[string]interface{} - notificationUpdates := notification.GetUpdate() - if notificationUpdates != nil { - updates = make(map[string]interface{}) - node := updates - if prefix != nil { - var err error - node, err = addPathToMap(node, prefix.Element, escape) - if err != nil { - return nil, err - } - } - for _, update := range notificationUpdates { - updateNode := node - path := update.GetPath() - elementLen := len(path.Element) - - // Convert all elements before the leaf - if elementLen > 1 { - parentElements := path.Element[:elementLen-1] - var err error - updateNode, err = addPathToMap(updateNode, parentElements, escape) - if err != nil { - return nil, err - } - } - - // Convert the value in the leaf - value := update.GetValue() - var unmarshaledValue interface{} - switch value.Type { - case openconfig.Type_JSON: - if err := json.Unmarshal(value.Value, &unmarshaledValue); err != nil { - return nil, err - } - case openconfig.Type_BYTES: - unmarshaledValue = update.Value.Value - default: - return nil, fmt.Errorf("Unexpected value type %s for path %v", - value.Type, path) - } - updateNode[escape(path.Element[elementLen-1])] = escapeValue( - unmarshaledValue, escape) - } - } - - // Build the complete map to return - root := map[string]interface{}{ - "timestamp": notification.Timestamp, - } - if addr != "" { - root["dataset"] = addr - } - if deletes != nil { - root["delete"] = deletes - } - if updates != nil { - root["update"] = updates - } - return root, nil -} - -// NotificationToJSONDocument maps a Notification into a single JSON document -func NotificationToJSONDocument(addr string, notification *openconfig.Notification, - escape EscapeFunc) ([]byte, error) { - m, err := NotificationToMap(addr, notification, escape) - if err != nil { - return nil, err - } - return json.Marshal(m) -} diff --git a/forks/goarista/openconfig/json_test.go b/forks/goarista/openconfig/json_test.go deleted file mode 100644 index 1dfc41d5789b9c8fcbb1a6a8b30918f77873a88a..0000000000000000000000000000000000000000 --- a/forks/goarista/openconfig/json_test.go +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright (c) 2016 Arista Networks, Inc. -// Use of this source code is governed by the Apache License 2.0 -// that can be found in the COPYING file. - -package openconfig - -import ( - "encoding/json" - "testing" - - "github.com/aristanetworks/goarista/test" - - "github.com/openconfig/reference/rpc/openconfig" -) - -func TestNotificationToMap(t *testing.T) { - value := map[string]interface{}{ - "239.255.255.250_0.0.0.0": map[string]interface{}{ - "creationTime": 4.567969230573434e+06, - }, - } - valueJSON, err := json.Marshal(value) - if err != nil { - t.Fatal(err) - } - tests := []struct { - notification openconfig.Notification - json map[string]interface{} - }{{ - notification: openconfig.Notification{ - Prefix: &openconfig.Path{ - Element: []string{ - "foo", - }, - }, - Update: []*openconfig.Update{ - { - Path: &openconfig.Path{ - Element: []string{ - "route1", - }, - }, - Value: &openconfig.Value{ - Value: valueJSON, - }, - }, { - Path: &openconfig.Path{ - Element: []string{ - "route2", - }, - }, - Value: &openconfig.Value{ - Value: valueJSON, - }, - }}, - }, - json: map[string]interface{}{ - "timestamp": int64(0), - "dataset": "cairo", - "update": map[string]interface{}{ - "foo": map[string]interface{}{ - "route1": map[string]interface{}{ - "239.255.255.250_0.0.0.0": map[string]interface{}{ - "creationTime": 4.567969230573434e+06, - }, - }, - "route2": map[string]interface{}{ - "239.255.255.250_0.0.0.0": map[string]interface{}{ - "creationTime": 4.567969230573434e+06, - }, - }, - }, - }, - }, - }, { - notification: openconfig.Notification{ - Prefix: &openconfig.Path{ - Element: []string{ - "foo", "bar", - }, - }, - Delete: []*openconfig.Path{ - { - Element: []string{ - "route", "237.255.255.250_0.0.0.0", - }}, - { - Element: []string{ - "route", "238.255.255.250_0.0.0.0", - }, - }, - }, - Update: []*openconfig.Update{{ - Path: &openconfig.Path{ - Element: []string{ - "route", - }, - }, - Value: &openconfig.Value{ - Value: valueJSON, - }, - }}, - }, - json: map[string]interface{}{ - "timestamp": int64(0), - "dataset": "cairo", - "delete": map[string]interface{}{ - "foo": map[string]interface{}{ - "bar": map[string]interface{}{ - "route": map[string]interface{}{ - "237.255.255.250_0.0.0.0": map[string]interface{}{}, - "238.255.255.250_0.0.0.0": map[string]interface{}{}, - }, - }, - }, - }, - "update": map[string]interface{}{ - "foo": map[string]interface{}{ - "bar": map[string]interface{}{ - "route": map[string]interface{}{ - "239.255.255.250_0.0.0.0": map[string]interface{}{ - "creationTime": 4.567969230573434e+06, - }, - }, - }, - }, - }, - }, - }} - for _, tcase := range tests { - actual, err := NotificationToMap("cairo", &tcase.notification, nil) - if err != nil { - t.Fatal(err) - } - diff := test.Diff(tcase.json, actual) - if len(diff) > 0 { - expectedJSON, _ := json.Marshal(tcase.json) - actualJSON, _ := json.Marshal(actual) - t.Fatalf("Unexpected diff: %s\nExpected:\n%s\nGot:\n%s\n)", diff, expectedJSON, - actualJSON) - } - } -} diff --git a/forks/google/gnmi/modeldata/gostruct/gen.go b/forks/google/gnmi/modeldata/gostruct/gen.go deleted file mode 100644 index 310f7aed49d25d53adc7525eb2a8393051f69f99..0000000000000000000000000000000000000000 --- a/forks/google/gnmi/modeldata/gostruct/gen.go +++ /dev/null @@ -1,3 +0,0 @@ -package gostruct - -//go:generate sh -c "go get -u github.com/openconfig/ygot; (cd $GOPATH/src/github.com/openconfig/ygot && go get -t -d ./...); go get -u github.com/openconfig/public; go get -u github.com/google/go-cmp/cmp; go get -u github.com/openconfig/gnmi/ctree; go get -u github.com/openconfig/gnmi/proto/gnmi; go get -u github.com/openconfig/gnmi/value; go get -u github.com/YangModels/yang; go get -u github.com/golang/glog; go get -u github.com/golang/protobuf/proto; go get -u github.com/kylelemons/godebug/pretty; go get -u github.com/openconfig/goyang/pkg/yang; go get -u google.golang.org/grpc; cd $GOPATH/src && go run github.com/openconfig/ygot/generator/generator.go -generate_fakeroot -output_file github.com/google/gnxi/gnmi/modeldata/gostruct/generated.go -package_name gostruct -exclude_modules ietf-interfaces -path github.com/openconfig/public,github.com/YangModels/yang github.com/openconfig/public/release/models/interfaces/openconfig-interfaces.yang github.com/openconfig/public/release/models/openflow/openconfig-openflow.yang github.com/openconfig/public/release/models/platform/openconfig-platform.yang github.com/openconfig/public/release/models/system/openconfig-system.yang" diff --git a/forks/google/gnmi/modeldata/gostruct/generated.go b/forks/google/gnmi/modeldata/gostruct/generated.go deleted file mode 100644 index fdc44110b15d3ba4f188c8907e9d88cbcc800f78..0000000000000000000000000000000000000000 --- a/forks/google/gnmi/modeldata/gostruct/generated.go +++ /dev/null @@ -1,10113 +0,0 @@ -/* -Package gostruct is a generated package which contains definitions -of structs which represent a YANG schema. The generated schema can be -compressed by a series of transformations (compression was false -in this case). - -This package was generated by go/src/github.com/openconfig/ygot/genutil/names.go -using the following YANG input files: - - github.com/openconfig/public/release/models/interfaces/openconfig-interfaces.yang - - github.com/openconfig/public/release/models/openflow/openconfig-openflow.yang - - github.com/openconfig/public/release/models/platform/openconfig-platform.yang - - github.com/openconfig/public/release/models/system/openconfig-system.yang -Imported modules were sourced from: - - github.com/openconfig/public/... - - github.com/YangModels/yang/... -*/ -package gostruct - -import ( - "encoding/json" - "fmt" - "reflect" - - "github.com/openconfig/goyang/pkg/yang" - "github.com/openconfig/ygot/ygot" - "github.com/openconfig/ygot/ytypes" -) - -// Binary is a type that is used for fields that have a YANG type of -// binary. It is used such that binary fields can be distinguished from -// leaf-lists of uint8s (which are mapped to []uint8, equivalent to -// []byte in reflection). -type Binary []byte - -// YANGEmpty is a type that is used for fields that have a YANG type of -// empty. It is used such that empty fields can be distinguished from boolean fields -// in the generated code. -type YANGEmpty bool - -var ( - SchemaTree map[string]*yang.Entry -) - -func init() { - var err error - if SchemaTree, err = UnzipSchema(); err != nil { - panic("schema error: " + err.Error()) - } -} - -// Schema returns the details of the generated schema. -func Schema() (*ytypes.Schema, error) { - uzp, err := UnzipSchema() - if err != nil { - return nil, fmt.Errorf("cannot unzip schema, %v", err) - } - - return &ytypes.Schema{ - Root: &Device{}, - SchemaTree: uzp, - Unmarshal: Unmarshal, - }, nil -} - -// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes, -// keyed by the name of the struct that the yang.Entry describes the schema for. -func UnzipSchema() (map[string]*yang.Entry, error) { - var schemaTree map[string]*yang.Entry - var err error - if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil { - return nil, fmt.Errorf("could not unzip the schema; %v", err) - } - return schemaTree, nil -} - -// Unmarshal unmarshals data, which must be RFC7951 JSON format, into -// destStruct, which must be non-nil and the correct GoStruct type. It returns -// an error if the destStruct is not found in the schema or the data cannot be -// unmarshaled. The supplied options (opts) are used to control the behaviour -// of the unmarshal function - for example, determining whether errors are -// thrown for unknown fields in the input JSON. -func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error { - tn := reflect.TypeOf(destStruct).Elem().Name() - schema, ok := SchemaTree[tn] - if !ok { - return fmt.Errorf("could not find schema for type %s", tn) - } - var jsonTree interface{} - if err := json.Unmarshal([]byte(data), &jsonTree); err != nil { - return err - } - return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...) -} - -// Device represents the /device YANG schema element. -type Device struct { - Components *OpenconfigPlatform_Components `path:"components" module:"openconfig-platform"` - Interfaces *OpenconfigInterfaces_Interfaces `path:"interfaces" module:"openconfig-interfaces"` - Messages *OpenconfigMessages_Messages `path:"messages" module:"openconfig-messages"` - System *OpenconfigSystem_System `path:"system" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that Device implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*Device) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *Device) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigInterfaces_Interfaces represents the /openconfig-interfaces/interfaces YANG schema element. -type OpenconfigInterfaces_Interfaces struct { - Interface map[string]*OpenconfigInterfaces_Interfaces_Interface `path:"interface" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces) IsYANGGoStruct() {} - -// NewInterface creates a new entry in the Interface list of the -// OpenconfigInterfaces_Interfaces struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigInterfaces_Interfaces) NewInterface(Name string) (*OpenconfigInterfaces_Interfaces_Interface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Interface == nil { - t.Interface = make(map[string]*OpenconfigInterfaces_Interfaces_Interface) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Interface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Interface", key) - } - - t.Interface[key] = &OpenconfigInterfaces_Interfaces_Interface{ - Name: &Name, - } - - return t.Interface[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface struct { - Config *OpenconfigInterfaces_Interfaces_Interface_Config `path:"config" module:"openconfig-interfaces"` - HoldTime *OpenconfigInterfaces_Interfaces_Interface_HoldTime `path:"hold-time" module:"openconfig-interfaces"` - Name *string `path:"name" module:"openconfig-interfaces"` - State *OpenconfigInterfaces_Interfaces_Interface_State `path:"state" module:"openconfig-interfaces"` - Subinterfaces *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces `path:"subinterfaces" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigInterfaces_Interfaces_Interface struct, which is a YANG list entry. -func (t *OpenconfigInterfaces_Interfaces_Interface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Config represents the /openconfig-interfaces/interfaces/interface/config YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Config struct { - Description *string `path:"description" module:"openconfig-interfaces"` - Enabled *bool `path:"enabled" module:"openconfig-interfaces"` - LoopbackMode *bool `path:"loopback-mode" module:"openconfig-interfaces"` - Mtu *uint16 `path:"mtu" module:"openconfig-interfaces"` - Name *string `path:"name" module:"openconfig-interfaces"` - Type E_IETFInterfaces_InterfaceType `path:"type" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_HoldTime struct { - Config *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config `path:"config" module:"openconfig-interfaces"` - State *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State `path:"state" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config represents the /openconfig-interfaces/interfaces/interface/hold-time/config YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config struct { - Down *uint32 `path:"down" module:"openconfig-interfaces"` - Up *uint32 `path:"up" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_HoldTime_State represents the /openconfig-interfaces/interfaces/interface/hold-time/state YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_HoldTime_State struct { - Down *uint32 `path:"down" module:"openconfig-interfaces"` - Up *uint32 `path:"up" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_HoldTime_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_HoldTime_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_HoldTime_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_State represents the /openconfig-interfaces/interfaces/interface/state YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_State struct { - AdminStatus E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus `path:"admin-status" module:"openconfig-interfaces"` - Counters *OpenconfigInterfaces_Interfaces_Interface_State_Counters `path:"counters" module:"openconfig-interfaces"` - Description *string `path:"description" module:"openconfig-interfaces"` - Enabled *bool `path:"enabled" module:"openconfig-interfaces"` - Ifindex *uint32 `path:"ifindex" module:"openconfig-interfaces"` - LastChange *uint64 `path:"last-change" module:"openconfig-interfaces"` - Logical *bool `path:"logical" module:"openconfig-interfaces"` - LoopbackMode *bool `path:"loopback-mode" module:"openconfig-interfaces"` - Mtu *uint16 `path:"mtu" module:"openconfig-interfaces"` - Name *string `path:"name" module:"openconfig-interfaces"` - OperStatus E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus `path:"oper-status" module:"openconfig-interfaces"` - Type E_IETFInterfaces_InterfaceType `path:"type" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_State_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_State_Counters struct { - CarrierTransitions *uint64 `path:"carrier-transitions" module:"openconfig-interfaces"` - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InFcsErrors *uint64 `path:"in-fcs-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InPkts *uint64 `path:"in-pkts" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint64 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *uint64 `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutPkts *uint64 `path:"out-pkts" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_State_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_State_Counters) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_State_Counters) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_State_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces represents the /openconfig-interfaces/interfaces/interface/subinterfaces YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces struct { - Subinterface map[uint32]*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface `path:"subinterface" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) IsYANGGoStruct() {} - -// NewSubinterface creates a new entry in the Subinterface list of the -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) NewSubinterface(Index uint32) (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Subinterface == nil { - t.Subinterface = make(map[uint32]*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) - } - - key := Index - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Subinterface[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Subinterface", key) - } - - t.Subinterface[key] = &OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface{ - Index: &Index, - } - - return t.Subinterface[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface struct { - Config *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config `path:"config" module:"openconfig-interfaces"` - Index *uint32 `path:"index" module:"openconfig-interfaces"` - State *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State `path:"state" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface struct, which is a YANG list entry. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) ΛListKeyMap() (map[string]interface{}, error) { - if t.Index == nil { - return nil, fmt.Errorf("nil value for key Index") - } - - return map[string]interface{}{ - "index": *t.Index, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/config YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config struct { - Description *string `path:"description" module:"openconfig-interfaces"` - Enabled *bool `path:"enabled" module:"openconfig-interfaces"` - Index *uint32 `path:"index" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State struct { - AdminStatus E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus `path:"admin-status" module:"openconfig-interfaces"` - Counters *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters `path:"counters" module:"openconfig-interfaces"` - Description *string `path:"description" module:"openconfig-interfaces"` - Enabled *bool `path:"enabled" module:"openconfig-interfaces"` - Ifindex *uint32 `path:"ifindex" module:"openconfig-interfaces"` - Index *uint32 `path:"index" module:"openconfig-interfaces"` - LastChange *uint64 `path:"last-change" module:"openconfig-interfaces"` - Logical *bool `path:"logical" module:"openconfig-interfaces"` - Name *string `path:"name" module:"openconfig-interfaces"` - OperStatus E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus `path:"oper-status" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element. -type OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters struct { - CarrierTransitions *uint64 `path:"carrier-transitions" module:"openconfig-interfaces"` - InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` - InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` - InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` - InFcsErrors *uint64 `path:"in-fcs-errors" module:"openconfig-interfaces"` - InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` - InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` - InPkts *uint64 `path:"in-pkts" module:"openconfig-interfaces"` - InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` - InUnknownProtos *uint64 `path:"in-unknown-protos" module:"openconfig-interfaces"` - LastClear *uint64 `path:"last-clear" module:"openconfig-interfaces"` - OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` - OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` - OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` - OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` - OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` - OutPkts *uint64 `path:"out-pkts" module:"openconfig-interfaces"` - OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` -} - -// IsYANGGoStruct ensures that OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigInterfaces_Interfaces_Interface_Subinterfaces_Subinterface_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages represents the /openconfig-messages/messages YANG schema element. -type OpenconfigMessages_Messages struct { - Config *OpenconfigMessages_Messages_Config `path:"config" module:"openconfig-messages"` - DebugEntries *OpenconfigMessages_Messages_DebugEntries `path:"debug-entries" module:"openconfig-messages"` - State *OpenconfigMessages_Messages_State `path:"state" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigMessages_Messages_Config represents the /openconfig-messages/messages/config YANG schema element. -type OpenconfigMessages_Messages_Config struct { - Severity E_OpenconfigMessages_SyslogSeverity `path:"severity" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_DebugEntries represents the /openconfig-messages/messages/debug-entries YANG schema element. -type OpenconfigMessages_Messages_DebugEntries struct { - DebugService map[E_OpenconfigMessages_DEBUG_SERVICE]*OpenconfigMessages_Messages_DebugEntries_DebugService `path:"debug-service" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_DebugEntries implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_DebugEntries) IsYANGGoStruct() {} - -// NewDebugService creates a new entry in the DebugService list of the -// OpenconfigMessages_Messages_DebugEntries struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigMessages_Messages_DebugEntries) NewDebugService(Service E_OpenconfigMessages_DEBUG_SERVICE) (*OpenconfigMessages_Messages_DebugEntries_DebugService, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.DebugService == nil { - t.DebugService = make(map[E_OpenconfigMessages_DEBUG_SERVICE]*OpenconfigMessages_Messages_DebugEntries_DebugService) - } - - key := Service - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.DebugService[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list DebugService", key) - } - - t.DebugService[key] = &OpenconfigMessages_Messages_DebugEntries_DebugService{ - Service: Service, - } - - return t.DebugService[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_DebugEntries) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_DebugEntries"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_DebugEntries) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_DebugEntries_DebugService represents the /openconfig-messages/messages/debug-entries/debug-service YANG schema element. -type OpenconfigMessages_Messages_DebugEntries_DebugService struct { - Config *OpenconfigMessages_Messages_DebugEntries_DebugService_Config `path:"config" module:"openconfig-messages"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-messages"` - State *OpenconfigMessages_Messages_DebugEntries_DebugService_State `path:"state" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_DebugEntries_DebugService implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_DebugEntries_DebugService) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigMessages_Messages_DebugEntries_DebugService struct, which is a YANG list entry. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "service": t.Service, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_DebugEntries_DebugService"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_DebugEntries_DebugService_Config represents the /openconfig-messages/messages/debug-entries/debug-service/config YANG schema element. -type OpenconfigMessages_Messages_DebugEntries_DebugService_Config struct { - Enabled *bool `path:"enabled" module:"openconfig-messages"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_DebugEntries_DebugService_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_DebugEntries_DebugService_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_DebugEntries_DebugService_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_DebugEntries_DebugService_State represents the /openconfig-messages/messages/debug-entries/debug-service/state YANG schema element. -type OpenconfigMessages_Messages_DebugEntries_DebugService_State struct { - Enabled *bool `path:"enabled" module:"openconfig-messages"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_DebugEntries_DebugService_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_DebugEntries_DebugService_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_DebugEntries_DebugService_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_DebugEntries_DebugService_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_State represents the /openconfig-messages/messages/state YANG schema element. -type OpenconfigMessages_Messages_State struct { - Message *OpenconfigMessages_Messages_State_Message `path:"message" module:"openconfig-messages"` - Severity E_OpenconfigMessages_SyslogSeverity `path:"severity" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigMessages_Messages_State_Message represents the /openconfig-messages/messages/state/message YANG schema element. -type OpenconfigMessages_Messages_State_Message struct { - AppName *string `path:"app-name" module:"openconfig-messages"` - Msg *string `path:"msg" module:"openconfig-messages"` - Msgid *string `path:"msgid" module:"openconfig-messages"` - Priority *uint8 `path:"priority" module:"openconfig-messages"` - Procid *string `path:"procid" module:"openconfig-messages"` -} - -// IsYANGGoStruct ensures that OpenconfigMessages_Messages_State_Message implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigMessages_Messages_State_Message) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigMessages_Messages_State_Message) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigMessages_Messages_State_Message"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigMessages_Messages_State_Message) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components represents the /openconfig-platform/components YANG schema element. -type OpenconfigPlatform_Components struct { - Component map[string]*OpenconfigPlatform_Components_Component `path:"component" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components) IsYANGGoStruct() {} - -// NewComponent creates a new entry in the Component list of the -// OpenconfigPlatform_Components struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigPlatform_Components) NewComponent(Name string) (*OpenconfigPlatform_Components_Component, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Component == nil { - t.Component = make(map[string]*OpenconfigPlatform_Components_Component) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Component[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Component", key) - } - - t.Component[key] = &OpenconfigPlatform_Components_Component{ - Name: &Name, - } - - return t.Component[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigPlatform_Components_Component represents the /openconfig-platform/components/component YANG schema element. -type OpenconfigPlatform_Components_Component struct { - Backplane *OpenconfigPlatform_Components_Component_Backplane `path:"backplane" module:"openconfig-platform"` - Chassis *OpenconfigPlatform_Components_Component_Chassis `path:"chassis" module:"openconfig-platform"` - Config *OpenconfigPlatform_Components_Component_Config `path:"config" module:"openconfig-platform"` - Cpu *OpenconfigPlatform_Components_Component_Cpu `path:"cpu" module:"openconfig-platform"` - Fabric *OpenconfigPlatform_Components_Component_Fabric `path:"fabric" module:"openconfig-platform"` - Fan *OpenconfigPlatform_Components_Component_Fan `path:"fan" module:"openconfig-platform"` - IntegratedCircuit *OpenconfigPlatform_Components_Component_IntegratedCircuit `path:"integrated-circuit" module:"openconfig-platform"` - Name *string `path:"name" module:"openconfig-platform"` - Port *OpenconfigPlatform_Components_Component_Port `path:"port" module:"openconfig-platform"` - PowerSupply *OpenconfigPlatform_Components_Component_PowerSupply `path:"power-supply" module:"openconfig-platform"` - Properties *OpenconfigPlatform_Components_Component_Properties `path:"properties" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_State `path:"state" module:"openconfig-platform"` - Storage *OpenconfigPlatform_Components_Component_Storage `path:"storage" module:"openconfig-platform"` - Subcomponents *OpenconfigPlatform_Components_Component_Subcomponents `path:"subcomponents" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component struct, which is a YANG list entry. -func (t *OpenconfigPlatform_Components_Component) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Backplane represents the /openconfig-platform/components/component/backplane YANG schema element. -type OpenconfigPlatform_Components_Component_Backplane struct { - Config *OpenconfigPlatform_Components_Component_Backplane_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Backplane_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Backplane) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Backplane) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Backplane) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Backplane_Config represents the /openconfig-platform/components/component/backplane/config YANG schema element. -type OpenconfigPlatform_Components_Component_Backplane_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Backplane_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Backplane_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Backplane_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Backplane_State represents the /openconfig-platform/components/component/backplane/state YANG schema element. -type OpenconfigPlatform_Components_Component_Backplane_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Backplane_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Backplane_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Backplane_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Backplane_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Backplane_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Chassis represents the /openconfig-platform/components/component/chassis YANG schema element. -type OpenconfigPlatform_Components_Component_Chassis struct { - Config *OpenconfigPlatform_Components_Component_Chassis_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Chassis_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Chassis) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Chassis) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Chassis) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Chassis_Config represents the /openconfig-platform/components/component/chassis/config YANG schema element. -type OpenconfigPlatform_Components_Component_Chassis_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Chassis_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Chassis_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Chassis_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Chassis_State represents the /openconfig-platform/components/component/chassis/state YANG schema element. -type OpenconfigPlatform_Components_Component_Chassis_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Chassis_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Chassis_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Chassis_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Chassis_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Chassis_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Config represents the /openconfig-platform/components/component/config YANG schema element. -type OpenconfigPlatform_Components_Component_Config struct { - Name *string `path:"name" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Cpu represents the /openconfig-platform/components/component/cpu YANG schema element. -type OpenconfigPlatform_Components_Component_Cpu struct { - Config *OpenconfigPlatform_Components_Component_Cpu_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Cpu_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Cpu) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Cpu) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Cpu) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Cpu_Config represents the /openconfig-platform/components/component/cpu/config YANG schema element. -type OpenconfigPlatform_Components_Component_Cpu_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Cpu_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Cpu_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Cpu_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Cpu_State represents the /openconfig-platform/components/component/cpu/state YANG schema element. -type OpenconfigPlatform_Components_Component_Cpu_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Cpu_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Cpu_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Cpu_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Cpu_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Cpu_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fabric represents the /openconfig-platform/components/component/fabric YANG schema element. -type OpenconfigPlatform_Components_Component_Fabric struct { - Config *OpenconfigPlatform_Components_Component_Fabric_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Fabric_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fabric) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fabric) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fabric) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fabric_Config represents the /openconfig-platform/components/component/fabric/config YANG schema element. -type OpenconfigPlatform_Components_Component_Fabric_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fabric_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fabric_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fabric_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fabric_State represents the /openconfig-platform/components/component/fabric/state YANG schema element. -type OpenconfigPlatform_Components_Component_Fabric_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fabric_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fabric_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fabric_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fabric_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fabric_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fan represents the /openconfig-platform/components/component/fan YANG schema element. -type OpenconfigPlatform_Components_Component_Fan struct { - Config *OpenconfigPlatform_Components_Component_Fan_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Fan_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fan) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fan) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fan) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fan_Config represents the /openconfig-platform/components/component/fan/config YANG schema element. -type OpenconfigPlatform_Components_Component_Fan_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fan_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fan_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fan_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Fan_State represents the /openconfig-platform/components/component/fan/state YANG schema element. -type OpenconfigPlatform_Components_Component_Fan_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Fan_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Fan_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Fan_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Fan_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Fan_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_IntegratedCircuit represents the /openconfig-platform/components/component/integrated-circuit YANG schema element. -type OpenconfigPlatform_Components_Component_IntegratedCircuit struct { - Config *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_IntegratedCircuit_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_IntegratedCircuit) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_IntegratedCircuit_Config represents the /openconfig-platform/components/component/integrated-circuit/config YANG schema element. -type OpenconfigPlatform_Components_Component_IntegratedCircuit_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_IntegratedCircuit_State represents the /openconfig-platform/components/component/integrated-circuit/state YANG schema element. -type OpenconfigPlatform_Components_Component_IntegratedCircuit_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_IntegratedCircuit_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_IntegratedCircuit_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_IntegratedCircuit_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_IntegratedCircuit_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Port represents the /openconfig-platform/components/component/port YANG schema element. -type OpenconfigPlatform_Components_Component_Port struct { - Config *OpenconfigPlatform_Components_Component_Port_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Port_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Port) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Port) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Port) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Port_Config represents the /openconfig-platform/components/component/port/config YANG schema element. -type OpenconfigPlatform_Components_Component_Port_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Port_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Port_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Port_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Port_State represents the /openconfig-platform/components/component/port/state YANG schema element. -type OpenconfigPlatform_Components_Component_Port_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Port_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Port_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Port_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Port_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Port_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_PowerSupply represents the /openconfig-platform/components/component/power-supply YANG schema element. -type OpenconfigPlatform_Components_Component_PowerSupply struct { - Config *OpenconfigPlatform_Components_Component_PowerSupply_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_PowerSupply_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_PowerSupply) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_PowerSupply) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_PowerSupply) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_PowerSupply_Config represents the /openconfig-platform/components/component/power-supply/config YANG schema element. -type OpenconfigPlatform_Components_Component_PowerSupply_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_PowerSupply_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_PowerSupply_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_PowerSupply_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_PowerSupply_State represents the /openconfig-platform/components/component/power-supply/state YANG schema element. -type OpenconfigPlatform_Components_Component_PowerSupply_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_PowerSupply_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_PowerSupply_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_PowerSupply_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_PowerSupply_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_PowerSupply_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Properties represents the /openconfig-platform/components/component/properties YANG schema element. -type OpenconfigPlatform_Components_Component_Properties struct { - Property map[string]*OpenconfigPlatform_Components_Component_Properties_Property `path:"property" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Properties) IsYANGGoStruct() {} - -// NewProperty creates a new entry in the Property list of the -// OpenconfigPlatform_Components_Component_Properties struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigPlatform_Components_Component_Properties) NewProperty(Name string) (*OpenconfigPlatform_Components_Component_Properties_Property, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Property == nil { - t.Property = make(map[string]*OpenconfigPlatform_Components_Component_Properties_Property) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Property[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Property", key) - } - - t.Property[key] = &OpenconfigPlatform_Components_Component_Properties_Property{ - Name: &Name, - } - - return t.Property[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Properties) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Properties) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Properties_Property represents the /openconfig-platform/components/component/properties/property YANG schema element. -type OpenconfigPlatform_Components_Component_Properties_Property struct { - Config *OpenconfigPlatform_Components_Component_Properties_Property_Config `path:"config" module:"openconfig-platform"` - Name *string `path:"name" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Properties_Property_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Properties_Property) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component_Properties_Property struct, which is a YANG list entry. -func (t *OpenconfigPlatform_Components_Component_Properties_Property) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Properties_Property) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Properties_Property) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config represents the /openconfig-platform/components/component/properties/property/config YANG schema element. -type OpenconfigPlatform_Components_Component_Properties_Property_Config struct { - Name *string `path:"name" module:"openconfig-platform"` - Value OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union `path:"value" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-platform/components/component/properties/property/config/value within the YANG schema. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface { - Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool is used when /openconfig-platform/components/component/properties/property/config/value -// is to be set to a bool value. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool struct { - Bool bool -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool -// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 is used when /openconfig-platform/components/component/properties/property/config/value -// is to be set to a float64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 struct { - Float64 float64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 is used when /openconfig-platform/components/component/properties/property/config/value -// is to be set to a int64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 struct { - Int64 int64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String is used when /openconfig-platform/components/component/properties/property/config/value -// is to be set to a string value. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String struct { - String string -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String -// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 is used when /openconfig-platform/components/component/properties/property/config/value -// is to be set to a uint64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 struct { - Uint64 uint64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64) Is_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union() { -} - -// To_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_Config) To_OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union(i interface{}) (OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union, error) { - switch v := i.(type) { - case bool: - return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Bool{v}, nil - case float64: - return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Float64{v}, nil - case int64: - return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Int64{v}, nil - case string: - return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_String{v}, nil - case uint64: - return &OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union_Uint64{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_Properties_Property_Config_Value_Union, unknown union type, got: %T, want any of [bool, float64, int64, string, uint64]", i, i) - } -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State represents the /openconfig-platform/components/component/properties/property/state YANG schema element. -type OpenconfigPlatform_Components_Component_Properties_Property_State struct { - Configurable *bool `path:"configurable" module:"openconfig-platform"` - Name *string `path:"name" module:"openconfig-platform"` - Value OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union `path:"value" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Properties_Property_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Properties_Property_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-platform/components/component/properties/property/state/value within the YANG schema. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface { - Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool is used when /openconfig-platform/components/component/properties/property/state/value -// is to be set to a bool value. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool struct { - Bool bool -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool -// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 is used when /openconfig-platform/components/component/properties/property/state/value -// is to be set to a float64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 struct { - Float64 float64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 is used when /openconfig-platform/components/component/properties/property/state/value -// is to be set to a int64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 struct { - Int64 int64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String is used when /openconfig-platform/components/component/properties/property/state/value -// is to be set to a string value. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String struct { - String string -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String -// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() { -} - -// OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 is used when /openconfig-platform/components/component/properties/property/state/value -// is to be set to a uint64 value. -type OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 struct { - Uint64 uint64 -} - -// Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union ensures that OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64 -// implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union interface. -func (*OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64) Is_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union() { -} - -// To_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigPlatform_Components_Component_Properties_Property_State) To_OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union(i interface{}) (OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union, error) { - switch v := i.(type) { - case bool: - return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Bool{v}, nil - case float64: - return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Float64{v}, nil - case int64: - return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Int64{v}, nil - case string: - return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_String{v}, nil - case uint64: - return &OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union_Uint64{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_Properties_Property_State_Value_Union, unknown union type, got: %T, want any of [bool, float64, int64, string, uint64]", i, i) - } -} - -// OpenconfigPlatform_Components_Component_State represents the /openconfig-platform/components/component/state YANG schema element. -type OpenconfigPlatform_Components_Component_State struct { - AllocatedPower *uint32 `path:"allocated-power" module:"openconfig-platform"` - Description *string `path:"description" module:"openconfig-platform"` - Empty *bool `path:"empty" module:"openconfig-platform"` - EquipmentFailure *bool `path:"equipment-failure" module:"openconfig-alarms"` - EquipmentMismatch *bool `path:"equipment-mismatch" module:"openconfig-alarms"` - FirmwareVersion *string `path:"firmware-version" module:"openconfig-platform"` - HardwareVersion *string `path:"hardware-version" module:"openconfig-platform"` - Id *string `path:"id" module:"openconfig-platform"` - Location *string `path:"location" module:"openconfig-platform"` - Memory *OpenconfigPlatform_Components_Component_State_Memory `path:"memory" module:"openconfig-platform"` - MfgDate *string `path:"mfg-date" module:"openconfig-platform"` - MfgName *string `path:"mfg-name" module:"openconfig-platform"` - Name *string `path:"name" module:"openconfig-platform"` - OperStatus E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS `path:"oper-status" module:"openconfig-platform"` - Parent *string `path:"parent" module:"openconfig-platform"` - PartNo *string `path:"part-no" module:"openconfig-platform"` - Removable *bool `path:"removable" module:"openconfig-platform"` - SerialNo *string `path:"serial-no" module:"openconfig-platform"` - SoftwareVersion *string `path:"software-version" module:"openconfig-platform"` - Temperature *OpenconfigPlatform_Components_Component_State_Temperature `path:"temperature" module:"openconfig-platform"` - Type OpenconfigPlatform_Components_Component_State_Type_Union `path:"type" module:"openconfig-platform"` - UsedPower *uint32 `path:"used-power" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_State_Type_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-platform/components/component/state/type within the YANG schema. -type OpenconfigPlatform_Components_Component_State_Type_Union interface { - Is_OpenconfigPlatform_Components_Component_State_Type_Union() -} - -// OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT is used when /openconfig-platform/components/component/state/type -// is to be set to a E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT value. -type OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT struct { - E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT -} - -// Is_OpenconfigPlatform_Components_Component_State_Type_Union ensures that OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT -// implements the OpenconfigPlatform_Components_Component_State_Type_Union interface. -func (*OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) Is_OpenconfigPlatform_Components_Component_State_Type_Union() { -} - -// OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT is used when /openconfig-platform/components/component/state/type -// is to be set to a E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT value. -type OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT struct { - E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT -} - -// Is_OpenconfigPlatform_Components_Component_State_Type_Union ensures that OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT -// implements the OpenconfigPlatform_Components_Component_State_Type_Union interface. -func (*OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) Is_OpenconfigPlatform_Components_Component_State_Type_Union() { -} - -// To_OpenconfigPlatform_Components_Component_State_Type_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigPlatform_Components_Component_State_Type_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigPlatform_Components_Component_State) To_OpenconfigPlatform_Components_Component_State_Type_Union(i interface{}) (OpenconfigPlatform_Components_Component_State_Type_Union, error) { - switch v := i.(type) { - case E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT: - return &OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT{v}, nil - case E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT: - return &OpenconfigPlatform_Components_Component_State_Type_Union_E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigPlatform_Components_Component_State_Type_Union, unknown union type, got: %T, want any of [E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT, E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT]", i, i) - } -} - -// OpenconfigPlatform_Components_Component_State_Memory represents the /openconfig-platform/components/component/state/memory YANG schema element. -type OpenconfigPlatform_Components_Component_State_Memory struct { - Available *uint64 `path:"available" module:"openconfig-platform"` - Utilized *uint64 `path:"utilized" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State_Memory implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_State_Memory) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_State_Memory) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State_Memory"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_State_Memory) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_State_Temperature represents the /openconfig-platform/components/component/state/temperature YANG schema element. -type OpenconfigPlatform_Components_Component_State_Temperature struct { - AlarmSeverity E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"alarm-severity" module:"openconfig-platform"` - AlarmStatus *bool `path:"alarm-status" module:"openconfig-platform"` - AlarmThreshold *uint32 `path:"alarm-threshold" module:"openconfig-platform"` - Avg *float64 `path:"avg" module:"openconfig-platform"` - Instant *float64 `path:"instant" module:"openconfig-platform"` - Interval *uint64 `path:"interval" module:"openconfig-platform"` - Max *float64 `path:"max" module:"openconfig-platform"` - MaxTime *uint64 `path:"max-time" module:"openconfig-platform"` - Min *float64 `path:"min" module:"openconfig-platform"` - MinTime *uint64 `path:"min-time" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_State_Temperature implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_State_Temperature) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_State_Temperature) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_State_Temperature"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_State_Temperature) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Storage represents the /openconfig-platform/components/component/storage YANG schema element. -type OpenconfigPlatform_Components_Component_Storage struct { - Config *OpenconfigPlatform_Components_Component_Storage_Config `path:"config" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Storage_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Storage) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Storage) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Storage) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Storage_Config represents the /openconfig-platform/components/component/storage/config YANG schema element. -type OpenconfigPlatform_Components_Component_Storage_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Storage_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Storage_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Storage_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Storage_State represents the /openconfig-platform/components/component/storage/state YANG schema element. -type OpenconfigPlatform_Components_Component_Storage_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Storage_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Storage_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Storage_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Storage_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Storage_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Subcomponents represents the /openconfig-platform/components/component/subcomponents YANG schema element. -type OpenconfigPlatform_Components_Component_Subcomponents struct { - Subcomponent map[string]*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent `path:"subcomponent" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Subcomponents) IsYANGGoStruct() {} - -// NewSubcomponent creates a new entry in the Subcomponent list of the -// OpenconfigPlatform_Components_Component_Subcomponents struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigPlatform_Components_Component_Subcomponents) NewSubcomponent(Name string) (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Subcomponent == nil { - t.Subcomponent = make(map[string]*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Subcomponent[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Subcomponent", key) - } - - t.Subcomponent[key] = &OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent{ - Name: &Name, - } - - return t.Subcomponent[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Subcomponents) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Subcomponents) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent represents the /openconfig-platform/components/component/subcomponents/subcomponent YANG schema element. -type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent struct { - Config *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config `path:"config" module:"openconfig-platform"` - Name *string `path:"name" module:"openconfig-platform"` - State *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State `path:"state" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent struct, which is a YANG list entry. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config represents the /openconfig-platform/components/component/subcomponents/subcomponent/config YANG schema element. -type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config struct { - Name *string `path:"name" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State represents the /openconfig-platform/components/component/subcomponents/subcomponent/state YANG schema element. -type OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State struct { - Name *string `path:"name" module:"openconfig-platform"` -} - -// IsYANGGoStruct ensures that OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigPlatform_Components_Component_Subcomponents_Subcomponent_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System represents the /openconfig-system/system YANG schema element. -type OpenconfigSystem_System struct { - Aaa *OpenconfigSystem_System_Aaa `path:"aaa" module:"openconfig-system"` - Alarms *OpenconfigSystem_System_Alarms `path:"alarms" module:"openconfig-system"` - Clock *OpenconfigSystem_System_Clock `path:"clock" module:"openconfig-system"` - Config *OpenconfigSystem_System_Config `path:"config" module:"openconfig-system"` - Cpus *OpenconfigSystem_System_Cpus `path:"cpus" module:"openconfig-system"` - Dns *OpenconfigSystem_System_Dns `path:"dns" module:"openconfig-system"` - GrpcServer *OpenconfigSystem_System_GrpcServer `path:"grpc-server" module:"openconfig-system"` - License *OpenconfigSystem_System_License `path:"license" module:"openconfig-system"` - Logging *OpenconfigSystem_System_Logging `path:"logging" module:"openconfig-system"` - Memory *OpenconfigSystem_System_Memory `path:"memory" module:"openconfig-system"` - Messages *OpenconfigSystem_System_Messages `path:"messages" module:"openconfig-system"` - Ntp *OpenconfigSystem_System_Ntp `path:"ntp" module:"openconfig-system"` - Openflow *OpenconfigSystem_System_Openflow `path:"openflow" module:"openconfig-openflow"` - Processes *OpenconfigSystem_System_Processes `path:"processes" module:"openconfig-system"` - SshServer *OpenconfigSystem_System_SshServer `path:"ssh-server" module:"openconfig-system"` - State *OpenconfigSystem_System_State `path:"state" module:"openconfig-system"` - TelnetServer *OpenconfigSystem_System_TelnetServer `path:"telnet-server" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Aaa represents the /openconfig-system/system/aaa YANG schema element. -type OpenconfigSystem_System_Aaa struct { - Accounting *OpenconfigSystem_System_Aaa_Accounting `path:"accounting" module:"openconfig-system"` - Authentication *OpenconfigSystem_System_Aaa_Authentication `path:"authentication" module:"openconfig-system"` - Authorization *OpenconfigSystem_System_Aaa_Authorization `path:"authorization" module:"openconfig-system"` - Config *OpenconfigSystem_System_Aaa_Config `path:"config" module:"openconfig-system"` - ServerGroups *OpenconfigSystem_System_Aaa_ServerGroups `path:"server-groups" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Aaa_Accounting represents the /openconfig-system/system/aaa/accounting YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting struct { - Config *OpenconfigSystem_System_Aaa_Accounting_Config `path:"config" module:"openconfig-system"` - Events *OpenconfigSystem_System_Aaa_Accounting_Events `path:"events" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Accounting_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_Config represents the /openconfig-system/system/aaa/accounting/config YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_Config struct { - AccountingMethod []OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union `path:"accounting-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/accounting/config/accounting-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/accounting/config/accounting-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union ensures that OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_String is used when /openconfig-system/system/aaa/accounting/config/accounting-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union ensures that OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Accounting_Config) To_OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Accounting_Config_AccountingMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Accounting_Events represents the /openconfig-system/system/aaa/accounting/events YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_Events struct { - Event map[E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*OpenconfigSystem_System_Aaa_Accounting_Events_Event `path:"event" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_Events implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_Events) IsYANGGoStruct() {} - -// NewEvent creates a new entry in the Event list of the -// OpenconfigSystem_System_Aaa_Accounting_Events struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events) NewEvent(EventType E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE) (*OpenconfigSystem_System_Aaa_Accounting_Events_Event, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Event == nil { - t.Event = make(map[E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE]*OpenconfigSystem_System_Aaa_Accounting_Events_Event) - } - - key := EventType - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Event[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Event", key) - } - - t.Event[key] = &OpenconfigSystem_System_Aaa_Accounting_Events_Event{ - EventType: EventType, - } - - return t.Event[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_Events"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_Events_Event represents the /openconfig-system/system/aaa/accounting/events/event YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_Events_Event struct { - Config *OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config `path:"config" module:"openconfig-system"` - EventType E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE `path:"event-type" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Accounting_Events_Event_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_Events_Event implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_Events_Event) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Aaa_Accounting_Events_Event struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "event-type": t.EventType, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_Events_Event"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config represents the /openconfig-system/system/aaa/accounting/events/event/config YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config struct { - EventType E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE `path:"event-type" module:"openconfig-system"` - Record E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record `path:"record" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_Events_Event_State represents the /openconfig-system/system/aaa/accounting/events/event/state YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_Events_Event_State struct { - EventType E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE `path:"event-type" module:"openconfig-system"` - Record E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record `path:"record" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_Events_Event_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_Events_Event_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_Events_Event_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_Events_Event_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_State represents the /openconfig-system/system/aaa/accounting/state YANG schema element. -type OpenconfigSystem_System_Aaa_Accounting_State struct { - AccountingMethod []OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union `path:"accounting-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Accounting_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Accounting_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Accounting_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Accounting_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Accounting_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/accounting/state/accounting-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/accounting/state/accounting-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union ensures that OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_String is used when /openconfig-system/system/aaa/accounting/state/accounting-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union ensures that OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Accounting_State) To_OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Accounting_State_AccountingMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authentication represents the /openconfig-system/system/aaa/authentication YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication struct { - AdminUser *OpenconfigSystem_System_Aaa_Authentication_AdminUser `path:"admin-user" module:"openconfig-system"` - Config *OpenconfigSystem_System_Aaa_Authentication_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Authentication_State `path:"state" module:"openconfig-system"` - Users *OpenconfigSystem_System_Aaa_Authentication_Users `path:"users" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_AdminUser represents the /openconfig-system/system/aaa/authentication/admin-user YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_AdminUser struct { - Config *OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Authentication_AdminUser_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_AdminUser implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_AdminUser) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_AdminUser"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config represents the /openconfig-system/system/aaa/authentication/admin-user/config YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config struct { - AdminPassword *string `path:"admin-password" module:"openconfig-system"` - AdminPasswordHashed *string `path:"admin-password-hashed" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_AdminUser_State represents the /openconfig-system/system/aaa/authentication/admin-user/state YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_AdminUser_State struct { - AdminPassword *string `path:"admin-password" module:"openconfig-system"` - AdminPasswordHashed *string `path:"admin-password-hashed" module:"openconfig-system"` - AdminUsername *string `path:"admin-username" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_AdminUser_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_AdminUser_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_AdminUser_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_AdminUser_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Config represents the /openconfig-system/system/aaa/authentication/config YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_Config struct { - AuthenticationMethod []OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union `path:"authentication-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authentication/config/authentication-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/authentication/config/authentication-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_String is used when /openconfig-system/system/aaa/authentication/config/authentication-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authentication_Config) To_OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authentication_Config_AuthenticationMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authentication_State represents the /openconfig-system/system/aaa/authentication/state YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_State struct { - AuthenticationMethod []OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union `path:"authentication-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authentication/state/authentication-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/authentication/state/authentication-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_String is used when /openconfig-system/system/aaa/authentication/state/authentication-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authentication_State) To_OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authentication_State_AuthenticationMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authentication_Users represents the /openconfig-system/system/aaa/authentication/users YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_Users struct { - User map[string]*OpenconfigSystem_System_Aaa_Authentication_Users_User `path:"user" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_Users implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_Users) IsYANGGoStruct() {} - -// NewUser creates a new entry in the User list of the -// OpenconfigSystem_System_Aaa_Authentication_Users struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users) NewUser(Username string) (*OpenconfigSystem_System_Aaa_Authentication_Users_User, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.User == nil { - t.User = make(map[string]*OpenconfigSystem_System_Aaa_Authentication_Users_User) - } - - key := Username - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.User[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list User", key) - } - - t.User[key] = &OpenconfigSystem_System_Aaa_Authentication_Users_User{ - Username: &Username, - } - - return t.User[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_Users"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User represents the /openconfig-system/system/aaa/authentication/users/user YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_Users_User struct { - Config *OpenconfigSystem_System_Aaa_Authentication_Users_User_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Authentication_Users_User_State `path:"state" module:"openconfig-system"` - Username *string `path:"username" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Aaa_Authentication_Users_User struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User) ΛListKeyMap() (map[string]interface{}, error) { - if t.Username == nil { - return nil, fmt.Errorf("nil value for key Username") - } - - return map[string]interface{}{ - "username": *t.Username, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_Users_User"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_Config represents the /openconfig-system/system/aaa/authentication/users/user/config YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_Config struct { - Password *string `path:"password" module:"openconfig-system"` - PasswordHashed *string `path:"password-hashed" module:"openconfig-system"` - Role OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union `path:"role" module:"openconfig-system"` - SshKey *string `path:"ssh-key" module:"openconfig-system"` - Username *string `path:"username" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_Users_User_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authentication/users/user/config/role within the YANG schema. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union interface { - Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union() -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES is used when /openconfig-system/system/aaa/authentication/users/user/config/role -// is to be set to a E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES value. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES struct { - E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES -// implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES) Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union() { -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_String is used when /openconfig-system/system/aaa/authentication/users/user/config/role -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_String -// implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_String) Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_Config) To_OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES: - return &OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authentication_Users_User_Config_Role_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_State represents the /openconfig-system/system/aaa/authentication/users/user/state YANG schema element. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_State struct { - Password *string `path:"password" module:"openconfig-system"` - PasswordHashed *string `path:"password-hashed" module:"openconfig-system"` - Role OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union `path:"role" module:"openconfig-system"` - SshKey *string `path:"ssh-key" module:"openconfig-system"` - Username *string `path:"username" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authentication_Users_User_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authentication/users/user/state/role within the YANG schema. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union interface { - Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union() -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES is used when /openconfig-system/system/aaa/authentication/users/user/state/role -// is to be set to a E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES value. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES struct { - E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES -// implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES) Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union() { -} - -// OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_String is used when /openconfig-system/system/aaa/authentication/users/user/state/role -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union ensures that OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_String -// implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union interface. -func (*OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_String) Is_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authentication_Users_User_State) To_OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES: - return &OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authentication_Users_User_State_Role_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authorization represents the /openconfig-system/system/aaa/authorization YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization struct { - Config *OpenconfigSystem_System_Aaa_Authorization_Config `path:"config" module:"openconfig-system"` - Events *OpenconfigSystem_System_Aaa_Authorization_Events `path:"events" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Authorization_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_Config represents the /openconfig-system/system/aaa/authorization/config YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_Config struct { - AuthorizationMethod []OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union `path:"authorization-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authorization/config/authorization-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/authorization/config/authorization-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_String is used when /openconfig-system/system/aaa/authorization/config/authorization-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authorization_Config) To_OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authorization_Config_AuthorizationMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Authorization_Events represents the /openconfig-system/system/aaa/authorization/events YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_Events struct { - Event map[E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*OpenconfigSystem_System_Aaa_Authorization_Events_Event `path:"event" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_Events implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_Events) IsYANGGoStruct() {} - -// NewEvent creates a new entry in the Event list of the -// OpenconfigSystem_System_Aaa_Authorization_Events struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events) NewEvent(EventType E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) (*OpenconfigSystem_System_Aaa_Authorization_Events_Event, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Event == nil { - t.Event = make(map[E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE]*OpenconfigSystem_System_Aaa_Authorization_Events_Event) - } - - key := EventType - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Event[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Event", key) - } - - t.Event[key] = &OpenconfigSystem_System_Aaa_Authorization_Events_Event{ - EventType: EventType, - } - - return t.Event[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_Events"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_Events_Event represents the /openconfig-system/system/aaa/authorization/events/event YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_Events_Event struct { - Config *OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config `path:"config" module:"openconfig-system"` - EventType E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE `path:"event-type" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_Authorization_Events_Event_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_Events_Event implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_Events_Event) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Aaa_Authorization_Events_Event struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "event-type": t.EventType, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_Events_Event"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config represents the /openconfig-system/system/aaa/authorization/events/event/config YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config struct { - EventType E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE `path:"event-type" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_Events_Event_State represents the /openconfig-system/system/aaa/authorization/events/event/state YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_Events_Event_State struct { - EventType E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE `path:"event-type" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_Events_Event_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_Events_Event_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_Events_Event_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_Events_Event_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_State represents the /openconfig-system/system/aaa/authorization/state YANG schema element. -type OpenconfigSystem_System_Aaa_Authorization_State struct { - AuthorizationMethod []OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union `path:"authorization-method" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Authorization_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Authorization_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Authorization_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Authorization_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Authorization_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/aaa/authorization/state/authorization-method within the YANG schema. -type OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union interface { - Is_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union() -} - -// OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE is used when /openconfig-system/system/aaa/authorization/state/authorization-method -// is to be set to a E_OpenconfigAaaTypes_AAA_METHOD_TYPE value. -type OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE struct { - E_OpenconfigAaaTypes_AAA_METHOD_TYPE E_OpenconfigAaaTypes_AAA_METHOD_TYPE -} - -// Is_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE -// implements the OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE) Is_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union() { -} - -// OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_String is used when /openconfig-system/system/aaa/authorization/state/authorization-method -// is to be set to a string value. -type OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union ensures that OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_String -// implements the OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union interface. -func (*OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_String) Is_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union() { -} - -// To_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Aaa_Authorization_State) To_OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union(i interface{}) (OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union, error) { - switch v := i.(type) { - case E_OpenconfigAaaTypes_AAA_METHOD_TYPE: - return &OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_E_OpenconfigAaaTypes_AAA_METHOD_TYPE{v}, nil - case string: - return &OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Aaa_Authorization_State_AuthorizationMethod_Union, unknown union type, got: %T, want any of [E_OpenconfigAaaTypes_AAA_METHOD_TYPE, string]", i, i) - } -} - -// OpenconfigSystem_System_Aaa_Config represents the /openconfig-system/system/aaa/config YANG schema element. -type OpenconfigSystem_System_Aaa_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups represents the /openconfig-system/system/aaa/server-groups YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups struct { - ServerGroup map[string]*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup `path:"server-group" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups) IsYANGGoStruct() {} - -// NewServerGroup creates a new entry in the ServerGroup list of the -// OpenconfigSystem_System_Aaa_ServerGroups struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Aaa_ServerGroups) NewServerGroup(Name string) (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.ServerGroup == nil { - t.ServerGroup = make(map[string]*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.ServerGroup[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list ServerGroup", key) - } - - t.ServerGroup[key] = &OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup{ - Name: &Name, - } - - return t.ServerGroup[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup represents the /openconfig-system/system/aaa/server-groups/server-group YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup struct { - Config *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config `path:"config" module:"openconfig-system"` - Name *string `path:"name" module:"openconfig-system"` - Servers *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers `path:"servers" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config represents the /openconfig-system/system/aaa/server-groups/server-group/config YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config struct { - Name *string `path:"name" module:"openconfig-system"` - Type E_OpenconfigAaaTypes_AAA_SERVER_TYPE `path:"type" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers represents the /openconfig-system/system/aaa/server-groups/server-group/servers YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers struct { - Server map[string]*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server `path:"server" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers) IsYANGGoStruct() {} - -// NewServer creates a new entry in the Server list of the -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers) NewServer(Address string) (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Server == nil { - t.Server = make(map[string]*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server) - } - - key := Address - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Server[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Server", key) - } - - t.Server[key] = &OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server{ - Address: &Address, - } - - return t.Server[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server struct { - Address *string `path:"address" module:"openconfig-system"` - Config *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config `path:"config" module:"openconfig-system"` - Radius *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius `path:"radius" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State `path:"state" module:"openconfig-system"` - Tacacs *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs `path:"tacacs" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server) ΛListKeyMap() (map[string]interface{}, error) { - if t.Address == nil { - return nil, fmt.Errorf("nil value for key Address") - } - - return map[string]interface{}{ - "address": *t.Address, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/config YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config struct { - Address *string `path:"address" module:"openconfig-system"` - Name *string `path:"name" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius struct { - Config *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius/config YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config struct { - AcctPort *uint16 `path:"acct-port" module:"openconfig-system"` - AuthPort *uint16 `path:"auth-port" module:"openconfig-system"` - RetransmitAttempts *uint8 `path:"retransmit-attempts" module:"openconfig-system"` - SecretKey *string `path:"secret-key" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius/state YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State struct { - AcctPort *uint16 `path:"acct-port" module:"openconfig-system"` - AuthPort *uint16 `path:"auth-port" module:"openconfig-system"` - Counters *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters `path:"counters" module:"openconfig-system"` - RetransmitAttempts *uint8 `path:"retransmit-attempts" module:"openconfig-system"` - SecretKey *string `path:"secret-key" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/radius/state/counters YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters struct { - AccessAccepts *uint64 `path:"access-accepts" module:"openconfig-system"` - AccessRejects *uint64 `path:"access-rejects" module:"openconfig-system"` - RetriedAccessRequests *uint64 `path:"retried-access-requests" module:"openconfig-system"` - TimeoutAccessRequests *uint64 `path:"timeout-access-requests" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Radius_State_Counters) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/state YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State struct { - Address *string `path:"address" module:"openconfig-system"` - ConnectionAborts *uint64 `path:"connection-aborts" module:"openconfig-system"` - ConnectionCloses *uint64 `path:"connection-closes" module:"openconfig-system"` - ConnectionFailures *uint64 `path:"connection-failures" module:"openconfig-system"` - ConnectionOpens *uint64 `path:"connection-opens" module:"openconfig-system"` - ConnectionTimeouts *uint64 `path:"connection-timeouts" module:"openconfig-system"` - ErrorsReceived *uint64 `path:"errors-received" module:"openconfig-system"` - MessagesReceived *uint64 `path:"messages-received" module:"openconfig-system"` - MessagesSent *uint64 `path:"messages-sent" module:"openconfig-system"` - Name *string `path:"name" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/tacacs YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs struct { - Config *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/tacacs/config YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config struct { - Port *uint16 `path:"port" module:"openconfig-system"` - SecretKey *string `path:"secret-key" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State represents the /openconfig-system/system/aaa/server-groups/server-group/servers/server/tacacs/state YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State struct { - Port *uint16 `path:"port" module:"openconfig-system"` - SecretKey *string `path:"secret-key" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_Servers_Server_Tacacs_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State represents the /openconfig-system/system/aaa/server-groups/server-group/state YANG schema element. -type OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State struct { - Name *string `path:"name" module:"openconfig-system"` - Type E_OpenconfigAaaTypes_AAA_SERVER_TYPE `path:"type" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_ServerGroups_ServerGroup_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Aaa_State represents the /openconfig-system/system/aaa/state YANG schema element. -type OpenconfigSystem_System_Aaa_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Aaa_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Aaa_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Aaa_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Aaa_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Aaa_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Alarms represents the /openconfig-system/system/alarms YANG schema element. -type OpenconfigSystem_System_Alarms struct { - Alarm map[string]*OpenconfigSystem_System_Alarms_Alarm `path:"alarm" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Alarms implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Alarms) IsYANGGoStruct() {} - -// NewAlarm creates a new entry in the Alarm list of the -// OpenconfigSystem_System_Alarms struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Alarms) NewAlarm(Id string) (*OpenconfigSystem_System_Alarms_Alarm, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Alarm == nil { - t.Alarm = make(map[string]*OpenconfigSystem_System_Alarms_Alarm) - } - - key := Id - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Alarm[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Alarm", key) - } - - t.Alarm[key] = &OpenconfigSystem_System_Alarms_Alarm{ - Id: &Id, - } - - return t.Alarm[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Alarms) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Alarms"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Alarms) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Alarms_Alarm represents the /openconfig-system/system/alarms/alarm YANG schema element. -type OpenconfigSystem_System_Alarms_Alarm struct { - Config *OpenconfigSystem_System_Alarms_Alarm_Config `path:"config" module:"openconfig-system"` - Id *string `path:"id" module:"openconfig-system"` - State *OpenconfigSystem_System_Alarms_Alarm_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Alarms_Alarm implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Alarms_Alarm) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Alarms_Alarm struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Alarms_Alarm) ΛListKeyMap() (map[string]interface{}, error) { - if t.Id == nil { - return nil, fmt.Errorf("nil value for key Id") - } - - return map[string]interface{}{ - "id": *t.Id, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Alarms_Alarm) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Alarms_Alarm"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Alarms_Alarm) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Alarms_Alarm_Config represents the /openconfig-system/system/alarms/alarm/config YANG schema element. -type OpenconfigSystem_System_Alarms_Alarm_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Alarms_Alarm_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Alarms_Alarm_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Alarms_Alarm_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Alarms_Alarm_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Alarms_Alarm_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Alarms_Alarm_State represents the /openconfig-system/system/alarms/alarm/state YANG schema element. -type OpenconfigSystem_System_Alarms_Alarm_State struct { - Id *string `path:"id" module:"openconfig-system"` - Resource *string `path:"resource" module:"openconfig-system"` - Severity E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY `path:"severity" module:"openconfig-system"` - Text *string `path:"text" module:"openconfig-system"` - TimeCreated *uint64 `path:"time-created" module:"openconfig-system"` - TypeId OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union `path:"type-id" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Alarms_Alarm_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Alarms_Alarm_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Alarms_Alarm_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Alarms_Alarm_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Alarms_Alarm_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/alarms/alarm/state/type-id within the YANG schema. -type OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union interface { - Is_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union() -} - -// OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID is used when /openconfig-system/system/alarms/alarm/state/type-id -// is to be set to a E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID value. -type OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID struct { - E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID -} - -// Is_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union ensures that OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID -// implements the OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union interface. -func (*OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID) Is_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union() { -} - -// OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_String is used when /openconfig-system/system/alarms/alarm/state/type-id -// is to be set to a string value. -type OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union ensures that OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_String -// implements the OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union interface. -func (*OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_String) Is_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union() { -} - -// To_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Alarms_Alarm_State) To_OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union(i interface{}) (OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union, error) { - switch v := i.(type) { - case E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID: - return &OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID{v}, nil - case string: - return &OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Alarms_Alarm_State_TypeId_Union, unknown union type, got: %T, want any of [E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID, string]", i, i) - } -} - -// OpenconfigSystem_System_Clock represents the /openconfig-system/system/clock YANG schema element. -type OpenconfigSystem_System_Clock struct { - Config *OpenconfigSystem_System_Clock_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Clock_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Clock implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Clock) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Clock) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Clock"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Clock) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Clock_Config represents the /openconfig-system/system/clock/config YANG schema element. -type OpenconfigSystem_System_Clock_Config struct { - TimezoneName *string `path:"timezone-name" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Clock_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Clock_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Clock_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Clock_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Clock_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Clock_State represents the /openconfig-system/system/clock/state YANG schema element. -type OpenconfigSystem_System_Clock_State struct { - TimezoneName *string `path:"timezone-name" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Clock_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Clock_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Clock_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Clock_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Clock_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Config represents the /openconfig-system/system/config YANG schema element. -type OpenconfigSystem_System_Config struct { - DomainName *string `path:"domain-name" module:"openconfig-system"` - Hostname *string `path:"hostname" module:"openconfig-system"` - LoginBanner *string `path:"login-banner" module:"openconfig-system"` - MotdBanner *string `path:"motd-banner" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus represents the /openconfig-system/system/cpus YANG schema element. -type OpenconfigSystem_System_Cpus struct { - Cpu map[OpenconfigSystem_System_Cpus_Cpu_State_Index_Union]*OpenconfigSystem_System_Cpus_Cpu `path:"cpu" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus) IsYANGGoStruct() {} - -// NewCpu creates a new entry in the Cpu list of the -// OpenconfigSystem_System_Cpus struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Cpus) NewCpu(Index OpenconfigSystem_System_Cpus_Cpu_State_Index_Union) (*OpenconfigSystem_System_Cpus_Cpu, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Cpu == nil { - t.Cpu = make(map[OpenconfigSystem_System_Cpus_Cpu_State_Index_Union]*OpenconfigSystem_System_Cpus_Cpu) - } - - key := Index - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Cpu[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Cpu", key) - } - - t.Cpu[key] = &OpenconfigSystem_System_Cpus_Cpu{ - Index: Index, - } - - return t.Cpu[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Cpus_Cpu represents the /openconfig-system/system/cpus/cpu YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu struct { - Index OpenconfigSystem_System_Cpus_Cpu_State_Index_Union `path:"index" module:"openconfig-system"` - State *OpenconfigSystem_System_Cpus_Cpu_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Cpus_Cpu struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Cpus_Cpu) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "index": t.Index, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Index_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/cpus/cpu/index within the YANG schema. -type OpenconfigSystem_System_Cpus_Cpu_State_Index_Union interface { - Is_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union() -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index is used when /openconfig-system/system/cpus/cpu/index -// is to be set to a E_OpenconfigSystem_System_Cpus_Cpu_State_Index value. -type OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index struct { - E_OpenconfigSystem_System_Cpus_Cpu_State_Index E_OpenconfigSystem_System_Cpus_Cpu_State_Index -} - -// Is_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union ensures that OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index -// implements the OpenconfigSystem_System_Cpus_Cpu_State_Index_Union interface. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index) Is_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union() { -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32 is used when /openconfig-system/system/cpus/cpu/index -// is to be set to a uint32 value. -type OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32 struct { - Uint32 uint32 -} - -// Is_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union ensures that OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32 -// implements the OpenconfigSystem_System_Cpus_Cpu_State_Index_Union interface. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32) Is_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union() { -} - -// To_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Cpus_Cpu_State_Index_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Cpus_Cpu) To_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union(i interface{}) (OpenconfigSystem_System_Cpus_Cpu_State_Index_Union, error) { - switch v := i.(type) { - case E_OpenconfigSystem_System_Cpus_Cpu_State_Index: - return &OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index{v}, nil - case uint32: - return &OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Cpus_Cpu_State_Index_Union, unknown union type, got: %T, want any of [E_OpenconfigSystem_System_Cpus_Cpu_State_Index, uint32]", i, i) - } -} - -// OpenconfigSystem_System_Cpus_Cpu_State represents the /openconfig-system/system/cpus/cpu/state YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State struct { - HardwareInterrupt *OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt `path:"hardware-interrupt" module:"openconfig-system"` - Idle *OpenconfigSystem_System_Cpus_Cpu_State_Idle `path:"idle" module:"openconfig-system"` - Index OpenconfigSystem_System_Cpus_Cpu_State_Index_Union `path:"index" module:"openconfig-system"` - Kernel *OpenconfigSystem_System_Cpus_Cpu_State_Kernel `path:"kernel" module:"openconfig-system"` - Nice *OpenconfigSystem_System_Cpus_Cpu_State_Nice `path:"nice" module:"openconfig-system"` - SoftwareInterrupt *OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt `path:"software-interrupt" module:"openconfig-system"` - Total *OpenconfigSystem_System_Cpus_Cpu_State_Total `path:"total" module:"openconfig-system"` - User *OpenconfigSystem_System_Cpus_Cpu_State_User `path:"user" module:"openconfig-system"` - Wait *OpenconfigSystem_System_Cpus_Cpu_State_Wait `path:"wait" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// To_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_Cpus_Cpu_State_Index_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_Cpus_Cpu_State) To_OpenconfigSystem_System_Cpus_Cpu_State_Index_Union(i interface{}) (OpenconfigSystem_System_Cpus_Cpu_State_Index_Union, error) { - switch v := i.(type) { - case E_OpenconfigSystem_System_Cpus_Cpu_State_Index: - return &OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_E_OpenconfigSystem_System_Cpus_Cpu_State_Index{v}, nil - case uint32: - return &OpenconfigSystem_System_Cpus_Cpu_State_Index_Union_Uint32{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_Cpus_Cpu_State_Index_Union, unknown union type, got: %T, want any of [E_OpenconfigSystem_System_Cpus_Cpu_State_Index, uint32]", i, i) - } -} - -// OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt represents the /openconfig-system/system/cpus/cpu/state/hardware-interrupt YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_HardwareInterrupt) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Idle represents the /openconfig-system/system/cpus/cpu/state/idle YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_Idle struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_Idle implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Idle) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Idle) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_Idle"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Idle) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Kernel represents the /openconfig-system/system/cpus/cpu/state/kernel YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_Kernel struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_Kernel implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Kernel) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Kernel) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_Kernel"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Kernel) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Nice represents the /openconfig-system/system/cpus/cpu/state/nice YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_Nice struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_Nice implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Nice) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Nice) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_Nice"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Nice) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt represents the /openconfig-system/system/cpus/cpu/state/software-interrupt YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_SoftwareInterrupt) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Total represents the /openconfig-system/system/cpus/cpu/state/total YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_Total struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_Total implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Total) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Total) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_Total"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Total) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_User represents the /openconfig-system/system/cpus/cpu/state/user YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_User struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_User implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_User) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_User) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_User"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_User) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Cpus_Cpu_State_Wait represents the /openconfig-system/system/cpus/cpu/state/wait YANG schema element. -type OpenconfigSystem_System_Cpus_Cpu_State_Wait struct { - Avg *uint8 `path:"avg" module:"openconfig-system"` - Instant *uint8 `path:"instant" module:"openconfig-system"` - Interval *uint64 `path:"interval" module:"openconfig-system"` - Max *uint8 `path:"max" module:"openconfig-system"` - MaxTime *uint64 `path:"max-time" module:"openconfig-system"` - Min *uint8 `path:"min" module:"openconfig-system"` - MinTime *uint64 `path:"min-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Cpus_Cpu_State_Wait implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Cpus_Cpu_State_Wait) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Wait) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Cpus_Cpu_State_Wait"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Cpus_Cpu_State_Wait) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns represents the /openconfig-system/system/dns YANG schema element. -type OpenconfigSystem_System_Dns struct { - Config *OpenconfigSystem_System_Dns_Config `path:"config" module:"openconfig-system"` - HostEntries *OpenconfigSystem_System_Dns_HostEntries `path:"host-entries" module:"openconfig-system"` - Servers *OpenconfigSystem_System_Dns_Servers `path:"servers" module:"openconfig-system"` - State *OpenconfigSystem_System_Dns_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Dns_Config represents the /openconfig-system/system/dns/config YANG schema element. -type OpenconfigSystem_System_Dns_Config struct { - Search []string `path:"search" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_HostEntries represents the /openconfig-system/system/dns/host-entries YANG schema element. -type OpenconfigSystem_System_Dns_HostEntries struct { - HostEntry map[string]*OpenconfigSystem_System_Dns_HostEntries_HostEntry `path:"host-entry" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_HostEntries implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_HostEntries) IsYANGGoStruct() {} - -// NewHostEntry creates a new entry in the HostEntry list of the -// OpenconfigSystem_System_Dns_HostEntries struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Dns_HostEntries) NewHostEntry(Hostname string) (*OpenconfigSystem_System_Dns_HostEntries_HostEntry, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.HostEntry == nil { - t.HostEntry = make(map[string]*OpenconfigSystem_System_Dns_HostEntries_HostEntry) - } - - key := Hostname - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.HostEntry[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list HostEntry", key) - } - - t.HostEntry[key] = &OpenconfigSystem_System_Dns_HostEntries_HostEntry{ - Hostname: &Hostname, - } - - return t.HostEntry[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_HostEntries) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_HostEntries"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_HostEntries) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_HostEntries_HostEntry represents the /openconfig-system/system/dns/host-entries/host-entry YANG schema element. -type OpenconfigSystem_System_Dns_HostEntries_HostEntry struct { - Config *OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config `path:"config" module:"openconfig-system"` - Hostname *string `path:"hostname" module:"openconfig-system"` - State *OpenconfigSystem_System_Dns_HostEntries_HostEntry_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_HostEntries_HostEntry implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_HostEntries_HostEntry) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Dns_HostEntries_HostEntry struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry) ΛListKeyMap() (map[string]interface{}, error) { - if t.Hostname == nil { - return nil, fmt.Errorf("nil value for key Hostname") - } - - return map[string]interface{}{ - "hostname": *t.Hostname, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_HostEntries_HostEntry"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config represents the /openconfig-system/system/dns/host-entries/host-entry/config YANG schema element. -type OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config struct { - Alias []string `path:"alias" module:"openconfig-system"` - Hostname *string `path:"hostname" module:"openconfig-system"` - Ipv4Address []string `path:"ipv4-address" module:"openconfig-system"` - Ipv6Address []string `path:"ipv6-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_HostEntries_HostEntry_State represents the /openconfig-system/system/dns/host-entries/host-entry/state YANG schema element. -type OpenconfigSystem_System_Dns_HostEntries_HostEntry_State struct { - Alias []string `path:"alias" module:"openconfig-system"` - Hostname *string `path:"hostname" module:"openconfig-system"` - Ipv4Address []string `path:"ipv4-address" module:"openconfig-system"` - Ipv6Address []string `path:"ipv6-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_HostEntries_HostEntry_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_HostEntries_HostEntry_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_HostEntries_HostEntry_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_HostEntries_HostEntry_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_Servers represents the /openconfig-system/system/dns/servers YANG schema element. -type OpenconfigSystem_System_Dns_Servers struct { - Server map[string]*OpenconfigSystem_System_Dns_Servers_Server `path:"server" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_Servers implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_Servers) IsYANGGoStruct() {} - -// NewServer creates a new entry in the Server list of the -// OpenconfigSystem_System_Dns_Servers struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Dns_Servers) NewServer(Address string) (*OpenconfigSystem_System_Dns_Servers_Server, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Server == nil { - t.Server = make(map[string]*OpenconfigSystem_System_Dns_Servers_Server) - } - - key := Address - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Server[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Server", key) - } - - t.Server[key] = &OpenconfigSystem_System_Dns_Servers_Server{ - Address: &Address, - } - - return t.Server[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_Servers) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_Servers"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_Servers) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_Servers_Server represents the /openconfig-system/system/dns/servers/server YANG schema element. -type OpenconfigSystem_System_Dns_Servers_Server struct { - Address *string `path:"address" module:"openconfig-system"` - Config *OpenconfigSystem_System_Dns_Servers_Server_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Dns_Servers_Server_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_Servers_Server implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_Servers_Server) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Dns_Servers_Server struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Dns_Servers_Server) ΛListKeyMap() (map[string]interface{}, error) { - if t.Address == nil { - return nil, fmt.Errorf("nil value for key Address") - } - - return map[string]interface{}{ - "address": *t.Address, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_Servers_Server) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_Servers_Server"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_Servers_Server) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_Servers_Server_Config represents the /openconfig-system/system/dns/servers/server/config YANG schema element. -type OpenconfigSystem_System_Dns_Servers_Server_Config struct { - Address *string `path:"address" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_Servers_Server_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_Servers_Server_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_Servers_Server_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_Servers_Server_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_Servers_Server_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_Servers_Server_State represents the /openconfig-system/system/dns/servers/server/state YANG schema element. -type OpenconfigSystem_System_Dns_Servers_Server_State struct { - Address *string `path:"address" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_Servers_Server_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_Servers_Server_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_Servers_Server_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_Servers_Server_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_Servers_Server_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Dns_State represents the /openconfig-system/system/dns/state YANG schema element. -type OpenconfigSystem_System_Dns_State struct { - Search []string `path:"search" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Dns_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Dns_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Dns_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Dns_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Dns_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_GrpcServer represents the /openconfig-system/system/grpc-server YANG schema element. -type OpenconfigSystem_System_GrpcServer struct { - Config *OpenconfigSystem_System_GrpcServer_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_GrpcServer_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_GrpcServer implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_GrpcServer) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_GrpcServer) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_GrpcServer"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_GrpcServer) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_GrpcServer_Config represents the /openconfig-system/system/grpc-server/config YANG schema element. -type OpenconfigSystem_System_GrpcServer_Config struct { - CertificateId *string `path:"certificate-id" module:"openconfig-system"` - Enable *bool `path:"enable" module:"openconfig-system"` - ListenAddresses []OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union `path:"listen-addresses" module:"openconfig-system"` - MetadataAuthentication *bool `path:"metadata-authentication" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` - TransportSecurity *bool `path:"transport-security" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_GrpcServer_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_GrpcServer_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_GrpcServer_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_GrpcServer_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_GrpcServer_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/grpc-server/config/listen-addresses within the YANG schema. -type OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union interface { - Is_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union() -} - -// OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses is used when /openconfig-system/system/grpc-server/config/listen-addresses -// is to be set to a E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses value. -type OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses struct { - E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses -} - -// Is_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union ensures that OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses -// implements the OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union interface. -func (*OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses) Is_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union() { -} - -// OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_String is used when /openconfig-system/system/grpc-server/config/listen-addresses -// is to be set to a string value. -type OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union ensures that OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_String -// implements the OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union interface. -func (*OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_String) Is_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union() { -} - -// To_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_GrpcServer_Config) To_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union(i interface{}) (OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union, error) { - switch v := i.(type) { - case E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses: - return &OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses{v}, nil - case string: - return &OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_Union, unknown union type, got: %T, want any of [E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses, string]", i, i) - } -} - -// OpenconfigSystem_System_GrpcServer_State represents the /openconfig-system/system/grpc-server/state YANG schema element. -type OpenconfigSystem_System_GrpcServer_State struct { - CertificateId *string `path:"certificate-id" module:"openconfig-system"` - Enable *bool `path:"enable" module:"openconfig-system"` - ListenAddresses []OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union `path:"listen-addresses" module:"openconfig-system"` - MetadataAuthentication *bool `path:"metadata-authentication" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` - TransportSecurity *bool `path:"transport-security" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_GrpcServer_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_GrpcServer_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_GrpcServer_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_GrpcServer_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_GrpcServer_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union is an interface that is implemented by valid types for the union -// for the leaf /openconfig-system/system/grpc-server/state/listen-addresses within the YANG schema. -type OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union interface { - Is_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union() -} - -// OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses is used when /openconfig-system/system/grpc-server/state/listen-addresses -// is to be set to a E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses value. -type OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses struct { - E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses -} - -// Is_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union ensures that OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses -// implements the OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union interface. -func (*OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses) Is_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union() { -} - -// OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_String is used when /openconfig-system/system/grpc-server/state/listen-addresses -// is to be set to a string value. -type OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_String struct { - String string -} - -// Is_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union ensures that OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_String -// implements the OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union interface. -func (*OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_String) Is_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union() { -} - -// To_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union takes an input interface{} and attempts to convert it to a struct -// which implements the OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union union. It returns an error if the interface{} supplied -// cannot be converted to a type within the union. -func (t *OpenconfigSystem_System_GrpcServer_State) To_OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union(i interface{}) (OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union, error) { - switch v := i.(type) { - case E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses: - return &OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses{v}, nil - case string: - return &OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union_String{v}, nil - default: - return nil, fmt.Errorf("cannot convert %v to OpenconfigSystem_System_GrpcServer_State_ListenAddresses_Union, unknown union type, got: %T, want any of [E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses, string]", i, i) - } -} - -// OpenconfigSystem_System_License represents the /openconfig-system/system/license YANG schema element. -type OpenconfigSystem_System_License struct { - Licenses *OpenconfigSystem_System_License_Licenses `path:"licenses" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_License implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_License) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_License) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_License"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_License) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_License_Licenses represents the /openconfig-system/system/license/licenses YANG schema element. -type OpenconfigSystem_System_License_Licenses struct { - License map[string]*OpenconfigSystem_System_License_Licenses_License `path:"license" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_License_Licenses implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_License_Licenses) IsYANGGoStruct() {} - -// NewLicense creates a new entry in the License list of the -// OpenconfigSystem_System_License_Licenses struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_License_Licenses) NewLicense(LicenseId string) (*OpenconfigSystem_System_License_Licenses_License, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.License == nil { - t.License = make(map[string]*OpenconfigSystem_System_License_Licenses_License) - } - - key := LicenseId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.License[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list License", key) - } - - t.License[key] = &OpenconfigSystem_System_License_Licenses_License{ - LicenseId: &LicenseId, - } - - return t.License[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_License_Licenses) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_License_Licenses"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_License_Licenses) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_License_Licenses_License represents the /openconfig-system/system/license/licenses/license YANG schema element. -type OpenconfigSystem_System_License_Licenses_License struct { - Config *OpenconfigSystem_System_License_Licenses_License_Config `path:"config" module:"openconfig-system"` - LicenseId *string `path:"license-id" module:"openconfig-system"` - State *OpenconfigSystem_System_License_Licenses_License_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_License_Licenses_License implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_License_Licenses_License) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_License_Licenses_License struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_License_Licenses_License) ΛListKeyMap() (map[string]interface{}, error) { - if t.LicenseId == nil { - return nil, fmt.Errorf("nil value for key LicenseId") - } - - return map[string]interface{}{ - "license-id": *t.LicenseId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_License_Licenses_License) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_License_Licenses_License"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_License_Licenses_License) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_License_Licenses_License_Config represents the /openconfig-system/system/license/licenses/license/config YANG schema element. -type OpenconfigSystem_System_License_Licenses_License_Config struct { - Active *bool `path:"active" module:"openconfig-system"` - LicenseData Binary `path:"license-data" module:"openconfig-system"` - LicenseId *string `path:"license-id" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_License_Licenses_License_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_License_Licenses_License_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_License_Licenses_License_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_License_Licenses_License_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_License_Licenses_License_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_License_Licenses_License_State represents the /openconfig-system/system/license/licenses/license/state YANG schema element. -type OpenconfigSystem_System_License_Licenses_License_State struct { - Active *bool `path:"active" module:"openconfig-system"` - Description *string `path:"description" module:"openconfig-system"` - ExpirationDate *uint64 `path:"expiration-date" module:"openconfig-system"` - Expired *bool `path:"expired" module:"openconfig-system"` - InUse *bool `path:"in-use" module:"openconfig-system"` - IssueDate *uint64 `path:"issue-date" module:"openconfig-system"` - LicenseData Binary `path:"license-data" module:"openconfig-system"` - LicenseId *string `path:"license-id" module:"openconfig-system"` - Valid *bool `path:"valid" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_License_Licenses_License_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_License_Licenses_License_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_License_Licenses_License_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_License_Licenses_License_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_License_Licenses_License_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging represents the /openconfig-system/system/logging YANG schema element. -type OpenconfigSystem_System_Logging struct { - Console *OpenconfigSystem_System_Logging_Console `path:"console" module:"openconfig-system"` - RemoteServers *OpenconfigSystem_System_Logging_RemoteServers `path:"remote-servers" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console represents the /openconfig-system/system/logging/console YANG schema element. -type OpenconfigSystem_System_Logging_Console struct { - Config *OpenconfigSystem_System_Logging_Console_Config `path:"config" module:"openconfig-system"` - Selectors *OpenconfigSystem_System_Logging_Console_Selectors `path:"selectors" module:"openconfig-system"` - State *OpenconfigSystem_System_Logging_Console_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_Config represents the /openconfig-system/system/logging/console/config YANG schema element. -type OpenconfigSystem_System_Logging_Console_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_Selectors represents the /openconfig-system/system/logging/console/selectors YANG schema element. -type OpenconfigSystem_System_Logging_Console_Selectors struct { - Selector map[OpenconfigSystem_System_Logging_Console_Selectors_Selector_Key]*OpenconfigSystem_System_Logging_Console_Selectors_Selector `path:"selector" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_Selectors implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_Selectors) IsYANGGoStruct() {} - -// OpenconfigSystem_System_Logging_Console_Selectors_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/console/selectors. -type OpenconfigSystem_System_Logging_Console_Selectors_Selector_Key struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity"` -} - -// NewSelector creates a new entry in the Selector list of the -// OpenconfigSystem_System_Logging_Console_Selectors struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Logging_Console_Selectors) NewSelector(Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY, Severity E_OpenconfigSystemLogging_SyslogSeverity) (*OpenconfigSystem_System_Logging_Console_Selectors_Selector, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Selector == nil { - t.Selector = make(map[OpenconfigSystem_System_Logging_Console_Selectors_Selector_Key]*OpenconfigSystem_System_Logging_Console_Selectors_Selector) - } - - key := OpenconfigSystem_System_Logging_Console_Selectors_Selector_Key{ - Facility: Facility, - Severity: Severity, - } - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Selector[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Selector", key) - } - - t.Selector[key] = &OpenconfigSystem_System_Logging_Console_Selectors_Selector{ - Facility: Facility, - Severity: Severity, - } - - return t.Selector[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_Selectors) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_Selectors"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_Selectors) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_Selectors_Selector represents the /openconfig-system/system/logging/console/selectors/selector YANG schema element. -type OpenconfigSystem_System_Logging_Console_Selectors_Selector struct { - Config *OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config `path:"config" module:"openconfig-system"` - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` - State *OpenconfigSystem_System_Logging_Console_Selectors_Selector_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_Selectors_Selector implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_Selectors_Selector) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Logging_Console_Selectors_Selector struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "facility": t.Facility, - "severity": t.Severity, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_Selectors_Selector"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config represents the /openconfig-system/system/logging/console/selectors/selector/config YANG schema element. -type OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_Selectors_Selector_State represents the /openconfig-system/system/logging/console/selectors/selector/state YANG schema element. -type OpenconfigSystem_System_Logging_Console_Selectors_Selector_State struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_Selectors_Selector_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_Selectors_Selector_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_Selectors_Selector_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_Selectors_Selector_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_Console_State represents the /openconfig-system/system/logging/console/state YANG schema element. -type OpenconfigSystem_System_Logging_Console_State struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_Console_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_Console_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_Console_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_Console_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_Console_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers represents the /openconfig-system/system/logging/remote-servers YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers struct { - RemoteServer map[string]*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer `path:"remote-server" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers) IsYANGGoStruct() {} - -// NewRemoteServer creates a new entry in the RemoteServer list of the -// OpenconfigSystem_System_Logging_RemoteServers struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Logging_RemoteServers) NewRemoteServer(Host string) (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.RemoteServer == nil { - t.RemoteServer = make(map[string]*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer) - } - - key := Host - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.RemoteServer[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list RemoteServer", key) - } - - t.RemoteServer[key] = &OpenconfigSystem_System_Logging_RemoteServers_RemoteServer{ - Host: &Host, - } - - return t.RemoteServer[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer represents the /openconfig-system/system/logging/remote-servers/remote-server YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer struct { - Config *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config `path:"config" module:"openconfig-system"` - Host *string `path:"host" module:"openconfig-system"` - Selectors *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors `path:"selectors" module:"openconfig-system"` - State *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Logging_RemoteServers_RemoteServer struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer) ΛListKeyMap() (map[string]interface{}, error) { - if t.Host == nil { - return nil, fmt.Errorf("nil value for key Host") - } - - return map[string]interface{}{ - "host": *t.Host, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config represents the /openconfig-system/system/logging/remote-servers/remote-server/config YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config struct { - Host *string `path:"host" module:"openconfig-system"` - RemotePort *uint16 `path:"remote-port" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors represents the /openconfig-system/system/logging/remote-servers/remote-server/selectors YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors struct { - Selector map[OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Key]*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector `path:"selector" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors) IsYANGGoStruct() {} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Key represents the key for list Selector of element /openconfig-system/system/logging/remote-servers/remote-server/selectors. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Key struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity"` -} - -// NewSelector creates a new entry in the Selector list of the -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors) NewSelector(Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY, Severity E_OpenconfigSystemLogging_SyslogSeverity) (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Selector == nil { - t.Selector = make(map[OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Key]*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector) - } - - key := OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Key{ - Facility: Facility, - Severity: Severity, - } - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Selector[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Selector", key) - } - - t.Selector[key] = &OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector{ - Facility: Facility, - Severity: Severity, - } - - return t.Selector[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector represents the /openconfig-system/system/logging/remote-servers/remote-server/selectors/selector YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector struct { - Config *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config `path:"config" module:"openconfig-system"` - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` - State *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector) IsYANGGoStruct() { -} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "facility": t.Facility, - "severity": t.Severity, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config represents the /openconfig-system/system/logging/remote-servers/remote-server/selectors/selector/config YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State represents the /openconfig-system/system/logging/remote-servers/remote-server/selectors/selector/state YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State struct { - Facility E_OpenconfigSystemLogging_SYSLOG_FACILITY `path:"facility" module:"openconfig-system"` - Severity E_OpenconfigSystemLogging_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_Selectors_Selector_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State represents the /openconfig-system/system/logging/remote-servers/remote-server/state YANG schema element. -type OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State struct { - Host *string `path:"host" module:"openconfig-system"` - RemotePort *uint16 `path:"remote-port" module:"openconfig-system"` - SourceAddress *string `path:"source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Logging_RemoteServers_RemoteServer_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Memory represents the /openconfig-system/system/memory YANG schema element. -type OpenconfigSystem_System_Memory struct { - Config *OpenconfigSystem_System_Memory_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Memory_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Memory implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Memory) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Memory) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Memory"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Memory) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Memory_Config represents the /openconfig-system/system/memory/config YANG schema element. -type OpenconfigSystem_System_Memory_Config struct { -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Memory_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Memory_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Memory_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Memory_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Memory_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Memory_State represents the /openconfig-system/system/memory/state YANG schema element. -type OpenconfigSystem_System_Memory_State struct { - Physical *uint64 `path:"physical" module:"openconfig-system"` - Reserved *uint64 `path:"reserved" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Memory_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Memory_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Memory_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Memory_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Memory_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages represents the /openconfig-system/system/messages YANG schema element. -type OpenconfigSystem_System_Messages struct { - Config *OpenconfigSystem_System_Messages_Config `path:"config" module:"openconfig-system"` - DebugEntries *OpenconfigSystem_System_Messages_DebugEntries `path:"debug-entries" module:"openconfig-system"` - State *OpenconfigSystem_System_Messages_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_Config represents the /openconfig-system/system/messages/config YANG schema element. -type OpenconfigSystem_System_Messages_Config struct { - Severity E_OpenconfigMessages_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_DebugEntries represents the /openconfig-system/system/messages/debug-entries YANG schema element. -type OpenconfigSystem_System_Messages_DebugEntries struct { - DebugService map[E_OpenconfigMessages_DEBUG_SERVICE]*OpenconfigSystem_System_Messages_DebugEntries_DebugService `path:"debug-service" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_DebugEntries implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_DebugEntries) IsYANGGoStruct() {} - -// NewDebugService creates a new entry in the DebugService list of the -// OpenconfigSystem_System_Messages_DebugEntries struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Messages_DebugEntries) NewDebugService(Service E_OpenconfigMessages_DEBUG_SERVICE) (*OpenconfigSystem_System_Messages_DebugEntries_DebugService, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.DebugService == nil { - t.DebugService = make(map[E_OpenconfigMessages_DEBUG_SERVICE]*OpenconfigSystem_System_Messages_DebugEntries_DebugService) - } - - key := Service - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.DebugService[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list DebugService", key) - } - - t.DebugService[key] = &OpenconfigSystem_System_Messages_DebugEntries_DebugService{ - Service: Service, - } - - return t.DebugService[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_DebugEntries) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_DebugEntries"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_DebugEntries) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_DebugEntries_DebugService represents the /openconfig-system/system/messages/debug-entries/debug-service YANG schema element. -type OpenconfigSystem_System_Messages_DebugEntries_DebugService struct { - Config *OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config `path:"config" module:"openconfig-system"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-system"` - State *OpenconfigSystem_System_Messages_DebugEntries_DebugService_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_DebugEntries_DebugService implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_DebugEntries_DebugService) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Messages_DebugEntries_DebugService struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService) ΛListKeyMap() (map[string]interface{}, error) { - - return map[string]interface{}{ - "service": t.Service, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_DebugEntries_DebugService"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config represents the /openconfig-system/system/messages/debug-entries/debug-service/config YANG schema element. -type OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config struct { - Enabled *bool `path:"enabled" module:"openconfig-system"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_DebugEntries_DebugService_State represents the /openconfig-system/system/messages/debug-entries/debug-service/state YANG schema element. -type OpenconfigSystem_System_Messages_DebugEntries_DebugService_State struct { - Enabled *bool `path:"enabled" module:"openconfig-system"` - Service E_OpenconfigMessages_DEBUG_SERVICE `path:"service" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_DebugEntries_DebugService_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_DebugEntries_DebugService_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_DebugEntries_DebugService_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_DebugEntries_DebugService_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_State represents the /openconfig-system/system/messages/state YANG schema element. -type OpenconfigSystem_System_Messages_State struct { - Message *OpenconfigSystem_System_Messages_State_Message `path:"message" module:"openconfig-system"` - Severity E_OpenconfigMessages_SyslogSeverity `path:"severity" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Messages_State_Message represents the /openconfig-system/system/messages/state/message YANG schema element. -type OpenconfigSystem_System_Messages_State_Message struct { - AppName *string `path:"app-name" module:"openconfig-system"` - Msg *string `path:"msg" module:"openconfig-system"` - Msgid *string `path:"msgid" module:"openconfig-system"` - Priority *uint8 `path:"priority" module:"openconfig-system"` - Procid *string `path:"procid" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Messages_State_Message implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Messages_State_Message) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Messages_State_Message) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Messages_State_Message"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Messages_State_Message) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp represents the /openconfig-system/system/ntp YANG schema element. -type OpenconfigSystem_System_Ntp struct { - Config *OpenconfigSystem_System_Ntp_Config `path:"config" module:"openconfig-system"` - NtpKeys *OpenconfigSystem_System_Ntp_NtpKeys `path:"ntp-keys" module:"openconfig-system"` - Servers *OpenconfigSystem_System_Ntp_Servers `path:"servers" module:"openconfig-system"` - State *OpenconfigSystem_System_Ntp_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_Ntp_Config represents the /openconfig-system/system/ntp/config YANG schema element. -type OpenconfigSystem_System_Ntp_Config struct { - EnableNtpAuth *bool `path:"enable-ntp-auth" module:"openconfig-system"` - Enabled *bool `path:"enabled" module:"openconfig-system"` - NtpSourceAddress *string `path:"ntp-source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_NtpKeys represents the /openconfig-system/system/ntp/ntp-keys YANG schema element. -type OpenconfigSystem_System_Ntp_NtpKeys struct { - NtpKey map[uint16]*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey `path:"ntp-key" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_NtpKeys implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_NtpKeys) IsYANGGoStruct() {} - -// NewNtpKey creates a new entry in the NtpKey list of the -// OpenconfigSystem_System_Ntp_NtpKeys struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Ntp_NtpKeys) NewNtpKey(KeyId uint16) (*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.NtpKey == nil { - t.NtpKey = make(map[uint16]*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey) - } - - key := KeyId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.NtpKey[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list NtpKey", key) - } - - t.NtpKey[key] = &OpenconfigSystem_System_Ntp_NtpKeys_NtpKey{ - KeyId: &KeyId, - } - - return t.NtpKey[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_NtpKeys) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_NtpKeys"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_NtpKeys) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_NtpKeys_NtpKey represents the /openconfig-system/system/ntp/ntp-keys/ntp-key YANG schema element. -type OpenconfigSystem_System_Ntp_NtpKeys_NtpKey struct { - Config *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config `path:"config" module:"openconfig-system"` - KeyId *uint16 `path:"key-id" module:"openconfig-system"` - State *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_NtpKeys_NtpKey implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Ntp_NtpKeys_NtpKey struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey) ΛListKeyMap() (map[string]interface{}, error) { - if t.KeyId == nil { - return nil, fmt.Errorf("nil value for key KeyId") - } - - return map[string]interface{}{ - "key-id": *t.KeyId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_NtpKeys_NtpKey"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config represents the /openconfig-system/system/ntp/ntp-keys/ntp-key/config YANG schema element. -type OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config struct { - KeyId *uint16 `path:"key-id" module:"openconfig-system"` - KeyType E_OpenconfigSystem_NTP_AUTH_TYPE `path:"key-type" module:"openconfig-system"` - KeyValue *string `path:"key-value" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State represents the /openconfig-system/system/ntp/ntp-keys/ntp-key/state YANG schema element. -type OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State struct { - KeyId *uint16 `path:"key-id" module:"openconfig-system"` - KeyType E_OpenconfigSystem_NTP_AUTH_TYPE `path:"key-type" module:"openconfig-system"` - KeyValue *string `path:"key-value" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_NtpKeys_NtpKey_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_Servers represents the /openconfig-system/system/ntp/servers YANG schema element. -type OpenconfigSystem_System_Ntp_Servers struct { - Server map[string]*OpenconfigSystem_System_Ntp_Servers_Server `path:"server" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_Servers implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_Servers) IsYANGGoStruct() {} - -// NewServer creates a new entry in the Server list of the -// OpenconfigSystem_System_Ntp_Servers struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Ntp_Servers) NewServer(Address string) (*OpenconfigSystem_System_Ntp_Servers_Server, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Server == nil { - t.Server = make(map[string]*OpenconfigSystem_System_Ntp_Servers_Server) - } - - key := Address - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Server[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Server", key) - } - - t.Server[key] = &OpenconfigSystem_System_Ntp_Servers_Server{ - Address: &Address, - } - - return t.Server[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_Servers) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_Servers"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_Servers) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_Servers_Server represents the /openconfig-system/system/ntp/servers/server YANG schema element. -type OpenconfigSystem_System_Ntp_Servers_Server struct { - Address *string `path:"address" module:"openconfig-system"` - Config *OpenconfigSystem_System_Ntp_Servers_Server_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_Ntp_Servers_Server_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_Servers_Server implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_Servers_Server) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Ntp_Servers_Server struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Ntp_Servers_Server) ΛListKeyMap() (map[string]interface{}, error) { - if t.Address == nil { - return nil, fmt.Errorf("nil value for key Address") - } - - return map[string]interface{}{ - "address": *t.Address, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_Servers_Server) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_Servers_Server"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_Servers_Server) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_Servers_Server_Config represents the /openconfig-system/system/ntp/servers/server/config YANG schema element. -type OpenconfigSystem_System_Ntp_Servers_Server_Config struct { - Address *string `path:"address" module:"openconfig-system"` - AssociationType E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType `path:"association-type" module:"openconfig-system"` - Iburst *bool `path:"iburst" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` - Prefer *bool `path:"prefer" module:"openconfig-system"` - Version *uint8 `path:"version" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_Servers_Server_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_Servers_Server_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_Servers_Server_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_Servers_Server_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_Servers_Server_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_Servers_Server_State represents the /openconfig-system/system/ntp/servers/server/state YANG schema element. -type OpenconfigSystem_System_Ntp_Servers_Server_State struct { - Address *string `path:"address" module:"openconfig-system"` - AssociationType E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType `path:"association-type" module:"openconfig-system"` - Iburst *bool `path:"iburst" module:"openconfig-system"` - Offset *uint64 `path:"offset" module:"openconfig-system"` - PollInterval *uint32 `path:"poll-interval" module:"openconfig-system"` - Port *uint16 `path:"port" module:"openconfig-system"` - Prefer *bool `path:"prefer" module:"openconfig-system"` - RootDelay *uint32 `path:"root-delay" module:"openconfig-system"` - RootDispersion *uint64 `path:"root-dispersion" module:"openconfig-system"` - Stratum *uint8 `path:"stratum" module:"openconfig-system"` - Version *uint8 `path:"version" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_Servers_Server_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_Servers_Server_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_Servers_Server_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_Servers_Server_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_Servers_Server_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Ntp_State represents the /openconfig-system/system/ntp/state YANG schema element. -type OpenconfigSystem_System_Ntp_State struct { - AuthMismatch *uint64 `path:"auth-mismatch" module:"openconfig-system"` - EnableNtpAuth *bool `path:"enable-ntp-auth" module:"openconfig-system"` - Enabled *bool `path:"enabled" module:"openconfig-system"` - NtpSourceAddress *string `path:"ntp-source-address" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Ntp_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Ntp_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Ntp_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Ntp_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Ntp_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow represents the /openconfig-system/system/openflow YANG schema element. -type OpenconfigSystem_System_Openflow struct { - Agent *OpenconfigSystem_System_Openflow_Agent `path:"agent" module:"openconfig-openflow"` - Controllers *OpenconfigSystem_System_Openflow_Controllers `path:"controllers" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Agent represents the /openconfig-system/system/openflow/agent YANG schema element. -type OpenconfigSystem_System_Openflow_Agent struct { - Config *OpenconfigSystem_System_Openflow_Agent_Config `path:"config" module:"openconfig-openflow"` - State *OpenconfigSystem_System_Openflow_Agent_State `path:"state" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Agent implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Agent) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Agent) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Agent"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Agent) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Agent_Config represents the /openconfig-system/system/openflow/agent/config YANG schema element. -type OpenconfigSystem_System_Openflow_Agent_Config struct { - BackoffInterval *uint32 `path:"backoff-interval" module:"openconfig-openflow"` - DatapathId *string `path:"datapath-id" module:"openconfig-openflow"` - FailureMode E_OpenconfigOpenflow_FailureMode `path:"failure-mode" module:"openconfig-openflow"` - InactivityProbe *uint32 `path:"inactivity-probe" module:"openconfig-openflow"` - MaxBackoff *uint32 `path:"max-backoff" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Agent_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Agent_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Agent_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Agent_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Agent_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Agent_State represents the /openconfig-system/system/openflow/agent/state YANG schema element. -type OpenconfigSystem_System_Openflow_Agent_State struct { - BackoffInterval *uint32 `path:"backoff-interval" module:"openconfig-openflow"` - DatapathId *string `path:"datapath-id" module:"openconfig-openflow"` - FailureMode E_OpenconfigOpenflow_FailureMode `path:"failure-mode" module:"openconfig-openflow"` - InactivityProbe *uint32 `path:"inactivity-probe" module:"openconfig-openflow"` - MaxBackoff *uint32 `path:"max-backoff" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Agent_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Agent_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Agent_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Agent_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Agent_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers represents the /openconfig-system/system/openflow/controllers YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers struct { - Controller map[string]*OpenconfigSystem_System_Openflow_Controllers_Controller `path:"controller" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers) IsYANGGoStruct() {} - -// NewController creates a new entry in the Controller list of the -// OpenconfigSystem_System_Openflow_Controllers struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Openflow_Controllers) NewController(Name string) (*OpenconfigSystem_System_Openflow_Controllers_Controller, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Controller == nil { - t.Controller = make(map[string]*OpenconfigSystem_System_Openflow_Controllers_Controller) - } - - key := Name - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Controller[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Controller", key) - } - - t.Controller[key] = &OpenconfigSystem_System_Openflow_Controllers_Controller{ - Name: &Name, - } - - return t.Controller[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller represents the /openconfig-system/system/openflow/controllers/controller YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller struct { - Config *OpenconfigSystem_System_Openflow_Controllers_Controller_Config `path:"config" module:"openconfig-openflow"` - Connections *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections `path:"connections" module:"openconfig-openflow"` - Name *string `path:"name" module:"openconfig-openflow"` - State *OpenconfigSystem_System_Openflow_Controllers_Controller_State `path:"state" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Openflow_Controllers_Controller struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller) ΛListKeyMap() (map[string]interface{}, error) { - if t.Name == nil { - return nil, fmt.Errorf("nil value for key Name") - } - - return map[string]interface{}{ - "name": *t.Name, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_Config represents the /openconfig-system/system/openflow/controllers/controller/config YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_Config struct { - Name *string `path:"name" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_Connections represents the /openconfig-system/system/openflow/controllers/controller/connections YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_Connections struct { - Connection map[uint8]*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection `path:"connection" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_Connections implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections) IsYANGGoStruct() {} - -// NewConnection creates a new entry in the Connection list of the -// OpenconfigSystem_System_Openflow_Controllers_Controller_Connections struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections) NewConnection(AuxId uint8) (*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Connection == nil { - t.Connection = make(map[uint8]*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection) - } - - key := AuxId - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Connection[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Connection", key) - } - - t.Connection[key] = &OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection{ - AuxId: &AuxId, - } - - return t.Connection[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_Connections"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection represents the /openconfig-system/system/openflow/controllers/controller/connections/connection YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection struct { - AuxId *uint8 `path:"aux-id" module:"openconfig-openflow"` - Config *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config `path:"config" module:"openconfig-openflow"` - State *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State `path:"state" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection) IsYANGGoStruct() { -} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection) ΛListKeyMap() (map[string]interface{}, error) { - if t.AuxId == nil { - return nil, fmt.Errorf("nil value for key AuxId") - } - - return map[string]interface{}{ - "aux-id": *t.AuxId, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config represents the /openconfig-system/system/openflow/controllers/controller/connections/connection/config YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config struct { - Address *string `path:"address" module:"openconfig-openflow"` - AuxId *uint8 `path:"aux-id" module:"openconfig-openflow"` - CertificateId *string `path:"certificate-id" module:"openconfig-openflow"` - Port *uint16 `path:"port" module:"openconfig-openflow"` - Priority *uint8 `path:"priority" module:"openconfig-openflow"` - SourceInterface *string `path:"source-interface" module:"openconfig-openflow"` - Transport E_OpenconfigOpenflow_Transport `path:"transport" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State represents the /openconfig-system/system/openflow/controllers/controller/connections/connection/state YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State struct { - Address *string `path:"address" module:"openconfig-openflow"` - AuxId *uint8 `path:"aux-id" module:"openconfig-openflow"` - CertificateId *string `path:"certificate-id" module:"openconfig-openflow"` - Connected *bool `path:"connected" module:"openconfig-openflow"` - Port *uint16 `path:"port" module:"openconfig-openflow"` - Priority *uint8 `path:"priority" module:"openconfig-openflow"` - SourceInterface *string `path:"source-interface" module:"openconfig-openflow"` - Transport E_OpenconfigOpenflow_Transport `path:"transport" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State) IsYANGGoStruct() { -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_Connections_Connection_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Openflow_Controllers_Controller_State represents the /openconfig-system/system/openflow/controllers/controller/state YANG schema element. -type OpenconfigSystem_System_Openflow_Controllers_Controller_State struct { - Name *string `path:"name" module:"openconfig-openflow"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Openflow_Controllers_Controller_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Openflow_Controllers_Controller_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Openflow_Controllers_Controller_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Openflow_Controllers_Controller_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Processes represents the /openconfig-system/system/processes YANG schema element. -type OpenconfigSystem_System_Processes struct { - Process map[uint64]*OpenconfigSystem_System_Processes_Process `path:"process" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Processes implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Processes) IsYANGGoStruct() {} - -// NewProcess creates a new entry in the Process list of the -// OpenconfigSystem_System_Processes struct. The keys of the list are populated from the input -// arguments. -func (t *OpenconfigSystem_System_Processes) NewProcess(Pid uint64) (*OpenconfigSystem_System_Processes_Process, error) { - - // Initialise the list within the receiver struct if it has not already been - // created. - if t.Process == nil { - t.Process = make(map[uint64]*OpenconfigSystem_System_Processes_Process) - } - - key := Pid - - // Ensure that this key has not already been used in the - // list. Keyed YANG lists do not allow duplicate keys to - // be created. - if _, ok := t.Process[key]; ok { - return nil, fmt.Errorf("duplicate key %v for list Process", key) - } - - t.Process[key] = &OpenconfigSystem_System_Processes_Process{ - Pid: &Pid, - } - - return t.Process[key], nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Processes) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Processes"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Processes) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Processes_Process represents the /openconfig-system/system/processes/process YANG schema element. -type OpenconfigSystem_System_Processes_Process struct { - Pid *uint64 `path:"pid" module:"openconfig-system"` - State *OpenconfigSystem_System_Processes_Process_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Processes_Process implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Processes_Process) IsYANGGoStruct() {} - -// ΛListKeyMap returns the keys of the OpenconfigSystem_System_Processes_Process struct, which is a YANG list entry. -func (t *OpenconfigSystem_System_Processes_Process) ΛListKeyMap() (map[string]interface{}, error) { - if t.Pid == nil { - return nil, fmt.Errorf("nil value for key Pid") - } - - return map[string]interface{}{ - "pid": *t.Pid, - }, nil -} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Processes_Process) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Processes_Process"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Processes_Process) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_Processes_Process_State represents the /openconfig-system/system/processes/process/state YANG schema element. -type OpenconfigSystem_System_Processes_Process_State struct { - Args []string `path:"args" module:"openconfig-system"` - CpuUsageSystem *uint64 `path:"cpu-usage-system" module:"openconfig-system"` - CpuUsageUser *uint64 `path:"cpu-usage-user" module:"openconfig-system"` - CpuUtilization *uint8 `path:"cpu-utilization" module:"openconfig-system"` - MemoryUsage *uint64 `path:"memory-usage" module:"openconfig-system"` - MemoryUtilization *uint8 `path:"memory-utilization" module:"openconfig-system"` - Name *string `path:"name" module:"openconfig-system"` - Pid *uint64 `path:"pid" module:"openconfig-system"` - StartTime *uint64 `path:"start-time" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_Processes_Process_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_Processes_Process_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_Processes_Process_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_Processes_Process_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_Processes_Process_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_SshServer represents the /openconfig-system/system/ssh-server YANG schema element. -type OpenconfigSystem_System_SshServer struct { - Config *OpenconfigSystem_System_SshServer_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_SshServer_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_SshServer implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_SshServer) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_SshServer) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_SshServer"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_SshServer) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_SshServer_Config represents the /openconfig-system/system/ssh-server/config YANG schema element. -type OpenconfigSystem_System_SshServer_Config struct { - Enable *bool `path:"enable" module:"openconfig-system"` - ProtocolVersion E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion `path:"protocol-version" module:"openconfig-system"` - RateLimit *uint16 `path:"rate-limit" module:"openconfig-system"` - SessionLimit *uint16 `path:"session-limit" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_SshServer_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_SshServer_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_SshServer_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_SshServer_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_SshServer_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_SshServer_State represents the /openconfig-system/system/ssh-server/state YANG schema element. -type OpenconfigSystem_System_SshServer_State struct { - Enable *bool `path:"enable" module:"openconfig-system"` - ProtocolVersion E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion `path:"protocol-version" module:"openconfig-system"` - RateLimit *uint16 `path:"rate-limit" module:"openconfig-system"` - SessionLimit *uint16 `path:"session-limit" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_SshServer_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_SshServer_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_SshServer_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_SshServer_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_SshServer_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_State represents the /openconfig-system/system/state YANG schema element. -type OpenconfigSystem_System_State struct { - BootTime *uint64 `path:"boot-time" module:"openconfig-system"` - CurrentDatetime *string `path:"current-datetime" module:"openconfig-system"` - DomainName *string `path:"domain-name" module:"openconfig-system"` - Hostname *string `path:"hostname" module:"openconfig-system"` - LoginBanner *string `path:"login-banner" module:"openconfig-system"` - MotdBanner *string `path:"motd-banner" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_State) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } - -// OpenconfigSystem_System_TelnetServer represents the /openconfig-system/system/telnet-server YANG schema element. -type OpenconfigSystem_System_TelnetServer struct { - Config *OpenconfigSystem_System_TelnetServer_Config `path:"config" module:"openconfig-system"` - State *OpenconfigSystem_System_TelnetServer_State `path:"state" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_TelnetServer implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_TelnetServer) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_TelnetServer) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_TelnetServer"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_TelnetServer) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_TelnetServer_Config represents the /openconfig-system/system/telnet-server/config YANG schema element. -type OpenconfigSystem_System_TelnetServer_Config struct { - Enable *bool `path:"enable" module:"openconfig-system"` - RateLimit *uint16 `path:"rate-limit" module:"openconfig-system"` - SessionLimit *uint16 `path:"session-limit" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_TelnetServer_Config implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_TelnetServer_Config) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_TelnetServer_Config) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_TelnetServer_Config"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_TelnetServer_Config) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// OpenconfigSystem_System_TelnetServer_State represents the /openconfig-system/system/telnet-server/state YANG schema element. -type OpenconfigSystem_System_TelnetServer_State struct { - Enable *bool `path:"enable" module:"openconfig-system"` - RateLimit *uint16 `path:"rate-limit" module:"openconfig-system"` - SessionLimit *uint16 `path:"session-limit" module:"openconfig-system"` - Timeout *uint16 `path:"timeout" module:"openconfig-system"` -} - -// IsYANGGoStruct ensures that OpenconfigSystem_System_TelnetServer_State implements the yang.GoStruct -// interface. This allows functions that need to handle this struct to -// identify it as being generated by ygen. -func (*OpenconfigSystem_System_TelnetServer_State) IsYANGGoStruct() {} - -// Validate validates s against the YANG schema corresponding to its type. -func (t *OpenconfigSystem_System_TelnetServer_State) Validate(opts ...ygot.ValidationOption) error { - if err := ytypes.Validate(SchemaTree["OpenconfigSystem_System_TelnetServer_State"], t, opts...); err != nil { - return err - } - return nil -} - -// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types -// that are included in the generated code. -func (t *OpenconfigSystem_System_TelnetServer_State) ΛEnumTypeMap() map[string][]reflect.Type { - return ΛEnumTypes -} - -// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent -// the enumerated node IETFInterfaces_InterfaceType. An additional value named -// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_IETFInterfaces_InterfaceType int64 - -// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum -// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a -// mapped type for a YANG enumeration. -func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with IETFInterfaces_InterfaceType. -func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_IETFInterfaces_InterfaceType. -func (e E_IETFInterfaces_InterfaceType) String() string { - return ygot.EnumLogString(e, int64(e), "E_IETFInterfaces_InterfaceType") -} - -const ( - // IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType - IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0 -) - -// E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE is a derived int64 type which is used to represent -// the enumerated node OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE. An additional value named -// OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE int64 - -// IsYANGGoEnum ensures that OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE implements the yang.GoEnum -// interface. This ensures that OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE. -func (E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE. -func (e E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE") -} - -const ( - // OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET corresponds to the value UNSET of OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE - OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_UNSET E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 0 - // OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_COMMAND corresponds to the value AAA_ACCOUNTING_EVENT_COMMAND of OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE - OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_COMMAND E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 1 - // OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_LOGIN corresponds to the value AAA_ACCOUNTING_EVENT_LOGIN of OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE - OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE_AAA_ACCOUNTING_EVENT_LOGIN E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE = 2 -) - -// E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE is a derived int64 type which is used to represent -// the enumerated node OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE. An additional value named -// OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE int64 - -// IsYANGGoEnum ensures that OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE implements the yang.GoEnum -// interface. This ensures that OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE. -func (E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE. -func (e E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE") -} - -const ( - // OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET corresponds to the value UNSET of OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE - OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_UNSET E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 0 - // OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_COMMAND corresponds to the value AAA_AUTHORIZATION_EVENT_COMMAND of OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE - OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_COMMAND E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 1 - // OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_CONFIG corresponds to the value AAA_AUTHORIZATION_EVENT_CONFIG of OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE - OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE_AAA_AUTHORIZATION_EVENT_CONFIG E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE = 2 -) - -// E_OpenconfigAaaTypes_AAA_METHOD_TYPE is a derived int64 type which is used to represent -// the enumerated node OpenconfigAaaTypes_AAA_METHOD_TYPE. An additional value named -// OpenconfigAaaTypes_AAA_METHOD_TYPE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAaaTypes_AAA_METHOD_TYPE int64 - -// IsYANGGoEnum ensures that OpenconfigAaaTypes_AAA_METHOD_TYPE implements the yang.GoEnum -// interface. This ensures that OpenconfigAaaTypes_AAA_METHOD_TYPE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAaaTypes_AAA_METHOD_TYPE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAaaTypes_AAA_METHOD_TYPE. -func (E_OpenconfigAaaTypes_AAA_METHOD_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAaaTypes_AAA_METHOD_TYPE. -func (e E_OpenconfigAaaTypes_AAA_METHOD_TYPE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAaaTypes_AAA_METHOD_TYPE") -} - -const ( - // OpenconfigAaaTypes_AAA_METHOD_TYPE_UNSET corresponds to the value UNSET of OpenconfigAaaTypes_AAA_METHOD_TYPE - OpenconfigAaaTypes_AAA_METHOD_TYPE_UNSET E_OpenconfigAaaTypes_AAA_METHOD_TYPE = 0 - // OpenconfigAaaTypes_AAA_METHOD_TYPE_LOCAL corresponds to the value LOCAL of OpenconfigAaaTypes_AAA_METHOD_TYPE - OpenconfigAaaTypes_AAA_METHOD_TYPE_LOCAL E_OpenconfigAaaTypes_AAA_METHOD_TYPE = 1 - // OpenconfigAaaTypes_AAA_METHOD_TYPE_RADIUS_ALL corresponds to the value RADIUS_ALL of OpenconfigAaaTypes_AAA_METHOD_TYPE - OpenconfigAaaTypes_AAA_METHOD_TYPE_RADIUS_ALL E_OpenconfigAaaTypes_AAA_METHOD_TYPE = 2 - // OpenconfigAaaTypes_AAA_METHOD_TYPE_TACACS_ALL corresponds to the value TACACS_ALL of OpenconfigAaaTypes_AAA_METHOD_TYPE - OpenconfigAaaTypes_AAA_METHOD_TYPE_TACACS_ALL E_OpenconfigAaaTypes_AAA_METHOD_TYPE = 3 -) - -// E_OpenconfigAaaTypes_AAA_SERVER_TYPE is a derived int64 type which is used to represent -// the enumerated node OpenconfigAaaTypes_AAA_SERVER_TYPE. An additional value named -// OpenconfigAaaTypes_AAA_SERVER_TYPE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAaaTypes_AAA_SERVER_TYPE int64 - -// IsYANGGoEnum ensures that OpenconfigAaaTypes_AAA_SERVER_TYPE implements the yang.GoEnum -// interface. This ensures that OpenconfigAaaTypes_AAA_SERVER_TYPE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAaaTypes_AAA_SERVER_TYPE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAaaTypes_AAA_SERVER_TYPE. -func (E_OpenconfigAaaTypes_AAA_SERVER_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAaaTypes_AAA_SERVER_TYPE. -func (e E_OpenconfigAaaTypes_AAA_SERVER_TYPE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAaaTypes_AAA_SERVER_TYPE") -} - -const ( - // OpenconfigAaaTypes_AAA_SERVER_TYPE_UNSET corresponds to the value UNSET of OpenconfigAaaTypes_AAA_SERVER_TYPE - OpenconfigAaaTypes_AAA_SERVER_TYPE_UNSET E_OpenconfigAaaTypes_AAA_SERVER_TYPE = 0 - // OpenconfigAaaTypes_AAA_SERVER_TYPE_RADIUS corresponds to the value RADIUS of OpenconfigAaaTypes_AAA_SERVER_TYPE - OpenconfigAaaTypes_AAA_SERVER_TYPE_RADIUS E_OpenconfigAaaTypes_AAA_SERVER_TYPE = 1 - // OpenconfigAaaTypes_AAA_SERVER_TYPE_TACACS corresponds to the value TACACS of OpenconfigAaaTypes_AAA_SERVER_TYPE - OpenconfigAaaTypes_AAA_SERVER_TYPE_TACACS E_OpenconfigAaaTypes_AAA_SERVER_TYPE = 2 -) - -// E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES is a derived int64 type which is used to represent -// the enumerated node OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES. An additional value named -// OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES int64 - -// IsYANGGoEnum ensures that OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES implements the yang.GoEnum -// interface. This ensures that OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES. -func (E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES. -func (e E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES") -} - -const ( - // OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES_UNSET corresponds to the value UNSET of OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES - OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES_UNSET E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES = 0 - // OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES_SYSTEM_ROLE_ADMIN corresponds to the value SYSTEM_ROLE_ADMIN of OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES - OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES_SYSTEM_ROLE_ADMIN E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES = 1 -) - -// E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY is a derived int64 type which is used to represent -// the enumerated node OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY. An additional value named -// OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY int64 - -// IsYANGGoEnum ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY implements the yang.GoEnum -// interface. This ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY. -func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY. -func (e E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY") -} - -const ( - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET corresponds to the value UNSET of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNSET E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 0 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL corresponds to the value CRITICAL of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_CRITICAL E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 1 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR corresponds to the value MAJOR of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MAJOR E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 2 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR corresponds to the value MINOR of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_MINOR E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 3 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN corresponds to the value UNKNOWN of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_UNKNOWN E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 4 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING corresponds to the value WARNING of OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY - OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY_WARNING E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY = 5 -) - -// E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID is a derived int64 type which is used to represent -// the enumerated node OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID. An additional value named -// OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID int64 - -// IsYANGGoEnum ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID implements the yang.GoEnum -// interface. This ensures that OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID. -func (E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID. -func (e E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID") -} - -const ( - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET corresponds to the value UNSET of OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID - OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_UNSET E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 0 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_AIS corresponds to the value AIS of OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID - OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_AIS E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 1 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_EQPT corresponds to the value EQPT of OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID - OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_EQPT E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 2 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_LOS corresponds to the value LOS of OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID - OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_LOS E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 3 - // OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_OTS corresponds to the value OTS of OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID - OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID_OTS E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID = 4 -) - -// E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus is a derived int64 type which is used to represent -// the enumerated node OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus. An additional value named -// OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus int64 - -// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus implements the yang.GoEnum -// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus. -func (E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus. -func (e E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus") -} - -const ( - // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus - OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UNSET E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 0 - // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UP corresponds to the value UP of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus - OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_UP E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 1 - // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_DOWN corresponds to the value DOWN of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus - OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 2 - // OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_TESTING corresponds to the value TESTING of OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus - OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus_TESTING E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus = 3 -) - -// E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus is a derived int64 type which is used to represent -// the enumerated node OpenconfigInterfaces_Interfaces_Interface_State_OperStatus. An additional value named -// OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus int64 - -// IsYANGGoEnum ensures that OpenconfigInterfaces_Interfaces_Interface_State_OperStatus implements the yang.GoEnum -// interface. This ensures that OpenconfigInterfaces_Interfaces_Interface_State_OperStatus can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigInterfaces_Interfaces_Interface_State_OperStatus. -func (E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus. -func (e E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus") -} - -const ( - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET corresponds to the value UNSET of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNSET E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 0 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UP corresponds to the value UP of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UP E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 2 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DOWN corresponds to the value DOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 3 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_TESTING corresponds to the value TESTING of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_TESTING E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 4 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNKNOWN corresponds to the value UNKNOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_UNKNOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 5 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DORMANT corresponds to the value DORMANT of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_DORMANT E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 6 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_NOT_PRESENT E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 7 - // OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of OpenconfigInterfaces_Interfaces_Interface_State_OperStatus - OpenconfigInterfaces_Interfaces_Interface_State_OperStatus_LOWER_LAYER_DOWN E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus = 8 -) - -// E_OpenconfigMessages_DEBUG_SERVICE is a derived int64 type which is used to represent -// the enumerated node OpenconfigMessages_DEBUG_SERVICE. An additional value named -// OpenconfigMessages_DEBUG_SERVICE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigMessages_DEBUG_SERVICE int64 - -// IsYANGGoEnum ensures that OpenconfigMessages_DEBUG_SERVICE implements the yang.GoEnum -// interface. This ensures that OpenconfigMessages_DEBUG_SERVICE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigMessages_DEBUG_SERVICE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigMessages_DEBUG_SERVICE. -func (E_OpenconfigMessages_DEBUG_SERVICE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigMessages_DEBUG_SERVICE. -func (e E_OpenconfigMessages_DEBUG_SERVICE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigMessages_DEBUG_SERVICE") -} - -const ( - // OpenconfigMessages_DEBUG_SERVICE_UNSET corresponds to the value UNSET of OpenconfigMessages_DEBUG_SERVICE - OpenconfigMessages_DEBUG_SERVICE_UNSET E_OpenconfigMessages_DEBUG_SERVICE = 0 -) - -// E_OpenconfigMessages_SyslogSeverity is a derived int64 type which is used to represent -// the enumerated node OpenconfigMessages_SyslogSeverity. An additional value named -// OpenconfigMessages_SyslogSeverity_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigMessages_SyslogSeverity int64 - -// IsYANGGoEnum ensures that OpenconfigMessages_SyslogSeverity implements the yang.GoEnum -// interface. This ensures that OpenconfigMessages_SyslogSeverity can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigMessages_SyslogSeverity) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigMessages_SyslogSeverity. -func (E_OpenconfigMessages_SyslogSeverity) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigMessages_SyslogSeverity. -func (e E_OpenconfigMessages_SyslogSeverity) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigMessages_SyslogSeverity") -} - -const ( - // OpenconfigMessages_SyslogSeverity_UNSET corresponds to the value UNSET of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_UNSET E_OpenconfigMessages_SyslogSeverity = 0 - // OpenconfigMessages_SyslogSeverity_EMERGENCY corresponds to the value EMERGENCY of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_EMERGENCY E_OpenconfigMessages_SyslogSeverity = 1 - // OpenconfigMessages_SyslogSeverity_ALERT corresponds to the value ALERT of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_ALERT E_OpenconfigMessages_SyslogSeverity = 2 - // OpenconfigMessages_SyslogSeverity_CRITICAL corresponds to the value CRITICAL of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_CRITICAL E_OpenconfigMessages_SyslogSeverity = 3 - // OpenconfigMessages_SyslogSeverity_ERROR corresponds to the value ERROR of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_ERROR E_OpenconfigMessages_SyslogSeverity = 4 - // OpenconfigMessages_SyslogSeverity_WARNING corresponds to the value WARNING of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_WARNING E_OpenconfigMessages_SyslogSeverity = 5 - // OpenconfigMessages_SyslogSeverity_NOTICE corresponds to the value NOTICE of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_NOTICE E_OpenconfigMessages_SyslogSeverity = 6 - // OpenconfigMessages_SyslogSeverity_INFORMATIONAL corresponds to the value INFORMATIONAL of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_INFORMATIONAL E_OpenconfigMessages_SyslogSeverity = 7 - // OpenconfigMessages_SyslogSeverity_DEBUG corresponds to the value DEBUG of OpenconfigMessages_SyslogSeverity - OpenconfigMessages_SyslogSeverity_DEBUG E_OpenconfigMessages_SyslogSeverity = 8 -) - -// E_OpenconfigOpenflow_FailureMode is a derived int64 type which is used to represent -// the enumerated node OpenconfigOpenflow_FailureMode. An additional value named -// OpenconfigOpenflow_FailureMode_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigOpenflow_FailureMode int64 - -// IsYANGGoEnum ensures that OpenconfigOpenflow_FailureMode implements the yang.GoEnum -// interface. This ensures that OpenconfigOpenflow_FailureMode can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigOpenflow_FailureMode) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigOpenflow_FailureMode. -func (E_OpenconfigOpenflow_FailureMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigOpenflow_FailureMode. -func (e E_OpenconfigOpenflow_FailureMode) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigOpenflow_FailureMode") -} - -const ( - // OpenconfigOpenflow_FailureMode_UNSET corresponds to the value UNSET of OpenconfigOpenflow_FailureMode - OpenconfigOpenflow_FailureMode_UNSET E_OpenconfigOpenflow_FailureMode = 0 - // OpenconfigOpenflow_FailureMode_SECURE corresponds to the value SECURE of OpenconfigOpenflow_FailureMode - OpenconfigOpenflow_FailureMode_SECURE E_OpenconfigOpenflow_FailureMode = 1 - // OpenconfigOpenflow_FailureMode_STANDALONE corresponds to the value STANDALONE of OpenconfigOpenflow_FailureMode - OpenconfigOpenflow_FailureMode_STANDALONE E_OpenconfigOpenflow_FailureMode = 2 -) - -// E_OpenconfigOpenflow_Transport is a derived int64 type which is used to represent -// the enumerated node OpenconfigOpenflow_Transport. An additional value named -// OpenconfigOpenflow_Transport_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigOpenflow_Transport int64 - -// IsYANGGoEnum ensures that OpenconfigOpenflow_Transport implements the yang.GoEnum -// interface. This ensures that OpenconfigOpenflow_Transport can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigOpenflow_Transport) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigOpenflow_Transport. -func (E_OpenconfigOpenflow_Transport) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum } - -// String returns a logging-friendly string for E_OpenconfigOpenflow_Transport. -func (e E_OpenconfigOpenflow_Transport) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigOpenflow_Transport") -} - -const ( - // OpenconfigOpenflow_Transport_UNSET corresponds to the value UNSET of OpenconfigOpenflow_Transport - OpenconfigOpenflow_Transport_UNSET E_OpenconfigOpenflow_Transport = 0 - // OpenconfigOpenflow_Transport_TCP corresponds to the value TCP of OpenconfigOpenflow_Transport - OpenconfigOpenflow_Transport_TCP E_OpenconfigOpenflow_Transport = 1 - // OpenconfigOpenflow_Transport_TLS corresponds to the value TLS of OpenconfigOpenflow_Transport - OpenconfigOpenflow_Transport_TLS E_OpenconfigOpenflow_Transport = 2 -) - -// E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS is a derived int64 type which is used to represent -// the enumerated node OpenconfigPlatformTypes_COMPONENT_OPER_STATUS. An additional value named -// OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS int64 - -// IsYANGGoEnum ensures that OpenconfigPlatformTypes_COMPONENT_OPER_STATUS implements the yang.GoEnum -// interface. This ensures that OpenconfigPlatformTypes_COMPONENT_OPER_STATUS can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_COMPONENT_OPER_STATUS. -func (E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS. -func (e E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS") -} - -const ( - // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS - OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_UNSET E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 0 - // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_ACTIVE corresponds to the value ACTIVE of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS - OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_ACTIVE E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 1 - // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_DISABLED corresponds to the value DISABLED of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS - OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_DISABLED E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 2 - // OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_INACTIVE corresponds to the value INACTIVE of OpenconfigPlatformTypes_COMPONENT_OPER_STATUS - OpenconfigPlatformTypes_COMPONENT_OPER_STATUS_INACTIVE E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS = 3 -) - -// E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT is a derived int64 type which is used to represent -// the enumerated node OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. An additional value named -// OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT int64 - -// IsYANGGoEnum ensures that OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT implements the yang.GoEnum -// interface. This ensures that OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. -func (E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT. -func (e E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT") -} - -const ( - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_UNSET E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 0 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE corresponds to the value BACKPLANE of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_BACKPLANE E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 1 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS corresponds to the value CHASSIS of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CHASSIS E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 2 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD corresponds to the value CONTROLLER_CARD of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CONTROLLER_CARD E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 3 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU corresponds to the value CPU of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_CPU E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 4 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC corresponds to the value FABRIC of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FABRIC E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 5 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN corresponds to the value FAN of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FAN E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 6 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU corresponds to the value FRU of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_FRU E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 7 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT corresponds to the value INTEGRATED_CIRCUIT of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_INTEGRATED_CIRCUIT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 8 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD corresponds to the value LINECARD of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_LINECARD E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 9 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT corresponds to the value PORT of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_PORT E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 10 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY corresponds to the value POWER_SUPPLY of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_POWER_SUPPLY E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 11 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR corresponds to the value SENSOR of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_SENSOR E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 12 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE corresponds to the value STORAGE of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_STORAGE E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 13 - // OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER corresponds to the value TRANSCEIVER of OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT_TRANSCEIVER E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT = 14 -) - -// E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT is a derived int64 type which is used to represent -// the enumerated node OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. An additional value named -// OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT int64 - -// IsYANGGoEnum ensures that OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT implements the yang.GoEnum -// interface. This ensures that OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. -func (E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT. -func (e E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT") -} - -const ( - // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET corresponds to the value UNSET of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_UNSET E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 0 - // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM corresponds to the value OPERATING_SYSTEM of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 1 - // OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE corresponds to the value OPERATING_SYSTEM_UPDATE of OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT - OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT_OPERATING_SYSTEM_UPDATE E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT = 2 -) - -// E_OpenconfigSystemLogging_SYSLOG_FACILITY is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystemLogging_SYSLOG_FACILITY. An additional value named -// OpenconfigSystemLogging_SYSLOG_FACILITY_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystemLogging_SYSLOG_FACILITY int64 - -// IsYANGGoEnum ensures that OpenconfigSystemLogging_SYSLOG_FACILITY implements the yang.GoEnum -// interface. This ensures that OpenconfigSystemLogging_SYSLOG_FACILITY can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystemLogging_SYSLOG_FACILITY) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystemLogging_SYSLOG_FACILITY. -func (E_OpenconfigSystemLogging_SYSLOG_FACILITY) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystemLogging_SYSLOG_FACILITY. -func (e E_OpenconfigSystemLogging_SYSLOG_FACILITY) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystemLogging_SYSLOG_FACILITY") -} - -const ( - // OpenconfigSystemLogging_SYSLOG_FACILITY_UNSET corresponds to the value UNSET of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_UNSET E_OpenconfigSystemLogging_SYSLOG_FACILITY = 0 - // OpenconfigSystemLogging_SYSLOG_FACILITY_ALL corresponds to the value ALL of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_ALL E_OpenconfigSystemLogging_SYSLOG_FACILITY = 1 - // OpenconfigSystemLogging_SYSLOG_FACILITY_AUDIT corresponds to the value AUDIT of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_AUDIT E_OpenconfigSystemLogging_SYSLOG_FACILITY = 2 - // OpenconfigSystemLogging_SYSLOG_FACILITY_AUTH corresponds to the value AUTH of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_AUTH E_OpenconfigSystemLogging_SYSLOG_FACILITY = 3 - // OpenconfigSystemLogging_SYSLOG_FACILITY_AUTHPRIV corresponds to the value AUTHPRIV of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_AUTHPRIV E_OpenconfigSystemLogging_SYSLOG_FACILITY = 4 - // OpenconfigSystemLogging_SYSLOG_FACILITY_CONSOLE corresponds to the value CONSOLE of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_CONSOLE E_OpenconfigSystemLogging_SYSLOG_FACILITY = 5 - // OpenconfigSystemLogging_SYSLOG_FACILITY_KERNEL corresponds to the value KERNEL of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_KERNEL E_OpenconfigSystemLogging_SYSLOG_FACILITY = 6 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL0 corresponds to the value LOCAL0 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL0 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 7 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL1 corresponds to the value LOCAL1 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL1 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 8 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL2 corresponds to the value LOCAL2 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL2 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 9 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL3 corresponds to the value LOCAL3 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL3 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 10 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL4 corresponds to the value LOCAL4 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL4 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 11 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL5 corresponds to the value LOCAL5 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL5 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 12 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL6 corresponds to the value LOCAL6 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL6 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 13 - // OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL7 corresponds to the value LOCAL7 of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_LOCAL7 E_OpenconfigSystemLogging_SYSLOG_FACILITY = 14 - // OpenconfigSystemLogging_SYSLOG_FACILITY_MAIL corresponds to the value MAIL of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_MAIL E_OpenconfigSystemLogging_SYSLOG_FACILITY = 15 - // OpenconfigSystemLogging_SYSLOG_FACILITY_NTP corresponds to the value NTP of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_NTP E_OpenconfigSystemLogging_SYSLOG_FACILITY = 16 - // OpenconfigSystemLogging_SYSLOG_FACILITY_SYSLOG corresponds to the value SYSLOG of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_SYSLOG E_OpenconfigSystemLogging_SYSLOG_FACILITY = 17 - // OpenconfigSystemLogging_SYSLOG_FACILITY_SYSTEM_DAEMON corresponds to the value SYSTEM_DAEMON of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_SYSTEM_DAEMON E_OpenconfigSystemLogging_SYSLOG_FACILITY = 18 - // OpenconfigSystemLogging_SYSLOG_FACILITY_USER corresponds to the value USER of OpenconfigSystemLogging_SYSLOG_FACILITY - OpenconfigSystemLogging_SYSLOG_FACILITY_USER E_OpenconfigSystemLogging_SYSLOG_FACILITY = 19 -) - -// E_OpenconfigSystemLogging_SyslogSeverity is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystemLogging_SyslogSeverity. An additional value named -// OpenconfigSystemLogging_SyslogSeverity_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystemLogging_SyslogSeverity int64 - -// IsYANGGoEnum ensures that OpenconfigSystemLogging_SyslogSeverity implements the yang.GoEnum -// interface. This ensures that OpenconfigSystemLogging_SyslogSeverity can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystemLogging_SyslogSeverity) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystemLogging_SyslogSeverity. -func (E_OpenconfigSystemLogging_SyslogSeverity) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystemLogging_SyslogSeverity. -func (e E_OpenconfigSystemLogging_SyslogSeverity) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystemLogging_SyslogSeverity") -} - -const ( - // OpenconfigSystemLogging_SyslogSeverity_UNSET corresponds to the value UNSET of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_UNSET E_OpenconfigSystemLogging_SyslogSeverity = 0 - // OpenconfigSystemLogging_SyslogSeverity_EMERGENCY corresponds to the value EMERGENCY of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_EMERGENCY E_OpenconfigSystemLogging_SyslogSeverity = 1 - // OpenconfigSystemLogging_SyslogSeverity_ALERT corresponds to the value ALERT of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_ALERT E_OpenconfigSystemLogging_SyslogSeverity = 2 - // OpenconfigSystemLogging_SyslogSeverity_CRITICAL corresponds to the value CRITICAL of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_CRITICAL E_OpenconfigSystemLogging_SyslogSeverity = 3 - // OpenconfigSystemLogging_SyslogSeverity_ERROR corresponds to the value ERROR of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_ERROR E_OpenconfigSystemLogging_SyslogSeverity = 4 - // OpenconfigSystemLogging_SyslogSeverity_WARNING corresponds to the value WARNING of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_WARNING E_OpenconfigSystemLogging_SyslogSeverity = 5 - // OpenconfigSystemLogging_SyslogSeverity_NOTICE corresponds to the value NOTICE of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_NOTICE E_OpenconfigSystemLogging_SyslogSeverity = 6 - // OpenconfigSystemLogging_SyslogSeverity_INFORMATIONAL corresponds to the value INFORMATIONAL of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_INFORMATIONAL E_OpenconfigSystemLogging_SyslogSeverity = 7 - // OpenconfigSystemLogging_SyslogSeverity_DEBUG corresponds to the value DEBUG of OpenconfigSystemLogging_SyslogSeverity - OpenconfigSystemLogging_SyslogSeverity_DEBUG E_OpenconfigSystemLogging_SyslogSeverity = 8 -) - -// E_OpenconfigSystem_NTP_AUTH_TYPE is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_NTP_AUTH_TYPE. An additional value named -// OpenconfigSystem_NTP_AUTH_TYPE_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_NTP_AUTH_TYPE int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_NTP_AUTH_TYPE implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_NTP_AUTH_TYPE can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_NTP_AUTH_TYPE) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_NTP_AUTH_TYPE. -func (E_OpenconfigSystem_NTP_AUTH_TYPE) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_NTP_AUTH_TYPE. -func (e E_OpenconfigSystem_NTP_AUTH_TYPE) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_NTP_AUTH_TYPE") -} - -const ( - // OpenconfigSystem_NTP_AUTH_TYPE_UNSET corresponds to the value UNSET of OpenconfigSystem_NTP_AUTH_TYPE - OpenconfigSystem_NTP_AUTH_TYPE_UNSET E_OpenconfigSystem_NTP_AUTH_TYPE = 0 - // OpenconfigSystem_NTP_AUTH_TYPE_NTP_AUTH_MD5 corresponds to the value NTP_AUTH_MD5 of OpenconfigSystem_NTP_AUTH_TYPE - OpenconfigSystem_NTP_AUTH_TYPE_NTP_AUTH_MD5 E_OpenconfigSystem_NTP_AUTH_TYPE = 1 -) - -// E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record. An additional value named -// OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record. -func (E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record. -func (e E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record") -} - -const ( - // OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_UNSET corresponds to the value UNSET of OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record - OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_UNSET E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record = 0 - // OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_START_STOP corresponds to the value START_STOP of OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record - OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_START_STOP E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record = 1 - // OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_STOP corresponds to the value STOP of OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record - OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record_STOP E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record = 2 -) - -// E_OpenconfigSystem_System_Cpus_Cpu_State_Index is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_System_Cpus_Cpu_State_Index. An additional value named -// OpenconfigSystem_System_Cpus_Cpu_State_Index_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_System_Cpus_Cpu_State_Index int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_System_Cpus_Cpu_State_Index implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_System_Cpus_Cpu_State_Index can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_System_Cpus_Cpu_State_Index) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_System_Cpus_Cpu_State_Index. -func (E_OpenconfigSystem_System_Cpus_Cpu_State_Index) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_System_Cpus_Cpu_State_Index. -func (e E_OpenconfigSystem_System_Cpus_Cpu_State_Index) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_System_Cpus_Cpu_State_Index") -} - -const ( - // OpenconfigSystem_System_Cpus_Cpu_State_Index_UNSET corresponds to the value UNSET of OpenconfigSystem_System_Cpus_Cpu_State_Index - OpenconfigSystem_System_Cpus_Cpu_State_Index_UNSET E_OpenconfigSystem_System_Cpus_Cpu_State_Index = 0 - // OpenconfigSystem_System_Cpus_Cpu_State_Index_ALL corresponds to the value ALL of OpenconfigSystem_System_Cpus_Cpu_State_Index - OpenconfigSystem_System_Cpus_Cpu_State_Index_ALL E_OpenconfigSystem_System_Cpus_Cpu_State_Index = 1 -) - -// E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_System_GrpcServer_Config_ListenAddresses. An additional value named -// OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_System_GrpcServer_Config_ListenAddresses implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_System_GrpcServer_Config_ListenAddresses can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_System_GrpcServer_Config_ListenAddresses. -func (E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses. -func (e E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses") -} - -const ( - // OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_UNSET corresponds to the value UNSET of OpenconfigSystem_System_GrpcServer_Config_ListenAddresses - OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_UNSET E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses = 0 - // OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_ANY corresponds to the value ANY of OpenconfigSystem_System_GrpcServer_Config_ListenAddresses - OpenconfigSystem_System_GrpcServer_Config_ListenAddresses_ANY E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses = 1 -) - -// E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType. An additional value named -// OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType. -func (E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType. -func (e E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType") -} - -const ( - // OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_UNSET corresponds to the value UNSET of OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType - OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_UNSET E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType = 0 - // OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_SERVER corresponds to the value SERVER of OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType - OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_SERVER E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType = 1 - // OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_PEER corresponds to the value PEER of OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType - OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_PEER E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType = 2 - // OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_POOL corresponds to the value POOL of OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType - OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType_POOL E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType = 3 -) - -// E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion is a derived int64 type which is used to represent -// the enumerated node OpenconfigSystem_System_SshServer_Config_ProtocolVersion. An additional value named -// OpenconfigSystem_System_SshServer_Config_ProtocolVersion_UNSET is added to the enumeration which is used as -// the nil value, indicating that the enumeration was not explicitly set by -// the program importing the generated structures. -type E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion int64 - -// IsYANGGoEnum ensures that OpenconfigSystem_System_SshServer_Config_ProtocolVersion implements the yang.GoEnum -// interface. This ensures that OpenconfigSystem_System_SshServer_Config_ProtocolVersion can be identified as a -// mapped type for a YANG enumeration. -func (E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion) IsYANGGoEnum() {} - -// ΛMap returns the value lookup map associated with OpenconfigSystem_System_SshServer_Config_ProtocolVersion. -func (E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion) ΛMap() map[string]map[int64]ygot.EnumDefinition { - return ΛEnum -} - -// String returns a logging-friendly string for E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion. -func (e E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion) String() string { - return ygot.EnumLogString(e, int64(e), "E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion") -} - -const ( - // OpenconfigSystem_System_SshServer_Config_ProtocolVersion_UNSET corresponds to the value UNSET of OpenconfigSystem_System_SshServer_Config_ProtocolVersion - OpenconfigSystem_System_SshServer_Config_ProtocolVersion_UNSET E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion = 0 - // OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V2 corresponds to the value V2 of OpenconfigSystem_System_SshServer_Config_ProtocolVersion - OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V2 E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion = 1 - // OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V1 corresponds to the value V1 of OpenconfigSystem_System_SshServer_Config_ProtocolVersion - OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V1 E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion = 2 - // OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V1_V2 corresponds to the value V1_V2 of OpenconfigSystem_System_SshServer_Config_ProtocolVersion - OpenconfigSystem_System_SshServer_Config_ProtocolVersion_V1_V2 E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion = 3 -) - -// ΛEnum is a map, keyed by the name of the type defined for each enum in the -// generated Go code, which provides a mapping between the constant int64 value -// of each value of the enumeration, and the string that is used to represent it -// in the YANG schema. The map is named ΛEnum in order to avoid clash with any -// valid YANG identifier. -var ΛEnum = map[string]map[int64]ygot.EnumDefinition{ - "E_IETFInterfaces_InterfaceType": {}, - "E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE": { - 1: {Name: "AAA_ACCOUNTING_EVENT_COMMAND", DefiningModule: "openconfig-aaa-types"}, - 2: {Name: "AAA_ACCOUNTING_EVENT_LOGIN", DefiningModule: "openconfig-aaa-types"}, - }, - "E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE": { - 1: {Name: "AAA_AUTHORIZATION_EVENT_COMMAND", DefiningModule: "openconfig-aaa-types"}, - 2: {Name: "AAA_AUTHORIZATION_EVENT_CONFIG", DefiningModule: "openconfig-aaa-types"}, - }, - "E_OpenconfigAaaTypes_AAA_METHOD_TYPE": { - 1: {Name: "LOCAL", DefiningModule: "openconfig-aaa-types"}, - 2: {Name: "RADIUS_ALL", DefiningModule: "openconfig-aaa-types"}, - 3: {Name: "TACACS_ALL", DefiningModule: "openconfig-aaa-types"}, - }, - "E_OpenconfigAaaTypes_AAA_SERVER_TYPE": { - 1: {Name: "RADIUS", DefiningModule: "openconfig-aaa"}, - 2: {Name: "TACACS", DefiningModule: "openconfig-aaa"}, - }, - "E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES": { - 1: {Name: "SYSTEM_ROLE_ADMIN", DefiningModule: "openconfig-aaa-types"}, - }, - "E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY": { - 1: {Name: "CRITICAL", DefiningModule: "openconfig-alarm-types"}, - 2: {Name: "MAJOR", DefiningModule: "openconfig-alarm-types"}, - 3: {Name: "MINOR", DefiningModule: "openconfig-alarm-types"}, - 4: {Name: "UNKNOWN", DefiningModule: "openconfig-alarm-types"}, - 5: {Name: "WARNING", DefiningModule: "openconfig-alarm-types"}, - }, - "E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID": { - 1: {Name: "AIS", DefiningModule: "openconfig-alarm-types"}, - 2: {Name: "EQPT", DefiningModule: "openconfig-alarm-types"}, - 3: {Name: "LOS", DefiningModule: "openconfig-alarm-types"}, - 4: {Name: "OTS", DefiningModule: "openconfig-alarm-types"}, - }, - "E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus": { - 1: {Name: "UP"}, - 2: {Name: "DOWN"}, - 3: {Name: "TESTING"}, - }, - "E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus": { - 2: {Name: "UP"}, - 3: {Name: "DOWN"}, - 4: {Name: "TESTING"}, - 5: {Name: "UNKNOWN"}, - 6: {Name: "DORMANT"}, - 7: {Name: "NOT_PRESENT"}, - 8: {Name: "LOWER_LAYER_DOWN"}, - }, - "E_OpenconfigMessages_DEBUG_SERVICE": {}, - "E_OpenconfigMessages_SyslogSeverity": { - 1: {Name: "EMERGENCY"}, - 2: {Name: "ALERT"}, - 3: {Name: "CRITICAL"}, - 4: {Name: "ERROR"}, - 5: {Name: "WARNING"}, - 6: {Name: "NOTICE"}, - 7: {Name: "INFORMATIONAL"}, - 8: {Name: "DEBUG"}, - }, - "E_OpenconfigOpenflow_FailureMode": { - 1: {Name: "SECURE"}, - 2: {Name: "STANDALONE"}, - }, - "E_OpenconfigOpenflow_Transport": { - 1: {Name: "TCP"}, - 2: {Name: "TLS"}, - }, - "E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS": { - 1: {Name: "ACTIVE", DefiningModule: "openconfig-platform-types"}, - 2: {Name: "DISABLED", DefiningModule: "openconfig-platform-types"}, - 3: {Name: "INACTIVE", DefiningModule: "openconfig-platform-types"}, - }, - "E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT": { - 1: {Name: "BACKPLANE", DefiningModule: "openconfig-platform-types"}, - 2: {Name: "CHASSIS", DefiningModule: "openconfig-platform-types"}, - 3: {Name: "CONTROLLER_CARD", DefiningModule: "openconfig-platform-types"}, - 4: {Name: "CPU", DefiningModule: "openconfig-platform-types"}, - 5: {Name: "FABRIC", DefiningModule: "openconfig-platform-types"}, - 6: {Name: "FAN", DefiningModule: "openconfig-platform-types"}, - 7: {Name: "FRU", DefiningModule: "openconfig-platform-types"}, - 8: {Name: "INTEGRATED_CIRCUIT", DefiningModule: "openconfig-platform-types"}, - 9: {Name: "LINECARD", DefiningModule: "openconfig-platform-types"}, - 10: {Name: "PORT", DefiningModule: "openconfig-platform-types"}, - 11: {Name: "POWER_SUPPLY", DefiningModule: "openconfig-platform-types"}, - 12: {Name: "SENSOR", DefiningModule: "openconfig-platform-types"}, - 13: {Name: "STORAGE", DefiningModule: "openconfig-platform-types"}, - 14: {Name: "TRANSCEIVER", DefiningModule: "openconfig-platform-types"}, - }, - "E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT": { - 1: {Name: "OPERATING_SYSTEM", DefiningModule: "openconfig-platform-types"}, - 2: {Name: "OPERATING_SYSTEM_UPDATE", DefiningModule: "openconfig-platform-types"}, - }, - "E_OpenconfigSystemLogging_SYSLOG_FACILITY": { - 1: {Name: "ALL", DefiningModule: "openconfig-system-logging"}, - 2: {Name: "AUDIT", DefiningModule: "openconfig-system-logging"}, - 3: {Name: "AUTH", DefiningModule: "openconfig-system-logging"}, - 4: {Name: "AUTHPRIV", DefiningModule: "openconfig-system-logging"}, - 5: {Name: "CONSOLE", DefiningModule: "openconfig-system-logging"}, - 6: {Name: "KERNEL", DefiningModule: "openconfig-system-logging"}, - 7: {Name: "LOCAL0", DefiningModule: "openconfig-system-logging"}, - 8: {Name: "LOCAL1", DefiningModule: "openconfig-system-logging"}, - 9: {Name: "LOCAL2", DefiningModule: "openconfig-system-logging"}, - 10: {Name: "LOCAL3", DefiningModule: "openconfig-system-logging"}, - 11: {Name: "LOCAL4", DefiningModule: "openconfig-system-logging"}, - 12: {Name: "LOCAL5", DefiningModule: "openconfig-system-logging"}, - 13: {Name: "LOCAL6", DefiningModule: "openconfig-system-logging"}, - 14: {Name: "LOCAL7", DefiningModule: "openconfig-system-logging"}, - 15: {Name: "MAIL", DefiningModule: "openconfig-system-logging"}, - 16: {Name: "NTP", DefiningModule: "openconfig-system-logging"}, - 17: {Name: "SYSLOG", DefiningModule: "openconfig-system-logging"}, - 18: {Name: "SYSTEM_DAEMON", DefiningModule: "openconfig-system-logging"}, - 19: {Name: "USER", DefiningModule: "openconfig-system-logging"}, - }, - "E_OpenconfigSystemLogging_SyslogSeverity": { - 1: {Name: "EMERGENCY"}, - 2: {Name: "ALERT"}, - 3: {Name: "CRITICAL"}, - 4: {Name: "ERROR"}, - 5: {Name: "WARNING"}, - 6: {Name: "NOTICE"}, - 7: {Name: "INFORMATIONAL"}, - 8: {Name: "DEBUG"}, - }, - "E_OpenconfigSystem_NTP_AUTH_TYPE": { - 1: {Name: "NTP_AUTH_MD5", DefiningModule: "openconfig-system"}, - }, - "E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record": { - 1: {Name: "START_STOP"}, - 2: {Name: "STOP"}, - }, - "E_OpenconfigSystem_System_Cpus_Cpu_State_Index": { - 1: {Name: "ALL"}, - }, - "E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses": { - 1: {Name: "ANY"}, - }, - "E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType": { - 1: {Name: "SERVER"}, - 2: {Name: "PEER"}, - 3: {Name: "POOL"}, - }, - "E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion": { - 1: {Name: "V2"}, - 2: {Name: "V1"}, - 3: {Name: "V1_V2"}, - }, -} - -var ( - // ySchema is a byte slice contain a gzip compressed representation of the - // YANG schema from which the Go code was generated. When uncompressed the - // contents of the byte slice is a JSON document containing an object, keyed - // on the name of the generated struct, and containing the JSON marshalled - // contents of a goyang yang.Entry struct, which defines the schema for the - // fields within the struct. - ySchema = []byte{ - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x73, 0xda, 0xc8, - 0xb6, 0x06, 0xfa, 0xdd, 0xbf, 0x82, 0xa2, 0x76, 0xd5, 0xb5, 0xf7, 0xb1, 0x62, 0x83, 0x01, 0xc7, - 0xf9, 0x32, 0xc5, 0x38, 0x9e, 0xd9, 0x3e, 0x93, 0xd8, 0xb9, 0xb6, 0x33, 0xbb, 0x66, 0xc7, 0x6c, - 0x97, 0x0c, 0x8d, 0xad, 0x3b, 0x20, 0x71, 0x24, 0x91, 0x89, 0x27, 0xe1, 0xbf, 0xdf, 0x42, 0x08, - 0x01, 0xe6, 0xad, 0x7b, 0xf5, 0x6a, 0x21, 0xc1, 0x33, 0x75, 0xce, 0x8e, 0xe3, 0xd0, 0x2d, 0xd4, - 0xbd, 0x5e, 0x9e, 0xf5, 0xf4, 0x5a, 0xab, 0xbf, 0xef, 0x15, 0x0a, 0x85, 0x42, 0xf1, 0xca, 0xee, - 0x8a, 0xe2, 0xbb, 0x42, 0xb1, 0x25, 0xbe, 0x3a, 0x4d, 0x51, 0x3c, 0x1c, 0xfd, 0xf6, 0x37, 0xc7, - 0x6d, 0x15, 0xdf, 0x15, 0x4a, 0xf1, 0x5f, 0xcf, 0x3d, 0xb7, 0xed, 0x3c, 0x15, 0xdf, 0x15, 0x8e, - 0xe3, 0x5f, 0xbc, 0x77, 0xfc, 0xe2, 0xbb, 0xc2, 0x68, 0x8a, 0xe8, 0x17, 0x4d, 0xaf, 0xdb, 0xf3, - 0x5c, 0xe1, 0x86, 0xc1, 0xcc, 0xef, 0x67, 0x1e, 0x31, 0xf5, 0x99, 0xc3, 0xd9, 0x4f, 0xcc, 0x3e, - 0x2e, 0xf9, 0xf5, 0xeb, 0xc7, 0x26, 0xff, 0xf0, 0xc9, 0x17, 0x6d, 0xe7, 0xdb, 0xdc, 0x93, 0x66, - 0x9e, 0xe6, 0x35, 0xad, 0x5e, 0xc7, 0x0e, 0xdb, 0x9e, 0xdf, 0x7d, 0xf5, 0xb8, 0xe8, 0x63, 0xb7, - 0x5e, 0xdf, 0x6f, 0x8a, 0x85, 0x53, 0x8c, 0xbe, 0x92, 0x78, 0xf9, 0xcb, 0xf3, 0x87, 0xdf, 0xaa, - 0xd8, 0x1b, 0x3d, 0xed, 0x70, 0xf1, 0x07, 0xff, 0x65, 0x07, 0x75, 0xff, 0xa9, 0xdf, 0x15, 0x6e, - 0x58, 0x7c, 0x57, 0x08, 0xfd, 0xbe, 0x58, 0xf2, 0xc1, 0xa9, 0x4f, 0xcd, 0x7c, 0xb9, 0xb9, 0x4f, - 0x0f, 0x66, 0x7e, 0x33, 0x78, 0xf5, 0xee, 0xaf, 0x97, 0x7e, 0x7e, 0x0b, 0x96, 0xbf, 0xd4, 0xdc, - 0x4e, 0x2c, 0x7b, 0xa9, 0xc5, 0x1b, 0xb2, 0x76, 0x63, 0x64, 0x36, 0x48, 0x71, 0xa3, 0x64, 0x37, - 0x4c, 0x79, 0xe3, 0x94, 0x37, 0x50, 0x7d, 0x23, 0x17, 0x6f, 0xe8, 0x92, 0x8d, 0x5d, 0xbb, 0xc1, - 0xc9, 0x07, 0x1e, 0xed, 0xe6, 0x9f, 0xbd, 0x8e, 0xed, 0x4a, 0x2c, 0xc6, 0x78, 0x8d, 0x27, 0x43, - 0xd6, 0xbc, 0xdb, 0xea, 0x8d, 0x97, 0x16, 0x00, 0x15, 0x41, 0x20, 0x0a, 0x84, 0xaa, 0x60, 0x90, - 0x05, 0x84, 0x2c, 0x28, 0x74, 0x81, 0x59, 0x2d, 0x38, 0x6b, 0x04, 0x48, 0x5a, 0x90, 0xa6, 0x2c, - 0x47, 0xbc, 0x9b, 0x92, 0x2b, 0x38, 0x31, 0x23, 0xd1, 0x38, 0xc9, 0x55, 0x90, 0x13, 0x2d, 0x65, - 0x11, 0xa3, 0x88, 0x9a, 0xa6, 0xc8, 0x51, 0x45, 0x4f, 0x5b, 0x04, 0xb5, 0x45, 0x51, 0x5f, 0x24, - 0xe5, 0x44, 0x53, 0x52, 0x44, 0x27, 0x5f, 0xc7, 0x75, 0xbd, 0xd0, 0x0e, 0x1d, 0xcf, 0x55, 0xdb, - 0xbf, 0xa0, 0xf9, 0x2c, 0xba, 0x76, 0xcf, 0x0e, 0x9f, 0x87, 0x2f, 0x72, 0xe4, 0xf5, 0x84, 0x3b, - 0x12, 0xca, 0xe4, 0x8d, 0x8e, 0x26, 0xa8, 0x63, 0xf2, 0xe3, 0x51, 0x62, 0x0f, 0x8f, 0x94, 0x64, - 0x78, 0xf4, 0xcc, 0xd0, 0xef, 0x37, 0x43, 0x37, 0x96, 0x9c, 0xeb, 0xe4, 0x91, 0x9f, 0xe2, 0x27, - 0x3e, 0x9c, 0x27, 0x4f, 0x9c, 0xfc, 0xf8, 0xf0, 0xf3, 0xf8, 0x89, 0x0f, 0xb1, 0x60, 0xef, 0xf1, - 0xac, 0xb2, 0xc4, 0x0a, 0x17, 0x83, 0xd0, 0x0e, 0x85, 0xba, 0x7a, 0x8f, 0x86, 0x19, 0xd6, 0xee, - 0x32, 0xb4, 0x1b, 0xda, 0x6d, 0x4c, 0xbb, 0x55, 0x44, 0x98, 0x45, 0xb9, 0x6f, 0xa3, 0x07, 0x72, - 0xe9, 0xb6, 0x96, 0xfb, 0x57, 0x5c, 0x75, 0xfd, 0xd5, 0x2e, 0x4a, 0x99, 0x22, 0xad, 0xf5, 0x5d, - 0xbd, 0xb2, 0xcb, 0xd7, 0x6b, 0xc5, 0x5a, 0x15, 0x9b, 0xcf, 0x76, 0x10, 0x38, 0x81, 0x3c, 0x98, - 0x1e, 0x0f, 0x00, 0x94, 0x06, 0x94, 0x06, 0x94, 0x86, 0xb3, 0xdd, 0x6d, 0x67, 0x1b, 0x5b, 0xc3, - 0xd4, 0x80, 0xf4, 0xf9, 0xe8, 0x79, 0x80, 0xd1, 0x80, 0xd1, 0xd0, 0xec, 0x54, 0x34, 0x3b, 0x25, - 0x10, 0x3d, 0x56, 0xec, 0x1d, 0x84, 0xd0, 0x72, 0x88, 0x52, 0x7f, 0x6d, 0x8d, 0xc0, 0x67, 0x39, - 0xc4, 0xa3, 0x86, 0x74, 0x00, 0x9e, 0x77, 0x11, 0x3c, 0xc7, 0x52, 0xad, 0xe8, 0x5f, 0xa3, 0x51, - 0x6a, 0xee, 0xf5, 0x18, 0xc0, 0x19, 0xee, 0xf5, 0xf5, 0xd7, 0xb9, 0x7b, 0xe9, 0x09, 0xda, 0xce, - 0x05, 0xa1, 0xef, 0xb8, 0x4a, 0xd0, 0x77, 0x6c, 0xde, 0xde, 0xee, 0x96, 0x9b, 0x93, 0x0d, 0x11, - 0xa8, 0x5e, 0x4e, 0x22, 0x24, 0x20, 0x3a, 0xb9, 0x5e, 0x5f, 0xc1, 0xc3, 0xf5, 0xfa, 0x70, 0x6f, - 0x70, 0x6f, 0xe0, 0x86, 0xe0, 0xe2, 0x76, 0x3d, 0x82, 0xec, 0xf5, 0xd3, 0xe3, 0x85, 0x7a, 0x7d, - 0x70, 0x42, 0xe0, 0x84, 0xa0, 0xd1, 0xc6, 0x35, 0x3a, 0x2d, 0x3e, 0xa8, 0xd7, 0xdf, 0x49, 0x2e, - 0x68, 0x2d, 0x7a, 0xd4, 0x5b, 0x53, 0x13, 0xf0, 0xb8, 0x6d, 0x3f, 0xfa, 0x4e, 0x53, 0x1e, 0x21, - 0xc7, 0x9f, 0x07, 0x48, 0x06, 0x48, 0x06, 0x48, 0x86, 0x4b, 0xdd, 0x6d, 0x97, 0x3a, 0x32, 0x86, - 0xa9, 0xe1, 0xe4, 0x5f, 0xa2, 0xc7, 0x01, 0x2a, 0x03, 0x2a, 0x43, 0xaf, 0xd3, 0xd0, 0xeb, 0x94, - 0xd0, 0x72, 0xac, 0xd6, 0x3b, 0x08, 0x98, 0xa5, 0xc0, 0xa4, 0xf6, 0xca, 0x9a, 0x81, 0xcd, 0xae, - 0x0a, 0x66, 0x76, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0xe1, 0x58, 0x77, 0xde, 0xb1, 0xba, 0x29, - 0xa2, 0x65, 0x17, 0x50, 0x19, 0x50, 0x19, 0x1a, 0x6d, 0x5c, 0xa3, 0x53, 0xc3, 0xc9, 0xee, 0x6e, - 0x82, 0x64, 0xd7, 0x24, 0x42, 0x76, 0x4d, 0xc0, 0x63, 0xc7, 0x0d, 0xc5, 0x93, 0x6f, 0x87, 0xa2, - 0x65, 0x35, 0x1d, 0xbf, 0xd9, 0x77, 0x42, 0x79, 0xb4, 0xbc, 0x60, 0x2c, 0xc0, 0x33, 0xc0, 0x33, - 0xc0, 0x33, 0x5c, 0xed, 0x6e, 0xbb, 0xda, 0x79, 0xc3, 0x98, 0x1a, 0x96, 0xbe, 0x4c, 0x1e, 0x7d, - 0x3e, 0x7a, 0x32, 0x90, 0x35, 0x90, 0x35, 0xd4, 0x3d, 0x6d, 0x75, 0x4f, 0x09, 0x68, 0xcf, 0x6b, - 0xfb, 0x0e, 0xc2, 0x6e, 0x65, 0x18, 0xca, 0xb9, 0xe0, 0x26, 0x30, 0xb9, 0x54, 0x89, 0x86, 0x4a, - 0x69, 0x86, 0x64, 0x49, 0x06, 0x70, 0x77, 0x1e, 0x70, 0xb7, 0x74, 0x09, 0x45, 0xb2, 0xf2, 0x1d, - 0x61, 0xb7, 0x7d, 0xd1, 0x96, 0x59, 0xf5, 0xb1, 0x5b, 0x3d, 0x95, 0xf8, 0xec, 0xa7, 0x58, 0x53, - 0xdf, 0xbc, 0x89, 0xd1, 0xcd, 0x51, 0x24, 0x8a, 0x06, 0x14, 0xa2, 0xe7, 0xf9, 0x0a, 0x61, 0x69, - 0xf4, 0x69, 0x04, 0xa2, 0x08, 0x44, 0x11, 0x88, 0x02, 0x99, 0xee, 0x36, 0x32, 0x1d, 0x9a, 0xc2, - 0xd4, 0x42, 0xcf, 0x4f, 0x9e, 0x8f, 0x68, 0x13, 0xd1, 0x26, 0x74, 0x3a, 0x05, 0x9d, 0x4e, 0x29, - 0xbe, 0x8c, 0x54, 0x7a, 0x07, 0x43, 0x4a, 0x09, 0x08, 0xa9, 0xb9, 0xaa, 0x66, 0x60, 0xf2, 0x5f, - 0xc2, 0xb7, 0x82, 0x7e, 0xaf, 0xd7, 0x79, 0x51, 0x81, 0xcb, 0x53, 0xa3, 0x00, 0x9b, 0x01, 0x9b, - 0x01, 0x9b, 0xe1, 0x62, 0x77, 0xdd, 0xc5, 0x4e, 0x4c, 0x62, 0x8a, 0xf0, 0xf9, 0x2f, 0xe1, 0xdf, - 0x46, 0xcf, 0x04, 0x8a, 0x06, 0x8a, 0x86, 0x8a, 0xa7, 0xa7, 0xe2, 0xa9, 0xa1, 0xe9, 0x89, 0x86, - 0xef, 0x24, 0xa8, 0x96, 0x06, 0x9a, 0x3c, 0x8b, 0x6c, 0x04, 0x63, 0xfb, 0x5e, 0x4f, 0xf8, 0xa1, - 0x23, 0x14, 0x7a, 0x19, 0x4f, 0x8d, 0x01, 0xbe, 0x06, 0xbe, 0x5e, 0x22, 0x52, 0x2f, 0xea, 0xde, - 0x37, 0x19, 0x09, 0x8c, 0x0d, 0x07, 0xac, 0xe9, 0x80, 0x65, 0xc5, 0x95, 0x1a, 0x16, 0xea, 0x85, - 0x87, 0x44, 0x11, 0x26, 0x8b, 0xb2, 0x8e, 0x48, 0x33, 0x89, 0xb6, 0xae, 0x88, 0xb3, 0x89, 0x3a, - 0x9b, 0xc8, 0xf3, 0x89, 0xbe, 0x9a, 0x0a, 0x28, 0xaa, 0x02, 0x59, 0x25, 0x92, 0x81, 0x4a, 0x3d, - 0x36, 0x97, 0x8a, 0x8d, 0x42, 0xcf, 0xcd, 0x65, 0x6a, 0x72, 0x4c, 0x1c, 0x4e, 0x55, 0x17, 0x0e, - 0xb5, 0x61, 0x56, 0x1f, 0x2e, 0x35, 0x62, 0x57, 0x27, 0x76, 0xb5, 0xe2, 0x57, 0x2f, 0x9a, 0x9a, - 0x11, 0xd5, 0x2d, 0xf9, 0xfa, 0xca, 0x3d, 0x42, 0x57, 0xb0, 0x13, 0x8a, 0x3d, 0x43, 0x97, 0xba, - 0x9b, 0xb7, 0x7b, 0xe9, 0xac, 0x1b, 0x61, 0xcd, 0x8a, 0x5f, 0xed, 0x4e, 0x9f, 0xc1, 0xdc, 0x8c, - 0xa6, 0x81, 0xbd, 0x81, 0xbd, 0x81, 0xbd, 0x21, 0x4a, 0x4e, 0xdf, 0x75, 0x3c, 0x97, 0xc3, 0xdc, - 0x9c, 0x69, 0xcc, 0x11, 0xbf, 0xce, 0x17, 0xad, 0x3d, 0xd5, 0x93, 0x59, 0x5e, 0x23, 0xcc, 0x64, - 0x8c, 0x35, 0xc5, 0xc4, 0xc0, 0xca, 0x3c, 0x7a, 0x5e, 0x47, 0xd8, 0x2e, 0xe7, 0xd2, 0x94, 0xb6, - 0x64, 0x69, 0x1c, 0x37, 0xac, 0x55, 0x18, 0x17, 0xa6, 0xc2, 0x30, 0xd5, 0x8d, 0xed, 0x3e, 0xe9, - 0x6b, 0x16, 0xdf, 0x62, 0x25, 0x5f, 0xec, 0xa3, 0xe3, 0x6a, 0xbb, 0x19, 0xa6, 0x40, 0x7b, 0xed, - 0xb4, 0xbf, 0xc7, 0x60, 0xe5, 0xac, 0x5c, 0x3e, 0x39, 0x39, 0x2d, 0x1f, 0x9f, 0xd4, 0xde, 0x56, - 0x2b, 0xa7, 0xa7, 0xd5, 0xb7, 0xc7, 0x6f, 0x99, 0x9f, 0xf4, 0x8b, 0x6f, 0x37, 0x43, 0xc7, 0x73, - 0xdf, 0x3b, 0x4f, 0x4e, 0x74, 0x63, 0xfa, 0x31, 0xdb, 0xfc, 0x83, 0x43, 0xc6, 0xcd, 0xb3, 0xbf, - 0x19, 0xdb, 0xbc, 0xe3, 0xd4, 0x36, 0xef, 0x34, 0x47, 0x9b, 0xb7, 0x97, 0x8d, 0x59, 0x1a, 0x5b, - 0x62, 0xaa, 0xfb, 0xdc, 0xb6, 0xfa, 0x2d, 0x6c, 0x75, 0xb6, 0xd4, 0xfd, 0x18, 0x96, 0x39, 0x2f, - 0x5b, 0x55, 0x7a, 0x5b, 0xa9, 0xd4, 0x4e, 0x2b, 0x95, 0xe3, 0xd3, 0x93, 0xd3, 0xe3, 0xb3, 0x6a, - 0xb5, 0x54, 0x2b, 0x55, 0x61, 0x9a, 0x77, 0xd5, 0x34, 0xb7, 0x44, 0xd3, 0xe9, 0xda, 0x1d, 0x56, - 0xeb, 0x5c, 0x2a, 0x33, 0xcc, 0x35, 0x27, 0x43, 0x65, 0xd8, 0x7c, 0xda, 0x76, 0x94, 0x61, 0xf3, - 0xf3, 0x62, 0xf3, 0x4f, 0xb0, 0x55, 0x5b, 0x62, 0xe0, 0xf7, 0xd2, 0x7d, 0xee, 0x20, 0x63, 0xe7, - 0xa2, 0xc4, 0x5c, 0xbd, 0x64, 0x3c, 0x39, 0x81, 0x2c, 0xc9, 0xa3, 0x1a, 0xff, 0x48, 0xc8, 0xce, - 0x9d, 0x7c, 0x0b, 0x5a, 0x7a, 0x59, 0xf2, 0x1d, 0xc6, 0x3f, 0xaa, 0x65, 0xeb, 0xaa, 0xef, 0x90, - 0xc2, 0xee, 0xd0, 0x0e, 0x9e, 0x75, 0x0e, 0x9c, 0x89, 0x78, 0x16, 0xf9, 0x18, 0xc8, 0xc7, 0x50, - 0xb7, 0x3b, 0xe4, 0x83, 0x1a, 0x42, 0x27, 0x84, 0xa5, 0xf0, 0x97, 0xc0, 0x74, 0x91, 0x3a, 0x25, - 0xa4, 0x63, 0x30, 0xd4, 0xd2, 0xfe, 0xe7, 0xd6, 0x53, 0x35, 0x71, 0xba, 0xc0, 0x91, 0xc2, 0x55, - 0x86, 0xc9, 0x80, 0xc9, 0x90, 0xfc, 0x9a, 0xe4, 0x14, 0xae, 0x91, 0x9e, 0xf6, 0x7d, 0xfb, 0xb1, - 0xc3, 0x90, 0x5b, 0x31, 0x33, 0x1b, 0x52, 0x2c, 0x90, 0x62, 0xb1, 0x31, 0x75, 0xd3, 0x8b, 0x61, - 0x36, 0x9f, 0x62, 0xa1, 0x7f, 0x66, 0xae, 0x79, 0x56, 0x9e, 0x4e, 0x4e, 0x17, 0x32, 0x48, 0x61, - 0x6e, 0x60, 0x6e, 0x90, 0x41, 0x8a, 0x0c, 0x52, 0xd8, 0x1b, 0xd8, 0x9b, 0xdd, 0xb1, 0x37, 0xc8, - 0x20, 0x35, 0x61, 0x84, 0x99, 0x8c, 0xb1, 0xa6, 0x98, 0x18, 0x58, 0x19, 0x64, 0x90, 0x2e, 0x5d, - 0x1a, 0x64, 0x90, 0x2a, 0x7c, 0x31, 0x64, 0x90, 0x2e, 0x7a, 0x12, 0xce, 0xac, 0x91, 0x41, 0xca, - 0x07, 0x2e, 0xf8, 0x67, 0x41, 0x06, 0xe9, 0x12, 0xa9, 0x45, 0x06, 0x69, 0xc6, 0xd4, 0x1d, 0xd9, - 0x44, 0xb9, 0xd9, 0x2a, 0x64, 0x90, 0xc2, 0x34, 0x23, 0x83, 0x74, 0x87, 0x6c, 0x3e, 0x32, 0x48, - 0x91, 0x41, 0x0a, 0x03, 0x9f, 0xb2, 0x81, 0x47, 0x06, 0x69, 0x66, 0x32, 0x48, 0x29, 0x39, 0x4c, - 0x05, 0xde, 0x04, 0x52, 0x85, 0x66, 0x90, 0xea, 0xfb, 0xc3, 0xdb, 0x26, 0xec, 0x37, 0xf1, 0xa2, - 0x78, 0xb2, 0x5c, 0xfc, 0xe0, 0x04, 0x61, 0x3d, 0x0c, 0x15, 0xdb, 0x8b, 0x7d, 0x74, 0xdc, 0x8b, - 0x8e, 0xe8, 0x0e, 0x57, 0xaf, 0xf8, 0xae, 0xe0, 0xf6, 0x3b, 0x1d, 0x85, 0xb4, 0xb6, 0x8f, 0xf6, - 0x37, 0xfa, 0xe0, 0x6b, 0xbf, 0x25, 0x7c, 0xd1, 0xfa, 0xf9, 0x25, 0x1e, 0x9a, 0xef, 0x3e, 0xa7, - 0xf3, 0x12, 0x9f, 0x42, 0xa3, 0xd3, 0x79, 0x19, 0xdf, 0xb1, 0x56, 0xa7, 0xb2, 0x1d, 0x3f, 0x59, - 0x16, 0xd9, 0x44, 0x9f, 0x53, 0xb9, 0xc4, 0x50, 0xa5, 0x44, 0x50, 0xe5, 0xee, 0xa6, 0x65, 0x74, - 0x37, 0x95, 0x30, 0x28, 0x19, 0xef, 0x6e, 0x6a, 0x77, 0x3a, 0x5e, 0x33, 0xba, 0x9c, 0x31, 0xea, - 0xff, 0xab, 0xde, 0xe4, 0xf4, 0xf5, 0x04, 0x6a, 0xbd, 0x4e, 0x8f, 0xd1, 0xeb, 0x14, 0xbd, 0x4e, - 0x5f, 0x7f, 0x1d, 0xe5, 0xf3, 0xfa, 0x19, 0xaa, 0xfa, 0xa4, 0xac, 0xb2, 0x69, 0xb1, 0x1c, 0x2a, - 0x1c, 0x6f, 0x10, 0x69, 0x08, 0x02, 0x8c, 0xd6, 0xa1, 0x15, 0x74, 0x13, 0x76, 0x34, 0x63, 0x4f, - 0x8e, 0x18, 0x93, 0x92, 0x2a, 0xa5, 0x13, 0xde, 0x73, 0x2d, 0x59, 0xa5, 0x7c, 0x56, 0x39, 0xab, - 0x9d, 0x96, 0xcf, 0xaa, 0x1b, 0x5c, 0x3b, 0x43, 0xd1, 0x4a, 0x23, 0xc5, 0x3b, 0x2f, 0x5a, 0x22, - 0x68, 0xfa, 0x4e, 0x4f, 0x09, 0x8c, 0x4f, 0x31, 0xa3, 0x93, 0xc1, 0x70, 0x49, 0x70, 0x49, 0x1b, - 0x73, 0x49, 0xca, 0xd9, 0x51, 0x8a, 0x59, 0x50, 0x3c, 0xba, 0x26, 0xba, 0x3d, 0x4a, 0x87, 0xfb, - 0xd1, 0x30, 0xd9, 0x16, 0xe6, 0xa2, 0x6d, 0xf7, 0x3b, 0xd1, 0x8e, 0xb6, 0xed, 0x4e, 0x20, 0xa0, - 0x97, 0xd0, 0xcb, 0xcd, 0xe9, 0xa5, 0x7a, 0x6e, 0x9e, 0x62, 0x0e, 0x1e, 0x93, 0x62, 0xfe, 0x5f, - 0xdf, 0xe9, 0x0d, 0x17, 0xdc, 0x6a, 0xdb, 0x4e, 0xa7, 0xef, 0x13, 0x2e, 0x81, 0x9a, 0x9f, 0x62, - 0xb7, 0x15, 0xd6, 0xee, 0xd8, 0x7e, 0x37, 0xd8, 0x49, 0x75, 0x8d, 0x5f, 0x1d, 0xca, 0x6a, 0x5a, - 0x59, 0xbb, 0x4e, 0xd0, 0xb5, 0xc3, 0xe6, 0xb3, 0x8e, 0xb6, 0x26, 0x73, 0x40, 0x5d, 0xa1, 0xae, - 0x50, 0x57, 0x7e, 0x75, 0x6d, 0x3b, 0x7e, 0xf7, 0x2f, 0xdb, 0x17, 0xd6, 0x57, 0xe1, 0x07, 0xa4, - 0x28, 0x73, 0x6e, 0x06, 0x40, 0x5a, 0x40, 0x5a, 0x84, 0x9a, 0x2b, 0x9f, 0xf9, 0x6c, 0xfb, 0x2d, - 0x3d, 0xad, 0x9b, 0x9b, 0x01, 0x5a, 0x07, 0xad, 0x83, 0xd6, 0xad, 0x7c, 0xa6, 0xd3, 0x52, 0xd7, - 0x33, 0xa7, 0x05, 0xcd, 0x82, 0x66, 0x41, 0xb3, 0x56, 0x3f, 0x33, 0x3a, 0xfe, 0x26, 0xf9, 0xb1, - 0x64, 0x24, 0xb4, 0x0c, 0x5a, 0x06, 0x2d, 0x5b, 0xf9, 0xcc, 0xae, 0xe8, 0x7a, 0x3e, 0xe1, 0x84, - 0x22, 0x1e, 0x87, 0x1b, 0x78, 0xa1, 0x61, 0x9a, 0x1a, 0xa6, 0x7c, 0x03, 0xaf, 0xfd, 0xd5, 0x76, - 0x3a, 0xa4, 0x06, 0x75, 0x93, 0xe4, 0xaa, 0x64, 0x0a, 0xf4, 0x7d, 0x35, 0x24, 0xe8, 0x6c, 0x02, - 0xcf, 0x26, 0xf8, 0x7c, 0x0a, 0xa0, 0xa6, 0x08, 0x8a, 0x0a, 0x41, 0x77, 0x3d, 0x73, 0x3b, 0x4f, - 0xae, 0x30, 0xd6, 0xa8, 0x28, 0xd6, 0xac, 0x26, 0xd3, 0x68, 0x26, 0xc3, 0x51, 0x2d, 0xc6, 0x54, - 0x66, 0xca, 0x55, 0x62, 0xc4, 0x59, 0x52, 0xa4, 0x51, 0xed, 0xc5, 0x52, 0xdd, 0xc5, 0xbd, 0xb4, - 0xfc, 0x15, 0xbb, 0xac, 0xab, 0x9d, 0x52, 0xc1, 0x52, 0x23, 0x03, 0xdd, 0x94, 0xfb, 0xa1, 0xd3, - 0x71, 0xfe, 0x16, 0x2d, 0xba, 0x3f, 0x4e, 0x66, 0x80, 0x3b, 0x86, 0x3b, 0x86, 0x3b, 0x86, 0x3b, - 0x86, 0x3b, 0x86, 0x3b, 0x86, 0x3b, 0x36, 0x15, 0x72, 0xa7, 0x5d, 0x8d, 0x19, 0x95, 0xc9, 0x1d, - 0x29, 0x51, 0x46, 0x05, 0x7a, 0x85, 0x60, 0x54, 0x56, 0xfc, 0xf0, 0x71, 0xf4, 0xb4, 0x34, 0xa9, - 0xb4, 0xf6, 0x93, 0xd5, 0x52, 0xb9, 0x57, 0x62, 0x42, 0xa6, 0x8d, 0x47, 0x82, 0xb0, 0x06, 0x9d, - 0xa6, 0xa9, 0xdb, 0x74, 0xc2, 0xba, 0xa5, 0xd6, 0x10, 0x60, 0x42, 0x57, 0x2b, 0x8c, 0xf9, 0x64, - 0x87, 0xa1, 0xf0, 0x5d, 0x65, 0x3c, 0x52, 0xfc, 0xef, 0x97, 0x63, 0xeb, 0xac, 0xf1, 0xbd, 0x32, - 0xb8, 0xbf, 0xb7, 0x46, 0x3f, 0x96, 0xa7, 0x7f, 0xfc, 0x47, 0x31, 0x93, 0xa5, 0x36, 0x43, 0xc5, - 0x56, 0xea, 0x69, 0x3f, 0x63, 0x12, 0x54, 0xba, 0x0d, 0xc0, 0x24, 0xc0, 0x24, 0xf0, 0x9b, 0x84, - 0x7c, 0x9c, 0x61, 0xd1, 0x34, 0x0c, 0xda, 0x05, 0xed, 0x82, 0x76, 0xad, 0xd7, 0x2e, 0xaf, 0x27, - 0x7c, 0x6b, 0x88, 0xe0, 0xfb, 0x81, 0xba, 0x92, 0x4d, 0x0f, 0x86, 0xae, 0x41, 0xd7, 0x36, 0xa6, - 0x6b, 0x4e, 0x4b, 0xb8, 0xa1, 0x13, 0xbe, 0xa8, 0x5d, 0x83, 0x98, 0x28, 0x9c, 0x02, 0x95, 0x51, - 0xbc, 0x8c, 0x1f, 0xf5, 0xb3, 0x1d, 0x68, 0x1c, 0x51, 0x9f, 0x5f, 0x7f, 0xfc, 0x74, 0x7d, 0x75, - 0x71, 0x75, 0xf7, 0x70, 0xfd, 0xe9, 0xe2, 0xe6, 0xe1, 0xf6, 0xae, 0x7e, 0xf7, 0xf9, 0x56, 0x75, - 0xff, 0x23, 0x72, 0x26, 0x20, 0xb1, 0x7f, 0x9a, 0x97, 0xa2, 0x5c, 0x5e, 0xd5, 0xcf, 0xef, 0x2e, - 0x7f, 0xbf, 0x28, 0xa6, 0xd1, 0x9e, 0x40, 0xf3, 0xbb, 0xe6, 0xe7, 0x9b, 0xbe, 0xbf, 0xbc, 0xad, - 0xff, 0xfc, 0xe1, 0xe2, 0xbd, 0x69, 0x6e, 0xbc, 0xc1, 0xad, 0xdf, 0x2c, 0x9e, 0xa8, 0x67, 0xfb, - 0x23, 0x53, 0xa4, 0xe8, 0x84, 0xe2, 0x71, 0xf0, 0x3f, 0xf0, 0x3f, 0x1b, 0xf3, 0x3f, 0xea, 0x57, - 0xf0, 0x52, 0xae, 0xde, 0x9d, 0xbe, 0x72, 0x77, 0xf4, 0x7f, 0x13, 0x12, 0x56, 0xf9, 0x0a, 0x5e, - 0x36, 0xa5, 0x0d, 0x2d, 0xd7, 0x23, 0x69, 0x6d, 0x34, 0x10, 0x6a, 0x0b, 0xb5, 0x45, 0x88, 0xb6, - 0xf2, 0x99, 0xbe, 0xe8, 0x7a, 0x5f, 0x95, 0x32, 0x22, 0x93, 0x17, 0x9c, 0x0c, 0x85, 0x9e, 0x41, - 0xcf, 0x36, 0xa6, 0x67, 0x39, 0xa9, 0x6c, 0x0e, 0x84, 0xef, 0xd8, 0x1d, 0x92, 0x3b, 0x9b, 0x0c, - 0x85, 0xa2, 0x41, 0xd1, 0xe0, 0xd0, 0x56, 0xeb, 0x99, 0xd7, 0x0e, 0xf5, 0x6a, 0x99, 0xe7, 0x66, - 0x80, 0xd6, 0x41, 0xeb, 0xa0, 0x75, 0x2b, 0x9f, 0x19, 0x8a, 0x6e, 0x4f, 0xf8, 0x76, 0x48, 0xea, - 0x86, 0x35, 0x3d, 0x18, 0x55, 0x61, 0xd0, 0x35, 0x4d, 0x5d, 0x53, 0xaf, 0x0a, 0xeb, 0xd8, 0x7e, - 0xd7, 0x0a, 0xc4, 0x57, 0xe1, 0x3b, 0x0a, 0x2d, 0x17, 0xe7, 0x36, 0xfe, 0xd5, 0x3c, 0x48, 0x48, - 0x37, 0x24, 0xf2, 0x6c, 0xa2, 0xcf, 0xa6, 0x02, 0x7c, 0xaa, 0xa0, 0xa6, 0x12, 0x8a, 0xaa, 0x41, - 0x77, 0x47, 0x73, 0x3b, 0x4f, 0x3b, 0x14, 0x9b, 0xb3, 0xdf, 0x84, 0x3c, 0x5f, 0xbd, 0x43, 0xb2, - 0xb9, 0x17, 0xb9, 0xfe, 0x74, 0x71, 0x75, 0x7e, 0x7d, 0xf5, 0xcb, 0xe5, 0xaf, 0x0f, 0xf5, 0x0f, - 0xf5, 0x9b, 0x8f, 0x0f, 0xb7, 0x17, 0xbf, 0x5f, 0xdc, 0x5c, 0xde, 0xfd, 0x51, 0xd4, 0xe9, 0x39, - 0x1d, 0x68, 0xdd, 0x89, 0xa6, 0x99, 0x9e, 0x3d, 0x7e, 0xb5, 0xcf, 0x57, 0xbf, 0x5d, 0x5d, 0xff, - 0xfb, 0xaa, 0xb8, 0x89, 0x44, 0x73, 0xa6, 0x57, 0x38, 0xbf, 0xb9, 0xbc, 0xbb, 0x3c, 0xaf, 0x7f, - 0xc8, 0xf3, 0x3b, 0xfc, 0xbb, 0x7e, 0x73, 0x75, 0x79, 0xf5, 0x6b, 0x9e, 0x5f, 0xe1, 0xe3, 0xe5, - 0xd5, 0xf5, 0x4d, 0xae, 0x5f, 0xa0, 0xfe, 0xbf, 0x5a, 0x2f, 0x40, 0x1a, 0xd9, 0xc8, 0x4c, 0x8f, - 0x78, 0x95, 0x92, 0xbc, 0x18, 0xc5, 0xa8, 0x65, 0xed, 0x2c, 0xc3, 0x42, 0x2a, 0xe9, 0x3b, 0x40, - 0x42, 0x40, 0x42, 0x39, 0x44, 0x42, 0xea, 0xfc, 0xf3, 0x1c, 0x0a, 0x2a, 0x65, 0x46, 0xed, 0xc3, - 0x67, 0x5f, 0x04, 0xcf, 0x5e, 0xa7, 0xa5, 0xab, 0xf9, 0x93, 0x89, 0xa0, 0xfc, 0x50, 0xfe, 0xad, - 0xae, 0xcb, 0x55, 0xba, 0xdd, 0xe8, 0xb5, 0x9c, 0x9f, 0xa2, 0x2e, 0xb7, 0x40, 0x0f, 0xb3, 0x50, - 0x97, 0x6b, 0x72, 0x69, 0x75, 0x6f, 0x4d, 0x32, 0xb2, 0xc6, 0x3b, 0xd4, 0x1c, 0xc3, 0xfe, 0xfa, - 0xa4, 0xd3, 0xa7, 0xea, 0x69, 0xc7, 0x5c, 0xaf, 0x15, 0xbe, 0xf4, 0x44, 0x00, 0x07, 0xbc, 0xc2, - 0x01, 0xc7, 0x4b, 0xb4, 0x75, 0x6e, 0xb8, 0x25, 0x9a, 0x4e, 0xd7, 0xee, 0x68, 0x75, 0xc8, 0x28, - 0x11, 0xae, 0xf5, 0x9f, 0xb7, 0x6c, 0xa5, 0x5d, 0xf5, 0xe7, 0x65, 0xf8, 0x73, 0x53, 0xfe, 0xfc, - 0x64, 0x0b, 0x97, 0x76, 0x87, 0xdc, 0xb8, 0xe3, 0x06, 0xa1, 0xad, 0x50, 0x7c, 0x30, 0x67, 0xdd, - 0xc6, 0x13, 0xc0, 0x9d, 0xc3, 0x9d, 0xc3, 0x9d, 0xc3, 0x9d, 0xc3, 0x9d, 0xc3, 0x9d, 0xc3, 0x9d, - 0x6f, 0xce, 0x9d, 0x87, 0xc2, 0xff, 0x6a, 0x77, 0x74, 0xfc, 0x79, 0x3c, 0xc3, 0x6e, 0x38, 0x74, - 0xf8, 0xf1, 0x65, 0x7e, 0x7c, 0x4b, 0xdd, 0x77, 0x10, 0xda, 0xa1, 0x45, 0x14, 0xf2, 0x82, 0x66, - 0xcf, 0xca, 0xcf, 0xee, 0xc8, 0x96, 0x15, 0x5d, 0xdb, 0xf5, 0x02, 0xd1, 0xf4, 0xdc, 0x16, 0x49, - 0xf6, 0xc0, 0xb1, 0xc3, 0x89, 0xa7, 0xb1, 0xb4, 0xe8, 0x7d, 0x99, 0x15, 0xbf, 0xde, 0x25, 0x48, - 0xc7, 0xa4, 0xe7, 0x9a, 0xfd, 0x0d, 0xe1, 0x39, 0xdc, 0x3a, 0xc2, 0x73, 0x84, 0xe7, 0x08, 0xcf, - 0x11, 0x9e, 0x23, 0x3c, 0xdf, 0xa4, 0x1b, 0xb7, 0x42, 0xa7, 0x2b, 0xb4, 0x7c, 0xf9, 0x68, 0x06, - 0x84, 0xe7, 0x08, 0xcf, 0xb7, 0xd0, 0x7d, 0x0f, 0x65, 0x3b, 0x74, 0x9a, 0x7f, 0x06, 0xa9, 0x5f, - 0x28, 0x81, 0xe0, 0x1c, 0xc1, 0x39, 0x82, 0x73, 0x78, 0x75, 0x82, 0x57, 0x27, 0x28, 0xde, 0xc4, - 0xa1, 0x3b, 0x2e, 0x82, 0x73, 0x38, 0x75, 0x04, 0xe7, 0x08, 0xce, 0x11, 0x9c, 0x23, 0x38, 0x47, - 0x70, 0xbe, 0x49, 0x37, 0xae, 0x1b, 0x9c, 0x8f, 0x67, 0x40, 0x70, 0x8e, 0xe0, 0x1c, 0xc1, 0x39, - 0x82, 0x73, 0x04, 0xe7, 0x08, 0xce, 0x11, 0x9c, 0xf3, 0x7b, 0xf5, 0x2d, 0xb8, 0x35, 0x52, 0xbd, - 0xaf, 0x5c, 0x41, 0xf7, 0xea, 0xc8, 0xbb, 0xa9, 0x47, 0xa6, 0xd9, 0x7e, 0x4f, 0xc5, 0xef, 0x4c, - 0x7c, 0xcd, 0x70, 0x14, 0x9a, 0x5b, 0xa2, 0xe1, 0x9e, 0xa6, 0x76, 0xd3, 0x9b, 0x5b, 0xf6, 0x5d, - 0xf9, 0xfe, 0xaa, 0x33, 0x04, 0xc5, 0x99, 0xc2, 0x98, 0xf8, 0xeb, 0xa9, 0xe1, 0x11, 0xb4, 0x46, - 0x9b, 0x69, 0x8d, 0xf6, 0xaf, 0xfa, 0xcd, 0xfb, 0x7f, 0xd7, 0x6f, 0x2e, 0x1e, 0x92, 0xbb, 0x85, - 0xf2, 0xdf, 0x1e, 0xed, 0xf6, 0xe2, 0xea, 0x36, 0xdf, 0x5d, 0xad, 0xce, 0xff, 0x55, 0xbf, 0xbd, - 0xbd, 0xbc, 0xcd, 0xf3, 0x2b, 0x7c, 0xba, 0xfe, 0xf7, 0xc5, 0xcd, 0xc3, 0xed, 0xe7, 0x4f, 0x9f, - 0x3e, 0xfc, 0x91, 0xe7, 0xf7, 0xb8, 0xbc, 0xba, 0xbb, 0xf8, 0xf5, 0xa6, 0x7e, 0x77, 0xf1, 0xfe, - 0xe1, 0xfc, 0xf2, 0xe6, 0xfc, 0xf3, 0xe5, 0x5d, 0x9e, 0xdf, 0xe6, 0x97, 0x7a, 0xae, 0xbb, 0x06, - 0xfe, 0x5c, 0x3f, 0xff, 0xed, 0xd3, 0x87, 0xfa, 0xd5, 0x45, 0xbe, 0xf7, 0xe0, 0xe7, 0x9b, 0xcb, - 0xf3, 0x3c, 0xbf, 0xc1, 0xdd, 0x4d, 0xfd, 0xea, 0xf6, 0xfc, 0xe2, 0xf2, 0xf7, 0x8b, 0x5c, 0x5b, - 0xd9, 0x0f, 0x97, 0x57, 0x17, 0xe7, 0xf5, 0x9b, 0xf7, 0x79, 0x7e, 0x87, 0xdb, 0xbb, 0xeb, 0x9b, - 0xfa, 0xaf, 0xf9, 0xd6, 0x87, 0x9b, 0xcf, 0xf9, 0x76, 0x74, 0x37, 0xb9, 0x76, 0x09, 0xe7, 0x9f, - 0x72, 0xbd, 0xfc, 0xe7, 0xd7, 0x57, 0x77, 0x37, 0xd7, 0x1f, 0x3e, 0x5c, 0xdc, 0x3c, 0x68, 0xea, - 0x72, 0x36, 0x5b, 0x81, 0x1e, 0x22, 0xba, 0xa1, 0x47, 0x37, 0xb7, 0xd7, 0xbf, 0xdc, 0x6d, 0x5b, - 0x74, 0x73, 0xfd, 0xe9, 0xe2, 0xa6, 0x7e, 0x77, 0x79, 0xf5, 0xeb, 0xc3, 0xed, 0x1f, 0xb7, 0x77, - 0x17, 0x1f, 0xf3, 0xac, 0xbc, 0xaf, 0xdf, 0xe5, 0xe1, 0xf3, 0xa7, 0xf7, 0xf5, 0xbb, 0x8b, 0xdd, - 0xed, 0xe7, 0xdb, 0x48, 0x91, 0x5b, 0xec, 0x07, 0xa2, 0x65, 0xf5, 0xbc, 0xbf, 0x84, 0xaf, 0xce, - 0x30, 0x4e, 0x8d, 0x05, 0xcf, 0x08, 0x9e, 0x51, 0xcf, 0xc0, 0xe8, 0xf0, 0x8c, 0xaa, 0x6d, 0x3a, - 0x09, 0xed, 0x39, 0x89, 0x07, 0x9f, 0x04, 0x57, 0xac, 0x73, 0xd0, 0xa9, 0x79, 0x0a, 0xa7, 0x7b, - 0xb0, 0xc9, 0x71, 0xc4, 0x46, 0xf0, 0x47, 0x5a, 0x07, 0x98, 0x5c, 0x4b, 0xa6, 0xdb, 0x4e, 0x93, - 0x65, 0xed, 0xb2, 0xee, 0x90, 0xf6, 0x34, 0x76, 0xbe, 0x58, 0xef, 0x3f, 0x0d, 0xcd, 0x95, 0x68, - 0x49, 0x69, 0xa1, 0xa2, 0x2f, 0x3b, 0x9a, 0xb2, 0x80, 0xef, 0xa6, 0x4e, 0x1d, 0x17, 0xfe, 0x7a, - 0xe6, 0xb7, 0xd1, 0x69, 0xa4, 0xac, 0x03, 0x7c, 0x2f, 0x82, 0xa6, 0xef, 0xf4, 0xe2, 0xb3, 0xd2, - 0x62, 0xbd, 0xd5, 0x0a, 0x0a, 0x41, 0x4f, 0x34, 0x9d, 0xb6, 0xd3, 0x2c, 0x44, 0xbd, 0xb5, 0x83, - 0x82, 0x2f, 0x3a, 0x76, 0x28, 0x5a, 0x85, 0xd0, 0x2b, 0xd8, 0x85, 0xe4, 0x99, 0x6f, 0xb6, 0xe4, - 0xf2, 0xac, 0xd1, 0x4b, 0xee, 0xa4, 0x87, 0x8d, 0x5f, 0x3d, 0x2f, 0x17, 0x67, 0x89, 0xff, 0xeb, - 0x3b, 0xbd, 0xe1, 0xd7, 0xb7, 0xda, 0xb6, 0xd3, 0x51, 0xb9, 0xfb, 0x6d, 0x6e, 0xdf, 0xe7, 0xa7, - 0x52, 0x5c, 0xc9, 0x57, 0x7a, 0x73, 0xd9, 0x1e, 0x6d, 0x47, 0x21, 0x7c, 0x16, 0x85, 0x67, 0xdb, - 0x6f, 0xfd, 0x65, 0xfb, 0xa2, 0xe0, 0xb8, 0x2d, 0xa7, 0x69, 0x87, 0x22, 0x28, 0x84, 0xcf, 0x76, - 0x18, 0xfd, 0x5b, 0xa2, 0x3e, 0xff, 0x4f, 0x50, 0xe8, 0x3d, 0xbf, 0x04, 0x4e, 0xd3, 0xee, 0x14, - 0x92, 0x6f, 0x73, 0xef, 0x3e, 0xdb, 0x41, 0x61, 0xf8, 0x95, 0x44, 0x4b, 0xfd, 0x1b, 0xb5, 0xed, - 0x7e, 0x27, 0xda, 0xda, 0xb6, 0xdd, 0x09, 0x76, 0x25, 0x65, 0x51, 0x59, 0x7d, 0x75, 0xd5, 0x98, - 0x4d, 0x9d, 0xd9, 0xd4, 0x9a, 0x4b, 0xbd, 0x53, 0xe1, 0x82, 0x70, 0x05, 0xc6, 0xbc, 0x39, 0xeb, - 0x3a, 0x41, 0xd7, 0x0e, 0x9b, 0xcf, 0x1c, 0xf6, 0x2c, 0x99, 0x2b, 0x6d, 0x83, 0x56, 0x70, 0xdc, - 0x40, 0xf8, 0x43, 0x9c, 0xe0, 0xb8, 0xa1, 0x37, 0xfc, 0xb7, 0x7b, 0xd7, 0x6e, 0xb7, 0x45, 0x73, - 0xf8, 0xab, 0x85, 0x66, 0xaf, 0xe3, 0x35, 0xa3, 0x24, 0xad, 0x82, 0x13, 0x14, 0xbc, 0x76, 0xc1, - 0x2e, 0xb4, 0x9c, 0x76, 0x5b, 0xf8, 0xc3, 0xb9, 0xc2, 0x97, 0x9e, 0x18, 0x3e, 0xc3, 0x2d, 0xfc, - 0xf5, 0x6c, 0x87, 0xf7, 0xae, 0x13, 0x14, 0x46, 0x59, 0x51, 0x7d, 0x1f, 0x96, 0x11, 0x96, 0x11, - 0x96, 0x31, 0x7f, 0x96, 0x31, 0x95, 0x90, 0xad, 0xb1, 0x2e, 0x64, 0x53, 0xcb, 0x0c, 0xd5, 0xcb, - 0x08, 0x2d, 0xca, 0xdc, 0x1f, 0x4e, 0xcf, 0xfe, 0x5c, 0x2d, 0xbe, 0xcb, 0xd7, 0x69, 0x85, 0x58, - 0x16, 0x83, 0xd0, 0xf3, 0xed, 0xa7, 0xf5, 0x52, 0x38, 0xd5, 0x7c, 0x6f, 0x34, 0x60, 0xcd, 0xba, - 0xcb, 0xc5, 0x80, 0xd2, 0x26, 0x53, 0xc5, 0x44, 0x12, 0xf9, 0x54, 0x55, 0x23, 0x48, 0x36, 0x7a, - 0x64, 0x23, 0x47, 0xe7, 0x4b, 0xf5, 0x68, 0x0f, 0xd9, 0xb8, 0xad, 0xd8, 0x1c, 0xef, 0xa6, 0x22, - 0xf5, 0x11, 0x8f, 0xc3, 0xdd, 0xdc, 0xa0, 0xf0, 0x35, 0x29, 0x86, 0xf4, 0x0b, 0x01, 0x22, 0x6b, - 0x78, 0xa4, 0x24, 0xc1, 0x5a, 0x7e, 0x20, 0x7a, 0xde, 0x43, 0x2c, 0xd4, 0x29, 0x1e, 0xd3, 0x8d, - 0x1c, 0x9c, 0xb2, 0x6a, 0x2b, 0x71, 0x93, 0x54, 0xcd, 0x2e, 0x43, 0xb3, 0xa1, 0xd9, 0x86, 0x34, - 0x5b, 0x45, 0x80, 0x19, 0x14, 0x5b, 0x02, 0xe8, 0xa5, 0x76, 0xda, 0x91, 0x1a, 0x74, 0x96, 0x41, - 0x94, 0xfa, 0x6b, 0x6b, 0x04, 0x3e, 0xf7, 0x1f, 0x27, 0xef, 0xa4, 0x00, 0xa2, 0x67, 0x86, 0x01, - 0x4a, 0x03, 0x4a, 0xaf, 0x12, 0x2c, 0x82, 0xd7, 0x9d, 0x1e, 0x0d, 0x58, 0x0d, 0xe7, 0xab, 0xe9, - 0x7c, 0x95, 0x4f, 0xee, 0x14, 0x23, 0x41, 0xbd, 0x88, 0x90, 0x28, 0xc2, 0x99, 0xe1, 0x6d, 0x71, - 0xb7, 0x33, 0xab, 0xe8, 0xa7, 0xc3, 0xdd, 0xaa, 0xaa, 0x44, 0x32, 0x30, 0x46, 0x2f, 0x9a, 0xd9, - 0xc5, 0xd1, 0x2c, 0x87, 0x1b, 0xc9, 0x37, 0xa2, 0xaa, 0x0b, 0x87, 0xda, 0x30, 0xab, 0x0f, 0x97, - 0x1a, 0xb1, 0xab, 0x13, 0xbb, 0x5a, 0xf1, 0xab, 0x17, 0x4d, 0xcd, 0x88, 0xea, 0x96, 0x7c, 0x7d, - 0xf2, 0x91, 0xc9, 0x9c, 0xe4, 0x74, 0x84, 0xdd, 0xa6, 0x15, 0x19, 0xcc, 0xf9, 0x9b, 0x53, 0x8d, - 0x39, 0x3e, 0xc5, 0xf1, 0xd2, 0x9b, 0x37, 0x47, 0xd3, 0xff, 0x37, 0x09, 0x8f, 0x46, 0xae, 0xf0, - 0x28, 0x52, 0xf8, 0x94, 0x9a, 0x7e, 0x98, 0xb5, 0x9c, 0xc4, 0x48, 0x5e, 0x3f, 0xce, 0x9c, 0x0e, - 0xba, 0x66, 0xfe, 0x76, 0x44, 0x82, 0x1b, 0x3a, 0x11, 0xe9, 0xf4, 0x57, 0x99, 0xf9, 0x9b, 0x12, - 0xb3, 0xa7, 0xbe, 0x5f, 0x2a, 0xe9, 0x0a, 0x24, 0x47, 0xa5, 0xe3, 0xa0, 0xf2, 0xde, 0x15, 0x15, - 0xf8, 0x2d, 0x47, 0xf8, 0x4d, 0xff, 0xec, 0x9d, 0xee, 0x40, 0x74, 0x1c, 0xc7, 0xb4, 0xc3, 0x20, - 0xbb, 0x06, 0x33, 0x06, 0x43, 0xed, 0x88, 0x60, 0x9e, 0xb4, 0x50, 0x64, 0x5a, 0x59, 0x42, 0xbe, - 0x32, 0x4c, 0x06, 0x4c, 0x06, 0x42, 0x3e, 0x84, 0x7c, 0x08, 0xf9, 0x10, 0xf2, 0x21, 0xe4, 0xdb, - 0x9d, 0x90, 0x8f, 0x82, 0x36, 0xcc, 0x44, 0x7c, 0x0a, 0x47, 0xbe, 0x04, 0xfc, 0xc6, 0x7a, 0x0e, - 0xf0, 0x9b, 0x78, 0x51, 0xf4, 0x44, 0xc5, 0x0f, 0x4e, 0x10, 0xd6, 0xc3, 0x50, 0xf1, 0xfc, 0xe0, - 0xa3, 0xe3, 0x5e, 0x74, 0x44, 0x37, 0x3e, 0x55, 0x75, 0xfb, 0x9d, 0x8e, 0x02, 0x0e, 0xfd, 0x68, - 0x7f, 0xa3, 0x0f, 0xbe, 0xf6, 0x5b, 0xc2, 0x17, 0xad, 0x9f, 0x5f, 0xe2, 0xa1, 0xf9, 0x4e, 0x62, - 0x58, 0x2a, 0xff, 0x29, 0x64, 0x34, 0x2c, 0x95, 0xf8, 0x1d, 0x4b, 0x6f, 0x50, 0x38, 0xeb, 0xe7, - 0x5a, 0x6e, 0x72, 0xaa, 0xc3, 0x9e, 0xc2, 0x4a, 0x4a, 0x58, 0x03, 0x39, 0xed, 0x57, 0xd2, 0x76, - 0x25, 0xed, 0x96, 0xd3, 0xe6, 0x65, 0xef, 0x27, 0x29, 0x21, 0x54, 0xc9, 0x28, 0xae, 0x4c, 0xcb, - 0x26, 0xc8, 0xc0, 0xe2, 0x5d, 0x9f, 0xdf, 0xd3, 0xd9, 0xdf, 0xbc, 0x7a, 0xfb, 0x75, 0x6f, 0xad, - 0xf6, 0xb6, 0x0b, 0xde, 0x51, 0xe5, 0xdd, 0x66, 0xdf, 0x68, 0xf2, 0xbd, 0xa7, 0xbe, 0x73, 0x31, - 0xba, 0x08, 0xbe, 0x6d, 0x37, 0xc5, 0x7c, 0xfe, 0xcd, 0xa4, 0xa9, 0xd0, 0xe4, 0x33, 0xaf, 0xde, - 0x76, 0x31, 0x7f, 0xb0, 0x34, 0xe0, 0x59, 0x15, 0xc8, 0x4c, 0x07, 0x28, 0xce, 0x22, 0x90, 0xb9, - 0x2e, 0xe4, 0x90, 0x0e, 0x25, 0xa4, 0x43, 0x84, 0xd7, 0xd0, 0xdf, 0x69, 0x17, 0x15, 0xa5, 0x61, - 0x59, 0xcc, 0x3b, 0x59, 0xd2, 0xe5, 0xaf, 0x33, 0xb7, 0xfa, 0xcb, 0x5e, 0x67, 0x35, 0x89, 0xb3, - 0x36, 0xfa, 0x94, 0x89, 0x2e, 0xd7, 0x6e, 0x8e, 0x6a, 0x5c, 0xa8, 0x1c, 0xf7, 0x29, 0xc7, 0x75, - 0x32, 0x9b, 0x47, 0x33, 0xdc, 0xeb, 0x88, 0x0c, 0xd9, 0xf4, 0x0d, 0xb5, 0x74, 0x8d, 0xac, 0x24, - 0xb2, 0x39, 0xed, 0xad, 0x4c, 0x61, 0x5b, 0x25, 0x1e, 0x3c, 0x88, 0x49, 0x3a, 0x79, 0xad, 0x35, - 0x53, 0x5a, 0xaa, 0x98, 0xbb, 0x36, 0x3d, 0x78, 0x3b, 0x9a, 0x3a, 0x39, 0xed, 0x9d, 0x4c, 0x5a, - 0x93, 0x11, 0x48, 0x33, 0x61, 0x2a, 0xbd, 0x91, 0x53, 0x10, 0xfa, 0x8e, 0xfb, 0x44, 0xe9, 0x18, - 0xff, 0x36, 0xc5, 0x5a, 0x0c, 0xe1, 0xda, 0x8f, 0x9d, 0xa8, 0x0b, 0x8d, 0xa2, 0x6e, 0x8d, 0x07, - 0x4a, 0xf7, 0x8a, 0x49, 0xea, 0xa8, 0x87, 0xe2, 0x00, 0x75, 0x84, 0x3a, 0xa6, 0xab, 0x8e, 0xea, - 0xe5, 0xcd, 0x8a, 0x65, 0xcd, 0x3c, 0xfa, 0xd8, 0xf1, 0xbc, 0xde, 0xa3, 0xdd, 0xfc, 0xd3, 0xea, - 0x7a, 0x2d, 0x42, 0x8d, 0xd4, 0xec, 0x70, 0x75, 0xdd, 0x54, 0xe9, 0x71, 0x00, 0xe5, 0x84, 0x72, - 0xee, 0x96, 0x72, 0x76, 0xc3, 0xbe, 0xba, 0x4a, 0x0e, 0x07, 0x41, 0xa1, 0xa0, 0x50, 0xa9, 0x2a, - 0x54, 0xdf, 0x71, 0xc3, 0x52, 0x8d, 0xa0, 0x4f, 0x35, 0x74, 0x11, 0x9d, 0x1d, 0x8e, 0x2e, 0xa2, - 0xe4, 0x25, 0xab, 0x55, 0xab, 0x27, 0x68, 0x20, 0xaa, 0xe5, 0x71, 0x94, 0xd2, 0x7d, 0x28, 0xe9, - 0x3d, 0xf0, 0x39, 0xf0, 0x39, 0x3b, 0x45, 0x78, 0xec, 0xfc, 0xfd, 0x93, 0xd0, 0xa8, 0xdc, 0x68, - 0x14, 0xed, 0x02, 0x13, 0xca, 0xc5, 0x25, 0x7a, 0x17, 0x96, 0xcc, 0x1f, 0xcf, 0x45, 0x77, 0x9e, - 0x17, 0x33, 0xd6, 0xe0, 0x6d, 0xdd, 0xa1, 0xc4, 0xc5, 0xb7, 0x30, 0xe0, 0x6c, 0xc7, 0x3d, 0xa5, - 0x03, 0x5e, 0xd3, 0x12, 0xdf, 0xc2, 0x77, 0xa1, 0xe8, 0x88, 0xae, 0x08, 0xfd, 0x17, 0xcb, 0x73, - 0xad, 0xe6, 0x73, 0x84, 0x9f, 0x49, 0x67, 0x3b, 0x11, 0x4f, 0x43, 0x38, 0xdc, 0x29, 0xe6, 0xa6, - 0x47, 0xde, 0xe4, 0x9c, 0xfd, 0x68, 0xd1, 0x8f, 0xf2, 0x75, 0x56, 0x4b, 0x93, 0x04, 0x2e, 0x93, - 0x69, 0x1f, 0x16, 0xfd, 0x28, 0x55, 0x3e, 0x45, 0x6b, 0xf5, 0xf1, 0xec, 0x75, 0x5a, 0x56, 0xe8, - 0x74, 0x15, 0x7a, 0xe5, 0x4d, 0x86, 0xe0, 0x64, 0x14, 0x27, 0xa3, 0xe8, 0x90, 0x07, 0x30, 0xb3, - 0x19, 0x30, 0xa3, 0xdc, 0xbe, 0xa3, 0xe5, 0xfd, 0xe5, 0xd2, 0x01, 0x45, 0x34, 0x9a, 0xde, 0xb2, - 0xf9, 0x78, 0x47, 0xca, 0x46, 0x9d, 0x36, 0xaa, 0xbf, 0x34, 0xd5, 0x84, 0xc8, 0x1a, 0xa5, 0x5e, - 0x2a, 0xaa, 0x7c, 0x3f, 0xd4, 0x6b, 0xd9, 0xa6, 0x14, 0x8a, 0xd2, 0x98, 0x5e, 0x3a, 0xe3, 0xcb, - 0xc2, 0xfc, 0x32, 0xd1, 0x99, 0x5c, 0x4c, 0x30, 0x27, 0xb5, 0xa9, 0xc1, 0x0c, 0xb3, 0x30, 0xc4, - 0xa6, 0x96, 0x56, 0xf7, 0xde, 0x29, 0x23, 0x6b, 0x9c, 0x52, 0xd9, 0x54, 0x23, 0x03, 0x65, 0xd7, - 0xfd, 0x1e, 0xdd, 0x55, 0xf7, 0x7b, 0x70, 0xd4, 0x70, 0xd4, 0x70, 0xd4, 0x70, 0xd4, 0x70, 0xd4, - 0x70, 0xd4, 0x70, 0xd4, 0xea, 0x8e, 0x9a, 0x35, 0x50, 0x97, 0x26, 0xb3, 0x69, 0xca, 0xcf, 0x4a, - 0x6e, 0x2f, 0xf1, 0x2f, 0x0a, 0x24, 0xf7, 0x42, 0xc7, 0xc2, 0xcd, 0x91, 0x34, 0x36, 0x56, 0x9a, - 0xbb, 0x8e, 0x0c, 0x4f, 0xd8, 0x61, 0xc6, 0xdb, 0x03, 0xd6, 0xd1, 0xe3, 0xff, 0xf2, 0x3a, 0xad, - 0x3b, 0xa7, 0x8b, 0x0b, 0x04, 0x0a, 0x9b, 0xb8, 0x40, 0x00, 0xc4, 0x27, 0x88, 0x4f, 0xc4, 0x53, - 0x88, 0xa7, 0x10, 0x4f, 0x21, 0x9e, 0x42, 0x3c, 0x85, 0x78, 0x0a, 0xf1, 0x14, 0x88, 0x4f, 0x38, - 0x6a, 0x38, 0x6a, 0x38, 0x6a, 0x38, 0x6a, 0x38, 0x6a, 0x38, 0xea, 0xdd, 0x25, 0x3e, 0x37, 0xc9, - 0xbe, 0xb1, 0xdd, 0xf0, 0x27, 0x4d, 0xbe, 0x6d, 0xe5, 0x25, 0x7f, 0xd2, 0x0b, 0x6e, 0x32, 0xfd, - 0x77, 0xbc, 0xc4, 0x26, 0x12, 0x80, 0xa5, 0xca, 0xba, 0x54, 0xca, 0xb9, 0x24, 0xcd, 0x1c, 0xd2, - 0x7e, 0xb3, 0x9a, 0xf6, 0x2b, 0x0d, 0xbb, 0x08, 0x1d, 0x88, 0x55, 0x3a, 0x0d, 0x93, 0xee, 0x04, - 0xa0, 0xde, 0x17, 0x2f, 0xc3, 0xe2, 0x2b, 0xb1, 0xf7, 0xca, 0xd9, 0xef, 0x65, 0xa8, 0x41, 0xa6, - 0xd4, 0x40, 0x3a, 0xfb, 0xdd, 0x6e, 0x75, 0x1d, 0xd7, 0x1a, 0xca, 0x44, 0x3f, 0x50, 0x3f, 0x09, - 0x9a, 0x19, 0x8d, 0xb2, 0xbe, 0xf4, 0x02, 0x6a, 0x94, 0xf5, 0x45, 0xad, 0xb3, 0xfa, 0x5d, 0xe1, - 0xdb, 0x0a, 0x6d, 0xe9, 0x66, 0x6c, 0x5b, 0x45, 0x61, 0xcc, 0x85, 0xdb, 0xef, 0x0e, 0xbf, 0x24, - 0x72, 0x0b, 0x36, 0x97, 0x5b, 0x70, 0x98, 0xde, 0x32, 0x79, 0xbd, 0x58, 0xae, 0xec, 0xce, 0x96, - 0xa5, 0x5e, 0xb0, 0xe4, 0x0d, 0x34, 0xbd, 0xfe, 0x10, 0xde, 0x07, 0x94, 0xa2, 0xa9, 0x78, 0x24, - 0xca, 0xa6, 0xe0, 0x2c, 0x08, 0x16, 0x53, 0xfd, 0xd6, 0x63, 0xdb, 0xf7, 0x1d, 0xe1, 0x5b, 0xa1, - 0x6f, 0xbb, 0x81, 0x33, 0x54, 0xe9, 0x40, 0xe3, 0x0a, 0xe4, 0x05, 0x93, 0xe1, 0xd8, 0x81, 0x5d, - 0xe0, 0xd9, 0x04, 0x9f, 0x4d, 0x01, 0x38, 0x14, 0x81, 0xc6, 0x17, 0xa6, 0x7f, 0xec, 0x10, 0x9b, - 0xe8, 0x5a, 0x45, 0xe3, 0xe4, 0xe1, 0x2d, 0x4e, 0x1e, 0xf4, 0xe8, 0x71, 0x9c, 0x3c, 0x18, 0x5b, - 0xda, 0xd2, 0xdb, 0x4a, 0xa5, 0x76, 0x5a, 0xa9, 0x1c, 0x9f, 0x9e, 0x9c, 0x1e, 0x9f, 0x55, 0xab, - 0xa5, 0x5a, 0x09, 0x67, 0x10, 0xcc, 0x56, 0x48, 0x39, 0xb0, 0xd1, 0x53, 0x63, 0x23, 0x81, 0x0e, - 0x1f, 0xa2, 0xd7, 0x44, 0xf6, 0xb4, 0x4d, 0x6e, 0x18, 0xc9, 0xef, 0x70, 0x5c, 0xeb, 0xd1, 0xf7, - 0xec, 0x56, 0xd3, 0x0e, 0x42, 0xab, 0xf7, 0x67, 0x18, 0xe8, 0xf4, 0xb8, 0x79, 0x3d, 0x15, 0xa0, - 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xa0, 0x14, 0xd2, 0x39, 0x54, 0xfd, 0x72, - 0xcb, 0x09, 0x9a, 0xb6, 0xdf, 0xd2, 0xf3, 0xc8, 0xc9, 0x24, 0xf0, 0xc5, 0xf0, 0xc5, 0xf0, 0xc5, - 0xf0, 0xc5, 0xf0, 0xc5, 0xf0, 0xc5, 0xf0, 0xc5, 0xaa, 0xbe, 0x58, 0xf8, 0xbe, 0xe7, 0xeb, 0x79, - 0xe2, 0x78, 0x0a, 0xf8, 0x61, 0xf8, 0x61, 0xf8, 0x61, 0xf8, 0x61, 0xf8, 0x61, 0xf8, 0x61, 0xf8, - 0x61, 0x55, 0x3f, 0xdc, 0x6e, 0x06, 0x1c, 0xbe, 0x78, 0x6a, 0x1a, 0xf8, 0x63, 0xf8, 0x63, 0xf8, - 0x63, 0xf8, 0x63, 0xf8, 0x63, 0xf8, 0x63, 0xf8, 0x63, 0x55, 0x7f, 0xdc, 0xed, 0x77, 0x42, 0x87, - 0xe7, 0xec, 0xf8, 0xd5, 0x54, 0xf0, 0xcb, 0xf0, 0xcb, 0xf0, 0xcb, 0xf0, 0xcb, 0xf0, 0xcb, 0xf0, - 0xcb, 0xf0, 0xcb, 0xaa, 0x7e, 0xd9, 0x6b, 0x86, 0x42, 0xd3, 0x1f, 0xc7, 0x53, 0xc0, 0x0f, 0xc3, - 0x0f, 0xc3, 0x0f, 0xc3, 0x0f, 0xc3, 0x0f, 0xc3, 0x0f, 0xc3, 0x0f, 0xab, 0xfa, 0x61, 0xed, 0xa8, - 0x18, 0xb1, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0xc9, - 0x07, 0xf7, 0x5d, 0x26, 0x86, 0x7a, 0x66, 0x22, 0xf8, 0x64, 0xf8, 0x64, 0xf8, 0x64, 0xf8, 0x64, - 0xf8, 0x64, 0xf8, 0x64, 0xf8, 0x64, 0x75, 0x9f, 0xfc, 0xa7, 0xeb, 0xfd, 0xe5, 0x5a, 0x3d, 0xdf, - 0x0b, 0x3d, 0x5d, 0xaf, 0x3c, 0x33, 0x15, 0xfc, 0x32, 0xfc, 0x32, 0xfc, 0x32, 0xfc, 0x32, 0xfc, - 0x32, 0xfc, 0x32, 0xfc, 0xb2, 0x92, 0x5f, 0xee, 0x0c, 0x83, 0xdb, 0x66, 0x47, 0xd8, 0x3e, 0xdd, - 0x21, 0x4f, 0xcd, 0x01, 0x4f, 0x0c, 0x4f, 0xbc, 0x55, 0x9e, 0x38, 0x74, 0xba, 0x22, 0x74, 0x9a, - 0x7f, 0x06, 0xa9, 0xfb, 0xe2, 0xcf, 0xee, 0xc8, 0x8e, 0x15, 0x5d, 0xdb, 0xf5, 0x02, 0xd1, 0xf4, - 0x5c, 0xe5, 0x8a, 0x7e, 0xf8, 0x74, 0xf8, 0x74, 0xf8, 0xf4, 0x2c, 0xfb, 0x74, 0xb4, 0x64, 0x43, - 0x4b, 0xb6, 0xe1, 0x1b, 0x78, 0xfd, 0x90, 0xad, 0x27, 0xdb, 0x82, 0xb9, 0x00, 0xcb, 0x00, 0xcb, - 0x40, 0x90, 0x80, 0x20, 0x01, 0x98, 0x02, 0x98, 0x02, 0x41, 0xa2, 0xec, 0x99, 0xf5, 0xbb, 0xb2, - 0xcd, 0xcc, 0x02, 0x6f, 0x0c, 0x6f, 0x0c, 0x6f, 0x0c, 0x6f, 0x0c, 0x6f, 0x0c, 0x6f, 0x0c, 0x6f, - 0xac, 0xec, 0x8d, 0x75, 0x7b, 0xc1, 0x4c, 0xcd, 0x01, 0x4f, 0x0c, 0x4f, 0x0c, 0x4f, 0x0c, 0x4f, - 0x0c, 0x4f, 0x0c, 0x4f, 0x0c, 0x4f, 0xac, 0xec, 0x89, 0xb9, 0x3a, 0xc1, 0x2c, 0x98, 0x0b, 0x9e, - 0x19, 0x9e, 0x19, 0x9e, 0x19, 0x9e, 0x19, 0x9e, 0x19, 0x9e, 0x19, 0x9e, 0x59, 0xd9, 0x33, 0xeb, - 0xf6, 0x82, 0x99, 0x9a, 0x03, 0x9e, 0x18, 0x9e, 0x18, 0x9e, 0x18, 0x9e, 0x18, 0x9e, 0x18, 0x9e, - 0x18, 0x9e, 0x58, 0xd9, 0x13, 0xeb, 0x47, 0xc6, 0x88, 0x87, 0xe1, 0x85, 0xe1, 0x85, 0xe1, 0x85, - 0xe1, 0x85, 0xe1, 0x85, 0xe1, 0x85, 0x69, 0x5e, 0x98, 0xa7, 0x1f, 0xcc, 0xdc, 0x4c, 0xf0, 0xca, - 0xf0, 0xca, 0xf0, 0xca, 0xf0, 0xca, 0xf0, 0xca, 0xf0, 0xca, 0xf0, 0xca, 0x92, 0x9f, 0x94, 0x94, - 0x29, 0xf5, 0x62, 0x37, 0x45, 0xaf, 0x3e, 0x5f, 0xdc, 0xe6, 0xf5, 0x84, 0x6f, 0x0f, 0xf7, 0xd2, - 0xee, 0xa8, 0xba, 0x76, 0xed, 0x62, 0x36, 0x62, 0x11, 0x9b, 0xdc, 0x92, 0x37, 0x24, 0x97, 0xbc, - 0xee, 0xba, 0x5e, 0x18, 0xad, 0x80, 0x92, 0xe6, 0x16, 0x83, 0xe6, 0xb3, 0xe8, 0xda, 0x3d, 0x3b, - 0x7c, 0x1e, 0x7e, 0xfb, 0x23, 0xaf, 0x27, 0xdc, 0x66, 0x04, 0x5a, 0x2c, 0x67, 0xe8, 0x4e, 0xda, - 0x76, 0x53, 0x04, 0x47, 0x8b, 0x7e, 0x3c, 0x0a, 0x42, 0x3b, 0x14, 0x47, 0xb1, 0xdb, 0x51, 0x01, - 0x54, 0xc5, 0x20, 0xf4, 0xfb, 0xcd, 0xd0, 0x8d, 0x1d, 0xd7, 0x75, 0xf2, 0xc8, 0xcb, 0xe4, 0x31, - 0x0f, 0x8b, 0x7e, 0x7c, 0xb8, 0x1d, 0x3e, 0xf1, 0xe1, 0x7c, 0xfc, 0xc4, 0x3d, 0x9e, 0x55, 0x96, - 0x10, 0xea, 0x62, 0x4b, 0x04, 0x4d, 0xdf, 0xe9, 0x29, 0x2d, 0x6f, 0xe2, 0x99, 0xa7, 0x07, 0x4b, - 0xee, 0xa6, 0x9a, 0xed, 0x54, 0x86, 0x99, 0x14, 0x78, 0x49, 0x86, 0x95, 0x54, 0x38, 0xa9, 0x0d, - 0x23, 0xb5, 0xe1, 0xa3, 0x0e, 0x6c, 0xe4, 0x35, 0xa8, 0xca, 0xf0, 0x30, 0xd9, 0xad, 0x20, 0xf4, - 0x1d, 0xf7, 0x49, 0x65, 0xbb, 0x62, 0xd9, 0x2b, 0xbd, 0x4d, 0x51, 0xbf, 0x84, 0x6b, 0x3f, 0x76, - 0x44, 0x4b, 0x5d, 0xb7, 0xc6, 0x03, 0x25, 0xd7, 0xf1, 0xbd, 0x68, 0xdb, 0xfd, 0x4e, 0xb4, 0x9f, - 0x43, 0x71, 0x80, 0x3a, 0x42, 0x1d, 0xd3, 0x55, 0xc7, 0x47, 0xcf, 0xeb, 0x08, 0xdb, 0xa5, 0xe8, - 0x63, 0x29, 0x45, 0x7d, 0x74, 0xda, 0x8e, 0xdb, 0x12, 0xdf, 0xd4, 0xf5, 0x71, 0x3c, 0x10, 0x8a, - 0x05, 0xc5, 0x4a, 0x55, 0xb1, 0xfa, 0x8e, 0x1b, 0x9e, 0x94, 0x09, 0x7a, 0x75, 0xaa, 0x30, 0x84, - 0xc6, 0x75, 0x10, 0x48, 0x1d, 0x1d, 0x6e, 0x43, 0x33, 0xf0, 0xd6, 0xe5, 0x32, 0x38, 0xa2, 0x6a, - 0x02, 0x77, 0xa1, 0xc5, 0x59, 0x70, 0x2d, 0x59, 0xa5, 0x7c, 0x56, 0x39, 0xab, 0x9d, 0x96, 0xcf, - 0xaa, 0x1b, 0x5c, 0x3b, 0x43, 0x0c, 0x41, 0x23, 0xe7, 0x0c, 0x81, 0x7e, 0xfb, 0x9b, 0xcd, 0x31, - 0x05, 0x87, 0x20, 0x52, 0xf4, 0x89, 0x14, 0x16, 0x60, 0x34, 0x6a, 0x98, 0xf8, 0x1c, 0xfb, 0x01, - 0x45, 0x70, 0x34, 0x3d, 0x18, 0x00, 0x09, 0x00, 0x29, 0x55, 0x80, 0x44, 0x6b, 0x87, 0x48, 0x38, - 0x19, 0xd2, 0x6d, 0x7f, 0x08, 0x94, 0x05, 0x94, 0xb5, 0x72, 0xc9, 0xf8, 0x4e, 0x82, 0x80, 0xb7, - 0x80, 0xb7, 0x80, 0xb7, 0x32, 0x8d, 0xb7, 0xbc, 0x27, 0xa7, 0x69, 0x77, 0x08, 0x58, 0x2b, 0x1e, - 0x08, 0x9c, 0x05, 0x9c, 0xb5, 0x65, 0x0c, 0x2f, 0x4c, 0x3e, 0x4c, 0xfe, 0x56, 0x9b, 0x7c, 0xaf, - 0xf7, 0x68, 0x37, 0xff, 0xb4, 0xba, 0x5e, 0x8b, 0x12, 0x64, 0xcf, 0x0c, 0x57, 0x3f, 0x17, 0x8c, - 0x16, 0x15, 0x6e, 0x03, 0x6e, 0x63, 0xdb, 0xdc, 0x06, 0x8b, 0x72, 0x76, 0xc3, 0xbe, 0xba, 0x4a, - 0x0e, 0x07, 0x41, 0xa1, 0xa0, 0x50, 0xa9, 0x2a, 0x54, 0xdf, 0x71, 0xc3, 0x52, 0x8d, 0xa0, 0x4f, - 0x35, 0x50, 0x55, 0xa0, 0xaa, 0x98, 0x96, 0xac, 0x56, 0xad, 0x9e, 0xec, 0x2e, 0x37, 0xc5, 0xe2, - 0x71, 0xe2, 0x34, 0x51, 0x45, 0x97, 0x13, 0x8d, 0x82, 0xcf, 0x81, 0xcf, 0x49, 0xd5, 0xe7, 0xe4, - 0x23, 0xd9, 0x72, 0x18, 0x7f, 0x5a, 0x41, 0x68, 0x87, 0xfd, 0x40, 0x5d, 0xb1, 0xa6, 0x07, 0x43, - 0xbf, 0xa0, 0x5f, 0xa9, 0xea, 0x97, 0x70, 0xfb, 0xdd, 0x98, 0x3b, 0xa1, 0x28, 0x59, 0x45, 0x61, - 0xcc, 0x85, 0xdb, 0xef, 0x0e, 0xbf, 0xe4, 0x00, 0x9c, 0x1c, 0x38, 0xb9, 0x9d, 0xe7, 0xe4, 0x42, - 0x15, 0x95, 0x9d, 0xa4, 0x1c, 0x0c, 0x47, 0xc1, 0x49, 0xc0, 0x49, 0xa4, 0xea, 0x24, 0x9c, 0x96, - 0x70, 0x43, 0x27, 0x7c, 0xf1, 0x45, 0x9b, 0xe2, 0x24, 0x14, 0xc2, 0xb5, 0xe2, 0x65, 0xfc, 0xa8, - 0x9f, 0xed, 0x40, 0xe8, 0xdc, 0x8a, 0x1f, 0x17, 0xb8, 0x59, 0x91, 0xc2, 0x70, 0x2f, 0xf8, 0x9e, - 0xde, 0x27, 0xd6, 0x6c, 0x98, 0x6a, 0xe1, 0xa1, 0x6e, 0xc1, 0xa1, 0xc4, 0x96, 0xea, 0xd5, 0x17, - 0xae, 0x5e, 0xff, 0xe5, 0x6b, 0xb5, 0x62, 0x9d, 0x8a, 0x41, 0xff, 0x71, 0xf2, 0x46, 0x6b, 0x97, - 0x69, 0x12, 0x4e, 0xcc, 0x0c, 0x5b, 0xb3, 0x0f, 0x63, 0xf9, 0x5d, 0xf3, 0x31, 0x59, 0xc3, 0xa9, - 0x62, 0x30, 0x95, 0x0d, 0xa5, 0xaa, 0x81, 0x24, 0x1b, 0x46, 0xb2, 0x41, 0xa4, 0x18, 0x42, 0x3d, - 0x3d, 0x7a, 0xef, 0xf8, 0x92, 0x0a, 0x34, 0x25, 0x15, 0xea, 0x3e, 0x79, 0x66, 0xb4, 0x9a, 0x6f, - 0x2e, 0xc1, 0x37, 0xc3, 0x37, 0xab, 0x88, 0x6a, 0x32, 0xa0, 0x39, 0x96, 0x08, 0xa2, 0x87, 0x8c, - 0xc7, 0xd3, 0x7a, 0xf6, 0x94, 0xd0, 0xb3, 0x27, 0x05, 0xf1, 0x66, 0x13, 0x73, 0x0e, 0x71, 0x27, - 0xf2, 0xdf, 0x8a, 0xfb, 0xad, 0xaa, 0x06, 0xc9, 0x40, 0x4a, 0x37, 0x81, 0xa5, 0x12, 0xa3, 0xde, - 0x5d, 0x40, 0x33, 0xf6, 0x62, 0x53, 0x18, 0x0e, 0xc5, 0x61, 0x53, 0x20, 0x2e, 0x45, 0x62, 0x57, - 0x28, 0x76, 0xc5, 0xe2, 0x54, 0x30, 0x9a, 0xa2, 0x11, 0x15, 0x8e, 0x1e, 0x1b, 0x2e, 0x47, 0x43, - 0xaa, 0x84, 0xfd, 0x52, 0x27, 0xf3, 0x36, 0xa5, 0x06, 0x40, 0x94, 0x93, 0x50, 0xd5, 0xee, 0x0a, - 0x2b, 0xf8, 0x57, 0x95, 0x6e, 0x0b, 0xf3, 0x06, 0x93, 0xd4, 0x7d, 0x01, 0xe6, 0x0a, 0xe6, 0x0a, - 0xe6, 0x8a, 0x98, 0x24, 0xb6, 0xd4, 0x5e, 0x95, 0x32, 0x6c, 0xaf, 0xd4, 0x7a, 0x4f, 0xac, 0xe0, - 0xd5, 0xe4, 0x3b, 0x51, 0xac, 0xb2, 0x55, 0xc7, 0x30, 0x54, 0x30, 0x54, 0x30, 0x54, 0x2a, 0xd2, - 0xa2, 0xdc, 0x8d, 0x63, 0x99, 0xee, 0x9c, 0x6a, 0x4c, 0xa1, 0xd7, 0x99, 0x74, 0xfc, 0x9f, 0x9e, - 0xb8, 0x16, 0xb8, 0x3a, 0x95, 0x32, 0x19, 0x95, 0xb9, 0xe9, 0x98, 0x3a, 0x97, 0x26, 0xf3, 0x31, - 0xf6, 0xd4, 0xd4, 0x14, 0xe7, 0xd9, 0x2d, 0x60, 0xe8, 0x68, 0x6a, 0x7a, 0x0b, 0x74, 0xbb, 0x87, - 0xa4, 0xb2, 0x17, 0x7b, 0x9b, 0x19, 0xdd, 0x48, 0x0b, 0xae, 0x18, 0x65, 0x8c, 0x94, 0xd3, 0x3f, - 0xf4, 0x8c, 0x90, 0x91, 0x74, 0x90, 0x25, 0x7e, 0x93, 0x90, 0xf7, 0xb0, 0xd0, 0x61, 0x9a, 0x26, - 0xf9, 0x1a, 0xaa, 0xa4, 0x3b, 0xad, 0xaf, 0x6a, 0x32, 0x5e, 0xe3, 0xb8, 0x73, 0xfa, 0xf4, 0x6f, - 0xe6, 0x6f, 0x47, 0x24, 0x3e, 0xbc, 0xa0, 0x75, 0x34, 0x3a, 0xfd, 0x65, 0x66, 0xfe, 0xf6, 0x10, - 0xc3, 0xd4, 0x0c, 0x5c, 0x17, 0x40, 0x8b, 0x1b, 0xb4, 0xe2, 0x05, 0x5c, 0x0c, 0xb0, 0x09, 0xec, - 0x8e, 0x8b, 0x01, 0x14, 0x76, 0xbb, 0x23, 0xec, 0xb6, 0x5a, 0x2e, 0xcc, 0x1c, 0x59, 0x40, 0x40, - 0xe1, 0xc5, 0x4f, 0xb1, 0xc9, 0x7b, 0xf3, 0x26, 0x36, 0x57, 0x47, 0x23, 0xfd, 0xca, 0x80, 0x9d, - 0x18, 0x25, 0x92, 0x90, 0xed, 0x84, 0x6c, 0x1e, 0xca, 0xc2, 0xa5, 0xa4, 0xda, 0x89, 0x32, 0xec, - 0x04, 0xec, 0xc4, 0x2a, 0xbe, 0x8a, 0x7a, 0x18, 0x69, 0xb7, 0xba, 0x8e, 0xab, 0x5a, 0x0e, 0xb0, - 0x54, 0x64, 0x66, 0x66, 0x03, 0x6d, 0x06, 0xda, 0x0c, 0xb4, 0x99, 0x82, 0xb4, 0xd0, 0xea, 0x1b, - 0x96, 0xfa, 0x9a, 0x8a, 0xc6, 0x1c, 0x6a, 0xf5, 0x0f, 0x5c, 0x4b, 0x49, 0x0e, 0x90, 0x79, 0xd8, - 0x3a, 0xa3, 0x01, 0x33, 0x7f, 0xe0, 0xcc, 0x14, 0x40, 0x33, 0xf0, 0x6c, 0xec, 0xcb, 0x4e, 0xaf, - 0xc7, 0xc0, 0x72, 0x63, 0xb9, 0xf9, 0x7c, 0x42, 0x23, 0x95, 0x03, 0xcf, 0xe4, 0x12, 0x1d, 0x6d, - 0xfc, 0x45, 0xb8, 0x8e, 0x87, 0x21, 0x4c, 0x01, 0xf6, 0x02, 0xf6, 0xda, 0x0c, 0xf6, 0xa2, 0x86, - 0x3d, 0x13, 0xd5, 0xb3, 0x7d, 0xdf, 0x11, 0xbe, 0x15, 0xfa, 0xb6, 0x1b, 0x38, 0x43, 0x13, 0x18, - 0xe8, 0x6f, 0x78, 0xa2, 0x8d, 0x0b, 0x26, 0x3f, 0xcc, 0xc4, 0xad, 0x7a, 0xba, 0x8a, 0xca, 0xa9, - 0xb0, 0xec, 0x8a, 0xcb, 0xad, 0xc0, 0xc6, 0x14, 0xd9, 0x98, 0x42, 0x9b, 0x50, 0x6c, 0x3d, 0x05, - 0x67, 0x40, 0x3d, 0x3c, 0xc1, 0xd6, 0x32, 0x97, 0x49, 0xba, 0x38, 0x75, 0x99, 0x7a, 0xbe, 0x65, - 0x98, 0x8a, 0x27, 0x7d, 0x81, 0x07, 0x32, 0xce, 0x7c, 0x31, 0xce, 0x74, 0x06, 0x66, 0xbb, 0x36, - 0x37, 0x2d, 0x73, 0x7a, 0x43, 0x32, 0xaf, 0x81, 0xa3, 0x75, 0x26, 0x0d, 0x99, 0xdd, 0x2a, 0xc6, - 0xb4, 0x87, 0xb4, 0xb6, 0x8a, 0xff, 0xa2, 0xd7, 0x54, 0x77, 0x6f, 0x2f, 0x1b, 0xb3, 0x34, 0x36, - 0x6a, 0xa5, 0xb5, 0x79, 0x1c, 0x5e, 0xb3, 0x95, 0x0a, 0xaf, 0x63, 0x2e, 0x02, 0x66, 0x8e, 0x84, - 0x79, 0x84, 0xac, 0xb1, 0x91, 0x9b, 0xa9, 0x1d, 0xd7, 0x7a, 0xf4, 0x3d, 0xbb, 0x35, 0xb9, 0xc8, - 0x9f, 0x0d, 0xac, 0xcf, 0x4f, 0x0d, 0xa8, 0x0e, 0xa8, 0x0e, 0xa8, 0x0e, 0xa8, 0x0e, 0xa8, 0x0e, - 0xa8, 0x0e, 0xa8, 0x0e, 0xa8, 0x9e, 0x4d, 0xa8, 0xbe, 0x29, 0x1c, 0xd6, 0x72, 0x82, 0xa6, 0xed, - 0xb7, 0x78, 0x11, 0x58, 0x32, 0x29, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, - 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0x17, 0xb0, 0xd7, 0x34, 0xf6, 0x12, 0xbe, 0xef, 0xf9, 0xbc, 0xc8, - 0x2b, 0x9e, 0x12, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, - 0x0b, 0xb8, 0x0b, 0xb8, 0x6b, 0x1a, 0x77, 0xb5, 0x9b, 0x81, 0x09, 0xec, 0x35, 0x35, 0x2d, 0xf0, - 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, 0x17, 0xf0, - 0xd7, 0x34, 0xfe, 0xea, 0xf6, 0x3b, 0xa1, 0x63, 0x26, 0xf7, 0xeb, 0xd5, 0xd4, 0xc0, 0x61, 0xc0, - 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0xd3, - 0x38, 0xcc, 0x6b, 0x86, 0x82, 0x19, 0x7f, 0xc5, 0x53, 0x02, 0x77, 0x01, 0x77, 0x01, 0x77, 0x01, - 0x77, 0x01, 0x77, 0x01, 0x77, 0x01, 0x77, 0x01, 0x77, 0x01, 0x77, 0x4d, 0xe3, 0x2e, 0x76, 0xd6, - 0x0b, 0x5c, 0x17, 0x30, 0x17, 0x30, 0x17, 0x30, 0x17, 0x30, 0x17, 0x30, 0x17, 0x30, 0x17, 0x30, - 0x17, 0x30, 0xd7, 0x1c, 0xe6, 0xea, 0xbb, 0x86, 0x4e, 0x1c, 0x67, 0x26, 0x06, 0x06, 0x03, 0x06, - 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x9b, 0xc5, - 0x60, 0x7f, 0xba, 0xde, 0x5f, 0xae, 0xd5, 0xf3, 0xbd, 0xd0, 0xe3, 0x46, 0x61, 0x33, 0x53, 0x03, - 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, 0x87, 0x01, - 0x87, 0x25, 0xdb, 0xd2, 0xb1, 0x83, 0xd0, 0x6a, 0x76, 0x84, 0xed, 0xf3, 0x01, 0xb0, 0xa9, 0x39, - 0x81, 0xbc, 0x80, 0xbc, 0x80, 0xbc, 0x32, 0x84, 0xbc, 0x42, 0xa7, 0x2b, 0x42, 0xa7, 0xf9, 0x67, - 0x90, 0x39, 0xec, 0xf5, 0xd9, 0x1d, 0xf9, 0x85, 0xa2, 0x6b, 0xbb, 0x5e, 0x20, 0x9a, 0x9e, 0xab, - 0xdd, 0x31, 0x10, 0x98, 0x0e, 0x98, 0x0e, 0x98, 0x0e, 0x98, 0x6e, 0x73, 0x98, 0x0e, 0x57, 0x2e, - 0x70, 0xc1, 0x04, 0x5c, 0xb9, 0xc0, 0x09, 0xfb, 0xbd, 0x7e, 0x68, 0xec, 0xce, 0x85, 0x05, 0x73, - 0x23, 0x0c, 0x40, 0x18, 0x80, 0x30, 0x20, 0x43, 0x61, 0x00, 0x08, 0x58, 0x80, 0x75, 0x80, 0x75, - 0x80, 0x75, 0x80, 0x75, 0x8e, 0xe7, 0xeb, 0x22, 0x31, 0xfe, 0x5b, 0x17, 0x66, 0x66, 0x05, 0xfa, - 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, 0x02, 0xfa, - 0x9a, 0x41, 0x5f, 0xdc, 0xbd, 0x7f, 0xa7, 0xe6, 0x04, 0xf2, 0x02, 0xf2, 0x02, 0xf2, 0x02, 0xf2, - 0x02, 0xf2, 0x02, 0xf2, 0x02, 0xf2, 0x02, 0xf2, 0x02, 0xf2, 0x9a, 0x41, 0x5e, 0xa6, 0x3a, 0xff, - 0x2e, 0x98, 0x1b, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, 0x0c, 0x48, - 0x0c, 0x48, 0x0c, 0x48, 0x6c, 0x06, 0x89, 0x71, 0xf7, 0xfe, 0x9d, 0x9a, 0x13, 0xc8, 0x0b, 0xc8, - 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x6b, 0x06, - 0x79, 0xf1, 0x33, 0x5f, 0xe0, 0xbb, 0x80, 0xba, 0x80, 0xba, 0x80, 0xba, 0x80, 0xba, 0x80, 0xba, - 0x80, 0xba, 0x80, 0xba, 0x80, 0xba, 0xe6, 0x51, 0x97, 0x99, 0xfe, 0xbf, 0x73, 0x33, 0x03, 0x85, - 0x01, 0x85, 0x01, 0x85, 0x01, 0x85, 0x01, 0x85, 0x01, 0x85, 0x01, 0x85, 0x01, 0x85, 0x6d, 0x1b, - 0x0a, 0xdb, 0x4b, 0x51, 0xe6, 0xf5, 0x9b, 0xa1, 0x68, 0xa2, 0xbc, 0xf9, 0xe6, 0x27, 0x5e, 0x4f, - 0xf8, 0xf6, 0x50, 0xb6, 0xec, 0x8e, 0x2e, 0xd4, 0x63, 0x6f, 0x76, 0xc2, 0xd4, 0xe4, 0x44, 0xc3, - 0x40, 0x61, 0xb9, 0xd3, 0xd2, 0xa8, 0x06, 0x51, 0xa3, 0xea, 0xae, 0xeb, 0x85, 0xd1, 0x8a, 0x6a, - 0x39, 0x8e, 0x62, 0xd0, 0x7c, 0x16, 0x5d, 0xbb, 0x67, 0x87, 0xcf, 0xc3, 0xb7, 0x3f, 0xf2, 0x7a, - 0xc2, 0x6d, 0x46, 0x31, 0x87, 0xe5, 0x0c, 0xd1, 0x56, 0xdb, 0x6e, 0x8a, 0xe0, 0x68, 0xd1, 0x8f, - 0x47, 0x41, 0xff, 0x71, 0xea, 0xf7, 0xd3, 0x7f, 0x3b, 0x0a, 0x42, 0x3b, 0x14, 0x47, 0x31, 0x60, - 0xd3, 0x09, 0xa5, 0x8a, 0x41, 0xe8, 0xf7, 0x9b, 0xa1, 0x1b, 0x43, 0xc0, 0xeb, 0xe4, 0xdb, 0x5d, - 0x26, 0x4f, 0x7e, 0x58, 0xf4, 0xe3, 0xc3, 0xed, 0xf4, 0x97, 0x9b, 0xf9, 0xdb, 0xc3, 0xed, 0xf0, - 0xcb, 0x3d, 0x9c, 0x8f, 0xbf, 0xdc, 0x5e, 0x3a, 0x7b, 0x4d, 0x50, 0xc6, 0x62, 0x4b, 0x04, 0x4d, - 0xdf, 0xe9, 0x69, 0x6d, 0x72, 0x02, 0x9f, 0xa7, 0x27, 0x23, 0xca, 0x9c, 0x1e, 0xa0, 0xd0, 0x8e, - 0x65, 0x39, 0x62, 0x58, 0xb6, 0xd8, 0x95, 0x2b, 0x66, 0x65, 0x8f, 0x55, 0xd9, 0x63, 0x54, 0xce, - 0xd8, 0x34, 0x5d, 0xd4, 0xa1, 0x1d, 0x83, 0x26, 0xd2, 0x12, 0x84, 0xbe, 0xe3, 0x3e, 0xe9, 0x88, - 0x4b, 0xac, 0x3b, 0xa5, 0xb7, 0x19, 0xb6, 0x37, 0xc2, 0xb5, 0x1f, 0x3b, 0xa2, 0xa5, 0x6f, 0x6b, - 0xc6, 0x13, 0x11, 0xf7, 0xed, 0xbd, 0x68, 0xdb, 0xfd, 0x4e, 0x24, 0x6f, 0x43, 0xf1, 0x85, 0xb9, - 0x82, 0xb9, 0x82, 0xb9, 0x52, 0x91, 0x96, 0x47, 0xcf, 0xeb, 0x08, 0xdb, 0xe5, 0xb0, 0x57, 0xa5, - 0x0c, 0xdb, 0x2b, 0xa7, 0xed, 0xb8, 0x2d, 0xf1, 0x4d, 0xdf, 0x5e, 0x8d, 0x27, 0x82, 0xa1, 0x81, - 0xa1, 0x81, 0xa1, 0x51, 0x90, 0x96, 0xbe, 0xe3, 0x86, 0x27, 0x65, 0x06, 0x3b, 0x73, 0xaa, 0x31, - 0x05, 0x0f, 0x01, 0xcf, 0x70, 0x52, 0xc1, 0x49, 0xb8, 0x33, 0xb3, 0xb7, 0xdc, 0x04, 0xbb, 0x09, - 0x6a, 0x96, 0x81, 0x50, 0x67, 0x25, 0xd2, 0x4d, 0x6d, 0x41, 0xa5, 0x7c, 0x56, 0x39, 0xab, 0x9d, - 0x96, 0xcf, 0xaa, 0x19, 0xde, 0x8b, 0x0d, 0xd1, 0xd2, 0x8d, 0x1d, 0xa7, 0xa5, 0xf9, 0x7b, 0x72, - 0x83, 0x9e, 0x96, 0x58, 0x76, 0x9c, 0x06, 0x60, 0xb9, 0x99, 0x97, 0x7b, 0x2f, 0x1d, 0xf3, 0x47, - 0x8a, 0x9b, 0x98, 0xa2, 0x26, 0x9d, 0x98, 0x69, 0x8a, 0xe3, 0x39, 0x46, 0xdc, 0x85, 0xb8, 0x0b, - 0x71, 0x17, 0xe2, 0x2e, 0xc4, 0x5d, 0x88, 0xbb, 0x10, 0x77, 0xe5, 0x29, 0xee, 0x4a, 0x05, 0xae, - 0x8c, 0xee, 0xa4, 0x7c, 0x8e, 0xad, 0x8d, 0x26, 0x68, 0x99, 0x9e, 0x0c, 0xb0, 0x03, 0xb0, 0x03, - 0xb0, 0x43, 0x41, 0x5a, 0x78, 0x6e, 0xa0, 0x64, 0x48, 0xbe, 0xe6, 0xbe, 0x71, 0x12, 0x58, 0x06, - 0x58, 0x26, 0x57, 0x58, 0xc6, 0x5c, 0xf2, 0x35, 0x50, 0x0d, 0xd8, 0xe4, 0x3c, 0xf2, 0x6d, 0xa0, - 0x37, 0xb1, 0xdc, 0x60, 0x93, 0x35, 0xcd, 0x1f, 0x29, 0x3c, 0xf3, 0x9e, 0x9c, 0xa6, 0xdd, 0x61, - 0x08, 0xcd, 0xe2, 0x89, 0x10, 0x96, 0x21, 0x2c, 0x43, 0x58, 0xa6, 0x20, 0x2d, 0x9b, 0x4f, 0xf7, - 0x03, 0x62, 0x82, 0x0b, 0x87, 0x0b, 0xc7, 0x72, 0x03, 0x31, 0xc9, 0xbc, 0x61, 0x5c, 0xce, 0xa6, - 0x09, 0x97, 0xa2, 0x59, 0x80, 0x95, 0x80, 0x95, 0x80, 0x95, 0x14, 0xa4, 0x65, 0xe3, 0x95, 0x5c, - 0x80, 0x4a, 0xf0, 0xdd, 0xf0, 0xdd, 0xb9, 0xf5, 0xdd, 0xc3, 0xe5, 0xb7, 0x82, 0xd0, 0x0e, 0xfb, - 0x81, 0xbe, 0x0b, 0x9f, 0x9e, 0x0c, 0x9e, 0x1c, 0x9e, 0x1c, 0x9e, 0x5c, 0x41, 0x5a, 0x84, 0xdb, - 0xef, 0xc6, 0xa6, 0x90, 0xc3, 0x9d, 0x57, 0x34, 0xe6, 0xb8, 0x70, 0xfb, 0xdd, 0xe1, 0x4b, 0x0d, - 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xb0, 0xdc, 0x40, 0x60, 0x26, 0x9e, 0xa3, 0x28, 0x04, 0xba, - 0x3d, 0x92, 0x0c, 0xf6, 0x46, 0x22, 0xc8, 0x8d, 0xb1, 0x56, 0x48, 0x6a, 0x52, 0x22, 0xbf, 0x63, - 0x72, 0x9f, 0x94, 0xdc, 0xd3, 0xa1, 0x1a, 0xaa, 0xd6, 0x9c, 0x14, 0x3f, 0x38, 0x41, 0x58, 0x0f, - 0x43, 0x5f, 0x69, 0xf7, 0x8b, 0x1f, 0x1d, 0xf7, 0x62, 0xe8, 0xc6, 0xdc, 0xc8, 0xbb, 0xba, 0xfd, - 0x4e, 0xe7, 0x50, 0x61, 0xb0, 0xfd, 0x8d, 0x3e, 0xf8, 0xda, 0x6f, 0x09, 0x5f, 0xb4, 0x7e, 0x7e, - 0x89, 0x87, 0xb2, 0x2e, 0x20, 0x51, 0x19, 0x8c, 0x28, 0x81, 0x82, 0xf8, 0x1b, 0x10, 0x7b, 0x39, - 0x81, 0x5f, 0x2f, 0xbe, 0xab, 0x3f, 0xb1, 0x66, 0x5f, 0x54, 0xf7, 0x83, 0x6b, 0x1f, 0x24, 0x96, - 0x9e, 0x67, 0xc9, 0x57, 0xaf, 0xf2, 0xf2, 0xb5, 0x5b, 0xfc, 0x2f, 0x4b, 0x56, 0x73, 0x6c, 0x16, - 0x56, 0x70, 0xe1, 0x72, 0x56, 0x40, 0x49, 0xeb, 0x95, 0xb4, 0x5c, 0x4e, 0xab, 0x97, 0xbd, 0x9f, - 0xa4, 0x94, 0xd0, 0xa5, 0x63, 0x85, 0x3c, 0x50, 0xe5, 0x60, 0xf1, 0xce, 0xcf, 0xef, 0xeb, 0xec, - 0x6f, 0x5e, 0xad, 0xc0, 0xba, 0x37, 0x57, 0x7d, 0xe3, 0x05, 0xef, 0xa9, 0xf6, 0x7e, 0xb3, 0x6f, - 0x35, 0xf9, 0xee, 0x53, 0xdf, 0xbb, 0xd8, 0x15, 0x41, 0x60, 0x3f, 0x89, 0x79, 0x66, 0x28, 0x09, - 0x5a, 0x93, 0x4f, 0xbc, 0x7a, 0xdb, 0x71, 0x14, 0xfa, 0xea, 0xd7, 0xcb, 0xe8, 0x99, 0x55, 0xb4, - 0xcb, 0x34, 0x9d, 0xb2, 0xe4, 0x71, 0x32, 0x64, 0x89, 0x34, 0x09, 0x22, 0x4d, 0x6e, 0xbc, 0x26, - 0x2d, 0x92, 0x2f, 0xa7, 0x28, 0x19, 0xef, 0x9d, 0xc5, 0xba, 0x5c, 0x6c, 0x8e, 0x57, 0x6b, 0xc9, - 0x1b, 0x4d, 0x3a, 0x89, 0x47, 0x9f, 0x5b, 0x66, 0x52, 0x16, 0x6e, 0x85, 0x34, 0x63, 0x26, 0xc3, - 0x88, 0x49, 0x6e, 0x91, 0x2a, 0xaf, 0xa5, 0xcc, 0x5b, 0x29, 0xf3, 0x52, 0xf2, 0x5b, 0x48, 0x33, - 0xe7, 0xcb, 0xb6, 0x76, 0xa2, 0xb2, 0xe2, 0xab, 0xf0, 0x9d, 0xf0, 0x65, 0xfd, 0x5a, 0x24, 0x07, - 0x3e, 0xe3, 0x11, 0x6b, 0xde, 0x4c, 0x8e, 0x48, 0x95, 0x26, 0x4c, 0x55, 0x88, 0x51, 0x45, 0x71, - 0xa0, 0xd2, 0x9d, 0x64, 0x5a, 0x93, 0x4c, 0x5f, 0xaa, 0x8b, 0x0b, 0x0f, 0xb6, 0x92, 0x26, 0x19, - 0x27, 0x52, 0xf2, 0x12, 0x74, 0xbc, 0x27, 0x4b, 0x52, 0x58, 0x54, 0x89, 0x43, 0x49, 0x82, 0x90, - 0x0b, 0x14, 0xe9, 0x83, 0x86, 0xf1, 0x46, 0x1d, 0x25, 0x3f, 0xac, 0xb4, 0x99, 0x2b, 0xbd, 0xe9, - 0xc7, 0x78, 0x8a, 0x87, 0xe4, 0x87, 0x58, 0x87, 0x64, 0x61, 0xc2, 0x02, 0xdf, 0xd5, 0x12, 0x8f, - 0xfd, 0x27, 0x4b, 0xb8, 0xa1, 0xef, 0x88, 0x60, 0xbd, 0xc1, 0x9f, 0xfd, 0x38, 0xec, 0x7e, 0xfe, - 0xec, 0xfe, 0x68, 0x07, 0x03, 0xe1, 0x7f, 0x75, 0x64, 0x16, 0x64, 0x76, 0xe3, 0xc7, 0xc3, 0xe4, - 0x3c, 0x40, 0x09, 0x1e, 0x20, 0xff, 0x1e, 0x60, 0x9d, 0x40, 0xc9, 0x62, 0x46, 0x1a, 0x86, 0x24, - 0x8a, 0x96, 0xb2, 0x88, 0x51, 0x44, 0x4d, 0x53, 0xe4, 0xa8, 0xa2, 0xa7, 0x2d, 0x82, 0xda, 0xa2, - 0xa8, 0x2f, 0x92, 0x66, 0x98, 0x4d, 0x59, 0x51, 0x4d, 0x06, 0x50, 0xdb, 0x34, 0x6b, 0xb6, 0x67, - 0x9e, 0x6e, 0xd9, 0x13, 0x9d, 0x54, 0xa8, 0x8e, 0xa7, 0xa5, 0x2a, 0x90, 0x53, 0x14, 0x74, 0x52, - 0x13, 0x34, 0x95, 0x43, 0x57, 0x49, 0xd8, 0x94, 0x85, 0x4d, 0x69, 0xf8, 0x94, 0x27, 0x9d, 0xa3, - 0x1f, 0x72, 0x9a, 0x01, 0x43, 0x51, 0x05, 0xb1, 0x98, 0x42, 0xe1, 0x64, 0x45, 0x85, 0x3e, 0x97, - 0x84, 0x4c, 0x2b, 0xe2, 0x67, 0x19, 0xf0, 0x04, 0x65, 0x87, 0xb2, 0xe7, 0x58, 0xd9, 0x9d, 0x96, - 0x70, 0x43, 0x27, 0x7c, 0xf1, 0x45, 0x5b, 0x47, 0xe1, 0x09, 0x25, 0xf8, 0xc5, 0xcb, 0xf8, 0xd1, - 0x3f, 0xdb, 0x01, 0x43, 0x51, 0xc0, 0xfb, 0x8b, 0x9f, 0x3f, 0xff, 0xfa, 0x70, 0x7b, 0x71, 0xf3, - 0xfb, 0xe5, 0xf9, 0x85, 0xf1, 0x7d, 0xda, 0x10, 0x62, 0xe2, 0x3f, 0xca, 0x9c, 0xe7, 0x3b, 0x66, - 0x28, 0x83, 0xa3, 0x99, 0x38, 0xf2, 0x48, 0x09, 0xfb, 0x2b, 0x72, 0x23, 0xef, 0x87, 0x4f, 0xba, - 0x18, 0x3d, 0x76, 0xf4, 0x97, 0xdb, 0xd1, 0x53, 0x57, 0xb2, 0x26, 0xea, 0xeb, 0x3d, 0x90, 0x39, - 0x07, 0x54, 0xf4, 0x1d, 0x44, 0x9f, 0xa1, 0xe8, 0x2b, 0x10, 0x1d, 0xed, 0x52, 0x74, 0xa4, 0x6c, - 0xdb, 0x27, 0xe5, 0xe4, 0xc2, 0x6e, 0xab, 0xd9, 0xf3, 0xc4, 0x8e, 0x2b, 0x74, 0x45, 0x2c, 0x7e, - 0x8a, 0xcd, 0xc9, 0x9b, 0x37, 0xb1, 0x5d, 0x38, 0x1a, 0x4b, 0x7f, 0x9a, 0x9a, 0x1a, 0x25, 0xf2, - 0xa8, 0xeb, 0xa9, 0x42, 0x2e, 0x12, 0x99, 0xc3, 0x28, 0x43, 0x4b, 0xc1, 0x61, 0x80, 0xc3, 0x40, - 0x58, 0x83, 0xb0, 0x06, 0x1c, 0x06, 0x38, 0x0c, 0x28, 0x3b, 0x94, 0x1d, 0x1c, 0x06, 0x38, 0x8c, - 0x0d, 0x73, 0x18, 0xaa, 0x65, 0x08, 0x2c, 0x14, 0x86, 0x42, 0xbd, 0x81, 0xe9, 0xf4, 0xeb, 0x38, - 0x71, 0x58, 0x32, 0x35, 0x40, 0xa9, 0x92, 0x80, 0x54, 0x41, 0x40, 0xaa, 0x1c, 0x50, 0xab, 0x18, - 0x48, 0x2f, 0x23, 0x5d, 0x49, 0x14, 0x75, 0x32, 0xd2, 0x15, 0x84, 0xaf, 0x98, 0xdb, 0xd4, 0x2b, - 0x99, 0xec, 0x25, 0x8d, 0x55, 0xd2, 0xc9, 0xc3, 0x5a, 0xcd, 0x3b, 0x48, 0xf1, 0x0c, 0xd2, 0x79, - 0x57, 0x65, 0xe4, 0x5d, 0xa5, 0x9f, 0x77, 0x15, 0x3f, 0x50, 0x3e, 0xe3, 0x6a, 0x3c, 0x80, 0x39, - 0xd7, 0xaa, 0x8c, 0x5c, 0x2b, 0x83, 0x50, 0x37, 0xa5, 0x5c, 0x2b, 0xbb, 0xd7, 0xb3, 0x94, 0x7a, - 0x5f, 0x25, 0x5b, 0x95, 0x8c, 0xc4, 0x89, 0x02, 0xb8, 0xca, 0x8d, 0x9d, 0x28, 0x28, 0xf7, 0x8e, - 0x52, 0xec, 0x15, 0xc5, 0x73, 0x16, 0xd0, 0x0d, 0x08, 0xe9, 0x8c, 0xc3, 0x41, 0xd0, 0x2d, 0xe8, - 0x16, 0x74, 0x6b, 0x9d, 0x6e, 0x39, 0x2d, 0x92, 0x76, 0x39, 0x2d, 0xe8, 0x17, 0xf4, 0x0b, 0xfa, - 0xb5, 0xfa, 0x99, 0x3d, 0xdf, 0xf1, 0xa4, 0xca, 0xfb, 0xe6, 0xde, 0x2f, 0x19, 0x09, 0x2d, 0x83, - 0x96, 0x6d, 0x4c, 0xcb, 0xfa, 0x8e, 0x1b, 0xbe, 0x25, 0x28, 0x99, 0x02, 0xe9, 0x4e, 0xbc, 0xaa, - 0x8a, 0x70, 0xb0, 0xa0, 0x73, 0x15, 0x95, 0x6e, 0x5f, 0x42, 0xcd, 0xab, 0xa6, 0x38, 0x2e, 0x31, - 0xa2, 0x74, 0x87, 0xd4, 0xb9, 0x3a, 0x8a, 0x6b, 0xc9, 0xca, 0xd5, 0xea, 0x06, 0x17, 0xcd, 0xd0, - 0xe1, 0x4b, 0x23, 0x55, 0x27, 0xe4, 0x35, 0x29, 0x28, 0x2f, 0x1e, 0x07, 0x07, 0x04, 0x07, 0xb4, - 0xcb, 0x30, 0x4f, 0x8b, 0x4b, 0x94, 0xee, 0x69, 0xa9, 0x4e, 0xc2, 0xce, 0xf5, 0xa8, 0xb4, 0x43, - 0xaf, 0xeb, 0x34, 0x69, 0xac, 0xac, 0x42, 0xab, 0x3e, 0xc5, 0x96, 0x7c, 0xab, 0xd7, 0xaf, 0xb1, - 0xc1, 0x33, 0xbc, 0xe8, 0x14, 0xe7, 0x48, 0x8e, 0xe0, 0x2f, 0xa8, 0x9d, 0x47, 0x45, 0x07, 0xc3, - 0xe3, 0xbf, 0x92, 0x4f, 0xea, 0x0e, 0xd1, 0x37, 0x04, 0x27, 0x19, 0x3a, 0xd6, 0x07, 0x7d, 0x43, - 0xd8, 0x0f, 0xaf, 0xd7, 0xe5, 0x99, 0xa8, 0x1a, 0x89, 0x4d, 0x37, 0x17, 0x9b, 0x7b, 0x43, 0x95, - 0xc6, 0x62, 0x73, 0xef, 0x24, 0xd3, 0x54, 0x2c, 0x78, 0x09, 0x42, 0xd1, 0x5d, 0xde, 0x52, 0x2c, - 0xfe, 0xf7, 0x74, 0x1a, 0x8a, 0x05, 0x2f, 0xd9, 0xec, 0x25, 0x36, 0xfc, 0x5e, 0x5c, 0x6d, 0xc4, - 0x6c, 0xdb, 0x5e, 0x9f, 0xd2, 0x30, 0xfc, 0x50, 0x36, 0x1a, 0xc9, 0x2c, 0xff, 0x26, 0x85, 0x4c, - 0xe7, 0x32, 0x0c, 0xbf, 0x77, 0x5a, 0x69, 0x0c, 0x76, 0xb3, 0xe9, 0xf5, 0xdd, 0x70, 0x08, 0x8d, - 0xa5, 0x01, 0xc0, 0xd4, 0x98, 0x7c, 0x34, 0x8e, 0x59, 0x2d, 0x08, 0xf9, 0xf5, 0xfe, 0x2b, 0x05, - 0x85, 0xc7, 0xf1, 0xa3, 0x5d, 0x0c, 0xbf, 0xa0, 0x6d, 0x1f, 0x2d, 0x20, 0x25, 0x88, 0x66, 0x18, - 0x01, 0xe5, 0x02, 0xab, 0x89, 0xf5, 0xb2, 0xba, 0x22, 0x7c, 0xf6, 0x34, 0x4a, 0xad, 0xe6, 0xa7, - 0xda, 0x8d, 0x3a, 0x0a, 0x35, 0x31, 0xd7, 0x15, 0x77, 0x36, 0xb1, 0x67, 0x13, 0x7f, 0x16, 0x35, - 0x20, 0x12, 0xc3, 0xa9, 0x57, 0x4f, 0xf4, 0x5d, 0xda, 0x3d, 0x32, 0x89, 0xad, 0x3e, 0x23, 0x8c, - 0x8d, 0xbf, 0x36, 0xed, 0x06, 0x17, 0x86, 0x2b, 0x74, 0xf4, 0x4a, 0x46, 0xe6, 0x96, 0xa0, 0xaa, - 0x31, 0x07, 0x4b, 0x09, 0xc9, 0xdc, 0x0b, 0xd6, 0xeb, 0xf5, 0x87, 0x8f, 0x17, 0x77, 0xff, 0xba, - 0x7e, 0xff, 0x70, 0xf7, 0xc7, 0xa7, 0x0b, 0xdd, 0xeb, 0x3a, 0xa2, 0x23, 0x16, 0xbd, 0x3b, 0x77, - 0xf4, 0x77, 0x6f, 0xe1, 0x8b, 0xde, 0xd4, 0xdf, 0x5f, 0x7e, 0xbe, 0x7d, 0xa8, 0x7f, 0xf8, 0x50, - 0xd4, 0x9e, 0x78, 0x70, 0x98, 0xb5, 0xb7, 0xbb, 0xab, 0x9f, 0xd7, 0xcf, 0xb7, 0xf6, 0xed, 0x3e, - 0x5c, 0x9f, 0xd7, 0x39, 0x5e, 0x4c, 0x6b, 0x86, 0x46, 0x3e, 0xee, 0x0f, 0xdb, 0x86, 0x1b, 0x40, - 0xf7, 0xcc, 0xee, 0x8d, 0xaa, 0xef, 0x24, 0xdd, 0x92, 0x92, 0x8c, 0xd6, 0xb9, 0x2d, 0x65, 0x32, - 0x89, 0xc6, 0xad, 0x29, 0xc9, 0x24, 0xd3, 0xb5, 0x50, 0x9a, 0x15, 0x88, 0xfd, 0x40, 0xf8, 0x54, - 0xd4, 0xc5, 0x70, 0x07, 0xe1, 0xcc, 0xa9, 0xd5, 0xe8, 0xad, 0xac, 0xc7, 0x17, 0x1d, 0x89, 0xe5, - 0xbc, 0x7f, 0x70, 0x06, 0x0e, 0x46, 0x2b, 0x95, 0x92, 0x1a, 0xec, 0x6a, 0x61, 0xe7, 0x88, 0xe0, - 0x3d, 0x8a, 0xff, 0xb0, 0x6d, 0xfb, 0x68, 0x12, 0x91, 0x31, 0xf6, 0xa2, 0xba, 0x8d, 0xe6, 0x7f, - 0x88, 0xff, 0xa8, 0xdb, 0xf6, 0x43, 0x3d, 0x79, 0xcc, 0x06, 0x9a, 0x4f, 0x89, 0xaf, 0xb1, 0x39, - 0x50, 0x64, 0x5a, 0xe2, 0x71, 0x60, 0x5a, 0xc0, 0xb4, 0xa4, 0xc3, 0xb4, 0x44, 0x02, 0xa7, 0xd1, - 0xc8, 0x26, 0x1a, 0x4e, 0x63, 0x54, 0x4a, 0x60, 0x54, 0xc0, 0xa8, 0x98, 0x41, 0x85, 0xaa, 0x6a, - 0x90, 0x0c, 0x54, 0x64, 0xc8, 0x97, 0x8a, 0x8b, 0xb2, 0x63, 0x63, 0x50, 0x10, 0x6d, 0x45, 0xe1, - 0x50, 0x18, 0x3e, 0xc5, 0xe1, 0xc4, 0xa4, 0x85, 0x5c, 0xde, 0x8b, 0x4d, 0x52, 0xac, 0x8d, 0x04, - 0xb6, 0x64, 0x85, 0x9b, 0xf5, 0x43, 0x56, 0xa8, 0x7b, 0xbf, 0xf6, 0xbc, 0x73, 0x1a, 0xcd, 0xa9, - 0xb9, 0x31, 0x7a, 0xc9, 0xcd, 0x6c, 0x8a, 0xc9, 0xa9, 0xa0, 0xfc, 0x8a, 0xca, 0xad, 0xb0, 0xc6, - 0x14, 0xd7, 0x98, 0x02, 0x1b, 0x51, 0x64, 0x1e, 0x86, 0x4c, 0x93, 0x38, 0xd4, 0xbf, 0xf9, 0x7e, - 0x4e, 0xde, 0x78, 0xe8, 0xfb, 0x39, 0x9f, 0x59, 0x65, 0x98, 0x8b, 0x95, 0xce, 0x9f, 0x7b, 0xf1, - 0x7a, 0xbd, 0xfe, 0x50, 0x3f, 0x3f, 0xbf, 0xfe, 0x7c, 0x75, 0x77, 0x79, 0xf5, 0xeb, 0xc3, 0xc5, - 0xef, 0x17, 0x57, 0x77, 0x1c, 0x04, 0x7f, 0xf2, 0x20, 0x46, 0xa2, 0x5f, 0x9f, 0xb9, 0x54, 0x5f, - 0x8a, 0x0f, 0xd7, 0xbf, 0x5e, 0x5e, 0x15, 0xd9, 0x1e, 0x38, 0x38, 0xcc, 0xe5, 0x2a, 0x9c, 0x5f, - 0x7f, 0xfc, 0x58, 0xbf, 0x7a, 0xcf, 0xb8, 0x0e, 0x2c, 0x33, 0x35, 0x36, 0x6d, 0xc7, 0x36, 0x71, - 0x09, 0x7f, 0xd1, 0x17, 0xcd, 0x91, 0x03, 0x62, 0x42, 0x26, 0xf1, 0x7c, 0x40, 0x25, 0x40, 0x25, - 0x40, 0x25, 0x99, 0x42, 0x25, 0xc2, 0xed, 0x77, 0x85, 0x3f, 0x62, 0xc0, 0x19, 0x51, 0x49, 0x85, - 0x61, 0x2e, 0xb9, 0x74, 0x7a, 0x83, 0x06, 0x34, 0xd5, 0x88, 0x92, 0x78, 0x12, 0x31, 0x37, 0x0f, - 0xf1, 0x64, 0x62, 0x44, 0xc4, 0x8f, 0xfe, 0x38, 0xd2, 0x62, 0x73, 0x0a, 0xe4, 0x63, 0x8b, 0x8b, - 0xe8, 0x3b, 0x8c, 0xfe, 0x50, 0x3a, 0xc3, 0xd0, 0xdf, 0x39, 0x4a, 0xf9, 0x30, 0x43, 0x08, 0xcf, - 0x17, 0xba, 0xeb, 0xd6, 0x23, 0x83, 0x43, 0x03, 0x87, 0x96, 0xb2, 0xc5, 0xd3, 0x76, 0x66, 0x1a, - 0x97, 0x87, 0x2c, 0x75, 0x5c, 0xa7, 0x1a, 0x73, 0xcc, 0x5f, 0x2e, 0x32, 0xa5, 0xd6, 0x19, 0x36, - 0x64, 0x6a, 0xf7, 0x91, 0x2c, 0xdd, 0x05, 0xd5, 0x26, 0xc5, 0x0b, 0xd7, 0x5f, 0xd7, 0x7c, 0x95, - 0x61, 0xbe, 0x60, 0xbe, 0x52, 0x31, 0x5f, 0x38, 0x02, 0x40, 0xb0, 0x8d, 0x60, 0x1b, 0xc1, 0xb6, - 0x82, 0xbc, 0xe1, 0x08, 0x00, 0x47, 0x00, 0x38, 0x02, 0xc0, 0x11, 0x40, 0x6a, 0x0c, 0x16, 0x8e, - 0x00, 0x80, 0x4a, 0x80, 0x4a, 0x80, 0x4a, 0x56, 0xc7, 0x0c, 0x38, 0x02, 0xc8, 0x46, 0x44, 0x99, - 0xa5, 0x23, 0x00, 0x1d, 0x32, 0xa7, 0xc0, 0x73, 0x02, 0xa0, 0x70, 0xff, 0x14, 0x03, 0x6f, 0x66, - 0x34, 0x3f, 0x37, 0xbe, 0xbf, 0x8a, 0x1c, 0x9d, 0x6f, 0x65, 0xd9, 0xd7, 0xda, 0x2b, 0xb0, 0x74, - 0x57, 0x5d, 0x53, 0x9f, 0x38, 0xf4, 0xa8, 0x48, 0xa2, 0x63, 0x35, 0x35, 0xa7, 0x88, 0xd2, 0xab, - 0x65, 0xbb, 0x62, 0xbc, 0xf4, 0x6a, 0xb4, 0x0f, 0xb8, 0x4d, 0x3c, 0xd5, 0xdb, 0xc4, 0x51, 0x78, - 0x95, 0xba, 0xf6, 0xa2, 0xc5, 0x4d, 0x3a, 0x51, 0x22, 0x0a, 0xb2, 0x0c, 0x45, 0x75, 0x68, 0x71, - 0xb3, 0xfc, 0x6b, 0xa3, 0xc5, 0x0d, 0x5a, 0xdc, 0x68, 0xbe, 0x28, 0x5a, 0xdc, 0xe4, 0xf7, 0xed, - 0xd0, 0xe2, 0x26, 0x55, 0xa3, 0x87, 0x16, 0x37, 0xdb, 0xcf, 0x75, 0xa0, 0xc5, 0x8d, 0x19, 0x28, - 0x58, 0x40, 0x8b, 0x9b, 0x8c, 0xf1, 0x2c, 0xaa, 0xc4, 0x31, 0x8d, 0x66, 0x51, 0xe0, 0x86, 0x4d, - 0x5f, 0x82, 0xc2, 0x77, 0x89, 0xc7, 0xaa, 0x75, 0xd5, 0xb9, 0xc1, 0x63, 0xd5, 0x4a, 0x9a, 0xb8, - 0xbe, 0xc3, 0xee, 0x87, 0xcf, 0x43, 0xf0, 0xdc, 0x94, 0x5b, 0x95, 0x49, 0x5c, 0x3f, 0x3b, 0x0e, - 0x7d, 0xbc, 0xd1, 0xc7, 0x3b, 0x16, 0xa8, 0x56, 0xd7, 0x71, 0xad, 0xc8, 0xb4, 0xab, 0x5f, 0x46, - 0x3e, 0x19, 0x8b, 0x2e, 0x53, 0x20, 0x3b, 0xd3, 0x21, 0x3b, 0x89, 0x6d, 0x75, 0xf4, 0xda, 0xe9, - 0xa0, 0xcf, 0x14, 0x68, 0xcd, 0xac, 0xf6, 0x99, 0x1a, 0x59, 0xe1, 0x9e, 0x1d, 0x04, 0x7f, 0xe9, - 0x64, 0x95, 0xbd, 0xb2, 0xea, 0xc9, 0x7c, 0xa8, 0x99, 0x43, 0xd1, 0x49, 0xca, 0x8a, 0xb6, 0x11, - 0xb6, 0x89, 0xb1, 0x66, 0x6e, 0xe3, 0xac, 0x13, 0x71, 0x05, 0xa4, 0xef, 0x9c, 0x34, 0x43, 0x96, - 0x2e, 0xb8, 0xa3, 0x72, 0x2a, 0x82, 0x7b, 0xb6, 0x83, 0x67, 0xd1, 0xb2, 0xbe, 0x46, 0x97, 0xfb, - 0xb2, 0x4a, 0xbd, 0xc2, 0x15, 0x96, 0x52, 0x62, 0x9f, 0xb6, 0xc0, 0x37, 0x52, 0xa9, 0x64, 0x9c, - 0x75, 0x0b, 0xf1, 0x76, 0x70, 0x7b, 0x9b, 0xf1, 0xb4, 0x70, 0x3a, 0x70, 0x3a, 0x70, 0x3a, 0x6a, - 0x71, 0x8d, 0xff, 0xd2, 0x0b, 0x27, 0x8a, 0xa4, 0x59, 0xa7, 0x98, 0xfa, 0xb9, 0xc7, 0x60, 0x7b, - 0xd2, 0x15, 0x67, 0xa8, 0xb6, 0xa3, 0x09, 0x49, 0x42, 0xef, 0xfd, 0xa1, 0x42, 0x3f, 0xce, 0x3c, - 0xfd, 0xa1, 0x3e, 0x7c, 0xfa, 0xe7, 0x40, 0xf8, 0xa4, 0xa6, 0x1f, 0x0a, 0xbc, 0xba, 0x12, 0x2b, - 0x4d, 0xa9, 0x89, 0xd7, 0xaa, 0x85, 0xd7, 0x8e, 0xdf, 0xcb, 0x88, 0xdf, 0x11, 0xbf, 0x23, 0x7e, - 0x07, 0x94, 0x02, 0x94, 0x42, 0xfc, 0x8e, 0xf8, 0x1d, 0xf1, 0x3b, 0xe2, 0x77, 0xc4, 0xef, 0x70, - 0x3a, 0x70, 0x3a, 0x88, 0xdf, 0x75, 0x4d, 0xd2, 0x30, 0x34, 0x8e, 0x23, 0x5b, 0x16, 0x5b, 0x94, - 0xcc, 0x07, 0x23, 0x04, 0x23, 0x04, 0x23, 0x94, 0x2f, 0xe4, 0x0b, 0xde, 0x70, 0x01, 0x6f, 0x48, - 0x6d, 0x18, 0xc0, 0x41, 0x1b, 0x12, 0x3a, 0x05, 0x6c, 0x75, 0x36, 0xee, 0xb2, 0x4d, 0x32, 0x94, - 0x96, 0xbb, 0x64, 0x5b, 0xd2, 0x2c, 0x82, 0x56, 0x4c, 0xb8, 0xa2, 0x25, 0x5a, 0x21, 0x33, 0xb0, - 0x80, 0xcc, 0x40, 0x3d, 0x42, 0xf5, 0x55, 0x8e, 0xb3, 0x7e, 0x29, 0xf4, 0xc2, 0xe9, 0x50, 0x0e, - 0x6d, 0x0e, 0x2c, 0xe2, 0xdc, 0x01, 0xe5, 0xd0, 0x86, 0x79, 0x4a, 0x94, 0x43, 0x13, 0xa7, 0x45, - 0x39, 0xf4, 0x66, 0xde, 0x0e, 0xe5, 0xd0, 0xc6, 0xc2, 0xed, 0xf1, 0x7f, 0x28, 0x87, 0xce, 0x6e, - 0x78, 0x8f, 0x72, 0x68, 0x99, 0x49, 0x50, 0x0e, 0x9d, 0x0e, 0x4f, 0x88, 0x72, 0xe8, 0xac, 0x11, - 0x30, 0xca, 0x29, 0x75, 0x74, 0xf2, 0x45, 0x25, 0x81, 0x0e, 0xed, 0xe7, 0xc0, 0xbb, 0x80, 0x77, - 0x01, 0xef, 0x02, 0xde, 0x05, 0xbc, 0x0b, 0x78, 0x17, 0xf0, 0x2e, 0xe0, 0x5d, 0xc0, 0xbb, 0x80, - 0x77, 0x01, 0xef, 0x02, 0xde, 0x05, 0xbc, 0x0b, 0x78, 0x17, 0xf0, 0x2e, 0xb9, 0xe7, 0x5d, 0x4c, - 0xb6, 0xa2, 0x9b, 0xa5, 0x5d, 0x78, 0xdb, 0xd1, 0x49, 0xb0, 0x2e, 0x43, 0xf9, 0x0a, 0xd4, 0x59, - 0x97, 0xd1, 0x30, 0x64, 0xbb, 0x80, 0x75, 0x49, 0x87, 0x75, 0x51, 0x6a, 0xd9, 0xc6, 0xe1, 0x6e, - 0xd0, 0x03, 0x0b, 0x9c, 0x4a, 0x56, 0x6b, 0x68, 0x89, 0x4d, 0xe1, 0xe6, 0xc4, 0x85, 0x5c, 0xa1, - 0x5f, 0xe0, 0xbc, 0x68, 0x1d, 0x95, 0x03, 0x26, 0x14, 0xc9, 0x08, 0x32, 0x2d, 0xec, 0xf8, 0x45, - 0xeb, 0xda, 0x65, 0xeb, 0x73, 0x82, 0xa7, 0x59, 0xb8, 0xfe, 0x5a, 0x19, 0x71, 0x9d, 0x69, 0x9a, - 0xca, 0x6a, 0x4c, 0x69, 0x8d, 0x29, 0xaf, 0x11, 0x25, 0xe6, 0xe1, 0xc7, 0xb2, 0x77, 0x9d, 0xa9, - 0x36, 0x8f, 0xc5, 0xc4, 0x67, 0x71, 0xad, 0x90, 0x76, 0xc1, 0xbc, 0x3e, 0x47, 0xb8, 0x94, 0x84, - 0x31, 0x59, 0x40, 0xbf, 0x44, 0x9b, 0x18, 0x0a, 0xe9, 0x17, 0xaa, 0x53, 0x8e, 0x89, 0xe6, 0x43, - 0x7d, 0xd7, 0xa8, 0x5b, 0x6a, 0xbf, 0xd4, 0x43, 0xea, 0x15, 0xdb, 0xc3, 0x51, 0xc2, 0x51, 0xc2, - 0x51, 0x1a, 0x72, 0x94, 0xbc, 0xc5, 0xfc, 0xdc, 0x5e, 0x73, 0x23, 0xe6, 0xd0, 0xf7, 0x3a, 0x8c, - 0xa7, 0xec, 0xd1, 0x6c, 0x30, 0x7c, 0x30, 0x7c, 0x30, 0x7c, 0x99, 0x32, 0x7c, 0xd4, 0x9c, 0xa6, - 0xa5, 0xa6, 0xee, 0x8c, 0x61, 0x2e, 0xad, 0x9c, 0x27, 0x33, 0x50, 0xdf, 0x4c, 0x58, 0xc5, 0xec, - 0x28, 0x98, 0xc4, 0xcc, 0xe0, 0xca, 0xf1, 0x64, 0x93, 0x2d, 0x5d, 0xbe, 0x2a, 0xe3, 0x9c, 0xac, - 0xd9, 0x66, 0x4b, 0x17, 0xe4, 0xf6, 0x8f, 0xdb, 0xbb, 0x8b, 0x8f, 0x0f, 0xef, 0x2f, 0x7e, 0xb9, - 0xbc, 0xba, 0x78, 0xff, 0x70, 0x73, 0xfd, 0xe1, 0xe2, 0x96, 0x71, 0x65, 0x0a, 0xcc, 0x29, 0x69, - 0xe6, 0x44, 0x64, 0xd5, 0xea, 0x0c, 0x57, 0xe5, 0xa1, 0xfe, 0xfe, 0xe3, 0xe5, 0x55, 0x91, 0xfd, - 0x79, 0x03, 0xd6, 0x19, 0x1b, 0x7b, 0xd9, 0xfa, 0x5e, 0xfa, 0xb3, 0x34, 0x72, 0x08, 0x5d, 0x83, - 0xe0, 0xd9, 0xfa, 0x53, 0xbc, 0xf0, 0xa1, 0xd7, 0xf1, 0x84, 0x00, 0xb0, 0x00, 0xb0, 0x00, 0xb0, - 0x99, 0x02, 0xb0, 0x99, 0xa3, 0xb8, 0x37, 0x62, 0xf1, 0xb4, 0x7b, 0xf2, 0xcd, 0x07, 0x06, 0x7a, - 0x5d, 0xf9, 0x60, 0xf3, 0x60, 0xf3, 0x60, 0xf3, 0x60, 0xf3, 0x8c, 0x8c, 0xa4, 0x66, 0x4f, 0x68, - 0x76, 0x07, 0x9c, 0xe0, 0x4b, 0x7a, 0x1e, 0x6e, 0x94, 0x75, 0x7a, 0xa4, 0x77, 0xbb, 0xc8, 0xe4, - 0x7b, 0x50, 0x73, 0x74, 0x3f, 0x0f, 0xbf, 0xc5, 0x03, 0xf9, 0x9a, 0x11, 0xfa, 0xee, 0x0d, 0x48, - 0x4d, 0x11, 0x29, 0xd7, 0x8f, 0x2c, 0x50, 0x1a, 0x5a, 0x53, 0xc6, 0x02, 0x67, 0xa6, 0x58, 0x19, - 0x99, 0x62, 0x06, 0xbd, 0x13, 0x32, 0xc5, 0x26, 0xdf, 0x1c, 0x99, 0x62, 0x80, 0x94, 0x80, 0x94, - 0x80, 0x94, 0x79, 0x85, 0x94, 0xc8, 0x14, 0xe3, 0xd4, 0x26, 0x64, 0x8a, 0x71, 0xb2, 0x2d, 0xc8, - 0x14, 0x83, 0xa3, 0x84, 0xa3, 0xdc, 0x4d, 0x47, 0x89, 0x4c, 0xb1, 0xb9, 0xef, 0x8e, 0x4c, 0x31, - 0x18, 0x3e, 0x18, 0xbe, 0x6d, 0x37, 0x7c, 0xc8, 0x14, 0xdb, 0x64, 0x58, 0xc5, 0xec, 0x28, 0x98, - 0xc4, 0xcc, 0xe0, 0xca, 0x21, 0x53, 0xec, 0xd5, 0x82, 0x20, 0x53, 0x4c, 0x62, 0x75, 0x90, 0x29, - 0xb6, 0xb9, 0x59, 0x90, 0x29, 0x86, 0x4c, 0x31, 0x00, 0x58, 0x00, 0xd8, 0xac, 0x02, 0x58, 0x64, - 0x8a, 0x21, 0x53, 0x0c, 0x36, 0x0f, 0x36, 0x0f, 0x36, 0x2f, 0x97, 0x36, 0x6f, 0x87, 0x33, 0xc5, - 0x74, 0x52, 0x97, 0x0a, 0x5c, 0x89, 0x62, 0x84, 0x8b, 0x65, 0xe9, 0x7b, 0x47, 0xc9, 0x13, 0xe3, - 0xbb, 0x97, 0x1c, 0x37, 0x92, 0x23, 0x5b, 0x6c, 0xd3, 0x1e, 0x29, 0xaf, 0x37, 0x92, 0x77, 0x84, - 0xdd, 0x66, 0xba, 0x2b, 0xe0, 0x54, 0x63, 0x8e, 0x4f, 0xb1, 0xc9, 0x7d, 0xf3, 0x26, 0xce, 0xb3, - 0x3d, 0x4a, 0x94, 0x7a, 0x2b, 0x2e, 0x3a, 0xff, 0x2d, 0x22, 0x2d, 0xa8, 0x96, 0x6a, 0x2b, 0x1b, - 0x7a, 0x0f, 0xa7, 0xd8, 0xd6, 0xcb, 0xe5, 0x27, 0x60, 0x20, 0xd5, 0x6b, 0xe5, 0x27, 0xee, 0x1f, - 0x37, 0xca, 0xaf, 0xda, 0x99, 0x54, 0x1a, 0x6b, 0x47, 0x9b, 0xc1, 0xd6, 0x58, 0x7b, 0x4f, 0x63, - 0xbd, 0x55, 0xd7, 0x59, 0x63, 0x7d, 0x8b, 0x52, 0xd7, 0xae, 0xd1, 0x56, 0x74, 0xf5, 0x5a, 0x2e, - 0x5f, 0xa1, 0x15, 0xab, 0x13, 0x5d, 0x86, 0xe5, 0xf9, 0xce, 0xdf, 0x72, 0x8b, 0x33, 0x73, 0x87, - 0xd6, 0x64, 0xd8, 0x9a, 0xd5, 0x97, 0x2b, 0x46, 0x90, 0x86, 0x91, 0x2a, 0x70, 0x51, 0x1d, 0x16, - 0xaa, 0xc2, 0x3f, 0x32, 0xcc, 0x23, 0xc3, 0x39, 0x12, 0x6c, 0xd3, 0xd3, 0x1f, 0xd9, 0xe4, 0x7c, - 0xd5, 0x3e, 0xc9, 0xb4, 0xbe, 0xc8, 0xe8, 0x6e, 0x5f, 0x40, 0x77, 0x7b, 0x9a, 0x80, 0x2e, 0xb6, - 0x7b, 0x2c, 0x57, 0x0a, 0xce, 0xcd, 0x86, 0x1b, 0x05, 0xcd, 0x05, 0xd9, 0xe8, 0x7e, 0x8f, 0x1b, - 0x05, 0xa5, 0xfe, 0xc3, 0x8d, 0x82, 0xeb, 0x5f, 0x10, 0x37, 0x0a, 0xa6, 0xc7, 0x5c, 0x19, 0x7c, - 0x3b, 0xdc, 0x28, 0x68, 0x8c, 0xa6, 0x1c, 0xff, 0x87, 0x1b, 0x05, 0xd5, 0xed, 0x1d, 0x6e, 0x14, - 0xc4, 0x8d, 0x82, 0xdc, 0xf0, 0xaf, 0x80, 0x1b, 0x05, 0x99, 0x20, 0xe4, 0x96, 0x13, 0x9f, 0x49, - 0x50, 0xa6, 0xde, 0xbd, 0x44, 0x91, 0xa6, 0x4b, 0x9e, 0xa4, 0xd4, 0xa1, 0x84, 0xe7, 0x46, 0x41, - 0xf1, 0x35, 0x36, 0x0a, 0x8a, 0xac, 0x4b, 0x3c, 0x0e, 0xac, 0x0b, 0x58, 0x97, 0x74, 0x58, 0x97, - 0x48, 0xe0, 0xe8, 0x34, 0xcb, 0x68, 0x38, 0x6e, 0x15, 0x04, 0xaf, 0x92, 0x29, 0x5e, 0x05, 0xb7, - 0x0a, 0x22, 0xfb, 0xc7, 0x98, 0x22, 0x19, 0x41, 0xa7, 0x85, 0x1d, 0xef, 0x15, 0x15, 0x39, 0x92, - 0x51, 0x2d, 0x3c, 0x1b, 0x8b, 0x36, 0x35, 0x27, 0x12, 0xcb, 0xcd, 0x2b, 0x2a, 0xb7, 0xc2, 0x1a, - 0x53, 0x5c, 0x63, 0x0a, 0x6c, 0x44, 0x91, 0x79, 0x78, 0xb2, 0xec, 0x25, 0x96, 0xf3, 0x96, 0xe7, - 0x72, 0x96, 0xe5, 0x9a, 0x29, 0xc7, 0x9d, 0x21, 0xf7, 0xeb, 0x9f, 0xef, 0xfe, 0x75, 0x7d, 0x73, - 0xf9, 0x9f, 0xfa, 0xdd, 0xe5, 0xf5, 0xd5, 0xc3, 0xc5, 0xef, 0x17, 0x57, 0x77, 0x1c, 0x4c, 0x7f, - 0xf2, 0x2c, 0x03, 0x65, 0xb8, 0x86, 0x8a, 0x92, 0x97, 0xad, 0xc6, 0xf9, 0xf5, 0xc7, 0x8f, 0xf5, - 0xab, 0xf7, 0x7c, 0x45, 0xb8, 0x83, 0xc3, 0xfc, 0x2e, 0xc5, 0xd5, 0x2f, 0x97, 0xbf, 0x16, 0x33, - 0x56, 0xee, 0xdb, 0xd8, 0xb4, 0x45, 0x43, 0x21, 0x88, 0x24, 0xd1, 0x36, 0x22, 0x95, 0x46, 0x7f, - 0xa4, 0xde, 0x33, 0x78, 0xc2, 0xc2, 0x5d, 0x44, 0x5f, 0x63, 0xf4, 0x47, 0x0e, 0x9a, 0x06, 0x33, - 0x20, 0x52, 0x3e, 0x24, 0x8a, 0x82, 0x10, 0x84, 0x84, 0x28, 0x08, 0xc9, 0x5a, 0x41, 0xc8, 0x94, - 0x5a, 0xa3, 0xfb, 0x79, 0x2a, 0x8c, 0x16, 0xba, 0x9f, 0xc3, 0x7c, 0x81, 0xd1, 0x02, 0xa3, 0x05, - 0x46, 0x0b, 0x8c, 0x16, 0x18, 0x2d, 0x30, 0x5a, 0x60, 0xb4, 0xc0, 0x68, 0x81, 0xd1, 0xda, 0x6d, - 0x46, 0x2b, 0xe5, 0xde, 0x26, 0x4b, 0x08, 0xad, 0x74, 0x9b, 0x9b, 0xa4, 0xd1, 0x19, 0x80, 0x0c, - 0x36, 0xd1, 0x1b, 0xa0, 0x90, 0x83, 0xde, 0x00, 0x8b, 0xb5, 0xc9, 0x7c, 0x73, 0x80, 0xc5, 0xfa, - 0x83, 0xee, 0x00, 0xab, 0xf6, 0x26, 0x8d, 0x24, 0xd9, 0xd1, 0x6e, 0xa4, 0x99, 0x24, 0xab, 0x46, - 0x4c, 0x91, 0x88, 0x28, 0x72, 0x8a, 0x6c, 0x19, 0x29, 0xb2, 0x9c, 0x71, 0x25, 0x0a, 0x93, 0x51, - 0x98, 0x8c, 0x04, 0x5a, 0x4e, 0x32, 0x05, 0x85, 0xc9, 0xcb, 0xbf, 0x36, 0x0a, 0x93, 0x51, 0x98, - 0xac, 0xf9, 0xa2, 0x28, 0x4c, 0xce, 0xef, 0xdb, 0xa1, 0x30, 0x39, 0x55, 0xa3, 0x87, 0xc2, 0xe4, - 0xed, 0x67, 0x3f, 0x50, 0x98, 0x6c, 0x06, 0x0a, 0x16, 0x50, 0x98, 0x9c, 0x3d, 0xce, 0x45, 0x95, - 0x50, 0x26, 0x53, 0x2e, 0x0a, 0x9c, 0x71, 0xde, 0xfb, 0x31, 0xca, 0xb6, 0x26, 0xd4, 0x59, 0x4f, - 0x13, 0xdd, 0x18, 0x25, 0x0b, 0x02, 0xd5, 0x0a, 0xff, 0xd0, 0x7f, 0x91, 0xd7, 0xaa, 0x6e, 0xa0, - 0xff, 0xa2, 0x49, 0x7d, 0x91, 0x4e, 0xd1, 0x56, 0x50, 0x14, 0x99, 0x7c, 0x6b, 0x9a, 0x86, 0x04, - 0xc2, 0xff, 0x2a, 0x7c, 0xeb, 0xc9, 0xf7, 0xfa, 0xbd, 0x40, 0x5e, 0x51, 0x66, 0x87, 0x41, 0x5f, - 0xd0, 0xaf, 0x74, 0x5e, 0x9c, 0x08, 0x67, 0x03, 0xd3, 0xa3, 0xd1, 0x45, 0x23, 0x45, 0x96, 0x74, - 0xa7, 0x8f, 0x08, 0x88, 0x6d, 0x03, 0xf4, 0xda, 0x05, 0xa0, 0x8f, 0x46, 0xaa, 0x02, 0xce, 0x1e, - 0xfb, 0x6d, 0x73, 0x1f, 0x0d, 0x9e, 0x5b, 0x74, 0x70, 0x83, 0x0e, 0x2a, 0x0e, 0x36, 0xa1, 0x54, - 0x1b, 0x61, 0x62, 0x19, 0x0b, 0xa6, 0xf2, 0xc7, 0xc8, 0x52, 0xea, 0x9a, 0x78, 0x4a, 0x33, 0x51, - 0x94, 0x09, 0x1b, 0x03, 0x1b, 0xa3, 0x2e, 0x2f, 0x3b, 0x71, 0xd4, 0x7d, 0x7b, 0x71, 0xf3, 0xfb, - 0xc5, 0xcd, 0x4e, 0x1c, 0x75, 0x6f, 0xef, 0x31, 0xf7, 0xce, 0x9d, 0x04, 0x67, 0x2c, 0x88, 0x48, - 0x33, 0xb1, 0x79, 0x86, 0x55, 0x9c, 0xf9, 0x1b, 0xbd, 0xf1, 0x85, 0x02, 0xcb, 0x7a, 0x1b, 0x3d, - 0xf0, 0xd7, 0xe8, 0xe9, 0xd3, 0x7f, 0x21, 0xb5, 0xbb, 0x50, 0x38, 0x70, 0x53, 0xe0, 0x87, 0x48, - 0x91, 0x99, 0x4e, 0x44, 0x86, 0x6c, 0x45, 0xd0, 0x14, 0x99, 0xcf, 0x56, 0xa4, 0xb7, 0x98, 0xd0, - 0x69, 0x2d, 0xb1, 0xa0, 0xa5, 0x84, 0xfa, 0xfd, 0xa2, 0x66, 0xcc, 0xc4, 0xc8, 0x74, 0x06, 0x74, - 0x4b, 0x31, 0x9e, 0x00, 0x9c, 0x26, 0x8c, 0xc5, 0x76, 0x70, 0x9a, 0x23, 0x89, 0x66, 0x68, 0xa4, - 0x32, 0x9a, 0x07, 0xbd, 0x81, 0xc1, 0x39, 0xec, 0x04, 0xe7, 0xa0, 0xdd, 0x49, 0xc5, 0x6e, 0xb5, - 0x7c, 0x11, 0x04, 0x7c, 0xa1, 0xfd, 0x78, 0x42, 0xf4, 0x50, 0x31, 0xaf, 0xa2, 0xdc, 0xaa, 0x6a, - 0x4c, 0x65, 0x8d, 0xa9, 0xae, 0x11, 0x15, 0xe6, 0xa1, 0x26, 0xb2, 0xd7, 0x43, 0x45, 0xbf, 0xd7, - 0x1b, 0x07, 0x30, 0x97, 0x00, 0xea, 0x63, 0x1b, 0xb2, 0xa9, 0x8e, 0x0f, 0x1a, 0x4e, 0x53, 0xf3, - 0x92, 0x83, 0xb9, 0x3d, 0xd3, 0x6e, 0x29, 0xca, 0x00, 0x6c, 0x60, 0x4d, 0x61, 0x4d, 0xf3, 0x6e, - 0x4d, 0x75, 0x81, 0x12, 0x3b, 0x60, 0x32, 0x04, 0x9c, 0x98, 0x01, 0x14, 0xbb, 0xea, 0x9b, 0x30, - 0x01, 0xe6, 0x4c, 0x81, 0x29, 0x93, 0x60, 0xdc, 0x34, 0x18, 0x37, 0x11, 0x46, 0x4d, 0x05, 0x8f, - 0xc9, 0x60, 0x32, 0x1d, 0xfc, 0x80, 0x6c, 0x4e, 0x5e, 0x9d, 0x9e, 0xc5, 0xab, 0xfd, 0x05, 0xcd, - 0x62, 0xef, 0x75, 0x6b, 0xf0, 0x85, 0x55, 0x86, 0x78, 0x75, 0xea, 0xd5, 0xca, 0x7e, 0xad, 0x18, - 0x58, 0xdb, 0xb9, 0x35, 0x7e, 0x6b, 0x60, 0xee, 0x4f, 0x76, 0x18, 0x0a, 0xdf, 0x65, 0x5f, 0xee, - 0xe4, 0x01, 0xff, 0xdd, 0xdf, 0xff, 0x72, 0x6c, 0x9d, 0x35, 0x7e, 0x7c, 0x29, 0x59, 0x67, 0x8d, - 0xd1, 0x8f, 0xa5, 0xe8, 0x8f, 0xd1, 0xcf, 0xe5, 0x2f, 0xc7, 0x56, 0x65, 0xfc, 0x73, 0xf5, 0xcb, - 0xb1, 0x55, 0x6d, 0x1c, 0xdc, 0xdf, 0xbf, 0x39, 0xf8, 0x7e, 0x32, 0x50, 0x1f, 0xf8, 0x8f, 0x22, - 0xfb, 0x4b, 0x34, 0x58, 0x67, 0x1c, 0x1c, 0xe6, 0x48, 0xa8, 0x6b, 0x10, 0xea, 0xd5, 0x42, 0x6d, - 0x5b, 0xed, 0xba, 0xf5, 0x4b, 0xe3, 0x7b, 0xe9, 0xb0, 0x32, 0x78, 0x77, 0xf0, 0xfd, 0x74, 0xf0, - 0xfa, 0x97, 0x3f, 0x16, 0x7d, 0xac, 0x74, 0x78, 0x3a, 0x78, 0xb7, 0xe4, 0x5f, 0x6a, 0x83, 0x77, - 0x92, 0x73, 0x54, 0x07, 0xfb, 0x73, 0x1f, 0x1d, 0xfe, 0xbe, 0xbc, 0x6c, 0x40, 0x65, 0xc9, 0x80, - 0x93, 0x65, 0x03, 0x4e, 0x96, 0x0c, 0x58, 0xfa, 0x95, 0xca, 0x4b, 0x06, 0x54, 0x07, 0x3f, 0xe6, - 0x3e, 0xbf, 0xbf, 0xf8, 0xa3, 0xb5, 0xc1, 0xc1, 0x8f, 0x65, 0xff, 0x76, 0x3a, 0xf8, 0xf1, 0xee, - 0x20, 0x07, 0x2a, 0xbe, 0x97, 0xad, 0xef, 0x35, 0xc8, 0x42, 0x5e, 0x90, 0x5e, 0x3e, 0xf9, 0x52, - 0x23, 0xa5, 0x91, 0x5f, 0x8e, 0x58, 0x06, 0xb1, 0x0c, 0x62, 0x99, 0x9c, 0xc6, 0x32, 0xda, 0xf9, - 0xf1, 0xcb, 0xe1, 0xc8, 0x16, 0xd9, 0xdc, 0xd0, 0xe9, 0x0a, 0xaf, 0x1f, 0xf2, 0x9b, 0xdd, 0xf1, - 0xc4, 0xb0, 0xbc, 0xb0, 0xbc, 0xb0, 0xbc, 0x3b, 0x65, 0x79, 0xfb, 0x8e, 0x1b, 0x96, 0x6a, 0x06, - 0x2c, 0x6f, 0x8d, 0x71, 0xca, 0x1b, 0xdb, 0x7d, 0xca, 0x05, 0x83, 0xf4, 0xd1, 0x71, 0xd9, 0x15, - 0xd5, 0x90, 0x59, 0x9d, 0x9b, 0x3e, 0xaa, 0x87, 0x30, 0x38, 0xff, 0x2f, 0xbe, 0xdd, 0x0c, 0x1d, - 0xcf, 0x7d, 0xef, 0x3c, 0x39, 0x51, 0x17, 0xac, 0x63, 0xf6, 0xe7, 0x0c, 0x0c, 0x70, 0x0f, 0x1f, - 0xed, 0x6f, 0xb9, 0xdf, 0xd2, 0x5a, 0xb5, 0x7a, 0x52, 0xcd, 0xf1, 0xb6, 0x22, 0x9e, 0x37, 0x38, - 0x83, 0xee, 0x21, 0x29, 0xd3, 0xe5, 0x13, 0xc9, 0x7c, 0x4c, 0xd5, 0x25, 0x71, 0xba, 0x73, 0xfc, - 0xe7, 0x11, 0x4b, 0x4a, 0x44, 0x81, 0xa9, 0xf8, 0x64, 0xf4, 0xf3, 0xf8, 0x77, 0x5a, 0x57, 0xaf, - 0xea, 0xcb, 0x80, 0x4e, 0xe2, 0x8a, 0x6f, 0xb7, 0x9c, 0x3e, 0x63, 0x1e, 0x60, 0x3c, 0x1f, 0x12, - 0x57, 0xd2, 0x8b, 0x33, 0x90, 0xb8, 0x82, 0xc4, 0x95, 0xe5, 0x13, 0x31, 0x65, 0xa6, 0xcd, 0x89, - 0x2f, 0x9b, 0x39, 0x66, 0x54, 0x78, 0x10, 0x0e, 0x20, 0x1c, 0x40, 0x38, 0xf0, 0x1a, 0x90, 0x64, - 0x42, 0xbb, 0xd9, 0x0c, 0xad, 0x9e, 0xe7, 0x87, 0xfc, 0x72, 0x95, 0xe4, 0xc2, 0x25, 0x8f, 0x60, - 0xde, 0xf6, 0xf7, 0xa2, 0x6d, 0xf7, 0x3b, 0xd1, 0xae, 0x97, 0xde, 0x96, 0x4e, 0xb8, 0xa7, 0x37, - 0x13, 0x04, 0xb2, 0x5b, 0x31, 0x93, 0xd6, 0xcc, 0xbc, 0x55, 0x33, 0x6d, 0xdd, 0x52, 0xb3, 0x72, - 0xa9, 0x59, 0xbb, 0x54, 0xac, 0x9e, 0xa1, 0x10, 0x9f, 0x59, 0xe2, 0xd9, 0xe9, 0xd7, 0x39, 0x79, - 0x1f, 0x9a, 0x2d, 0xcb, 0xed, 0x77, 0x1f, 0xc9, 0x75, 0x88, 0x32, 0x26, 0xa6, 0x66, 0x60, 0x6a, - 0x33, 0xdc, 0xec, 0xf8, 0x3f, 0x33, 0x4a, 0x5a, 0x30, 0xcd, 0xd5, 0xa6, 0x44, 0xf0, 0xcd, 0x11, - 0x7d, 0xa6, 0x9f, 0x93, 0x02, 0xd9, 0x67, 0x48, 0x87, 0x67, 0xb7, 0xde, 0x20, 0xa7, 0xbb, 0xa9, - 0xad, 0x37, 0xc8, 0xf1, 0x6e, 0x64, 0xfb, 0xf7, 0xf2, 0x31, 0x6b, 0x56, 0x73, 0xcd, 0x18, 0xd5, - 0x27, 0xba, 0x21, 0xcf, 0x34, 0x76, 0x4f, 0x1e, 0x61, 0x14, 0xbb, 0x97, 0x81, 0xdd, 0x81, 0xdd, - 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, 0x81, 0xdd, - 0xb7, 0x1a, 0xbb, 0xfb, 0x22, 0xf4, 0x6d, 0x37, 0xe8, 0x3a, 0xa1, 0x65, 0x87, 0xa1, 0xe8, 0xf6, - 0xc2, 0xc0, 0x1c, 0x8a, 0x5f, 0xf4, 0x30, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x6e, 0x46, - 0x79, 0xef, 0x3b, 0x6e, 0xf8, 0xd6, 0x20, 0xd4, 0xae, 0x02, 0x6a, 0x03, 0x6a, 0x03, 0x6a, 0x6f, - 0x25, 0xd4, 0x2e, 0x57, 0x01, 0xb4, 0x01, 0xb4, 0x0d, 0x00, 0xed, 0x40, 0x34, 0x7d, 0x11, 0x5a, - 0x7f, 0x8a, 0x17, 0x73, 0xf8, 0x7a, 0xea, 0x19, 0x80, 0xd5, 0x80, 0xd5, 0x80, 0xd5, 0x80, 0xd5, - 0x9c, 0xd1, 0xbb, 0xd7, 0x0f, 0x1d, 0xf7, 0xc9, 0xea, 0xd9, 0x41, 0x10, 0x89, 0x8f, 0xc9, 0x2e, - 0x31, 0xbb, 0xe0, 0x11, 0x22, 0x2d, 0xb7, 0xb8, 0x7b, 0xff, 0xcd, 0x7b, 0x85, 0xd9, 0xe7, 0xc0, - 0x33, 0xc0, 0x33, 0xc0, 0x33, 0xc0, 0x33, 0x30, 0xca, 0xbb, 0x91, 0x56, 0x83, 0x73, 0x3e, 0xe1, - 0xcc, 0xc0, 0xdc, 0x46, 0x5a, 0x0f, 0xa6, 0xc0, 0xba, 0xa4, 0xd4, 0x8a, 0x70, 0xde, 0x2f, 0x1b, - 0x7c, 0x86, 0xe9, 0x2e, 0x6e, 0xc9, 0x83, 0xf2, 0xde, 0xa2, 0xd0, 0x4c, 0xd8, 0x6c, 0x98, 0x31, - 0x4a, 0x47, 0x19, 0x6a, 0x50, 0x06, 0x9a, 0x32, 0xa0, 0xb5, 0xe1, 0x56, 0xb4, 0x36, 0x34, 0x6c, - 0x1a, 0x76, 0x87, 0xf9, 0xcb, 0x54, 0xb5, 0x1d, 0x73, 0x0b, 0x85, 0x49, 0x04, 0x6a, 0xa4, 0x95, - 0xc2, 0xa8, 0x48, 0xff, 0x88, 0xb5, 0x84, 0xb7, 0x60, 0xa6, 0xb3, 0xc2, 0x4d, 0xf4, 0x55, 0x59, - 0x1a, 0x2c, 0xf0, 0x49, 0xce, 0x80, 0xa5, 0x09, 0x85, 0x1d, 0x1a, 0xe8, 0xbf, 0x39, 0x9a, 0x36, - 0xe3, 0x55, 0xd9, 0x65, 0x54, 0x65, 0xe7, 0x88, 0x11, 0x40, 0x55, 0x36, 0xaa, 0xb2, 0x51, 0x95, - 0x0d, 0xde, 0x13, 0xbc, 0x27, 0x78, 0x4f, 0x54, 0x76, 0x2c, 0x32, 0x31, 0xa8, 0xec, 0x98, 0xfa, - 0xe2, 0x48, 0x37, 0x53, 0x7f, 0x0e, 0xd2, 0xcd, 0x32, 0xbb, 0xf5, 0xa8, 0xec, 0x00, 0xed, 0x64, - 0x46, 0x7d, 0x50, 0x95, 0x0d, 0xec, 0x0e, 0xec, 0x0e, 0xec, 0x0e, 0xec, 0x0e, 0xec, 0x0e, 0xec, - 0x0e, 0xec, 0x0e, 0xec, 0x0e, 0xec, 0x0e, 0xec, 0x9e, 0x13, 0xec, 0xde, 0xf4, 0xfa, 0x6e, 0x28, - 0x7c, 0x83, 0x49, 0xc1, 0xc9, 0x13, 0xcc, 0x40, 0xeb, 0x12, 0xa0, 0x35, 0xa0, 0x35, 0xa0, 0x75, - 0x16, 0xa1, 0x35, 0xf7, 0x21, 0xe1, 0x84, 0x70, 0x68, 0x36, 0x45, 0x10, 0x58, 0xc3, 0x3f, 0x4c, - 0x74, 0x91, 0x98, 0x67, 0x1f, 0x66, 0x9f, 0x77, 0x98, 0xcb, 0x2b, 0x78, 0x4c, 0x19, 0xb6, 0x34, - 0x0c, 0x5c, 0x7a, 0x86, 0x2e, 0x2d, 0x83, 0x97, 0xba, 0xe1, 0x4b, 0xdd, 0x00, 0xa6, 0x6a, 0x08, - 0x0d, 0x43, 0x4b, 0x43, 0x1a, 0x63, 0x8c, 0x7b, 0x58, 0x06, 0xc2, 0x6a, 0x95, 0x14, 0xb2, 0x95, - 0x4d, 0x26, 0x2b, 0x9b, 0x65, 0x24, 0xcc, 0x33, 0x13, 0xa9, 0x32, 0x14, 0x29, 0x87, 0xab, 0x69, - 0x33, 0x16, 0x9b, 0x08, 0x5d, 0x53, 0x60, 0x30, 0x52, 0x65, 0x32, 0x36, 0x2d, 0x22, 0xa5, 0xb7, - 0x95, 0x4a, 0xed, 0xb4, 0x52, 0x39, 0x3e, 0x3d, 0x39, 0x3d, 0x3e, 0xab, 0x56, 0x4b, 0xb5, 0x52, - 0x75, 0x8b, 0xa5, 0x66, 0x2f, 0x9f, 0xb3, 0xe7, 0x25, 0xc7, 0xdf, 0xc4, 0xad, 0x9b, 0x31, 0xf6, - 0xf7, 0xc5, 0xff, 0x27, 0x9a, 0x29, 0xc6, 0x1a, 0xe3, 0xe7, 0x21, 0xd6, 0x40, 0xac, 0x81, 0x58, - 0x03, 0xb1, 0x06, 0x62, 0x0d, 0xc4, 0x1a, 0x88, 0x35, 0x10, 0x6b, 0x20, 0xd6, 0x40, 0xac, 0x81, - 0x58, 0x63, 0x4b, 0x63, 0x0d, 0x5f, 0x84, 0xbe, 0x23, 0x5a, 0x56, 0x12, 0x03, 0xfc, 0x5f, 0x5f, - 0x04, 0x69, 0x04, 0x1d, 0xcb, 0x1e, 0x8c, 0xe8, 0x03, 0xd1, 0x07, 0xa2, 0x0f, 0x44, 0x1f, 0x88, - 0x3e, 0x10, 0x7d, 0x20, 0xfa, 0x40, 0xf4, 0x81, 0xe8, 0x03, 0xd1, 0x07, 0xa2, 0x8f, 0x2d, 0x8d, - 0x3e, 0x42, 0xa7, 0x2b, 0xbc, 0x7e, 0x98, 0x7e, 0xf4, 0xb1, 0xec, 0xc1, 0x88, 0x3e, 0x10, 0x7d, - 0x20, 0xfa, 0x40, 0xf4, 0x81, 0xe8, 0x03, 0xd1, 0x07, 0xa2, 0x0f, 0x44, 0x1f, 0x88, 0x3e, 0x10, - 0x7d, 0x20, 0xfa, 0xc8, 0x42, 0xf4, 0x91, 0xe9, 0xb2, 0x13, 0x43, 0x3d, 0x4c, 0x93, 0xf9, 0x8d, - 0xf6, 0x32, 0x8d, 0xfa, 0x5e, 0x1e, 0x19, 0xaa, 0x99, 0x2b, 0x18, 0xed, 0x6d, 0x7a, 0x3b, 0xfc, - 0xea, 0x0f, 0xe7, 0xe3, 0xaf, 0x8e, 0x2b, 0x6d, 0x79, 0xa1, 0x25, 0xae, 0xb4, 0x4d, 0x33, 0x12, - 0x46, 0x49, 0x65, 0xf6, 0x22, 0x5d, 0x94, 0x54, 0xe2, 0x4a, 0xdb, 0x0d, 0x44, 0xab, 0xe8, 0x53, - 0x92, 0xa5, 0x68, 0x14, 0x7d, 0x4a, 0xb2, 0xbb, 0xf5, 0xb8, 0xd2, 0x76, 0x03, 0xb3, 0xe2, 0x4a, - 0x5b, 0x1e, 0xc7, 0x87, 0x2b, 0x6d, 0x01, 0xab, 0x01, 0xab, 0x01, 0xab, 0xcd, 0xc8, 0x3b, 0xae, - 0xb4, 0xc5, 0x95, 0xb6, 0xf0, 0x0c, 0xf0, 0x0c, 0xf0, 0x0c, 0xf0, 0x0c, 0xb3, 0xf2, 0x8e, 0x2b, - 0x6d, 0xd3, 0x66, 0x5d, 0x70, 0xa5, 0xad, 0xc6, 0x83, 0x70, 0xa5, 0xed, 0x06, 0x18, 0x23, 0x5c, - 0x69, 0x9b, 0x69, 0x65, 0xc0, 0x95, 0xb6, 0xb8, 0xd2, 0x16, 0xcc, 0x1f, 0xf3, 0x4c, 0x3b, 0x7d, - 0xa5, 0x2d, 0xe7, 0xf5, 0xa7, 0x05, 0xf3, 0x59, 0x1f, 0x99, 0xb9, 0xd0, 0x76, 0x6f, 0x83, 0x12, - 0xc7, 0x2d, 0x69, 0x46, 0x25, 0xac, 0xc8, 0x72, 0xf5, 0xaf, 0x19, 0x99, 0xd2, 0x93, 0x26, 0xba, - 0x0c, 0x68, 0xec, 0x3f, 0xd3, 0x35, 0xc8, 0xac, 0xd7, 0x1f, 0x33, 0x75, 0x48, 0x67, 0xbb, 0xee, - 0x98, 0x93, 0x3d, 0xe2, 0x67, 0x8b, 0xb8, 0xd9, 0x21, 0x63, 0x6c, 0x90, 0x31, 0xf6, 0xc7, 0x08, - 0xdb, 0xb3, 0x59, 0x8b, 0xcc, 0xd5, 0x81, 0xbc, 0xc8, 0xcd, 0x33, 0x4f, 0xda, 0xfd, 0xb1, 0x46, - 0x5c, 0xcc, 0x84, 0x32, 0x3b, 0x91, 0x8c, 0x9b, 0xce, 0x0b, 0xb8, 0xe9, 0x3c, 0x5f, 0xe1, 0x03, - 0x3b, 0x01, 0x6c, 0x96, 0xf8, 0x35, 0x41, 0xf8, 0x9a, 0x21, 0x7a, 0x8d, 0x52, 0xea, 0x46, 0x89, - 0x5d, 0x93, 0x1c, 0x96, 0x71, 0xee, 0x2a, 0xf7, 0x04, 0x6e, 0x23, 0xcb, 0xe7, 0x45, 0x66, 0x85, - 0xba, 0x06, 0xa1, 0x06, 0x11, 0xbb, 0x03, 0x44, 0x6c, 0x56, 0x89, 0xcd, 0x46, 0x56, 0x68, 0x2e, - 0x86, 0x70, 0xb7, 0xe9, 0xb9, 0xae, 0x88, 0x72, 0x69, 0x2d, 0xfb, 0xd1, 0xf3, 0x43, 0x03, 0xb1, - 0xcd, 0xfc, 0x23, 0x10, 0xe5, 0x20, 0xca, 0x41, 0x94, 0xb3, 0x53, 0x51, 0x8e, 0x89, 0x8e, 0x18, - 0x06, 0x3a, 0x60, 0x18, 0xaa, 0x21, 0x32, 0x80, 0x07, 0x4d, 0xd6, 0x0c, 0x99, 0xee, 0x8d, 0x64, - 0xb8, 0x46, 0x28, 0x8d, 0xf2, 0x10, 0x13, 0x9d, 0xb7, 0x4c, 0xd6, 0x02, 0xa5, 0xb5, 0xa5, 0xe9, - 0x75, 0x98, 0x48, 0x65, 0x97, 0x81, 0x40, 0xd3, 0x44, 0xa0, 0xcd, 0x8e, 0x17, 0x08, 0xb3, 0x08, - 0x34, 0x7e, 0x04, 0x10, 0x28, 0x10, 0x28, 0x10, 0x28, 0x10, 0x28, 0x10, 0x28, 0x10, 0x28, 0x10, - 0x28, 0x10, 0x28, 0x10, 0x28, 0x10, 0xe8, 0x10, 0x1e, 0xb6, 0x6d, 0xa7, 0xd3, 0xf7, 0x0d, 0x63, - 0xd0, 0xe4, 0x21, 0x40, 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x40, - 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x40, 0xa1, 0x43, 0x80, 0xe8, 0xf5, 0x84, 0x6b, 0x16, 0x82, 0x8e, - 0x9e, 0x00, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x09, - 0xfc, 0x09, 0xfc, 0x09, 0xfc, 0x39, 0x44, 0x87, 0xf1, 0x4d, 0x6c, 0x66, 0x21, 0x68, 0xf2, 0x10, - 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, 0xa0, 0x50, - 0xa0, 0xd0, 0x1d, 0x46, 0xa1, 0xc2, 0xf7, 0x3d, 0x3f, 0xb0, 0x7c, 0xd1, 0x14, 0xce, 0x57, 0xd1, - 0xe2, 0x47, 0xa0, 0xaf, 0x1f, 0x00, 0xf4, 0x09, 0xf4, 0x09, 0xf4, 0x09, 0xf4, 0x09, 0xf4, 0x09, - 0xf4, 0x09, 0xf4, 0x09, 0xf4, 0x09, 0xf4, 0xb9, 0xc3, 0xe8, 0xb3, 0x2b, 0x82, 0xc0, 0x7e, 0x12, - 0x26, 0xf1, 0xe7, 0xfc, 0x23, 0x80, 0x40, 0x81, 0x40, 0x81, 0x40, 0x81, 0x40, 0x81, 0x40, 0x81, - 0x40, 0x81, 0x40, 0x81, 0x40, 0x81, 0x40, 0x81, 0x40, 0x03, 0x2b, 0x18, 0xb9, 0x58, 0x53, 0xe8, - 0x33, 0x9a, 0x1e, 0xc8, 0x13, 0xc8, 0x13, 0xc8, 0x13, 0xc8, 0x13, 0xc8, 0x13, 0xc8, 0x13, 0xc8, - 0x13, 0xc8, 0x13, 0xc8, 0x73, 0x87, 0x91, 0x67, 0x7c, 0x81, 0x0b, 0x33, 0xe0, 0x8c, 0x66, 0x05, - 0xce, 0x04, 0xce, 0x04, 0xce, 0xdc, 0x29, 0x9c, 0x19, 0x84, 0xbe, 0xe3, 0x3e, 0x99, 0xb8, 0xd1, - 0xe0, 0xed, 0x16, 0xd9, 0xdc, 0x38, 0x07, 0x9e, 0xdf, 0xec, 0x8e, 0x27, 0x86, 0xe5, 0x85, 0xe5, - 0x85, 0xe5, 0xdd, 0x29, 0xcb, 0xdb, 0x77, 0xdc, 0xb0, 0x54, 0x33, 0x60, 0x79, 0x6b, 0x08, 0xef, - 0x11, 0xde, 0x23, 0xbc, 0xcf, 0xc4, 0x96, 0xd6, 0xaa, 0xd5, 0x13, 0xc4, 0xf3, 0xdb, 0x1b, 0xcf, - 0xe3, 0x02, 0xdb, 0xb5, 0x17, 0xd8, 0x72, 0xdd, 0x8d, 0x6c, 0xe0, 0xfe, 0x5a, 0x86, 0xcb, 0x90, - 0x37, 0x73, 0x7d, 0x6d, 0x68, 0x37, 0xed, 0x66, 0xc0, 0x77, 0x7f, 0x6d, 0x3c, 0x5f, 0xc6, 0x2e, - 0xb0, 0x3d, 0xc6, 0x05, 0xb6, 0x19, 0x88, 0x2a, 0x70, 0x81, 0xad, 0xfc, 0x1b, 0xb1, 0x5d, 0x60, - 0xdb, 0x1c, 0xeb, 0x00, 0x7f, 0x5d, 0xff, 0x70, 0x5e, 0x5e, 0xba, 0xa1, 0x04, 0xba, 0x01, 0x74, - 0x03, 0xe8, 0x06, 0x8e, 0x37, 0xe5, 0x32, 0x20, 0xc9, 0x84, 0x3d, 0xcf, 0x0f, 0xf9, 0x45, 0x6a, - 0xac, 0x04, 0xd1, 0xec, 0xcc, 0x9b, 0xfd, 0x5e, 0xb4, 0xed, 0x7e, 0x27, 0xda, 0xeb, 0xca, 0x19, - 0xf7, 0xe4, 0x66, 0xc2, 0x3e, 0x76, 0xcb, 0x65, 0xd2, 0x82, 0x99, 0xb7, 0x64, 0xa6, 0x2d, 0x5a, - 0x6a, 0x96, 0x2d, 0x35, 0x0b, 0x97, 0x8a, 0xa5, 0x33, 0x14, 0xd4, 0x33, 0x4b, 0x3c, 0x3b, 0xe1, - 0xba, 0xd0, 0x68, 0x59, 0x6e, 0xbf, 0xfb, 0x28, 0x7c, 0x83, 0x17, 0xf3, 0xd6, 0x0c, 0x4c, 0x6d, - 0x86, 0x8d, 0x1d, 0xff, 0x67, 0x46, 0x49, 0x0b, 0xa6, 0xd9, 0xd9, 0x94, 0x28, 0xbd, 0x39, 0x6a, - 0xcf, 0xf4, 0x73, 0x52, 0xa0, 0xf7, 0x0c, 0xe9, 0xf0, 0xec, 0xd6, 0x1b, 0x64, 0x71, 0x37, 0xb5, - 0xf5, 0x06, 0x59, 0xdd, 0x8d, 0x6c, 0xff, 0x5e, 0x3e, 0x66, 0xcd, 0xea, 0x3d, 0xd3, 0x8c, 0xea, - 0x53, 0x0c, 0x44, 0xd3, 0x17, 0xa1, 0xf5, 0xa7, 0x78, 0x31, 0x87, 0xda, 0xa7, 0x9e, 0x01, 0x78, - 0x0d, 0x78, 0x0d, 0x78, 0x0d, 0x78, 0xcd, 0x28, 0xef, 0xbe, 0xd7, 0x0f, 0x1d, 0xf7, 0xc9, 0xea, - 0xd9, 0x41, 0x10, 0x89, 0x8f, 0x39, 0x8c, 0xcd, 0x94, 0x63, 0x96, 0x71, 0x8f, 0x10, 0x69, 0xb9, - 0x65, 0xb7, 0x5a, 0xbe, 0x08, 0x02, 0x83, 0x5e, 0x61, 0xf6, 0x39, 0xf0, 0x0c, 0xf0, 0x0c, 0xf0, - 0x0c, 0xf0, 0x0c, 0x8c, 0xf2, 0xee, 0xf4, 0x0c, 0x59, 0x97, 0x19, 0x9f, 0x70, 0x66, 0x60, 0xee, - 0x78, 0x6d, 0x72, 0xc7, 0xbb, 0x4c, 0x56, 0xfe, 0x6b, 0xc5, 0xe0, 0xda, 0xcf, 0xfb, 0x65, 0x83, - 0xcf, 0xf8, 0x64, 0x87, 0xa1, 0xf0, 0x5d, 0x63, 0xdb, 0x91, 0x3c, 0xe8, 0xbf, 0xfb, 0xfb, 0x5f, - 0x8e, 0xad, 0xb3, 0xc6, 0x8f, 0x2f, 0x25, 0xeb, 0xac, 0x31, 0xfa, 0xb1, 0x14, 0xfd, 0x31, 0xfa, - 0xb9, 0xfc, 0xe5, 0xd8, 0xaa, 0x8c, 0x7f, 0xae, 0x7e, 0x39, 0xb6, 0xaa, 0x8d, 0x83, 0xfb, 0xfb, - 0x37, 0x07, 0xdf, 0x4f, 0x06, 0xea, 0x03, 0xff, 0x51, 0x34, 0xf6, 0x32, 0x8d, 0xbd, 0x1c, 0x71, - 0x46, 0xe9, 0x28, 0x43, 0x0d, 0xca, 0x40, 0x53, 0x06, 0xdb, 0x6a, 0xd7, 0xad, 0x5f, 0x1a, 0xdf, - 0x4b, 0x87, 0x95, 0xc1, 0xbb, 0x83, 0xef, 0xa7, 0x83, 0xd7, 0xbf, 0xfc, 0xb1, 0xe8, 0x63, 0xa5, - 0xc3, 0xd3, 0xc1, 0xbb, 0x25, 0xff, 0x52, 0x1b, 0xbc, 0x93, 0x9c, 0xa3, 0x3a, 0xd8, 0x9f, 0xfb, - 0xe8, 0xf0, 0xf7, 0xe5, 0x65, 0x03, 0x2a, 0x4b, 0x06, 0x9c, 0x2c, 0x1b, 0x70, 0xb2, 0x64, 0xc0, - 0xd2, 0xaf, 0x54, 0x5e, 0x32, 0xa0, 0x3a, 0xf8, 0x31, 0xf7, 0xf9, 0xfd, 0xc5, 0x1f, 0xad, 0x0d, - 0x0e, 0x7e, 0x2c, 0xfb, 0xb7, 0xd3, 0xc1, 0x8f, 0x77, 0x07, 0x39, 0x34, 0x0d, 0xbb, 0xc3, 0xfc, - 0x65, 0x2a, 0x79, 0x80, 0x39, 0x1f, 0x74, 0x12, 0x81, 0x1a, 0xc9, 0x0b, 0x1d, 0xe5, 0x1c, 0x1e, - 0xb1, 0x66, 0x24, 0x15, 0xcc, 0xe4, 0x89, 0xde, 0x45, 0x5f, 0xf5, 0x21, 0x0e, 0x36, 0xb7, 0xa8, - 0xae, 0x6d, 0x94, 0x9b, 0xcb, 0x9e, 0x65, 0xc6, 0x95, 0xf2, 0x5b, 0x30, 0x99, 0x64, 0x56, 0x46, - 0x92, 0x59, 0x8e, 0x18, 0x01, 0x24, 0x99, 0x21, 0xc9, 0x8c, 0x71, 0x6e, 0x24, 0x99, 0x81, 0xeb, - 0x04, 0xd7, 0x09, 0xae, 0xd3, 0x98, 0xbc, 0x23, 0xc9, 0x2c, 0x75, 0x7e, 0x07, 0x49, 0x66, 0xea, - 0xcf, 0x41, 0x92, 0x59, 0x66, 0xb7, 0x1e, 0x49, 0x66, 0xa0, 0x9a, 0xcc, 0xa8, 0x0f, 0x92, 0xcc, - 0x00, 0xaf, 0x01, 0xaf, 0x01, 0xaf, 0x73, 0x0c, 0xaf, 0x91, 0x64, 0x86, 0x24, 0x33, 0x78, 0x06, - 0x78, 0x06, 0x78, 0x06, 0x78, 0x86, 0x59, 0x79, 0x47, 0x92, 0x59, 0xda, 0xbc, 0x0b, 0x92, 0xcc, - 0x34, 0x1e, 0x84, 0x24, 0xb3, 0x0d, 0x70, 0x46, 0x48, 0x32, 0xcb, 0xb4, 0x32, 0x20, 0xc9, 0x0c, - 0x49, 0x66, 0x60, 0xfe, 0x98, 0x67, 0xda, 0xe9, 0x24, 0x33, 0xce, 0x84, 0xa4, 0x82, 0xd1, 0x1c, - 0x33, 0x86, 0x96, 0x84, 0x7c, 0x72, 0x83, 0xf6, 0x96, 0xb2, 0x12, 0x96, 0xcd, 0xfe, 0x96, 0x23, - 0x99, 0xda, 0x58, 0x83, 0xcb, 0xbd, 0x14, 0xa5, 0xa6, 0xf8, 0x5b, 0x74, 0x98, 0x51, 0xd4, 0x83, - 0x5c, 0xc5, 0x0f, 0x4e, 0x10, 0xd6, 0xc3, 0x50, 0x2f, 0x3f, 0xaa, 0xf8, 0xd1, 0x71, 0x2f, 0x3a, - 0x62, 0x18, 0xe9, 0x07, 0xc5, 0x77, 0x05, 0xb7, 0xdf, 0xe9, 0x68, 0xf4, 0xfa, 0xfc, 0x68, 0x7f, - 0xe3, 0x9b, 0xec, 0xda, 0x6f, 0x09, 0x5f, 0xb4, 0x7e, 0x7e, 0x89, 0xa7, 0x4a, 0x75, 0x8b, 0x98, - 0x14, 0xda, 0x8c, 0x22, 0x6b, 0x68, 0x30, 0xbf, 0xe6, 0xd2, 0x54, 0x56, 0x5d, 0xe1, 0xd4, 0x46, - 0x28, 0xee, 0xbb, 0xee, 0x7e, 0x33, 0xef, 0x33, 0x61, 0x83, 0x19, 0x37, 0x56, 0x6d, 0x47, 0xe5, - 0xf7, 0x45, 0x61, 0x4f, 0x88, 0xd9, 0xde, 0x5a, 0x59, 0xdd, 0xc4, 0xec, 0x6d, 0x72, 0x96, 0xb6, - 0x0e, 0xa5, 0xae, 0x4f, 0x99, 0xeb, 0x52, 0xe2, 0x6c, 0x94, 0x37, 0x1b, 0xa5, 0xcd, 0x42, 0x59, - 0x9b, 0xb5, 0x32, 0xd4, 0x6c, 0x66, 0xbd, 0x8b, 0xd4, 0x38, 0x2e, 0x4e, 0xd3, 0x3c, 0xaf, 0xd2, - 0x3e, 0x97, 0xe2, 0x38, 0x7f, 0xe2, 0x3b, 0x67, 0xe2, 0x3a, 0x4f, 0x62, 0x3f, 0x37, 0x62, 0x3f, - 0x1f, 0x62, 0x3d, 0x07, 0x4a, 0x17, 0x65, 0x6b, 0x9f, 0xdf, 0xf0, 0x5d, 0x3c, 0xa6, 0x79, 0x3e, - 0x4f, 0x00, 0x4b, 0x04, 0x87, 0x10, 0xea, 0xac, 0xd7, 0xa4, 0x3d, 0xff, 0x70, 0x16, 0xd8, 0x18, - 0xd8, 0x18, 0xd8, 0x18, 0x25, 0x79, 0x71, 0x5a, 0xc2, 0x0d, 0x9d, 0xf0, 0xc5, 0x17, 0x6d, 0x0e, - 0x43, 0xa3, 0x91, 0x8d, 0x5b, 0xbc, 0x8c, 0xbf, 0xca, 0xcf, 0x76, 0x20, 0xf8, 0xee, 0xed, 0xa8, - 0xd7, 0xeb, 0x0f, 0xb7, 0x17, 0x37, 0xbf, 0x5f, 0xdc, 0x3c, 0xdc, 0xfd, 0xf1, 0xe9, 0x42, 0x57, - 0x08, 0xa3, 0xd4, 0xe3, 0x80, 0xe5, 0x9c, 0x87, 0xb9, 0xa2, 0xf4, 0xa6, 0xfe, 0xfe, 0xf2, 0xf3, - 0x6d, 0x31, 0x0b, 0x45, 0xb3, 0xcc, 0x6f, 0x76, 0x57, 0x3f, 0xaf, 0x9f, 0xdf, 0x6e, 0xfa, 0xe2, - 0x8b, 0x46, 0xda, 0xb6, 0x01, 0x54, 0xc5, 0x42, 0xaa, 0x82, 0x78, 0x4e, 0xc1, 0x42, 0x54, 0xa8, - 0x9f, 0x3c, 0x28, 0xd0, 0x14, 0x7b, 0x8c, 0xbb, 0x36, 0xe6, 0x7a, 0x15, 0x42, 0x2f, 0x1a, 0xb1, - 0xab, 0x45, 0xe4, 0x6a, 0x11, 0xb7, 0x34, 0xa2, 0x56, 0x76, 0xfd, 0x88, 0xd2, 0xce, 0x24, 0xe5, - 0x45, 0x25, 0xca, 0x4a, 0x57, 0xae, 0xe5, 0x24, 0x7a, 0xbd, 0x7c, 0xae, 0xfe, 0xc4, 0x9a, 0x95, - 0x57, 0x5d, 0x71, 0xfa, 0x4a, 0x4b, 0x2c, 0x2e, 0x71, 0x51, 0x57, 0x2f, 0xe4, 0xf2, 0xe5, 0x59, - 0xb1, 0x34, 0x92, 0x8c, 0xa4, 0x12, 0x03, 0x29, 0xc9, 0x38, 0x4a, 0x33, 0x8c, 0x2a, 0x01, 0x8c, - 0x7a, 0xa0, 0xa2, 0x1a, 0x90, 0x90, 0x03, 0x0f, 0x72, 0x80, 0x41, 0x0a, 0x24, 0x32, 0xac, 0x2c, - 0x92, 0x1e, 0x56, 0x45, 0x49, 0xd6, 0x3b, 0xce, 0x15, 0xda, 0xb1, 0xa7, 0xb0, 0x42, 0xb2, 0x2b, - 0xa3, 0xb2, 0x22, 0xc5, 0x95, 0xea, 0x29, 0xb9, 0x06, 0x8b, 0xdf, 0x7e, 0xfe, 0xdd, 0x16, 0xbc, - 0x57, 0xd1, 0xee, 0xd8, 0x7e, 0x77, 0x79, 0xc9, 0x41, 0xa2, 0x53, 0xf1, 0xe7, 0x96, 0xac, 0xcc, - 0x6a, 0xad, 0x5f, 0xab, 0xed, 0x32, 0x5a, 0x3e, 0xa3, 0xdd, 0xab, 0xbe, 0x8c, 0x8a, 0x62, 0x2b, - 0x2b, 0xb4, 0xb2, 0x22, 0xcf, 0x29, 0xf0, 0xe8, 0xab, 0x33, 0x49, 0xe4, 0x3a, 0xf6, 0x7d, 0xb4, - 0x6d, 0xf2, 0x26, 0x7e, 0xf4, 0x71, 0x66, 0x13, 0x7f, 0x6c, 0xc8, 0xc4, 0xaf, 0x13, 0x82, 0x1c, - 0x5b, 0xf9, 0x35, 0x42, 0xc2, 0x63, 0xe8, 0x65, 0x8f, 0x6e, 0x54, 0xaf, 0x43, 0xa4, 0x5d, 0x77, - 0xa8, 0x78, 0x56, 0xa9, 0x4c, 0x8d, 0x52, 0xa8, 0x50, 0x92, 0xb8, 0xe9, 0xb2, 0x9d, 0xda, 0xec, - 0xa6, 0x36, 0x9b, 0x49, 0x15, 0x47, 0x33, 0xe1, 0xa6, 0xf1, 0x70, 0x29, 0x7a, 0xbb, 0xd1, 0x1f, - 0xea, 0xfd, 0xf0, 0x64, 0xbd, 0x74, 0xf4, 0x90, 0xd1, 0x1f, 0x4a, 0x9d, 0xec, 0x24, 0x42, 0x23, - 0x09, 0x0b, 0xe8, 0xb4, 0xd4, 0xb5, 0xd7, 0x69, 0x29, 0x6a, 0xee, 0x31, 0x34, 0x17, 0x9a, 0xab, - 0x75, 0x94, 0x90, 0xec, 0x5a, 0x47, 0xd8, 0x6d, 0xb5, 0x63, 0x83, 0xc4, 0x7d, 0x9c, 0x2a, 0x8c, - 0xf9, 0x14, 0x1b, 0x87, 0x37, 0x6f, 0x46, 0x91, 0xc9, 0x91, 0xd3, 0x4a, 0x53, 0x2b, 0xd5, 0x32, - 0x82, 0x48, 0x99, 0x40, 0x64, 0xaf, 0x5a, 0x86, 0x6e, 0x6e, 0xb5, 0x6e, 0xaa, 0xe6, 0xed, 0xa8, - 0xb8, 0x10, 0xba, 0x2b, 0x21, 0xba, 0x14, 0xb2, 0x6b, 0xd1, 0x11, 0x63, 0x16, 0x71, 0xd6, 0x15, - 0x6b, 0x36, 0xf1, 0x66, 0x13, 0x73, 0x2e, 0x71, 0x57, 0x3f, 0xe5, 0x28, 0x10, 0x4e, 0x9e, 0xc8, - 0xa7, 0xdd, 0xfa, 0x99, 0x34, 0xc4, 0x0c, 0x1a, 0x33, 0xc9, 0xa9, 0xbe, 0x08, 0x88, 0x76, 0x35, - 0xe9, 0x09, 0x32, 0x9e, 0x01, 0x9a, 0x0e, 0x4d, 0x87, 0xa6, 0x67, 0x56, 0xd3, 0x03, 0xf1, 0x55, - 0xf8, 0x4e, 0xf8, 0xa2, 0x91, 0x89, 0x3e, 0x9e, 0x01, 0x9a, 0x0e, 0x4d, 0xdf, 0x4a, 0x4d, 0xd7, - 0xcb, 0x5c, 0xd3, 0xc9, 0x58, 0xe3, 0xc9, 0x54, 0x4b, 0x5e, 0xe4, 0xfa, 0xd3, 0xc5, 0xd5, 0xf9, - 0xf5, 0xd5, 0x2f, 0x97, 0xbf, 0x3e, 0xd4, 0x3f, 0xd4, 0x6f, 0x3e, 0x3e, 0xdc, 0x5e, 0xfc, 0x7e, - 0x71, 0x73, 0x79, 0xf7, 0x07, 0x55, 0x92, 0x18, 0x72, 0xd4, 0x98, 0x92, 0xef, 0x3e, 0x5f, 0xfd, - 0x76, 0x75, 0xfd, 0xef, 0x2b, 0x8d, 0xb4, 0xca, 0xc3, 0x4d, 0xbf, 0xc2, 0xf9, 0xcd, 0xe5, 0xdd, - 0xe5, 0x79, 0xfd, 0x43, 0x9e, 0xdf, 0xe1, 0xdf, 0xf5, 0x9b, 0xab, 0xcb, 0xab, 0x5f, 0xf3, 0xfc, - 0x0a, 0x1f, 0x2f, 0xaf, 0xae, 0x6f, 0x72, 0xfd, 0x02, 0xf5, 0xff, 0xd5, 0x7a, 0x01, 0xd2, 0xc8, - 0x86, 0x69, 0xab, 0x6f, 0x04, 0xfd, 0x84, 0xe2, 0x5b, 0x48, 0x47, 0x3e, 0xd1, 0x68, 0xa0, 0x1e, - 0xa0, 0x1e, 0xc4, 0x37, 0x99, 0x8d, 0x6f, 0x42, 0xa7, 0x2b, 0xac, 0xa6, 0x2f, 0xec, 0x50, 0x68, - 0x30, 0x96, 0x33, 0xb3, 0x40, 0xe3, 0xa1, 0xf1, 0x5b, 0xa9, 0xf1, 0x43, 0x29, 0x0f, 0x9d, 0xe6, - 0x9f, 0x41, 0xad, 0xa2, 0xa1, 0xf6, 0x84, 0xe6, 0x67, 0xc5, 0xcf, 0xee, 0xa8, 0xe3, 0x7d, 0xd1, - 0xb5, 0x5d, 0x2f, 0x10, 0x4d, 0xcf, 0x6d, 0x91, 0x44, 0x4f, 0xef, 0xba, 0x0c, 0xbd, 0x26, 0x23, - 0x0c, 0x75, 0x6c, 0x2c, 0x1d, 0x73, 0xb9, 0xae, 0xab, 0xe0, 0xbc, 0x8f, 0x60, 0xa0, 0xd7, 0x72, - 0x25, 0x73, 0x4b, 0x5b, 0x7a, 0x5b, 0xa9, 0xd4, 0x4e, 0x2b, 0x95, 0xe3, 0xd3, 0x93, 0xd3, 0xe3, - 0xb3, 0x6a, 0xb5, 0x54, 0x2b, 0x55, 0x33, 0xb4, 0xda, 0x29, 0x55, 0x01, 0x35, 0xb2, 0xe0, 0xdf, - 0x5f, 0x7a, 0xc2, 0xd2, 0x39, 0x8c, 0x1c, 0x4f, 0x00, 0xaf, 0x0e, 0xaf, 0xbe, 0x95, 0x5e, 0xbd, - 0xef, 0x3a, 0x9e, 0xab, 0x03, 0xe3, 0x09, 0xed, 0x95, 0xf5, 0xda, 0x27, 0x6f, 0x43, 0x43, 0x83, - 0xc3, 0x4d, 0xbd, 0xf9, 0xd6, 0x97, 0x59, 0xcf, 0x91, 0xd8, 0x77, 0x7f, 0x7c, 0xba, 0x78, 0xb8, - 0x7c, 0xbf, 0xbd, 0xf5, 0xd6, 0xd7, 0x77, 0x5b, 0x59, 0x6c, 0x5d, 0xbf, 0xdc, 0xca, 0xd7, 0xfa, - 0x70, 0xbd, 0x95, 0xaf, 0x75, 0xf1, 0xff, 0x7e, 0xba, 0x43, 0x61, 0xfc, 0xc6, 0x20, 0x71, 0x7e, - 0x73, 0xe8, 0x55, 0xcb, 0xe8, 0x29, 0x29, 0xf4, 0x0a, 0xe5, 0xf2, 0xa6, 0x8b, 0x8b, 0xe3, 0x72, - 0xf8, 0xb5, 0x11, 0x85, 0x5a, 0x11, 0x3c, 0xa9, 0xf8, 0x9d, 0x54, 0xf4, 0xae, 0x56, 0xec, 0xbe, - 0xb1, 0xea, 0xd1, 0x29, 0x09, 0x63, 0x2c, 0x20, 0x9d, 0x92, 0xa9, 0x9c, 0xd6, 0x90, 0xae, 0x2d, - 0x85, 0x54, 0x59, 0x09, 0x9d, 0x4a, 0xd2, 0x66, 0xc7, 0x6b, 0xfe, 0xb9, 0xbe, 0x90, 0x74, 0xf4, - 0x31, 0xcd, 0x3a, 0xd2, 0x63, 0x9e, 0x3a, 0xd2, 0xe0, 0x25, 0x9f, 0x45, 0xa4, 0xc3, 0xef, 0x9d, - 0x56, 0x05, 0xa9, 0x64, 0xf1, 0x9f, 0x5a, 0xd1, 0x5f, 0x56, 0x6a, 0x48, 0x57, 0x0b, 0x00, 0x95, - 0x0a, 0xd9, 0x7c, 0x01, 0xe9, 0x4a, 0x01, 0xe1, 0x71, 0x7b, 0xd2, 0xd5, 0xa3, 0xa1, 0xd3, 0x15, - 0x7f, 0x7b, 0xae, 0xb0, 0x94, 0x3a, 0x7e, 0xce, 0x9c, 0x51, 0x4c, 0x86, 0x6f, 0x47, 0x45, 0x9a, - 0x9c, 0xd8, 0xe9, 0x32, 0x71, 0xd9, 0x2b, 0x79, 0x91, 0x12, 0x4b, 0x33, 0x08, 0x98, 0x5e, 0x8b, - 0x36, 0x23, 0x80, 0x96, 0x62, 0x33, 0x48, 0x45, 0x56, 0x29, 0xaf, 0x8d, 0x70, 0x22, 0xa7, 0x2e, - 0x5f, 0x3c, 0x2b, 0x89, 0x49, 0xce, 0x87, 0xb3, 0x4a, 0x55, 0xcb, 0xa2, 0xff, 0x0d, 0x1c, 0x1b, - 0x1c, 0x1b, 0x1c, 0x1b, 0x1c, 0x1b, 0x1c, 0x9b, 0x01, 0xc7, 0xc6, 0xdc, 0xb6, 0x6a, 0xe4, 0xd7, - 0x72, 0xdc, 0xb8, 0x6a, 0x55, 0x0c, 0xaf, 0xba, 0x0e, 0x5a, 0x94, 0xc3, 0xea, 0xd8, 0x54, 0x2e, - 0x26, 0x05, 0xe9, 0x90, 0x3d, 0xd2, 0xa1, 0xe5, 0x75, 0x6d, 0xc7, 0x95, 0x73, 0xac, 0xc9, 0xda, - 0x4e, 0x0f, 0x92, 0x43, 0x69, 0xc7, 0xa0, 0x1f, 0xf2, 0x8a, 0xd2, 0xa4, 0xdd, 0x1e, 0x41, 0x3c, - 0x0a, 0x8a, 0x57, 0xbb, 0x16, 0x3f, 0x08, 0xf7, 0x29, 0xb2, 0x99, 0x72, 0x27, 0xc9, 0x6a, 0x2d, - 0x70, 0x09, 0xf0, 0x88, 0x96, 0xaa, 0x94, 0xe4, 0xba, 0x29, 0x8e, 0xd3, 0x48, 0x64, 0x1b, 0xa8, - 0x35, 0xf4, 0x4d, 0x7d, 0x29, 0xca, 0xd5, 0x93, 0x14, 0x17, 0x83, 0x09, 0x49, 0x35, 0x24, 0x24, - 0x56, 0xf5, 0x52, 0xe1, 0xe2, 0xfe, 0xfe, 0xfe, 0x17, 0xdb, 0xfa, 0xbb, 0x6e, 0xfd, 0xe7, 0xd8, - 0x3a, 0x7b, 0x68, 0x4c, 0xfd, 0xe5, 0xfe, 0xde, 0x7a, 0x68, 0x1c, 0x7c, 0x3f, 0x3e, 0xac, 0x95, - 0x06, 0x07, 0x3f, 0x4d, 0x7e, 0xdf, 0xb8, 0xbf, 0x7f, 0x73, 0xf0, 0x4f, 0xca, 0xa8, 0x9f, 0x0e, - 0x7e, 0xdc, 0xdf, 0xbf, 0x59, 0x6f, 0x41, 0x1a, 0x06, 0x38, 0x81, 0x67, 0x2f, 0x08, 0xd5, 0xdc, - 0x4e, 0x32, 0x02, 0x3e, 0x07, 0x3e, 0x07, 0x3e, 0x07, 0x3e, 0x07, 0x3e, 0x07, 0x3e, 0x47, 0xc9, - 0xe7, 0x74, 0xbc, 0x27, 0xc7, 0xb5, 0x1e, 0x6d, 0xd7, 0x15, 0xbe, 0xbc, 0xdf, 0x99, 0x19, 0x05, - 0xdf, 0x03, 0xdf, 0x33, 0x77, 0x5c, 0x21, 0x99, 0x11, 0x2d, 0x49, 0xe5, 0xd1, 0x64, 0xbb, 0xeb, - 0x85, 0x2d, 0x65, 0xd1, 0x9e, 0x1e, 0x04, 0xc9, 0x86, 0x64, 0x6f, 0x4e, 0xb2, 0x37, 0x4b, 0xb3, - 0xae, 0x3b, 0x4f, 0x95, 0xe5, 0x59, 0x57, 0x9c, 0xa0, 0x4a, 0x12, 0xad, 0xbd, 0xbe, 0xc4, 0x1d, - 0x01, 0xd1, 0xa7, 0xb2, 0x71, 0x43, 0x00, 0x48, 0x56, 0x89, 0xcc, 0xae, 0x5e, 0x5f, 0x21, 0xad, - 0xab, 0xd7, 0x47, 0x4e, 0x17, 0x8e, 0xbe, 0xe3, 0x0f, 0x3a, 0x6e, 0x4b, 0x7c, 0x23, 0xb4, 0x14, - 0x8f, 0x86, 0xe1, 0xa8, 0x5b, 0x25, 0x98, 0xc4, 0x51, 0xb7, 0x3a, 0x52, 0x98, 0x8f, 0x95, 0x36, - 0xd5, 0x4f, 0x3c, 0x12, 0x78, 0xb4, 0x14, 0x87, 0x62, 0x6e, 0xb5, 0x62, 0x2a, 0x37, 0x13, 0x7f, - 0xb6, 0xfd, 0xd6, 0x5f, 0xb6, 0x2f, 0x2c, 0xc7, 0x0d, 0x85, 0xef, 0xf7, 0x7b, 0x1a, 0x4d, 0xb9, - 0x16, 0xcc, 0x45, 0x2b, 0xed, 0x2f, 0xe5, 0xac, 0xb4, 0x5f, 0x4d, 0xd0, 0x75, 0x05, 0x9e, 0x4d, - 0xf0, 0xd9, 0x14, 0x80, 0x45, 0x11, 0xd4, 0x14, 0x82, 0xc0, 0x21, 0x93, 0x14, 0x24, 0x19, 0x68, - 0x7f, 0x7d, 0xd2, 0xef, 0x02, 0x3a, 0x9c, 0x04, 0xf7, 0xd7, 0x0f, 0x45, 0x23, 0x7c, 0xe9, 0x89, - 0x00, 0x37, 0xd8, 0x13, 0x94, 0x6a, 0xb4, 0x72, 0x3b, 0x77, 0x87, 0x7d, 0x4f, 0xf8, 0x4d, 0xe1, - 0x86, 0xf6, 0x93, 0x60, 0xe8, 0xad, 0xa0, 0xd3, 0x5a, 0x41, 0xaf, 0xd1, 0xd5, 0xf8, 0x3f, 0xfd, - 0x12, 0x71, 0x96, 0xc6, 0x57, 0x4c, 0xe6, 0x65, 0x6e, 0x3a, 0xa6, 0x46, 0x58, 0xc9, 0x7c, 0x8c, - 0x2d, 0x9a, 0x34, 0x45, 0x7a, 0x76, 0x0b, 0x18, 0x1a, 0x64, 0x99, 0xde, 0x82, 0xd2, 0x71, 0x96, - 0x37, 0x61, 0x6f, 0x33, 0xa3, 0x1b, 0x69, 0xdd, 0xd6, 0x4f, 0x80, 0x85, 0x8e, 0x1b, 0x84, 0xb6, - 0x1b, 0xea, 0xa3, 0x8d, 0xf1, 0x44, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, - 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x0b, 0x10, 0x47, 0x28, 0xfc, 0xaf, 0x76, 0x87, 0x03, 0x72, - 0xc4, 0x33, 0x01, 0x73, 0x00, 0x73, 0x00, 0x73, 0x28, 0xcb, 0x4c, 0x10, 0xda, 0xa1, 0xa5, 0xa9, - 0x44, 0x05, 0xbd, 0x8e, 0xe0, 0xc9, 0x14, 0x4c, 0x9d, 0xc1, 0x01, 0x63, 0x00, 0x63, 0xf2, 0x09, - 0x63, 0xd8, 0x3b, 0x8d, 0x03, 0xd7, 0xa4, 0x8b, 0x6b, 0xba, 0x1a, 0x52, 0x36, 0x49, 0x81, 0xb5, - 0xbf, 0x01, 0xcd, 0x00, 0xcd, 0x00, 0xcd, 0x80, 0x41, 0x01, 0xf4, 0x00, 0xf4, 0x00, 0x83, 0x02, - 0xa4, 0xb1, 0x10, 0x69, 0x58, 0xa1, 0xd3, 0x15, 0x2c, 0x70, 0x63, 0x34, 0x13, 0x30, 0x07, 0x30, - 0x07, 0x30, 0x87, 0xb2, 0xcc, 0xe8, 0xdd, 0xa4, 0x06, 0xfe, 0x04, 0x20, 0x06, 0x20, 0x06, 0xfc, - 0x09, 0x50, 0x4d, 0x84, 0x6a, 0x34, 0x14, 0x7d, 0x02, 0x68, 0x1c, 0x17, 0x58, 0x06, 0x58, 0x06, - 0x58, 0x06, 0xfc, 0x09, 0xa0, 0x07, 0xa0, 0x07, 0xf8, 0x13, 0x20, 0x8d, 0x85, 0x48, 0x83, 0x8b, - 0x3f, 0x19, 0xcf, 0x04, 0xcc, 0x01, 0xcc, 0x01, 0xcc, 0x01, 0xfe, 0x04, 0x20, 0x06, 0x20, 0x06, - 0xfc, 0x09, 0x50, 0x8d, 0x2e, 0xaa, 0x31, 0x5a, 0x96, 0x4c, 0xbc, 0x16, 0x34, 0x19, 0x2f, 0xdd, - 0xc8, 0xaa, 0xd7, 0x0f, 0x86, 0xff, 0x13, 0x77, 0xc5, 0xd0, 0xae, 0xd8, 0x2f, 0x28, 0xf4, 0xbe, - 0xea, 0xf5, 0x83, 0xe1, 0xff, 0x8c, 0xae, 0x5b, 0x78, 0xf8, 0x57, 0xfc, 0xe8, 0xcb, 0xe4, 0xc9, - 0xa6, 0xee, 0x6f, 0x55, 0x68, 0x41, 0xe1, 0xb4, 0x3a, 0x82, 0xde, 0xff, 0x20, 0x1a, 0x8d, 0x8e, - 0x07, 0xe6, 0xc0, 0x24, 0x3a, 0x1e, 0xa0, 0xe3, 0x01, 0x22, 0x31, 0x44, 0x62, 0xbb, 0x11, 0x89, - 0x81, 0xfd, 0x45, 0xe0, 0x84, 0xc0, 0x89, 0x12, 0x38, 0x81, 0xfd, 0xdd, 0x60, 0x9c, 0x84, 0x8e, - 0x07, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x19, - 0x45, 0x1c, 0xe8, 0x78, 0x00, 0xcc, 0x01, 0xcc, 0x81, 0x8e, 0x07, 0xd3, 0x53, 0xe0, 0xc4, 0x19, - 0x30, 0x66, 0xa7, 0x61, 0x0c, 0x4e, 0x9c, 0x73, 0x8e, 0x6b, 0xd0, 0xf1, 0x00, 0x68, 0x06, 0x68, - 0x06, 0x0c, 0x0a, 0xa0, 0x07, 0xa0, 0x07, 0x18, 0x14, 0x20, 0x0d, 0xa3, 0x48, 0x03, 0x1d, 0x0f, - 0x80, 0x39, 0x80, 0x39, 0x90, 0xb1, 0x0f, 0xfe, 0x04, 0x20, 0x06, 0x20, 0x06, 0xfc, 0xc9, 0x36, - 0xa0, 0x1a, 0x74, 0x3c, 0x00, 0x96, 0x01, 0x96, 0x01, 0x7f, 0x02, 0xe8, 0x01, 0xe8, 0x01, 0xfe, - 0x04, 0x48, 0xc3, 0x24, 0xd2, 0x40, 0xc7, 0x03, 0x60, 0x0e, 0x60, 0x0e, 0xf0, 0x27, 0xe0, 0x4f, - 0x00, 0x62, 0x00, 0x62, 0xc0, 0x9f, 0x64, 0x0d, 0xd5, 0x6c, 0x63, 0xc7, 0x03, 0x42, 0x8d, 0x7e, - 0x81, 0xdc, 0xe3, 0xe0, 0x72, 0xf8, 0xb0, 0x2c, 0xb4, 0x35, 0x70, 0x5b, 0xe2, 0x9b, 0x46, 0x5f, - 0x83, 0x68, 0x38, 0xad, 0xb1, 0xc1, 0x31, 0x1a, 0x1b, 0xa4, 0x89, 0x15, 0x77, 0xa9, 0xb1, 0x01, - 0x19, 0x01, 0x26, 0xfb, 0xdd, 0x77, 0x87, 0xe6, 0x87, 0xb0, 0xdd, 0xe3, 0xae, 0x1d, 0x67, 0x84, - 0xb1, 0xf1, 0xd7, 0xa6, 0x61, 0x32, 0x06, 0xb8, 0x2b, 0xdc, 0x7e, 0x57, 0xf8, 0x23, 0xcb, 0xab, - 0x0f, 0x77, 0x4b, 0x15, 0x8d, 0x39, 0x2e, 0xdc, 0x7e, 0x77, 0xb8, 0x83, 0xa9, 0x46, 0x0e, 0x0c, - 0x4b, 0xd8, 0x77, 0xdc, 0xf0, 0xa4, 0xcc, 0xb0, 0x7a, 0xa7, 0x00, 0xf7, 0x00, 0xf7, 0x3b, 0x02, - 0xee, 0x2b, 0xe5, 0xb3, 0xca, 0x59, 0xed, 0xb4, 0x7c, 0x06, 0x48, 0xbf, 0x31, 0x48, 0xdf, 0xc8, - 0x00, 0x18, 0xfd, 0x53, 0xf8, 0xae, 0xe8, 0xd0, 0xd1, 0x68, 0x3c, 0x1e, 0x7d, 0xb6, 0x00, 0x47, - 0x33, 0x05, 0x47, 0xd1, 0x67, 0x0b, 0xfc, 0xbf, 0x11, 0x25, 0x62, 0x57, 0xa6, 0x65, 0x4a, 0x85, - 0x9c, 0x03, 0xe4, 0x1c, 0x00, 0xd1, 0x03, 0xd1, 0xcb, 0x6e, 0x01, 0x72, 0x0e, 0x36, 0x08, 0xe5, - 0xd1, 0x67, 0x0b, 0x88, 0x03, 0x88, 0x03, 0x88, 0x03, 0x88, 0x03, 0x88, 0x03, 0x88, 0x03, 0x88, - 0x23, 0xab, 0x88, 0x03, 0x7d, 0xb6, 0x80, 0x39, 0x80, 0x39, 0xd0, 0x67, 0x6b, 0x7a, 0x0a, 0xe4, - 0x39, 0x02, 0xc6, 0xec, 0x34, 0x8c, 0x41, 0x9e, 0x63, 0xce, 0x71, 0x0d, 0xfa, 0x6c, 0x01, 0xcd, - 0x00, 0xcd, 0x80, 0x41, 0x01, 0xf4, 0x00, 0xf4, 0x00, 0x83, 0x02, 0xa4, 0x61, 0x14, 0x69, 0xa0, - 0xcf, 0x16, 0x30, 0x07, 0x30, 0x07, 0xea, 0x44, 0xc1, 0x9f, 0x00, 0xc4, 0x00, 0xc4, 0x80, 0x3f, - 0xd9, 0x06, 0x54, 0x83, 0x3e, 0x5b, 0xc0, 0x32, 0xc0, 0x32, 0xe0, 0x4f, 0x00, 0x3d, 0x00, 0x3d, - 0xc0, 0x9f, 0x00, 0x69, 0x98, 0x44, 0x1a, 0xe8, 0xb3, 0x05, 0xcc, 0x01, 0xcc, 0x01, 0xfe, 0x04, - 0xfc, 0x09, 0x40, 0x0c, 0x40, 0x0c, 0xf8, 0x93, 0xac, 0xa1, 0x9a, 0x6d, 0xec, 0xb3, 0x45, 0xaa, - 0xd2, 0x2f, 0x90, 0x3b, 0x6d, 0xfd, 0x36, 0x7a, 0x5c, 0x06, 0xda, 0x1b, 0xb8, 0x0e, 0x01, 0xd3, - 0x24, 0x3e, 0x32, 0x1a, 0x8d, 0xd6, 0x06, 0xe6, 0x50, 0x23, 0x5a, 0x1b, 0xa0, 0xb5, 0x01, 0x42, - 0x2e, 0x84, 0x5c, 0xbb, 0x11, 0x72, 0x81, 0xe6, 0x45, 0x84, 0x84, 0x08, 0x89, 0x12, 0x21, 0x81, - 0xe6, 0xdd, 0x60, 0x40, 0x84, 0xd6, 0x06, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, - 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x19, 0x45, 0x1c, 0x68, 0x6d, 0x00, 0xcc, 0x01, 0xcc, 0x81, 0xd6, - 0x06, 0xd3, 0x53, 0xe0, 0x68, 0x19, 0x30, 0x66, 0xa7, 0x61, 0x0c, 0x8e, 0x96, 0x73, 0x8e, 0x6b, - 0xd0, 0xda, 0x00, 0x68, 0x06, 0x68, 0x06, 0x0c, 0x0a, 0xa0, 0x07, 0xa0, 0x07, 0x18, 0x14, 0x20, - 0x0d, 0xa3, 0x48, 0x03, 0xad, 0x0d, 0x80, 0x39, 0x80, 0x39, 0x90, 0x9a, 0x0f, 0xfe, 0x04, 0x20, - 0x06, 0x20, 0x06, 0xfc, 0xc9, 0x36, 0xa0, 0x1a, 0xb4, 0x36, 0x00, 0x96, 0x01, 0x96, 0x01, 0x7f, - 0x02, 0xe8, 0x01, 0xe8, 0x01, 0xfe, 0x04, 0x48, 0xc3, 0x24, 0xd2, 0x40, 0x6b, 0x03, 0x60, 0x0e, - 0x60, 0x0e, 0xf0, 0x27, 0xe0, 0x4f, 0x00, 0x62, 0x00, 0x62, 0xc0, 0x9f, 0x64, 0x0d, 0xd5, 0x6c, - 0x63, 0x6b, 0x03, 0x42, 0x8d, 0x7e, 0x81, 0xdc, 0xd8, 0xe0, 0x6a, 0xf8, 0xb0, 0x0c, 0xb4, 0x35, - 0x08, 0xbc, 0x76, 0xf8, 0x97, 0xed, 0x8b, 0x51, 0x9e, 0xa5, 0xdf, 0xef, 0x85, 0xf4, 0x26, 0x07, - 0x0b, 0xe6, 0x42, 0xcb, 0x03, 0x73, 0x68, 0x12, 0x2d, 0x0f, 0xd0, 0xf2, 0x00, 0xa1, 0x18, 0x42, - 0xb1, 0xdd, 0x08, 0xc5, 0x40, 0xff, 0x22, 0x72, 0x42, 0xe4, 0x44, 0x89, 0x9c, 0x40, 0xff, 0x6e, - 0x30, 0x50, 0x42, 0xcb, 0x03, 0x20, 0x0e, 0x20, 0x0e, 0x20, 0x0e, 0x20, 0x0e, 0x20, 0x0e, 0x20, - 0x0e, 0x20, 0x8e, 0x8c, 0x22, 0x0e, 0xb4, 0x3c, 0x00, 0xe6, 0x00, 0xe6, 0x40, 0xcb, 0x83, 0xe9, - 0x29, 0x70, 0xe4, 0x0c, 0x18, 0xb3, 0xd3, 0x30, 0x06, 0x47, 0xce, 0x39, 0xc7, 0x35, 0x68, 0x79, - 0x00, 0x34, 0x03, 0x34, 0x03, 0x06, 0x05, 0xd0, 0x03, 0xd0, 0x03, 0x0c, 0x0a, 0x90, 0x86, 0x51, - 0xa4, 0x81, 0x96, 0x07, 0xc0, 0x1c, 0xc0, 0x1c, 0x48, 0xd9, 0x07, 0x7f, 0x02, 0x10, 0x03, 0x10, - 0x03, 0xfe, 0x64, 0x1b, 0x50, 0x0d, 0x5a, 0x1e, 0x00, 0xcb, 0x00, 0xcb, 0x80, 0x3f, 0x01, 0xf4, - 0x00, 0xf4, 0x00, 0x7f, 0x02, 0xa4, 0x61, 0x12, 0x69, 0xa0, 0xe5, 0x01, 0x30, 0x07, 0x30, 0x07, - 0xf8, 0x13, 0xf0, 0x27, 0x00, 0x31, 0x00, 0x31, 0xe0, 0x4f, 0xb2, 0x86, 0x6a, 0xb6, 0xb1, 0xe5, - 0x81, 0x76, 0xc5, 0x7e, 0x81, 0xdc, 0x00, 0xe1, 0x36, 0x7e, 0xf4, 0x65, 0xf2, 0xe4, 0x0c, 0x74, - 0x43, 0x08, 0xbd, 0x90, 0x90, 0x05, 0x3d, 0xf1, 0x9d, 0xd1, 0x70, 0xf4, 0x3c, 0x30, 0x07, 0x27, - 0xd1, 0xf3, 0x00, 0x3d, 0x0f, 0x10, 0x8b, 0x21, 0x16, 0xdb, 0x8d, 0x58, 0x0c, 0xfc, 0x2f, 0x42, - 0x27, 0x84, 0x4e, 0x94, 0xd0, 0x09, 0xfc, 0xef, 0x06, 0x23, 0x25, 0xf4, 0x3c, 0x00, 0xe2, 0x00, - 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0xc8, 0x28, 0xe2, 0x40, 0xcf, - 0x03, 0x60, 0x0e, 0x60, 0x0e, 0xf4, 0x3c, 0x98, 0x9e, 0x02, 0x67, 0xce, 0x80, 0x31, 0x3b, 0x0d, - 0x63, 0x70, 0xe6, 0x9c, 0x73, 0x5c, 0x83, 0x9e, 0x07, 0x40, 0x33, 0x40, 0x33, 0x60, 0x50, 0x00, - 0x3d, 0x00, 0x3d, 0xc0, 0xa0, 0x00, 0x69, 0x18, 0x45, 0x1a, 0xe8, 0x79, 0x00, 0xcc, 0x01, 0xcc, - 0x81, 0x9c, 0x7d, 0xf0, 0x27, 0x00, 0x31, 0x00, 0x31, 0xe0, 0x4f, 0xb6, 0x01, 0xd5, 0xa0, 0xe7, - 0x01, 0xb0, 0x0c, 0xb0, 0x0c, 0xf8, 0x13, 0x40, 0x0f, 0x40, 0x0f, 0xf0, 0x27, 0x40, 0x1a, 0x26, - 0x91, 0x06, 0x7a, 0x1e, 0x00, 0x73, 0x00, 0x73, 0x80, 0x3f, 0x01, 0x7f, 0x02, 0x10, 0x03, 0x10, - 0x03, 0xfe, 0x24, 0x6b, 0xa8, 0x66, 0x1b, 0x7b, 0x1e, 0x50, 0x8a, 0xf4, 0x0b, 0xe4, 0x36, 0x07, - 0x77, 0xd1, 0xd3, 0x32, 0xd0, 0xda, 0xa0, 0x1f, 0x08, 0x9f, 0xde, 0xd9, 0x20, 0x1a, 0x8d, 0xc6, - 0x06, 0xe6, 0x30, 0x23, 0x1a, 0x1b, 0xa0, 0xb1, 0x01, 0x02, 0x2e, 0x04, 0x5c, 0xbb, 0x11, 0x70, - 0x81, 0xe4, 0x45, 0x7c, 0x84, 0xf8, 0x88, 0x12, 0x1f, 0x81, 0xe4, 0xdd, 0x60, 0x38, 0x84, 0xc6, - 0x06, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x40, 0x1c, 0x19, - 0x45, 0x1c, 0x68, 0x6c, 0x00, 0xcc, 0x01, 0xcc, 0x81, 0xc6, 0x06, 0xd3, 0x53, 0xe0, 0x60, 0x19, - 0x30, 0x66, 0xa7, 0x61, 0x0c, 0x0e, 0x96, 0x73, 0x8e, 0x6b, 0xd0, 0xd8, 0x00, 0x68, 0x06, 0x68, - 0x06, 0x0c, 0x0a, 0xa0, 0x07, 0xa0, 0x07, 0x18, 0x14, 0x20, 0x0d, 0xa3, 0x48, 0x03, 0x8d, 0x0d, - 0x80, 0x39, 0x80, 0x39, 0x90, 0x98, 0x0f, 0xfe, 0x04, 0x20, 0x06, 0x20, 0x06, 0xfc, 0xc9, 0x36, - 0xa0, 0x1a, 0x34, 0x36, 0x00, 0x96, 0x01, 0x96, 0x01, 0x7f, 0x02, 0xe8, 0x01, 0xe8, 0x01, 0xfe, - 0x04, 0x48, 0xc3, 0x24, 0xd2, 0x40, 0x63, 0x03, 0x60, 0x0e, 0x60, 0x0e, 0xf0, 0x27, 0xe0, 0x4f, - 0x00, 0x62, 0x00, 0x62, 0xc0, 0x9f, 0x64, 0x0d, 0xd5, 0x6c, 0x63, 0x63, 0x03, 0x42, 0x8d, 0x7e, - 0x81, 0xdc, 0xd7, 0xe0, 0xf3, 0xf0, 0x61, 0x19, 0x68, 0x6b, 0xf0, 0x97, 0xed, 0x84, 0xf4, 0xb6, - 0x06, 0xd1, 0x68, 0xb4, 0x35, 0x30, 0x87, 0x18, 0xd1, 0xd6, 0x00, 0x6d, 0x0d, 0x10, 0x6e, 0x21, - 0xdc, 0xda, 0x8d, 0x70, 0x0b, 0x14, 0x2f, 0xa2, 0x23, 0x44, 0x47, 0x94, 0xe8, 0x08, 0x14, 0xef, - 0x06, 0x83, 0x21, 0xb4, 0x35, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, 0xe2, 0x00, - 0xe2, 0x00, 0xe2, 0xc8, 0x28, 0xe2, 0x40, 0x5b, 0x03, 0x60, 0x0e, 0x60, 0x0e, 0xb4, 0x35, 0x98, - 0x9e, 0x02, 0xc7, 0xca, 0x80, 0x31, 0x3b, 0x0d, 0x63, 0x70, 0xac, 0x9c, 0x73, 0x5c, 0x83, 0xb6, - 0x06, 0x40, 0x33, 0x40, 0x33, 0x60, 0x50, 0x00, 0x3d, 0x00, 0x3d, 0xc0, 0xa0, 0x00, 0x69, 0x18, - 0x45, 0x1a, 0x68, 0x6b, 0x00, 0xcc, 0x01, 0xcc, 0x81, 0xb4, 0x7c, 0xf0, 0x27, 0x00, 0x31, 0x00, - 0x31, 0xe0, 0x4f, 0xb6, 0x01, 0xd5, 0xa0, 0xad, 0x01, 0xb0, 0x0c, 0xb0, 0x0c, 0xf8, 0x13, 0x40, - 0x0f, 0x40, 0x0f, 0xf0, 0x27, 0x40, 0x1a, 0x26, 0x91, 0x06, 0xda, 0x1a, 0x00, 0x73, 0x00, 0x73, - 0x80, 0x3f, 0x01, 0x7f, 0x02, 0x10, 0x03, 0x10, 0x03, 0xfe, 0x24, 0x6b, 0xa8, 0x66, 0x1b, 0xdb, - 0x1a, 0x10, 0x6a, 0xf4, 0x0b, 0xe4, 0xb6, 0x06, 0xff, 0x1e, 0x3e, 0xcc, 0x54, 0x5b, 0x83, 0x3d, - 0xc6, 0x5d, 0xa1, 0xee, 0x06, 0x71, 0x17, 0x14, 0x36, 0x80, 0xb4, 0xf0, 0x72, 0x6b, 0xbe, 0x7e, - 0x05, 0x57, 0x7f, 0x62, 0xcd, 0xda, 0x0e, 0xf1, 0xdf, 0x28, 0x41, 0xbc, 0x25, 0xd6, 0x41, 0xbf, - 0xe2, 0x07, 0x27, 0x08, 0xeb, 0x61, 0x28, 0x57, 0xa9, 0x3f, 0x74, 0xa7, 0x17, 0x1d, 0x31, 0x44, - 0x6e, 0x43, 0x4b, 0xe6, 0xf6, 0x3b, 0x9d, 0xc3, 0x3d, 0x19, 0x07, 0xa0, 0x3e, 0xe8, 0xda, 0x6f, - 0x09, 0x5f, 0xb4, 0x7e, 0x7e, 0x89, 0x87, 0x68, 0x2d, 0x88, 0xa2, 0x90, 0x29, 0x0b, 0x97, 0x84, - 0x58, 0x29, 0x8a, 0xd3, 0x6a, 0x41, 0x5a, 0x2e, 0x1e, 0x8b, 0xff, 0x65, 0xc9, 0xfa, 0xc8, 0xae, - 0x8b, 0xd2, 0x7a, 0xac, 0x58, 0x0b, 0x85, 0x35, 0x58, 0xfc, 0xfe, 0xf3, 0x6f, 0xb7, 0xe0, 0xcd, - 0x8a, 0x2d, 0x37, 0x58, 0xfa, 0x3a, 0x09, 0xf6, 0x1e, 0x7e, 0x68, 0xc9, 0xaa, 0xac, 0xee, 0x8c, - 0xb2, 0x36, 0xec, 0x94, 0x09, 0x2b, 0xe5, 0x3b, 0x9a, 0xc8, 0x06, 0x85, 0xca, 0x41, 0x9f, 0x72, - 0x50, 0xa7, 0xd4, 0x71, 0x44, 0x4d, 0x0e, 0xd7, 0x75, 0x0a, 0x29, 0x36, 0xc7, 0x6b, 0xbe, 0x66, - 0x11, 0xc6, 0xcb, 0x1a, 0x7f, 0x7e, 0x9d, 0x9d, 0x94, 0x6a, 0x81, 0x23, 0xcd, 0x33, 0xa8, 0xf0, - 0x09, 0xea, 0x2d, 0x6d, 0x54, 0xd9, 0x01, 0x32, 0x0b, 0x40, 0x8e, 0xf6, 0x49, 0x2d, 0x69, 0xf4, - 0x3c, 0x9d, 0x6c, 0x8b, 0x99, 0x62, 0x20, 0x6c, 0xbf, 0xf9, 0x2c, 0xbf, 0x78, 0x49, 0x91, 0xc8, - 0x68, 0x9c, 0xe4, 0x02, 0xa8, 0x45, 0x27, 0xca, 0x04, 0x16, 0x85, 0xb0, 0xa2, 0xf7, 0x4e, 0xa2, - 0xd2, 0x51, 0xda, 0xf4, 0x93, 0x36, 0xdd, 0xa4, 0xd5, 0x1b, 0x89, 0x17, 0xde, 0x2a, 0x93, 0x45, - 0x13, 0x07, 0xe5, 0x75, 0x6d, 0xc7, 0xb5, 0x22, 0x67, 0xa9, 0xb0, 0x69, 0x63, 0x9b, 0xa6, 0xc0, - 0x06, 0x15, 0x3f, 0x08, 0xf7, 0x29, 0x72, 0xed, 0x6a, 0x74, 0x0d, 0x21, 0x76, 0xd2, 0xa1, 0x63, - 0x74, 0xe9, 0xe2, 0x24, 0xd6, 0x27, 0x8e, 0x67, 0x08, 0xe4, 0x29, 0x74, 0xbd, 0x0e, 0x7d, 0xc2, - 0xb5, 0x64, 0xe5, 0xea, 0xc9, 0x06, 0x17, 0xcd, 0x50, 0x1c, 0xdb, 0x50, 0xd0, 0x90, 0x4f, 0x76, - 0x18, 0x0a, 0xdf, 0x55, 0x56, 0x91, 0xe2, 0xfe, 0xfe, 0xfe, 0x17, 0xdb, 0xfa, 0xbb, 0x6e, 0xfd, - 0xe7, 0xd8, 0x3a, 0x7b, 0x68, 0x4c, 0xfd, 0xe5, 0xfe, 0xde, 0x7a, 0x68, 0x1c, 0x7c, 0x3f, 0x3e, - 0xac, 0x95, 0x06, 0x07, 0x3f, 0x4d, 0x7e, 0xdf, 0xb8, 0xbf, 0x7f, 0x73, 0xf0, 0x4f, 0xca, 0xa8, - 0x9f, 0x0e, 0x7e, 0xdc, 0xdf, 0xbf, 0x91, 0xb7, 0x74, 0x0d, 0x56, 0x4b, 0xa7, 0x14, 0x48, 0x6a, - 0x05, 0x94, 0x5a, 0x81, 0xe5, 0xc2, 0x00, 0x93, 0xd8, 0x76, 0x91, 0xd0, 0xa9, 0x52, 0xe7, 0x8c, - 0x67, 0xda, 0xb1, 0x7a, 0xa3, 0x6f, 0x6f, 0x3d, 0xbe, 0x50, 0x38, 0x25, 0x8e, 0xf3, 0x9c, 0x19, - 0x27, 0xdb, 0x37, 0xd9, 0x46, 0x33, 0x13, 0x9c, 0x8a, 0x29, 0x0a, 0xa1, 0xe5, 0x06, 0x47, 0x52, - 0xd1, 0x8a, 0x42, 0x00, 0xfd, 0xde, 0x0d, 0x1e, 0x62, 0x6c, 0x49, 0xa5, 0x11, 0x56, 0x04, 0xa4, - 0xcf, 0x5e, 0x10, 0x5a, 0xc2, 0x0d, 0x7d, 0x47, 0x04, 0xf2, 0x11, 0xd9, 0xcc, 0x28, 0xc4, 0x65, - 0x88, 0xcb, 0x5e, 0x09, 0xd3, 0x8b, 0x7a, 0x6c, 0x36, 0x35, 0x56, 0x2d, 0x3e, 0x2b, 0x21, 0x3e, - 0x43, 0x7c, 0xa6, 0x26, 0xa8, 0xaa, 0x4c, 0x94, 0x1e, 0x33, 0xa5, 0x29, 0xb8, 0x64, 0x01, 0xd6, - 0x11, 0x64, 0x7d, 0x81, 0xe6, 0xc0, 0x48, 0x05, 0x34, 0x6b, 0x26, 0x85, 0x9a, 0x1a, 0xcd, 0x9a, - 0x3b, 0x8e, 0x1d, 0x30, 0xb4, 0x6b, 0x8e, 0xa6, 0x41, 0x22, 0x19, 0x5d, 0x6d, 0xb8, 0xd4, 0x87, - 0x5d, 0x8d, 0xd8, 0xd5, 0x89, 0x55, 0xad, 0x68, 0xea, 0xa5, 0xc1, 0xe8, 0x14, 0xb8, 0xdb, 0x18, - 0xf9, 0x8e, 0xfb, 0xc4, 0x90, 0x3f, 0x56, 0x7a, 0x9b, 0xea, 0x0a, 0x90, 0xf8, 0x02, 0x56, 0xfe, - 0x80, 0x95, 0x4f, 0x58, 0xc9, 0x2f, 0xac, 0x3d, 0xc0, 0xe6, 0x13, 0x4a, 0x0a, 0xc5, 0x38, 0x04, - 0xd2, 0x71, 0x4c, 0xa9, 0x69, 0xc5, 0x93, 0x99, 0x60, 0xc8, 0x61, 0xc8, 0x61, 0xc8, 0xf3, 0x65, - 0xc8, 0xd3, 0xe9, 0x7f, 0xd9, 0xfb, 0x5a, 0xb1, 0xec, 0x56, 0xcb, 0x17, 0x01, 0x03, 0x6a, 0x9c, - 0x99, 0x0d, 0x36, 0x07, 0x36, 0x07, 0x36, 0x27, 0x6d, 0xfd, 0x29, 0x10, 0x4f, 0x9d, 0xe7, 0xf5, - 0x80, 0x78, 0xc6, 0x36, 0x37, 0xd1, 0x7f, 0xf7, 0xf7, 0xbf, 0x1c, 0x5b, 0x67, 0x8d, 0x1f, 0x5f, - 0x4a, 0xd6, 0x59, 0x63, 0xf4, 0x63, 0x29, 0xfa, 0x63, 0xf4, 0x73, 0xf9, 0xcb, 0xb1, 0x55, 0x19, - 0xff, 0x5c, 0xfd, 0x72, 0x6c, 0x55, 0x1b, 0x07, 0xf7, 0xf7, 0x6f, 0x0e, 0xbe, 0x9f, 0x0c, 0xd4, - 0x07, 0xfe, 0xa3, 0x98, 0x76, 0x3a, 0x35, 0xf0, 0x76, 0xde, 0xf1, 0xb6, 0xd3, 0xfb, 0x5a, 0x63, - 0xf5, 0x81, 0x35, 0xf8, 0x40, 0xf8, 0x40, 0xf8, 0xc0, 0x8d, 0xe9, 0x4f, 0x66, 0x7d, 0xa0, 0x6d, - 0xb5, 0xeb, 0xd6, 0x2f, 0x8d, 0xef, 0xa5, 0xc3, 0xca, 0xe0, 0xdd, 0xc1, 0xf7, 0xd3, 0xc1, 0xeb, - 0x5f, 0xfe, 0x58, 0xf4, 0xb1, 0xd2, 0xe1, 0xe9, 0xe0, 0xdd, 0x92, 0x7f, 0xa9, 0x0d, 0xde, 0x49, - 0xce, 0x51, 0x1d, 0xec, 0xcf, 0x7d, 0x74, 0xf8, 0xfb, 0xf2, 0xb2, 0x01, 0x95, 0x25, 0x03, 0x4e, - 0x96, 0x0d, 0x38, 0x59, 0x32, 0x60, 0xe9, 0x57, 0x2a, 0x2f, 0x19, 0x50, 0x1d, 0xfc, 0x98, 0xfb, - 0xfc, 0xfe, 0xe2, 0x8f, 0xd6, 0x06, 0x07, 0x3f, 0x96, 0xfd, 0xdb, 0xe9, 0xe0, 0xc7, 0xbb, 0x03, - 0x20, 0x82, 0x5d, 0x47, 0x04, 0x5b, 0x51, 0xbd, 0xd6, 0x72, 0x83, 0xa3, 0xe9, 0x9c, 0x8d, 0xc9, - 0x5f, 0x5e, 0x8e, 0x48, 0x67, 0x98, 0x05, 0xb5, 0xfc, 0x95, 0x7f, 0x79, 0x41, 0x78, 0x31, 0x7a, - 0x74, 0xf2, 0xf3, 0x8b, 0x54, 0x56, 0x0b, 0x7d, 0x3f, 0x54, 0x2e, 0xec, 0x25, 0x73, 0xa6, 0xba, - 0x5c, 0x29, 0x11, 0xab, 0xe1, 0x2c, 0x18, 0x67, 0xc1, 0xc6, 0xb1, 0x55, 0xb2, 0xdf, 0x1d, 0x61, - 0xb7, 0x7d, 0xd1, 0xa6, 0x6c, 0xf8, 0x18, 0x46, 0x9d, 0x12, 0xc6, 0x7e, 0x8a, 0xcd, 0xda, 0x9b, - 0x37, 0xb1, 0x8d, 0x3a, 0x4a, 0x94, 0x2c, 0x03, 0x26, 0x63, 0x54, 0x81, 0x4a, 0xb6, 0x17, 0xaa, - 0x05, 0xac, 0x05, 0x8e, 0xc4, 0x91, 0x32, 0x8c, 0x05, 0x8c, 0xc5, 0xca, 0x6f, 0x88, 0xc4, 0x11, - 0xf0, 0x1e, 0xe0, 0x3d, 0x72, 0xc8, 0x7b, 0x20, 0x71, 0x04, 0x61, 0xab, 0x26, 0x91, 0x8d, 0xc4, - 0x11, 0x18, 0x72, 0x18, 0x72, 0x24, 0x8e, 0xa4, 0x61, 0x6b, 0x90, 0x38, 0x02, 0x9b, 0x03, 0x9b, - 0x93, 0x15, 0x9b, 0x83, 0xc4, 0x11, 0x24, 0x8e, 0x00, 0x6f, 0x6f, 0xc0, 0x07, 0x22, 0x71, 0x04, - 0x3e, 0x10, 0x3e, 0x10, 0x89, 0x23, 0x86, 0x7d, 0x20, 0x12, 0x47, 0x90, 0x38, 0x02, 0x44, 0x80, - 0xc4, 0x91, 0xc9, 0x78, 0x8e, 0xc4, 0x11, 0xca, 0x11, 0x66, 0x81, 0x23, 0x6f, 0x44, 0xa1, 0x39, - 0xaf, 0xfa, 0x6e, 0xf0, 0x76, 0x24, 0x88, 0x9b, 0xf7, 0x2a, 0x12, 0xa2, 0xb9, 0x6e, 0xbf, 0x24, - 0xad, 0x63, 0x59, 0x69, 0x2a, 0xbd, 0x42, 0xc6, 0xf9, 0x3b, 0x4c, 0x2f, 0x95, 0xea, 0xe2, 0xd6, - 0x37, 0x46, 0x52, 0x68, 0x1a, 0x44, 0x5f, 0x50, 0x13, 0x3d, 0x92, 0x02, 0xe1, 0x7f, 0x15, 0xbe, - 0x42, 0x7b, 0xa4, 0xf1, 0x00, 0x74, 0x46, 0x42, 0x67, 0xa4, 0x69, 0x11, 0xa2, 0x74, 0xac, 0x8d, - 0xc6, 0xa1, 0x23, 0x52, 0x8a, 0xf1, 0xf6, 0x4e, 0x77, 0x44, 0xa2, 0xf2, 0x51, 0x93, 0x0c, 0x1e, - 0x52, 0x08, 0x8d, 0x3c, 0xd8, 0x8d, 0x50, 0x4a, 0xc8, 0x83, 0x55, 0xd9, 0xef, 0xcc, 0xe4, 0xc1, - 0x8e, 0x75, 0x2c, 0x03, 0x69, 0xb0, 0xe8, 0xa0, 0x06, 0x6b, 0xb1, 0x8d, 0xd6, 0x82, 0x9e, 0x08, - 0xcb, 0x75, 0xa0, 0x83, 0xb3, 0x1c, 0x9c, 0xe5, 0x6c, 0x48, 0xb5, 0xe8, 0xac, 0x67, 0x21, 0x23, - 0x67, 0x39, 0x9c, 0x27, 0x39, 0x67, 0x1a, 0x73, 0xc4, 0xef, 0xb4, 0xf1, 0x9b, 0x33, 0x99, 0x33, - 0x3d, 0xe6, 0xd6, 0xe8, 0x2d, 0xc3, 0x5c, 0x5c, 0xa7, 0x5e, 0xc9, 0x84, 0x79, 0xc9, 0x00, 0x19, - 0xff, 0xd7, 0xd0, 0xbb, 0x09, 0xf2, 0x30, 0x43, 0x42, 0x56, 0xdb, 0x35, 0x21, 0xc3, 0x11, 0x6b, - 0xae, 0x8e, 0x58, 0x99, 0x54, 0x6e, 0x2b, 0xaf, 0x94, 0xef, 0x79, 0x7e, 0xa8, 0x0f, 0x5f, 0xa3, - 0x59, 0x88, 0x48, 0xe0, 0xbd, 0x68, 0xdb, 0xfd, 0x4e, 0x04, 0x61, 0xaa, 0x27, 0x00, 0xc0, 0x00, - 0xc0, 0x00, 0xc0, 0xea, 0xca, 0x67, 0xb9, 0xfd, 0xee, 0xa3, 0xf2, 0x95, 0x36, 0x8b, 0x54, 0xa8, - 0x86, 0xbb, 0xe3, 0x59, 0x6d, 0xcb, 0xdc, 0x74, 0xb8, 0x3b, 0x3e, 0x33, 0x5b, 0x50, 0xab, 0x56, - 0x4f, 0x70, 0x59, 0xfc, 0xe6, 0xf0, 0xca, 0xd6, 0x64, 0x4d, 0xc5, 0x39, 0x00, 0xf1, 0x9f, 0xa9, - 0x74, 0xd9, 0xb9, 0x1d, 0x3d, 0x32, 0xfe, 0x33, 0x43, 0xed, 0x75, 0xd0, 0x2b, 0xc3, 0x30, 0xcc, - 0xc3, 0x11, 0xc1, 0x06, 0xac, 0x09, 0x8e, 0x08, 0x10, 0x21, 0x21, 0x42, 0xc2, 0x11, 0x01, 0x8e, - 0x08, 0x72, 0xcf, 0xde, 0xe2, 0x88, 0x20, 0x7d, 0x21, 0xc3, 0x11, 0x01, 0x8e, 0x08, 0x70, 0x44, - 0x90, 0x81, 0x90, 0x1b, 0x47, 0x04, 0x00, 0xc0, 0x00, 0xc0, 0xbb, 0x06, 0x80, 0x71, 0x44, 0x30, - 0xcf, 0x4f, 0xe3, 0x88, 0x60, 0x83, 0xe8, 0xb2, 0x80, 0x23, 0x02, 0x1c, 0x11, 0x6c, 0x9c, 0xd4, - 0xdb, 0xe0, 0x11, 0x41, 0x0a, 0xf5, 0xd4, 0xaf, 0x4e, 0x08, 0xf2, 0x57, 0x48, 0xad, 0x16, 0x32, - 0xe6, 0xba, 0x8e, 0x9a, 0x78, 0x58, 0xd2, 0x0f, 0x94, 0x1d, 0xba, 0x0e, 0xf2, 0x9b, 0x46, 0x7b, - 0xde, 0xe8, 0xdb, 0x5b, 0x8f, 0x2f, 0x14, 0x29, 0xe6, 0x40, 0x79, 0x33, 0xc8, 0x2e, 0x5a, 0x89, - 0x5c, 0x08, 0x77, 0x1a, 0x15, 0xee, 0xb3, 0xc6, 0xc6, 0x4c, 0x61, 0xfb, 0xac, 0x79, 0xd9, 0xfe, - 0x8a, 0x76, 0xb9, 0x3a, 0x6f, 0xda, 0x22, 0x1a, 0x29, 0x64, 0x97, 0x3a, 0x87, 0x55, 0x3a, 0x77, - 0x55, 0x2e, 0x62, 0x2f, 0xa3, 0x88, 0x9d, 0x3d, 0x36, 0x4d, 0xad, 0x88, 0xdd, 0xf6, 0x9b, 0xcf, - 0x94, 0x22, 0xf6, 0x68, 0x9c, 0x5a, 0x11, 0xfb, 0x31, 0x8a, 0xd8, 0x51, 0xc4, 0x4e, 0x24, 0x3d, - 0x92, 0xfd, 0x6a, 0x79, 0x5d, 0xdb, 0x71, 0x2d, 0xc5, 0x5e, 0xe4, 0x94, 0xd3, 0x84, 0xe2, 0x07, - 0xe1, 0x3e, 0x45, 0x3e, 0x43, 0x8d, 0xc6, 0x20, 0x20, 0x2e, 0x1d, 0x9a, 0x42, 0x97, 0xf2, 0x1c, - 0xc7, 0xc0, 0x25, 0xe2, 0x78, 0x86, 0x78, 0x97, 0xc2, 0x57, 0xeb, 0xd0, 0x0a, 0x5c, 0x4b, 0x56, - 0xae, 0x9e, 0x6c, 0x70, 0xd1, 0x0c, 0xe1, 0xe0, 0x86, 0x82, 0x86, 0x50, 0xcf, 0xd5, 0x8a, 0xfb, - 0xfb, 0xfb, 0x5f, 0x6c, 0xeb, 0xef, 0xba, 0xf5, 0x9f, 0x63, 0xeb, 0xec, 0xa1, 0x31, 0xf5, 0x97, - 0xfb, 0x7b, 0xeb, 0xa1, 0x71, 0xf0, 0xfd, 0xf8, 0xb0, 0x56, 0x1a, 0x1c, 0xfc, 0x34, 0xf9, 0x7d, - 0xe3, 0xfe, 0xfe, 0xcd, 0xc1, 0x3f, 0x29, 0xa3, 0x7e, 0x3a, 0xf8, 0x71, 0x7f, 0xff, 0x46, 0xde, - 0xd2, 0x35, 0x58, 0x2d, 0x1d, 0xe2, 0x55, 0xc4, 0xab, 0x9b, 0x8c, 0x57, 0xf3, 0x1c, 0x8b, 0x49, - 0xb2, 0x67, 0x2a, 0x91, 0xd8, 0x7a, 0x7a, 0x6c, 0x45, 0x1c, 0xb6, 0xa7, 0xb0, 0x42, 0xb2, 0x2b, - 0xa3, 0xb2, 0x22, 0xc5, 0x95, 0x81, 0xa0, 0xe4, 0x1a, 0x2c, 0x7e, 0xfb, 0xf9, 0x77, 0x5b, 0xf0, - 0x5e, 0xc5, 0x27, 0xbf, 0xd7, 0xb4, 0xd6, 0x34, 0xbe, 0x4a, 0xcc, 0xc0, 0xf4, 0x87, 0x97, 0xac, - 0xd1, 0xea, 0x48, 0x73, 0x6d, 0x20, 0x20, 0x03, 0xfc, 0x5f, 0x01, 0x7d, 0xab, 0xfb, 0xd4, 0x5d, - 0x75, 0x42, 0x2d, 0x6b, 0x88, 0x94, 0xd1, 0xbc, 0xb2, 0x71, 0x59, 0x80, 0xd6, 0x47, 0x5f, 0x9e, - 0x49, 0x3e, 0xd7, 0xc5, 0x88, 0xb2, 0x7d, 0x60, 0xd4, 0xfa, 0xbe, 0x64, 0xa8, 0x43, 0xde, 0x3a, - 0x51, 0xc8, 0x35, 0xc3, 0xb0, 0x46, 0x54, 0x52, 0xa6, 0x19, 0x9a, 0xc2, 0x0f, 0x9d, 0xb6, 0xd3, - 0xb4, 0x43, 0x61, 0x39, 0x2d, 0x75, 0xba, 0xe1, 0xd5, 0xf8, 0xad, 0xa1, 0x1d, 0x64, 0x45, 0x70, - 0x2b, 0xb9, 0x07, 0x49, 0x11, 0xcd, 0x1a, 0x01, 0xa1, 0x7c, 0x9b, 0x93, 0xe2, 0xed, 0x4d, 0x12, - 0x88, 0x4d, 0xc2, 0x66, 0x09, 0xd7, 0x7e, 0xec, 0x08, 0x75, 0x4d, 0x8b, 0xc7, 0xc9, 0xf6, 0x22, - 0x9c, 0xa4, 0x6c, 0x0d, 0x45, 0x02, 0x8a, 0x09, 0xc5, 0xdc, 0x9c, 0x62, 0x3e, 0x7a, 0x5e, 0x47, - 0xd8, 0x2e, 0x45, 0x33, 0x4b, 0x29, 0x6a, 0x66, 0xc7, 0x09, 0x42, 0xe1, 0x8e, 0x33, 0xa5, 0x45, - 0xa0, 0xae, 0xa3, 0x73, 0x33, 0x40, 0xed, 0xa0, 0x76, 0x1b, 0x53, 0xbb, 0xbe, 0x3b, 0x0c, 0x71, - 0x09, 0x4a, 0xa7, 0x50, 0x61, 0x43, 0xab, 0xa8, 0xd1, 0x28, 0xdb, 0xd4, 0xaa, 0x25, 0xd2, 0xa9, - 0x21, 0xd2, 0xab, 0x1d, 0xc2, 0xc5, 0x71, 0x8b, 0x27, 0xc2, 0xc5, 0x71, 0xc6, 0x84, 0x05, 0x37, - 0x2c, 0xa1, 0xb6, 0x27, 0xc7, 0x37, 0x2c, 0xed, 0x99, 0x7d, 0x8e, 0xa2, 0x6a, 0x6a, 0x78, 0x2c, - 0xe1, 0xf6, 0xbb, 0xc2, 0x1f, 0xf1, 0xcd, 0x1a, 0x2e, 0xab, 0x42, 0x18, 0x7b, 0xe1, 0xf6, 0xbb, - 0x43, 0xec, 0x60, 0xec, 0x44, 0x12, 0x07, 0x72, 0xca, 0x17, 0xf1, 0xb0, 0x84, 0x2a, 0x5d, 0x11, - 0xda, 0x2d, 0x3b, 0xb4, 0x2d, 0xbb, 0x1f, 0x3e, 0x0b, 0x37, 0x74, 0x9a, 0x6a, 0x19, 0x8d, 0x89, - 0x70, 0x2e, 0x9b, 0x48, 0x9d, 0x66, 0x68, 0xdb, 0x9d, 0x00, 0x3c, 0x03, 0x02, 0x1e, 0xf0, 0x0c, - 0xeb, 0x9e, 0xa9, 0x54, 0xd0, 0x49, 0x29, 0xe0, 0x9c, 0x56, 0xcb, 0xb3, 0x93, 0x93, 0x33, 0x68, - 0x25, 0xb4, 0x72, 0x73, 0x5a, 0x49, 0x2b, 0x7e, 0x24, 0x14, 0x3b, 0x12, 0x8b, 0x1b, 0x73, 0x9a, - 0x15, 0x78, 0x8c, 0xac, 0x40, 0xd5, 0x25, 0xd3, 0x28, 0x26, 0xcc, 0x74, 0x5e, 0x60, 0x8a, 0xbe, - 0x2b, 0xf4, 0x6d, 0x37, 0x88, 0x34, 0x3a, 0x10, 0xcd, 0xbe, 0xef, 0x84, 0x2f, 0xea, 0x9e, 0x6c, - 0xc1, 0x1c, 0x38, 0xd5, 0x82, 0x5f, 0x03, 0xda, 0x54, 0xd7, 0xd8, 0x4c, 0x66, 0x08, 0x4e, 0xa5, - 0x97, 0xc9, 0xb7, 0xe2, 0x94, 0x4c, 0x93, 0xfb, 0xd5, 0xef, 0x35, 0x15, 0x5a, 0x6e, 0xa2, 0x74, - 0x0b, 0xd9, 0x55, 0xfc, 0x8a, 0x83, 0xec, 0x2a, 0xb8, 0xbb, 0x9d, 0x73, 0x77, 0xc8, 0xae, 0x02, - 0x0e, 0x85, 0x62, 0x02, 0x87, 0x52, 0x35, 0x13, 0xd9, 0x55, 0x50, 0x3b, 0x64, 0x57, 0x21, 0xbb, - 0x8a, 0xf3, 0x4d, 0xe9, 0x6f, 0xbc, 0xe0, 0xcd, 0x91, 0x5d, 0x85, 0xec, 0x2a, 0x79, 0x61, 0x41, - 0x76, 0x15, 0xb2, 0xab, 0x90, 0x5d, 0xc5, 0xa4, 0x9a, 0xc8, 0xae, 0xa2, 0x2f, 0x39, 0xb2, 0xab, - 0xd8, 0x43, 0x15, 0x64, 0x57, 0x21, 0xe0, 0x41, 0xc0, 0x93, 0x53, 0x9e, 0x01, 0xd9, 0x55, 0xd0, - 0xca, 0x1d, 0xd2, 0x4a, 0x64, 0x57, 0xe9, 0x68, 0xd9, 0xdc, 0x70, 0x64, 0x57, 0x91, 0x97, 0x0c, - 0xd9, 0x55, 0xda, 0xbe, 0x0b, 0xd9, 0x55, 0xf0, 0x6b, 0xf0, 0x6b, 0xc8, 0xae, 0x92, 0xcd, 0xae, - 0x62, 0xee, 0xc3, 0x36, 0x95, 0x5c, 0x95, 0xe3, 0x76, 0x6c, 0xeb, 0xbb, 0x9b, 0x91, 0x96, 0x44, - 0xa7, 0x3b, 0x5b, 0xc7, 0x69, 0x0a, 0x37, 0x10, 0xeb, 0x3b, 0xb3, 0x8d, 0x3f, 0x98, 0x8d, 0xae, - 0x6c, 0xab, 0xbf, 0x4d, 0x21, 0xd3, 0x4d, 0xd9, 0xc6, 0xdf, 0x3d, 0xad, 0x9e, 0x6c, 0xf1, 0xf3, - 0x02, 0xf9, 0xb4, 0xc1, 0x64, 0x44, 0x3e, 0xfa, 0xb2, 0xad, 0x17, 0x06, 0xaa, 0xfb, 0xdc, 0x7c, - 0xe2, 0xe0, 0x5a, 0x61, 0xe1, 0x71, 0x09, 0xd2, 0x79, 0x83, 0xeb, 0xec, 0x05, 0xd1, 0x7e, 0x10, - 0x45, 0x6b, 0x63, 0xd0, 0x4d, 0xed, 0x6d, 0xb6, 0x0b, 0xb9, 0x49, 0x8b, 0xa4, 0x19, 0xe0, 0xa6, - 0x7a, 0xdf, 0xba, 0x6c, 0x4f, 0xca, 0xa5, 0xdb, 0x2d, 0x9d, 0x28, 0xae, 0x21, 0xc0, 0x64, 0x41, - 0xd6, 0x11, 0x68, 0x1e, 0xc1, 0xd6, 0x15, 0x70, 0x36, 0x41, 0x67, 0x13, 0x78, 0x36, 0xc1, 0x27, - 0x12, 0x00, 0x8a, 0x3b, 0xaf, 0xaa, 0x10, 0xc9, 0x40, 0xbb, 0x19, 0x3a, 0x5f, 0x85, 0xfe, 0x05, - 0xae, 0xf1, 0x3c, 0xfa, 0x57, 0xb8, 0xaa, 0x1c, 0x25, 0x71, 0x73, 0x45, 0x59, 0xbb, 0xc5, 0x95, - 0xae, 0x88, 0x5c, 0x0a, 0xc9, 0xae, 0x98, 0xec, 0x0a, 0xca, 0xae, 0xa8, 0x34, 0x85, 0xd5, 0xa0, - 0x47, 0x0b, 0xbc, 0xb7, 0xb9, 0xaa, 0x53, 0x13, 0x9a, 0x54, 0x85, 0xfe, 0xc2, 0x51, 0x38, 0xe5, - 0x78, 0x7f, 0xad, 0x96, 0x1d, 0xda, 0xfa, 0xe6, 0x6b, 0x66, 0x36, 0x18, 0x1f, 0x18, 0x1f, 0x18, - 0x1f, 0x9a, 0xf1, 0x71, 0x5c, 0xdb, 0x7f, 0x61, 0xb0, 0x3d, 0x67, 0x39, 0x30, 0x3d, 0x0a, 0x35, - 0x73, 0x6b, 0x0d, 0x8f, 0x74, 0xfd, 0x1c, 0xcc, 0x0e, 0xcc, 0x0e, 0xcc, 0xce, 0x2b, 0xb9, 0x51, - 0xae, 0xfe, 0x5b, 0x0a, 0x79, 0xde, 0xe2, 0xea, 0x6a, 0x85, 0xc3, 0x8c, 0x58, 0xe0, 0xc6, 0x7f, - 0x06, 0xc9, 0x2f, 0x48, 0x7c, 0x49, 0x41, 0xfe, 0xe0, 0xe3, 0xc3, 0xe8, 0x39, 0xe3, 0x3f, 0x83, - 0xe4, 0x17, 0x32, 0x65, 0xf7, 0xf4, 0xbd, 0x50, 0xd8, 0x07, 0x1d, 0x2f, 0xa1, 0xef, 0x1d, 0x88, - 0x5e, 0x01, 0xd4, 0x13, 0xa8, 0x27, 0x55, 0x5b, 0x43, 0xb6, 0xe2, 0x13, 0x29, 0x17, 0x76, 0xdb, - 0x17, 0x6d, 0x9d, 0x04, 0xf9, 0x53, 0xc2, 0xd8, 0x4f, 0xb1, 0x79, 0x7b, 0xf3, 0x26, 0x36, 0x57, - 0x47, 0x53, 0xea, 0x96, 0x01, 0x03, 0x22, 0xd7, 0xe7, 0x63, 0x85, 0x4f, 0x94, 0x3b, 0x7d, 0x5f, - 0xb8, 0x9e, 0x54, 0xb3, 0x51, 0x86, 0xd9, 0x80, 0xd9, 0x90, 0xfa, 0x96, 0x60, 0xac, 0x11, 0xbd, - 0x21, 0x7a, 0x43, 0xf4, 0xb6, 0x3b, 0x8c, 0x75, 0x4b, 0x04, 0x4d, 0xdf, 0xe9, 0x91, 0xa3, 0xb2, - 0x99, 0x35, 0x9b, 0x9e, 0x0c, 0xa6, 0x07, 0xa6, 0x07, 0xa6, 0x67, 0x57, 0x88, 0x23, 0x82, 0xe5, - 0x11, 0xdf, 0x7a, 0xce, 0xa8, 0x08, 0xd9, 0x6a, 0x51, 0x62, 0x8a, 0xb9, 0x65, 0x7b, 0x3d, 0x21, - 0x2c, 0x10, 0x2c, 0x10, 0x2c, 0x10, 0x49, 0x6e, 0xfa, 0x8e, 0x1b, 0xd6, 0x2a, 0x0c, 0x16, 0x48, - 0xa7, 0x4b, 0x07, 0xad, 0x78, 0xee, 0xf5, 0x7f, 0x7a, 0x32, 0x5b, 0xd0, 0x2d, 0xae, 0x63, 0x36, - 0x2f, 0x73, 0xd3, 0x69, 0x16, 0xdf, 0xcd, 0xcd, 0xc7, 0x50, 0x55, 0xc6, 0x24, 0xce, 0xb3, 0x5b, - 0x60, 0x7f, 0xcb, 0xfc, 0x16, 0x94, 0xde, 0x56, 0x2a, 0xb5, 0xd3, 0x4a, 0xe5, 0xf8, 0xf4, 0xe4, - 0xf4, 0xf8, 0xac, 0x5a, 0x2d, 0xd5, 0x4a, 0xd5, 0x0c, 0xef, 0xca, 0xde, 0x66, 0x46, 0x37, 0xb2, - 0x0e, 0x49, 0x44, 0x8b, 0x09, 0x8a, 0x08, 0x9c, 0x9e, 0x03, 0x82, 0x00, 0x82, 0x80, 0x7f, 0x59, - 0xf5, 0x1d, 0x1d, 0xd7, 0xea, 0x07, 0x0c, 0xc1, 0x4f, 0x3c, 0x0f, 0x0c, 0x0e, 0x0c, 0x0e, 0x0c, - 0x0e, 0x0c, 0xce, 0x0a, 0x83, 0x13, 0x04, 0x7d, 0xc1, 0xc4, 0xb8, 0x4c, 0xcd, 0x05, 0xc3, 0x03, - 0xc3, 0x03, 0xc3, 0x03, 0xb2, 0x05, 0x64, 0x0b, 0xc8, 0x16, 0x90, 0x2d, 0x20, 0x5b, 0xd6, 0x2f, - 0x33, 0x6a, 0xa5, 0x00, 0x46, 0x00, 0x46, 0x32, 0x17, 0x05, 0xa1, 0x56, 0x8a, 0x66, 0x78, 0x50, - 0x2b, 0x05, 0xb3, 0x03, 0xb3, 0x43, 0x95, 0x9b, 0xdd, 0x48, 0x79, 0xf9, 0x6a, 0x77, 0x38, 0x4c, - 0xce, 0x68, 0x1a, 0x58, 0x1b, 0x58, 0x1b, 0x58, 0x1b, 0x1a, 0xc8, 0xc9, 0x21, 0xd5, 0xbb, 0xdd, - 0xa5, 0x99, 0x94, 0xba, 0xa0, 0x02, 0x43, 0x65, 0xa6, 0x44, 0xcf, 0x4e, 0xfa, 0x4e, 0xf0, 0xb6, - 0x17, 0xfb, 0x4d, 0xbc, 0x90, 0xf0, 0xe6, 0x8e, 0xdc, 0x62, 0x22, 0xdb, 0xc5, 0x90, 0x26, 0xe9, - 0xda, 0x12, 0x5e, 0x54, 0xaa, 0xb1, 0xd3, 0x91, 0xe9, 0xe2, 0x56, 0xb7, 0xf2, 0x7d, 0xbd, 0xbe, - 0x7c, 0x9d, 0x7c, 0x5f, 0xaf, 0x67, 0x3e, 0x3b, 0xf9, 0x4a, 0xf4, 0x9f, 0x55, 0x5a, 0x0e, 0xad, - 0x16, 0xbe, 0xde, 0xd3, 0xd3, 0x10, 0xd5, 0xaf, 0x6f, 0xe1, 0x1b, 0x7f, 0x30, 0x23, 0x2d, 0x7c, - 0xbd, 0xa7, 0x7c, 0xb6, 0xef, 0xf5, 0x9e, 0x52, 0x6b, 0xdd, 0xdb, 0xf4, 0xdc, 0xc0, 0xeb, 0x28, - 0x5c, 0xf8, 0x3f, 0x1e, 0x90, 0x93, 0xc6, 0xbd, 0xde, 0xd3, 0x76, 0x36, 0xed, 0xf5, 0x9e, 0xb2, - 0x73, 0xd1, 0xbf, 0x5a, 0xf7, 0x53, 0x5a, 0xd7, 0xd3, 0xcc, 0xb7, 0xeb, 0xf5, 0x9e, 0x76, 0xb3, - 0x55, 0xaf, 0xf7, 0xb4, 0xa9, 0x36, 0xbd, 0xc6, 0x11, 0xe0, 0xc8, 0x99, 0x1d, 0xc5, 0x16, 0x4f, - 0xbd, 0xeb, 0x8c, 0xac, 0x83, 0x1e, 0x3d, 0xe7, 0xe1, 0x7c, 0xf4, 0x1c, 0xa5, 0x26, 0x33, 0x3c, - 0x57, 0xaf, 0x04, 0xa2, 0x23, 0x9a, 0xa1, 0xe7, 0x13, 0xee, 0x25, 0x9f, 0x0c, 0x85, 0x1e, 0x43, - 0x8f, 0x49, 0x7a, 0xac, 0xdc, 0x6e, 0x7b, 0x2c, 0x73, 0x1a, 0xdd, 0x4b, 0xc6, 0x33, 0xec, 0x48, - 0xcb, 0x6d, 0xef, 0x09, 0xcd, 0x4b, 0x74, 0x85, 0x3e, 0x1d, 0x02, 0x8f, 0xdc, 0xb8, 0x84, 0xd8, - 0x83, 0x5e, 0x0f, 0x95, 0x31, 0x29, 0x48, 0x76, 0x0f, 0x25, 0xbc, 0x27, 0x1c, 0x48, 0xa4, 0xa5, - 0x58, 0x9b, 0x39, 0x8c, 0xa0, 0x2a, 0x5c, 0x32, 0x41, 0xdb, 0x6e, 0x3a, 0x1d, 0x95, 0xdb, 0xea, - 0xd6, 0x0a, 0x5e, 0x32, 0xa3, 0xe6, 0xa6, 0xf0, 0x64, 0xec, 0x69, 0x2b, 0x25, 0xa7, 0x72, 0xf2, - 0x2b, 0x29, 0xb7, 0xb2, 0x1a, 0x53, 0x5a, 0x63, 0xca, 0x6b, 0x44, 0x89, 0xf5, 0x94, 0x59, 0x53, - 0xa9, 0x93, 0x37, 0xd2, 0x3e, 0x69, 0x9c, 0x93, 0x37, 0xa7, 0x25, 0xdc, 0xd0, 0x09, 0x5f, 0x68, - 0x1d, 0x05, 0x97, 0xfa, 0x4b, 0x86, 0x94, 0xd7, 0xe2, 0x65, 0xfc, 0xd5, 0x7e, 0xb6, 0x03, 0x46, - 0x31, 0x1e, 0xbf, 0xf8, 0xed, 0x1f, 0xb7, 0x1f, 0xae, 0x7f, 0x7d, 0xf8, 0xa5, 0x7e, 0x7e, 0xf9, - 0xe1, 0xf2, 0xee, 0x8f, 0x22, 0x67, 0x1a, 0x70, 0xa0, 0x9d, 0xaf, 0x3e, 0xfd, 0xdf, 0x77, 0xb6, - 0x99, 0x66, 0x16, 0xe0, 0xb7, 0x8b, 0x9b, 0xab, 0x8b, 0x0f, 0x45, 0xb6, 0xc9, 0x07, 0x87, 0x59, - 0x7f, 0xe3, 0x0f, 0xd7, 0xe7, 0xf5, 0x0f, 0x95, 0x9d, 0x7b, 0xe3, 0xea, 0x2e, 0xbd, 0xf1, 0xd5, - 0xdd, 0xa7, 0x9d, 0xdb, 0xe0, 0xd3, 0x5d, 0x7a, 0xe3, 0xfa, 0xe7, 0xbb, 0x7f, 0x7d, 0xba, 0xb9, - 0xfc, 0x7d, 0xa7, 0xde, 0xf9, 0xc3, 0x4e, 0xd9, 0xe9, 0x8f, 0xf5, 0xcb, 0xdd, 0xf3, 0x4b, 0x27, - 0x3b, 0xf7, 0xc6, 0xb5, 0x5d, 0x33, 0x5b, 0xbb, 0xf4, 0xbe, 0x23, 0x78, 0xbd, 0x73, 0x32, 0x5d, - 0xda, 0xa5, 0x37, 0x3e, 0xbf, 0xbe, 0xba, 0xbd, 0xfe, 0x70, 0xb1, 0x4b, 0xaf, 0xfc, 0xf9, 0xf6, - 0xe2, 0x66, 0xe7, 0x84, 0xfa, 0x78, 0xc7, 0x0c, 0xd7, 0xdd, 0xc5, 0xc7, 0x87, 0xf7, 0xf5, 0x8b, - 0x8f, 0xd7, 0x57, 0x3b, 0xb7, 0xd5, 0xe5, 0xdd, 0xf2, 0xc9, 0xef, 0x2f, 0xef, 0x18, 0x5f, 0x98, - 0x65, 0xa6, 0x46, 0x6e, 0x6b, 0xba, 0x35, 0x36, 0xbc, 0x18, 0x88, 0xaf, 0xc2, 0x67, 0x3d, 0x74, - 0x48, 0x66, 0xc4, 0xa1, 0xc3, 0xda, 0xb5, 0xc2, 0xa1, 0x03, 0x0e, 0x1d, 0x96, 0xbf, 0x11, 0xff, - 0xa1, 0x43, 0xf0, 0x12, 0x74, 0xbc, 0x27, 0x8b, 0x49, 0x45, 0xa7, 0xd5, 0xb4, 0x54, 0x61, 0x98, - 0xeb, 0xc2, 0xed, 0x77, 0x87, 0x2f, 0xbc, 0x31, 0x43, 0x9a, 0xea, 0x81, 0xb1, 0x66, 0x89, 0xd5, - 0xc4, 0x84, 0x13, 0xd3, 0x10, 0x93, 0x8c, 0xbb, 0xe4, 0xa7, 0x23, 0xad, 0x9c, 0x8d, 0x02, 0x3d, - 0x53, 0xf1, 0x76, 0xfc, 0x55, 0x92, 0x9f, 0x48, 0x37, 0xe4, 0xd1, 0xf7, 0x91, 0x52, 0xbb, 0xab, - 0x7d, 0x5e, 0xcf, 0x75, 0x4e, 0xbf, 0x75, 0x15, 0xbc, 0x48, 0x96, 0x49, 0xdf, 0xe5, 0xe5, 0xb5, - 0x72, 0x97, 0x7e, 0x2b, 0xdf, 0x9c, 0x0b, 0x3b, 0xd5, 0x98, 0x63, 0xfe, 0x96, 0xbe, 0x44, 0xa9, - 0x33, 0x6c, 0xc2, 0xb4, 0xd1, 0x3f, 0x17, 0xea, 0x87, 0x09, 0x83, 0x09, 0x83, 0x09, 0xcb, 0x9a, - 0x09, 0x4b, 0x94, 0x3a, 0xcb, 0x26, 0x2c, 0x64, 0x69, 0x5c, 0x4b, 0x6d, 0x37, 0x50, 0xe0, 0x4c, - 0x56, 0x2e, 0xc3, 0x78, 0xc1, 0x78, 0xa5, 0x62, 0xbc, 0x90, 0xac, 0x0c, 0xde, 0x10, 0xbc, 0x21, - 0x78, 0x43, 0x49, 0x79, 0x43, 0xb2, 0x32, 0x92, 0x95, 0x79, 0xfe, 0x43, 0xb2, 0x72, 0x46, 0xdf, - 0x18, 0xc9, 0xca, 0x5b, 0xbe, 0xc1, 0x48, 0x56, 0xde, 0xf6, 0x77, 0x46, 0xb2, 0xf2, 0xd6, 0x2b, - 0x31, 0x92, 0x95, 0xb7, 0xde, 0x6c, 0x21, 0x59, 0x79, 0xeb, 0x65, 0x1a, 0xc9, 0xca, 0xdb, 0xfd, - 0xca, 0x48, 0x56, 0xde, 0x01, 0xc3, 0x85, 0x64, 0xe5, 0x5d, 0xf1, 0xc9, 0x48, 0x56, 0x66, 0x1c, - 0x8d, 0x64, 0xe5, 0x15, 0xd3, 0xe0, 0xd0, 0x81, 0xb6, 0xfa, 0x38, 0x74, 0x40, 0xb2, 0xb2, 0x82, - 0x9a, 0x22, 0x59, 0x59, 0x5d, 0x60, 0xb3, 0x97, 0xac, 0xac, 0x93, 0xb2, 0x51, 0x60, 0xcd, 0x55, - 0x26, 0xdc, 0x19, 0x41, 0xdf, 0x45, 0xb3, 0x6d, 0x03, 0xe3, 0x3b, 0x25, 0xc6, 0x87, 0xf1, 0x05, - 0xa2, 0xf6, 0xd1, 0xae, 0x98, 0x48, 0x46, 0xeb, 0x5c, 0x35, 0x31, 0x99, 0x44, 0xe3, 0xca, 0x89, - 0x64, 0x12, 0xd2, 0xd5, 0x13, 0xd4, 0xc5, 0x4f, 0xed, 0xd2, 0x95, 0xb5, 0xca, 0x65, 0xf0, 0xe2, - 0x95, 0xb5, 0xea, 0x94, 0x8f, 0xcb, 0x57, 0xd2, 0x6e, 0x1a, 0xad, 0xda, 0x1f, 0x99, 0x63, 0x4b, - 0x52, 0x6d, 0x1d, 0xad, 0x94, 0xc7, 0x47, 0xca, 0xdb, 0x23, 0xb7, 0x8c, 0x2e, 0xa3, 0x65, 0x34, - 0x27, 0x2a, 0xde, 0xe1, 0xd6, 0xef, 0xaa, 0x98, 0x85, 0xaa, 0xc1, 0xf2, 0x80, 0x24, 0xb7, 0xd7, - 0xfe, 0xcc, 0xae, 0x2c, 0xe3, 0xad, 0x3f, 0xb3, 0x6b, 0x49, 0xbe, 0xf4, 0x67, 0xc5, 0x85, 0x31, - 0xbe, 0xe8, 0x7a, 0xa1, 0xb0, 0x02, 0xe1, 0x7f, 0x15, 0x12, 0xbd, 0xf2, 0x13, 0x1b, 0xf1, 0x6a, - 0x1c, 0x6e, 0x4e, 0xc1, 0xcd, 0x29, 0x0b, 0x04, 0x4a, 0xdd, 0x89, 0xce, 0x0e, 0xc7, 0xfd, 0x0b, - 0x70, 0xa6, 0x24, 0x67, 0xaa, 0x7c, 0xff, 0x02, 0xb1, 0xd5, 0xbc, 0x5e, 0x8b, 0x79, 0xdc, 0xbd, - 0xb0, 0x11, 0x6e, 0x15, 0x77, 0x2f, 0x48, 0x0c, 0x7c, 0xf6, 0x82, 0x50, 0xbf, 0x96, 0x29, 0x9a, - 0x05, 0x75, 0x98, 0x28, 0x65, 0x4a, 0x59, 0xa9, 0x36, 0xc3, 0x4c, 0xf3, 0xd5, 0x61, 0x6a, 0xe8, - 0xcd, 0x8c, 0x63, 0x39, 0xd3, 0x98, 0x23, 0x7e, 0x1b, 0xbd, 0xba, 0x00, 0xce, 0xca, 0x8f, 0x9e, - 0x65, 0xb7, 0x5a, 0xbe, 0x08, 0x02, 0xce, 0xf3, 0x97, 0x33, 0x86, 0xb9, 0x58, 0x56, 0x8a, 0x6f, - 0xc5, 0x16, 0xac, 0xdc, 0xd7, 0x0a, 0xe3, 0xda, 0xcd, 0xad, 0xe1, 0x5b, 0xc6, 0x39, 0x3f, 0xd9, - 0x61, 0x28, 0x7c, 0x97, 0xb5, 0x20, 0x25, 0x9a, 0xf8, 0xbf, 0xfb, 0xfb, 0x5f, 0x8e, 0xad, 0xb3, - 0xc6, 0x8f, 0x2f, 0x25, 0xeb, 0xac, 0x31, 0xfa, 0xb1, 0x14, 0xfd, 0x31, 0xfa, 0xb9, 0xfc, 0xe5, - 0xd8, 0xaa, 0x8c, 0x7f, 0xae, 0x7e, 0x39, 0xb6, 0xaa, 0x8d, 0x83, 0xfb, 0xfb, 0x37, 0x07, 0xdf, - 0x4f, 0x06, 0xea, 0x03, 0xff, 0xc1, 0x97, 0xa5, 0xd1, 0x60, 0x99, 0x89, 0x29, 0xb9, 0xc5, 0x8c, - 0x70, 0xd6, 0x20, 0x9c, 0x23, 0xe1, 0xb4, 0xad, 0x76, 0xdd, 0xfa, 0xa5, 0xf1, 0xbd, 0x74, 0x58, - 0x19, 0xbc, 0x3b, 0xf8, 0x7e, 0x3a, 0x78, 0xfd, 0xcb, 0x1f, 0x8b, 0x3e, 0x56, 0x3a, 0x3c, 0x1d, - 0xbc, 0x5b, 0xf2, 0x2f, 0xb5, 0xc1, 0x3b, 0xc9, 0x39, 0xaa, 0x83, 0xfd, 0xb9, 0x8f, 0x0e, 0x7f, - 0x5f, 0x5e, 0x36, 0xa0, 0xb2, 0x64, 0xc0, 0xc9, 0xb2, 0x01, 0x27, 0x4b, 0x06, 0x2c, 0xfd, 0x4a, - 0xe5, 0x25, 0x03, 0xaa, 0x83, 0x1f, 0x73, 0x9f, 0xdf, 0x5f, 0xfc, 0xd1, 0xda, 0xe0, 0xe0, 0xc7, - 0xb2, 0x7f, 0x3b, 0x1d, 0xfc, 0x78, 0x77, 0x90, 0x41, 0x55, 0xdd, 0xdb, 0xec, 0xf7, 0xd0, 0x34, - 0x15, 0x8c, 0x1e, 0xbf, 0xe5, 0x75, 0x6d, 0xc7, 0xb5, 0x22, 0x9a, 0x94, 0xd1, 0xe5, 0x33, 0x58, - 0x84, 0xe2, 0x07, 0xe1, 0x3e, 0x45, 0xbc, 0x70, 0xe6, 0x9c, 0xfe, 0x47, 0xc7, 0x65, 0x4b, 0x67, - 0x62, 0x8a, 0xc5, 0x96, 0x4e, 0x1b, 0x15, 0x9f, 0xd2, 0xdb, 0x55, 0x2c, 0x9d, 0xf7, 0x17, 0xdf, - 0x6e, 0x86, 0x8e, 0xe7, 0xbe, 0x77, 0x9e, 0x9c, 0xe8, 0xc8, 0xfd, 0x38, 0x8b, 0x59, 0xa2, 0xc5, - 0x8f, 0xf6, 0xb7, 0xdc, 0x6d, 0x55, 0xb9, 0x7a, 0x92, 0xa3, 0xcd, 0xca, 0x8a, 0x41, 0x66, 0xb0, - 0x38, 0xdc, 0xd8, 0xa3, 0xb8, 0xbf, 0xbf, 0xff, 0xc5, 0xb6, 0xfe, 0xae, 0x5b, 0xff, 0x39, 0xb6, - 0xce, 0x1e, 0x1a, 0x53, 0x7f, 0xb9, 0xbf, 0xb7, 0x1e, 0x1a, 0x07, 0xdf, 0x8f, 0x0f, 0x6b, 0xa5, - 0xc1, 0xc1, 0x4f, 0x93, 0xdf, 0x37, 0x86, 0x78, 0xf8, 0x9f, 0x94, 0x51, 0x3f, 0x1d, 0xfc, 0xb8, - 0xbf, 0x7f, 0x53, 0xdc, 0xb4, 0x67, 0xdb, 0x4b, 0xf7, 0xb9, 0xe9, 0xb4, 0x1d, 0x8a, 0x8f, 0x4c, - 0x7a, 0x9e, 0xcf, 0x40, 0xd8, 0x4d, 0x4f, 0x46, 0x6d, 0xe8, 0x22, 0xda, 0x76, 0xbf, 0x13, 0xd1, - 0x37, 0xd5, 0x52, 0x05, 0xec, 0x1f, 0xd8, 0x3f, 0xb0, 0x7f, 0x6a, 0xf2, 0x32, 0xd4, 0x3e, 0xcb, - 0xed, 0x77, 0x1f, 0x85, 0xcf, 0x40, 0x02, 0xd6, 0x34, 0xa6, 0xb8, 0xb1, 0xdd, 0xa7, 0x4c, 0x90, - 0x80, 0x9c, 0xa8, 0x96, 0x19, 0x22, 0x25, 0xd0, 0x88, 0x6b, 0x3e, 0x03, 0x80, 0x88, 0x01, 0xb5, - 0xb2, 0xa2, 0x55, 0x53, 0x5b, 0x50, 0xab, 0x56, 0x4f, 0xaa, 0x19, 0xde, 0x06, 0xc0, 0x97, 0xb9, - 0x65, 0x0e, 0x22, 0xd7, 0x96, 0x30, 0x80, 0xfa, 0xed, 0x13, 0x67, 0xe7, 0x03, 0xfc, 0x00, 0xfc, - 0x00, 0xfc, 0x50, 0x92, 0x17, 0x96, 0x83, 0xb6, 0x2d, 0x3d, 0x82, 0x64, 0x3d, 0x48, 0x63, 0x65, - 0x24, 0xd9, 0xf9, 0x81, 0xbc, 0x1d, 0x98, 0x6d, 0x0b, 0xeb, 0xcd, 0x7c, 0x20, 0x96, 0x0b, 0x21, - 0xc3, 0xc1, 0x57, 0x2e, 0x0f, 0xbe, 0xb6, 0x9e, 0x8e, 0xdb, 0xaa, 0x1a, 0xbb, 0xd9, 0x9c, 0xfd, - 0xd9, 0xbf, 0xd2, 0xef, 0xdb, 0x51, 0xac, 0x65, 0xb8, 0x89, 0x9e, 0x7a, 0x3b, 0xfa, 0x0e, 0x33, - 0x7f, 0x23, 0xdd, 0xb3, 0xa3, 0x50, 0x73, 0xa7, 0x90, 0x82, 0x4d, 0x4a, 0x7e, 0xd4, 0x49, 0xde, - 0x22, 0xc6, 0x1b, 0xc8, 0x04, 0x46, 0x26, 0xb0, 0xf1, 0xf8, 0x80, 0xe1, 0x72, 0x08, 0x9d, 0x4b, - 0x21, 0x16, 0x5c, 0x06, 0x11, 0x29, 0x58, 0x06, 0xcc, 0xc4, 0xa4, 0x10, 0x96, 0x6c, 0x2b, 0x28, - 0xb5, 0xb4, 0x05, 0x94, 0x0e, 0xc0, 0x60, 0x14, 0xb2, 0x5b, 0x3a, 0x90, 0x54, 0xee, 0x33, 0x5c, - 0xe5, 0x44, 0xee, 0x01, 0x50, 0xe0, 0xbc, 0x0d, 0x05, 0x2c, 0x1e, 0x58, 0xbc, 0x74, 0x58, 0x3c, - 0xed, 0xdb, 0x50, 0x88, 0x85, 0x6c, 0x4b, 0xc5, 0x4e, 0xfb, 0x1e, 0x4e, 0x06, 0x45, 0x64, 0x53, - 0x48, 0x4e, 0xc5, 0xe4, 0x57, 0x50, 0x6e, 0x45, 0x35, 0xa6, 0xb0, 0xc6, 0x14, 0xd7, 0x88, 0x02, - 0xeb, 0xd3, 0x0d, 0x0c, 0xfc, 0xa0, 0xb6, 0x62, 0x27, 0x13, 0xb1, 0x5d, 0x77, 0x34, 0x27, 0xc0, - 0x4c, 0xd7, 0x1e, 0x69, 0xc6, 0xb4, 0xc6, 0x95, 0xdf, 0x84, 0x11, 0x30, 0x67, 0x0c, 0x4c, 0x19, - 0x05, 0xe3, 0xc6, 0xc1, 0xb8, 0x91, 0x30, 0x6a, 0x2c, 0x78, 0x8c, 0x06, 0x93, 0xf1, 0xd0, 0x8f, - 0xe1, 0xd7, 0xca, 0x2b, 0xef, 0xb5, 0x4a, 0x73, 0x7e, 0xbf, 0xca, 0x38, 0xa7, 0x91, 0x6b, 0x96, - 0xe6, 0x16, 0xc4, 0xcc, 0x75, 0x4b, 0xc9, 0x63, 0x0c, 0x5c, 0xbb, 0x34, 0xfe, 0xef, 0x3b, 0xfb, - 0x8c, 0x05, 0x93, 0xd7, 0x30, 0x31, 0xeb, 0x48, 0x8a, 0x2b, 0xc1, 0x7d, 0x3d, 0x53, 0xce, 0x57, - 0xa2, 0x8a, 0x95, 0x60, 0xbe, 0xce, 0x29, 0xe7, 0x02, 0x71, 0x8a, 0x95, 0x30, 0x71, 0xfd, 0x53, - 0x8e, 0xd7, 0xe2, 0x03, 0xfc, 0x06, 0xfb, 0x75, 0x51, 0x39, 0x37, 0x12, 0x27, 0x58, 0x09, 0xfe, - 0xeb, 0xa5, 0xf2, 0x6d, 0x2e, 0xb1, 0x0e, 0xfc, 0xd7, 0x51, 0xe5, 0x5c, 0x37, 0x4a, 0x58, 0x09, - 0x03, 0xd7, 0x57, 0xe5, 0x77, 0x29, 0x78, 0xaf, 0xb5, 0xca, 0xb9, 0x72, 0x1c, 0x63, 0x25, 0x8c, - 0x5d, 0x83, 0x95, 0x73, 0xd1, 0x28, 0x63, 0x25, 0xd8, 0xaf, 0xcd, 0x4a, 0x16, 0x82, 0x75, 0xc6, - 0xc6, 0xd6, 0x35, 0x3d, 0xe0, 0xa8, 0x39, 0x64, 0xbb, 0x66, 0x6b, 0x4e, 0x28, 0x18, 0xef, 0xf2, - 0x29, 0xe0, 0xb0, 0x0b, 0x87, 0x5d, 0xf1, 0x03, 0x70, 0xd8, 0x95, 0x83, 0xc3, 0x2e, 0xfe, 0xeb, - 0xbc, 0x5e, 0x9b, 0x01, 0x8e, 0x6b, 0xbd, 0x92, 0x39, 0x79, 0xae, 0xf7, 0x62, 0x34, 0xec, 0x1b, - 0x4d, 0xa4, 0x60, 0xba, 0xfe, 0x6b, 0xe2, 0x62, 0x38, 0xab, 0x28, 0x16, 0xdc, 0x0d, 0xc6, 0x92, - 0x40, 0x55, 0x60, 0x2d, 0xb4, 0x58, 0x70, 0x6f, 0x18, 0xa5, 0xf6, 0x82, 0x4f, 0x2e, 0x74, 0x6e, - 0xe2, 0x64, 0xcb, 0x87, 0xe1, 0xce, 0x83, 0xc1, 0x4d, 0x9c, 0x9b, 0x74, 0xf9, 0x48, 0x7a, 0xcb, - 0x80, 0xad, 0xe6, 0xbf, 0x89, 0x93, 0x5e, 0x83, 0xb2, 0xd4, 0x55, 0x9f, 0xf2, 0xd4, 0xc5, 0xbe, - 0xaa, 0x51, 0x49, 0x8c, 0x08, 0x2e, 0x37, 0xc6, 0xe5, 0xc6, 0x30, 0xa9, 0x30, 0xa9, 0x30, 0xa9, - 0xba, 0x26, 0x35, 0x31, 0x22, 0x79, 0x34, 0xa9, 0x4a, 0x77, 0x4a, 0xae, 0xb7, 0xa7, 0x9a, 0x17, - 0x0e, 0x17, 0x4c, 0x14, 0x65, 0x94, 0x61, 0x4c, 0x61, 0x4c, 0x73, 0x65, 0x4c, 0x51, 0x94, 0xa1, - 0x3b, 0x1d, 0x78, 0x6a, 0xf0, 0xd4, 0xa9, 0x19, 0x0b, 0x3e, 0x0a, 0xb3, 0x80, 0xa2, 0x0c, 0x14, - 0x65, 0xcc, 0x3d, 0x06, 0x45, 0x19, 0x86, 0x74, 0x24, 0xc5, 0x95, 0x40, 0x51, 0x06, 0x8a, 0x32, - 0x5e, 0xaf, 0x04, 0x8a, 0x32, 0x50, 0x94, 0x51, 0x40, 0x51, 0xc6, 0x92, 0xb5, 0x40, 0x51, 0x06, - 0x8a, 0x32, 0x50, 0x94, 0xb1, 0x64, 0x25, 0x50, 0x94, 0x81, 0xa2, 0x0c, 0x14, 0x65, 0x2c, 0xd6, - 0x0d, 0x14, 0x65, 0xa0, 0x28, 0x03, 0x45, 0x19, 0x4b, 0x94, 0x03, 0x45, 0x19, 0x28, 0xca, 0x58, - 0x22, 0x1a, 0x28, 0xca, 0x40, 0x51, 0xc6, 0xa6, 0x66, 0x41, 0x51, 0x86, 0xc6, 0x74, 0x38, 0xec, - 0xc2, 0x61, 0xd7, 0xc2, 0x07, 0xe0, 0xb0, 0x8b, 0x41, 0xf7, 0x51, 0x94, 0xb1, 0xb9, 0x19, 0x76, - 0xad, 0x28, 0x83, 0x23, 0x7f, 0xaa, 0x60, 0xba, 0x26, 0xe3, 0x36, 0xfa, 0x92, 0x9b, 0x4a, 0x76, - 0x4b, 0xb5, 0xed, 0xf1, 0x6f, 0xe2, 0x65, 0x3a, 0xd9, 0xa5, 0xa0, 0x69, 0x05, 0x8a, 0x1f, 0x9c, - 0x20, 0xac, 0x87, 0xa1, 0x66, 0x2f, 0xe5, 0x8f, 0x8e, 0x7b, 0xd1, 0x11, 0x43, 0xc3, 0x1e, 0x14, - 0xdf, 0x15, 0xdc, 0x7e, 0xa7, 0xa3, 0x91, 0x01, 0xf8, 0xd1, 0xfe, 0xc6, 0x37, 0xd9, 0xb5, 0xdf, - 0x12, 0xbe, 0x68, 0xfd, 0xfc, 0x12, 0x4f, 0x95, 0xea, 0x66, 0x31, 0x29, 0xbb, 0x69, 0x25, 0x2f, - 0x6a, 0xa5, 0x6b, 0x1a, 0x53, 0xeb, 0x22, 0xee, 0x2e, 0x32, 0xb6, 0xf7, 0x1b, 0xbd, 0xbe, 0x28, - 0xd9, 0xea, 0x4c, 0x5c, 0x4d, 0x42, 0xca, 0x37, 0xd6, 0xca, 0x2f, 0xd6, 0xbe, 0x92, 0xa4, 0x8c, - 0x2b, 0x49, 0x36, 0x19, 0xdd, 0x6c, 0xf3, 0x95, 0x24, 0xa4, 0x0b, 0xbd, 0xe6, 0x84, 0x85, 0x70, - 0xb1, 0x17, 0x13, 0x15, 0x81, 0xab, 0x48, 0xd2, 0xa1, 0x0e, 0x70, 0x15, 0x09, 0x63, 0xa8, 0xcf, - 0xa1, 0x37, 0x85, 0xed, 0xbd, 0x4a, 0xd8, 0xc4, 0x1d, 0xaf, 0x67, 0x0c, 0x73, 0xb1, 0xac, 0x14, - 0xdf, 0x8a, 0x2d, 0x58, 0x39, 0xd6, 0x4b, 0x98, 0xe7, 0xd6, 0xf0, 0x2d, 0xe3, 0x9c, 0xdc, 0xf7, - 0xe5, 0x26, 0x13, 0xe7, 0xed, 0x72, 0xe6, 0xf1, 0x7f, 0x8d, 0x2c, 0xb1, 0x99, 0x66, 0x84, 0xb3, - 0x06, 0xe1, 0xc4, 0xa5, 0xce, 0x39, 0xbe, 0xd4, 0x99, 0x59, 0x55, 0x71, 0xaf, 0x7b, 0x6c, 0x1a, - 0x5a, 0x5e, 0xd7, 0x76, 0x5c, 0x2b, 0x62, 0x1a, 0x32, 0x76, 0xad, 0xfb, 0x07, 0xe1, 0x3e, 0x45, - 0x4c, 0x4c, 0xe6, 0x9c, 0xfe, 0x47, 0xc7, 0x35, 0x70, 0xe0, 0xc8, 0x7a, 0x2c, 0x9c, 0x4c, 0x1b, - 0x95, 0x0f, 0xe9, 0x17, 0x54, 0xcf, 0xcd, 0xfb, 0x8b, 0x6f, 0x37, 0x43, 0xc7, 0x73, 0xdf, 0x3b, - 0x4f, 0x4e, 0x44, 0x1e, 0x1f, 0xf3, 0x1d, 0x2e, 0x32, 0xba, 0x93, 0x8f, 0xf6, 0xb7, 0xdc, 0x6d, - 0x55, 0xb9, 0x7a, 0x92, 0xa3, 0xcd, 0xca, 0x8a, 0x41, 0xe6, 0xe9, 0xee, 0xc0, 0x8a, 0x3d, 0x8a, - 0xfb, 0xfb, 0xfb, 0x5f, 0x6c, 0xeb, 0xef, 0xba, 0xf5, 0x9f, 0x63, 0xeb, 0xec, 0xa1, 0x31, 0xf5, - 0x97, 0xfb, 0x7b, 0xeb, 0xa1, 0x71, 0xf0, 0xfd, 0xf8, 0xb0, 0x56, 0x1a, 0x1c, 0xfc, 0x34, 0xf9, - 0x7d, 0x63, 0x88, 0x87, 0xff, 0x49, 0x19, 0xf5, 0xd3, 0xc1, 0x8f, 0xfb, 0xfb, 0x37, 0xc5, 0x4d, - 0x7b, 0xb6, 0xbd, 0x74, 0x9f, 0x4b, 0x38, 0x82, 0x20, 0xd0, 0xaa, 0x31, 0xb3, 0xdf, 0xf3, 0x7c, - 0x06, 0xc2, 0x6e, 0x7a, 0x32, 0xea, 0x85, 0xac, 0xa2, 0x6d, 0xf7, 0x3b, 0x11, 0x7d, 0x53, 0x2d, - 0x55, 0xc0, 0xfe, 0x81, 0xfd, 0x03, 0xfb, 0xa7, 0x26, 0x2f, 0x43, 0xed, 0xb3, 0xdc, 0x7e, 0xf7, - 0x51, 0xf8, 0x0c, 0x24, 0x60, 0x4d, 0x63, 0x8a, 0x1b, 0xdb, 0x7d, 0xca, 0x04, 0x09, 0xc8, 0x89, - 0x6a, 0xb9, 0x93, 0x1c, 0xc7, 0xd0, 0x88, 0x6b, 0x3e, 0x03, 0x80, 0x88, 0x23, 0x89, 0x95, 0x13, - 0xad, 0x9a, 0xda, 0x82, 0x5a, 0xb5, 0x7a, 0x52, 0xcd, 0xf0, 0x36, 0x00, 0xbe, 0xcc, 0x2d, 0x73, - 0x10, 0xb9, 0xb6, 0x84, 0x01, 0xd4, 0x46, 0x30, 0xaf, 0xe6, 0x03, 0xfc, 0x00, 0xfc, 0x00, 0xfc, - 0x50, 0x92, 0x17, 0x96, 0x83, 0xb6, 0x2d, 0x3d, 0x82, 0x64, 0x3d, 0x48, 0x63, 0x65, 0x24, 0xd9, - 0xf9, 0x81, 0xbc, 0x1d, 0x98, 0x6d, 0x0b, 0xeb, 0xcd, 0x7c, 0x20, 0x96, 0x0b, 0x21, 0xc3, 0xc1, - 0x57, 0x2e, 0x0f, 0xbe, 0xb6, 0x9e, 0x8e, 0xdb, 0xa1, 0x8c, 0x60, 0x62, 0x7d, 0x07, 0x63, 0x36, - 0xb0, 0x7a, 0xf1, 0x86, 0x42, 0x26, 0xf0, 0x1e, 0xe3, 0x0e, 0x8e, 0x8b, 0x2f, 0x14, 0xb2, 0xb4, - 0x68, 0xf5, 0x15, 0x5a, 0xf5, 0x14, 0x5a, 0xf5, 0x13, 0xb4, 0x7a, 0x09, 0xd9, 0xf5, 0x23, 0x4a, - 0x3e, 0xab, 0xc4, 0x17, 0x95, 0x72, 0xc3, 0x79, 0x64, 0x5c, 0x4e, 0xba, 0xd7, 0xcb, 0xea, 0xea, - 0x4f, 0xac, 0xd9, 0x05, 0xd5, 0xd5, 0xd7, 0x5c, 0x75, 0x89, 0x75, 0xd6, 0x59, 0xdf, 0xd5, 0x4b, - 0xba, 0x7c, 0xa1, 0x16, 0xff, 0xcb, 0x92, 0xa5, 0x93, 0x5d, 0x32, 0xd5, 0xa5, 0x5a, 0xb1, 0x36, - 0x6a, 0x6b, 0xb2, 0x78, 0x15, 0xe6, 0xdf, 0x71, 0xc1, 0xfb, 0x15, 0xbb, 0xa2, 0xeb, 0xf9, 0xcb, - 0x4b, 0xd3, 0x13, 0x5c, 0x1a, 0x7f, 0x6e, 0xc9, 0x0a, 0xad, 0x2e, 0x65, 0x58, 0x4b, 0x88, 0xc8, - 0x10, 0x1e, 0xd3, 0x84, 0x46, 0xf0, 0xb2, 0x4a, 0xb0, 0x64, 0x09, 0x0b, 0x65, 0x42, 0x42, 0x99, - 0x70, 0x78, 0x4d, 0x28, 0x0c, 0xbf, 0x37, 0x93, 0x4c, 0xae, 0x4b, 0xed, 0x2f, 0x36, 0xc7, 0x6b, - 0xbe, 0x66, 0x11, 0xc6, 0xcb, 0x2a, 0x75, 0xef, 0x96, 0x64, 0xcd, 0x8a, 0x34, 0x03, 0xa6, 0xc2, - 0x74, 0xc9, 0x0b, 0x00, 0x95, 0xb9, 0x22, 0x33, 0x54, 0x64, 0x26, 0x4a, 0x49, 0x40, 0xb2, 0x6d, - 0xff, 0x47, 0x06, 0x42, 0xfe, 0xfa, 0x36, 0x49, 0x13, 0xf7, 0x31, 0x9a, 0x56, 0xea, 0xbe, 0xb5, - 0x15, 0xe6, 0x7e, 0xa5, 0xa5, 0x95, 0xa9, 0xfc, 0x52, 0xaa, 0xf4, 0x52, 0xd6, 0x92, 0x32, 0xb4, - 0x24, 0x63, 0x5a, 0x22, 0x5b, 0x39, 0x55, 0xec, 0x3d, 0xbf, 0x04, 0x4e, 0xd3, 0xee, 0xc8, 0x2f, - 0x5f, 0x72, 0xce, 0x3b, 0x1e, 0x29, 0x1b, 0x76, 0x28, 0x1d, 0x4a, 0x28, 0x1f, 0x42, 0x50, 0x0e, - 0x1d, 0xd4, 0x85, 0x4d, 0xf7, 0x50, 0x41, 0xfb, 0x10, 0x41, 0xfb, 0xd0, 0x80, 0x24, 0x8c, 0x66, - 0x02, 0x51, 0x65, 0xd2, 0x3f, 0xd9, 0xaf, 0xbe, 0xe3, 0x86, 0x35, 0x95, 0xec, 0x9c, 0xb1, 0xf4, - 0x29, 0xd0, 0x88, 0xc4, 0xf4, 0x01, 0x02, 0x15, 0xa2, 0x93, 0x1e, 0xa0, 0x7b, 0xd6, 0xa7, 0x79, - 0xfc, 0xcf, 0x71, 0xce, 0x4c, 0x39, 0x77, 0xd5, 0x39, 0xce, 0xe7, 0x5a, 0xb2, 0xd2, 0xdb, 0x4a, - 0xa5, 0x76, 0x5a, 0xa9, 0x1c, 0x9f, 0x9e, 0x9c, 0x1e, 0x9f, 0x55, 0xab, 0xa5, 0x1a, 0xf5, 0x8a, - 0x05, 0x96, 0x55, 0x34, 0xc4, 0x3d, 0x35, 0xb8, 0xa2, 0x7e, 0x09, 0x4f, 0xee, 0x8b, 0x28, 0xec, - 0x6e, 0xa9, 0x3b, 0xa3, 0x64, 0x24, 0x9c, 0x11, 0x9c, 0x11, 0x9c, 0x11, 0x9c, 0x11, 0x9c, 0x11, - 0x9c, 0x51, 0x4e, 0x29, 0x08, 0xd9, 0xc3, 0x2c, 0x35, 0x06, 0x42, 0xe2, 0x80, 0x2a, 0xab, 0x7c, - 0xf3, 0x4a, 0xee, 0x56, 0x79, 0x25, 0xf4, 0xd8, 0xe6, 0x20, 0xb0, 0x9f, 0x44, 0x20, 0xc3, 0x37, - 0xc7, 0x9f, 0xcc, 0x06, 0xe3, 0xbc, 0xe6, 0xeb, 0x64, 0x9b, 0x76, 0x4e, 0xbe, 0x3c, 0xb8, 0x67, - 0x06, 0x56, 0x4d, 0x42, 0x14, 0xf2, 0x4b, 0xad, 0xad, 0x17, 0x95, 0x94, 0xf9, 0x35, 0xe5, 0xe6, - 0xc9, 0xd4, 0xe6, 0xc8, 0x59, 0x0f, 0x69, 0x14, 0xc4, 0x6e, 0xfb, 0xe2, 0x1a, 0x79, 0xb1, 0xcc, - 0x5a, 0x70, 0x43, 0x6f, 0xd3, 0x4b, 0x69, 0xc3, 0xab, 0xd8, 0x66, 0x37, 0xbf, 0x40, 0x6f, 0x24, - 0x0e, 0x06, 0x4e, 0x9b, 0x46, 0x13, 0x1b, 0x3c, 0x6f, 0x6a, 0x89, 0xc7, 0xfe, 0x93, 0x25, 0xdc, - 0xd0, 0x77, 0x44, 0x20, 0xef, 0x22, 0x67, 0x87, 0xc1, 0x53, 0xc2, 0x53, 0x2e, 0x16, 0xac, 0x40, - 0xf8, 0x5f, 0x1d, 0x95, 0x85, 0x9c, 0x15, 0xb0, 0xf1, 0x70, 0x35, 0x9f, 0x59, 0x82, 0xcf, 0x84, - 0xcf, 0xa4, 0x0a, 0xae, 0x6a, 0xd4, 0xa0, 0x17, 0x45, 0x68, 0x8a, 0x30, 0x59, 0x94, 0x75, 0x44, - 0x9a, 0x49, 0xb4, 0x75, 0x45, 0x9c, 0x4d, 0xd4, 0xd9, 0x44, 0x9e, 0x4f, 0xf4, 0x89, 0xc4, 0x5b, - 0x5a, 0xfd, 0x58, 0x85, 0x6b, 0x3f, 0x76, 0x14, 0xce, 0x75, 0x96, 0x4a, 0xce, 0x78, 0x22, 0xfd, - 0xee, 0x0e, 0x6d, 0xbb, 0x13, 0x08, 0x14, 0x58, 0xea, 0x2a, 0x23, 0x97, 0x52, 0xb2, 0x2b, 0x27, - 0xbb, 0x92, 0xf2, 0x2b, 0x2b, 0x4d, 0x69, 0x35, 0x4e, 0x2a, 0x0a, 0xbc, 0xa5, 0x96, 0x8f, 0x9e, - 0xd7, 0x11, 0xb6, 0xcb, 0x51, 0x67, 0x59, 0xca, 0x72, 0x8d, 0xb7, 0x22, 0x24, 0x5d, 0xc1, 0xe8, - 0xa8, 0x80, 0x53, 0x18, 0x1d, 0x18, 0x1d, 0x18, 0x9d, 0x39, 0xc9, 0x71, 0x5a, 0xc2, 0x0d, 0x9d, - 0xf0, 0xc5, 0x17, 0x6d, 0x0e, 0xc3, 0xa3, 0xd1, 0x6f, 0xa3, 0x78, 0x19, 0x7f, 0x95, 0x9f, 0xed, - 0x80, 0x41, 0x06, 0xc7, 0x2f, 0xf8, 0xfe, 0xe2, 0xe7, 0xcf, 0xbf, 0x3e, 0xdc, 0x5e, 0xdc, 0xfc, - 0x7e, 0x79, 0x7e, 0x91, 0xfa, 0xfe, 0xee, 0x68, 0x95, 0x61, 0xc2, 0xc8, 0xcd, 0xf0, 0x54, 0x47, - 0x33, 0xa4, 0xc2, 0x11, 0x29, 0x40, 0xa3, 0xb0, 0x77, 0xef, 0x87, 0x8f, 0xbd, 0x18, 0x7d, 0x87, - 0xd1, 0x5f, 0x6e, 0x47, 0x5f, 0x41, 0x8a, 0xd7, 0xa3, 0xef, 0x90, 0xd2, 0x8d, 0x23, 0x44, 0xaf, - 0xa8, 0xe9, 0x0d, 0x89, 0x5e, 0x10, 0xf1, 0x2e, 0xe2, 0x5d, 0x75, 0xeb, 0x43, 0xf6, 0x5a, 0xc9, - 0xce, 0x77, 0x84, 0xdd, 0xa6, 0x79, 0xaa, 0xc4, 0x43, 0x9d, 0x12, 0xc6, 0x7e, 0x8a, 0x0d, 0xde, - 0x9b, 0x37, 0xb1, 0xd1, 0x3a, 0x1a, 0x6b, 0x1b, 0xee, 0x2a, 0x22, 0x59, 0x8d, 0x32, 0xac, 0x06, - 0xac, 0x06, 0x58, 0x32, 0x04, 0xac, 0x08, 0x58, 0x11, 0xb0, 0x82, 0x25, 0x03, 0x4b, 0x06, 0xa3, - 0x03, 0xa3, 0x03, 0x96, 0x0c, 0x2c, 0x19, 0x58, 0xb2, 0xd7, 0x2c, 0x99, 0xe1, 0x5e, 0x5c, 0x12, - 0x24, 0x59, 0xfe, 0x7a, 0x71, 0x29, 0xa6, 0x2d, 0xa1, 0x1d, 0x97, 0xbe, 0xf0, 0xb3, 0x0a, 0x3d, - 0x7f, 0x3b, 0xae, 0xf5, 0x62, 0x5e, 0xdc, 0x8d, 0x14, 0x59, 0x95, 0xc4, 0x51, 0xdd, 0xf5, 0x45, - 0x7f, 0x16, 0xe4, 0xc7, 0x66, 0x36, 0x3f, 0x36, 0xfe, 0x42, 0xea, 0x99, 0xb1, 0xe3, 0x81, 0x86, - 0x73, 0x62, 0xcb, 0xc8, 0x89, 0x65, 0x0f, 0x70, 0x72, 0x9f, 0x13, 0x6b, 0xf7, 0x7a, 0x56, 0x6c, - 0x8a, 0x89, 0x74, 0x7f, 0x32, 0x03, 0xce, 0x09, 0x0d, 0xc7, 0xf9, 0x60, 0xfc, 0xa9, 0xf1, 0x97, - 0xfe, 0x39, 0x61, 0x10, 0xfa, 0xab, 0x3b, 0x6a, 0xae, 0x35, 0xd7, 0x6f, 0x33, 0x70, 0xb2, 0xd7, - 0x0d, 0x34, 0xd2, 0xdf, 0x87, 0x83, 0xa1, 0xe3, 0xd0, 0x71, 0xe8, 0x78, 0xd6, 0x75, 0xdc, 0x69, - 0x69, 0x69, 0xb9, 0xd3, 0x82, 0x9e, 0x43, 0xcf, 0xa1, 0xe7, 0xd9, 0xd6, 0xf3, 0x9e, 0xef, 0x78, - 0x4a, 0x8d, 0x0b, 0xe6, 0xd6, 0x21, 0x99, 0x01, 0xda, 0x0e, 0x6d, 0xdf, 0x5a, 0x6d, 0xef, 0x3b, - 0x6e, 0xf8, 0x56, 0x43, 0xd9, 0x09, 0x47, 0x6b, 0x9a, 0x17, 0x9b, 0x6a, 0x1c, 0x2f, 0x72, 0x5c, - 0x64, 0xca, 0x74, 0x7b, 0x26, 0xd7, 0xc5, 0xa5, 0x9c, 0x37, 0x65, 0x6a, 0x5c, 0xc3, 0xc5, 0x72, - 0x41, 0x29, 0xf7, 0xd2, 0x96, 0xab, 0xd5, 0x0c, 0x2d, 0x6e, 0x4a, 0x47, 0xb5, 0x8d, 0x4c, 0x38, - 0x5f, 0xaf, 0xa9, 0x83, 0xb2, 0xe3, 0xf1, 0x70, 0xbc, 0x70, 0xbc, 0x80, 0xd9, 0xe9, 0xc3, 0x6c, - 0x56, 0xce, 0xfd, 0xe2, 0x5b, 0x64, 0x38, 0xe5, 0x7d, 0x3d, 0xfd, 0x90, 0xc3, 0x6b, 0x5a, 0xe2, - 0x5b, 0xf8, 0x2e, 0x14, 0x1d, 0xd1, 0x15, 0xa1, 0xff, 0x62, 0xd9, 0xa1, 0xd7, 0x75, 0x9a, 0x7a, - 0xa7, 0x1e, 0x51, 0x0a, 0xb1, 0xc6, 0xb1, 0x07, 0xf7, 0x59, 0x47, 0x23, 0x6b, 0x79, 0x05, 0xd1, - 0x91, 0xef, 0x91, 0xda, 0x29, 0x5d, 0x81, 0x70, 0xd2, 0x1d, 0xa5, 0xc5, 0x8c, 0xff, 0x5a, 0x4c, - 0xb1, 0xad, 0x37, 0x7a, 0xe0, 0xe1, 0xec, 0x12, 0x3d, 0xf0, 0xa4, 0xc7, 0xec, 0x58, 0x0f, 0x3c, - 0xf6, 0x76, 0xc7, 0xd3, 0xe6, 0x2e, 0xaf, 0x0d, 0x8f, 0xd7, 0x77, 0xeb, 0x55, 0x5b, 0x0d, 0x9d, - 0xa6, 0xc7, 0x6e, 0xd8, 0x5b, 0xdf, 0xef, 0x78, 0xf8, 0x21, 0x5c, 0xae, 0x87, 0xcb, 0xf5, 0x70, - 0xb9, 0x1e, 0x9b, 0x23, 0xcd, 0xf2, 0xb5, 0x61, 0xa3, 0x0a, 0x43, 0xcb, 0x0d, 0x7b, 0x96, 0xdd, - 0x8f, 0xcc, 0x99, 0x22, 0xb2, 0x7b, 0x3d, 0x81, 0x6c, 0x02, 0x12, 0xad, 0x34, 0x11, 0xf7, 0xbd, - 0x14, 0x70, 0xdf, 0x0b, 0x17, 0x1c, 0x54, 0x2f, 0xe8, 0x53, 0x2c, 0xe0, 0xe3, 0x89, 0xba, 0x54, - 0xab, 0x89, 0x89, 0xd5, 0xc3, 0x50, 0x49, 0xa8, 0x24, 0x54, 0x52, 0x4e, 0x25, 0x87, 0xde, 0x2e, - 0x88, 0x04, 0xc5, 0xb2, 0x5b, 0x2d, 0x5f, 0x04, 0x81, 0xba, 0x76, 0x2e, 0x98, 0x03, 0x0a, 0x07, - 0x85, 0x4b, 0x59, 0xe1, 0x9c, 0x9e, 0xa2, 0xf4, 0xcd, 0xe8, 0xdc, 0x99, 0xc2, 0x98, 0xf8, 0x3b, - 0x1a, 0xbf, 0xf7, 0x6c, 0xf2, 0x66, 0x5f, 0x2b, 0x84, 0x77, 0x9b, 0x3f, 0x5c, 0xa0, 0xb5, 0xed, - 0x09, 0x85, 0xef, 0x92, 0x4f, 0xf6, 0x8b, 0xff, 0xdd, 0xdf, 0xff, 0x72, 0x6c, 0x9d, 0x35, 0x7e, - 0x7c, 0x29, 0x59, 0x67, 0x8d, 0xd1, 0x8f, 0xa5, 0xe8, 0x8f, 0xd1, 0xcf, 0xe5, 0x2f, 0xc7, 0x56, - 0x65, 0xfc, 0x73, 0xf5, 0xcb, 0xb1, 0x55, 0x6d, 0x1c, 0xdc, 0xdf, 0xbf, 0x39, 0xf8, 0x7e, 0x32, - 0x50, 0x1f, 0xf8, 0x8f, 0xa2, 0xe9, 0xb3, 0xd5, 0xc3, 0x14, 0x37, 0xbd, 0x96, 0xf7, 0x4d, 0xb7, - 0xad, 0x76, 0xdd, 0xfa, 0xa5, 0xf1, 0xbd, 0x74, 0x58, 0x19, 0xbc, 0x3b, 0xf8, 0x7e, 0x3a, 0x78, - 0xfd, 0xcb, 0x1f, 0x8b, 0x3e, 0x56, 0x3a, 0x3c, 0x1d, 0xbc, 0x5b, 0xf2, 0x2f, 0xb5, 0xc1, 0x3b, - 0xc9, 0x39, 0xaa, 0x83, 0xfd, 0xb9, 0x8f, 0x0e, 0x7f, 0x5f, 0x5e, 0x36, 0xa0, 0xb2, 0x64, 0xc0, - 0xc9, 0xb2, 0x01, 0x27, 0x4b, 0x06, 0x2c, 0xfd, 0x4a, 0xe5, 0x25, 0x03, 0xaa, 0x83, 0x1f, 0x73, - 0x9f, 0xdf, 0x5f, 0xfc, 0xd1, 0xda, 0xe0, 0xe0, 0xc7, 0xb2, 0x7f, 0x3b, 0x1d, 0xfc, 0x78, 0x77, - 0x90, 0x82, 0x0a, 0xe0, 0x6a, 0xbc, 0xe8, 0x0f, 0x37, 0xec, 0xb1, 0x5f, 0x96, 0x72, 0x15, 0xf6, - 0x0c, 0xde, 0x93, 0x32, 0xc4, 0x69, 0x7f, 0x8a, 0x17, 0x85, 0x2b, 0x52, 0x92, 0x11, 0xa0, 0xd9, - 0x40, 0xb3, 0xcd, 0x08, 0x11, 0x2d, 0x4a, 0x18, 0x0e, 0xdc, 0x8e, 0x7b, 0x50, 0x10, 0x1a, 0xa4, - 0x1e, 0x1a, 0xe0, 0xf6, 0x13, 0x2e, 0x41, 0xd6, 0x17, 0x68, 0x5d, 0xc1, 0x66, 0x13, 0x70, 0x36, - 0x41, 0x67, 0x11, 0x78, 0x75, 0x8c, 0x54, 0x48, 0xb3, 0x9b, 0xe3, 0x9f, 0xe2, 0xc5, 0x72, 0x18, - 0x9a, 0x39, 0xc6, 0xf3, 0xa0, 0x1d, 0x1a, 0x5d, 0x71, 0xb8, 0x14, 0x88, 0x5d, 0x91, 0xd8, 0x15, - 0x8a, 0x55, 0xb1, 0x68, 0x0a, 0x46, 0x54, 0x34, 0x3a, 0x29, 0xb5, 0x54, 0x5e, 0xfa, 0x8e, 0x1b, - 0x96, 0x6a, 0x0c, 0xfd, 0xcf, 0x6a, 0x1a, 0x53, 0xe8, 0xd5, 0x6a, 0xd0, 0xb9, 0x8d, 0xb9, 0x2f, - 0xc2, 0x51, 0xbb, 0xc1, 0x64, 0x56, 0xe6, 0xa6, 0x63, 0xaa, 0xe5, 0x48, 0xe6, 0x63, 0x2c, 0x3b, - 0xd0, 0x14, 0xe7, 0xd9, 0x2d, 0x60, 0xa8, 0xf1, 0x30, 0xbd, 0x05, 0xb5, 0x6a, 0xf5, 0xa4, 0x9a, - 0xe1, 0x6d, 0xd8, 0xdb, 0xcc, 0xe8, 0x46, 0x86, 0x5b, 0xaf, 0x0e, 0x11, 0x42, 0xa8, 0x63, 0x35, - 0x67, 0xb0, 0x46, 0x34, 0x13, 0xd0, 0x06, 0xd0, 0x06, 0xd0, 0x86, 0x92, 0xbc, 0x6c, 0x7d, 0xcb, - 0xd5, 0xab, 0xbb, 0x4f, 0x0f, 0xf5, 0xcf, 0x77, 0xff, 0x7a, 0xb8, 0xfb, 0xe3, 0xd3, 0x45, 0x91, - 0xa3, 0xc4, 0x30, 0xd0, 0xc6, 0x45, 0x3c, 0xd8, 0x68, 0xf1, 0x6b, 0x7e, 0x7c, 0x5f, 0x2d, 0x6e, - 0xd8, 0x5f, 0x35, 0xb2, 0xdf, 0xd8, 0x96, 0xe8, 0xaf, 0xbe, 0xc6, 0x70, 0x83, 0xc1, 0x61, 0x8d, - 0xa6, 0x82, 0xc7, 0x82, 0xc7, 0x82, 0xc7, 0x52, 0x92, 0x17, 0x72, 0x05, 0xe5, 0x9c, 0xb3, 0x7a, - 0x8b, 0x36, 0xda, 0x8a, 0x87, 0x99, 0xe3, 0xc3, 0xbe, 0xf1, 0x0f, 0xc6, 0x2f, 0x97, 0xbb, 0x0a, - 0x7b, 0xc3, 0xff, 0xff, 0x4d, 0xbc, 0x04, 0xf1, 0x9f, 0x19, 0xba, 0x4c, 0x8e, 0xc8, 0x95, 0xea, - 0x71, 0xa4, 0x79, 0xad, 0x77, 0xc7, 0xe1, 0x01, 0xa3, 0x0d, 0xc7, 0x05, 0x72, 0x8b, 0x45, 0x75, - 0xee, 0x02, 0xb9, 0x58, 0xc5, 0x70, 0x7f, 0x1c, 0xc9, 0x54, 0x94, 0x61, 0x2a, 0x60, 0x2a, 0x56, - 0x7e, 0x43, 0x9c, 0x33, 0x22, 0x8e, 0x42, 0x1c, 0x95, 0xcb, 0x38, 0x0a, 0xe7, 0x8c, 0xd3, 0x5f, - 0x04, 0xe7, 0x8c, 0x7a, 0x84, 0x21, 0xce, 0x19, 0x33, 0xb1, 0x0d, 0x38, 0x67, 0x5c, 0x88, 0x34, - 0x70, 0xce, 0x08, 0xb4, 0x01, 0xb4, 0xb1, 0x49, 0xb4, 0x81, 0x73, 0x46, 0x65, 0x77, 0x83, 0x73, - 0x46, 0x23, 0x5e, 0xa7, 0x80, 0x73, 0x46, 0x78, 0x2c, 0x78, 0x2c, 0x78, 0xac, 0x35, 0xf2, 0x82, - 0x73, 0xc6, 0x57, 0x32, 0xb1, 0xc9, 0x73, 0x46, 0xc3, 0xd7, 0xf3, 0x2e, 0x38, 0x66, 0xcc, 0xdf, - 0x75, 0xbc, 0x4a, 0x54, 0x28, 0x6e, 0xe3, 0x65, 0x90, 0x6d, 0x2d, 0x99, 0xe6, 0xef, 0x99, 0x3b, - 0x2f, 0xc5, 0xc5, 0xad, 0x2f, 0xaf, 0x96, 0x2c, 0x3f, 0xa6, 0xad, 0xa2, 0x91, 0x9b, 0x75, 0x85, - 0xff, 0x55, 0xf8, 0x0a, 0x05, 0xd6, 0xe3, 0x01, 0xa8, 0xaf, 0x46, 0x7d, 0xf5, 0xb4, 0x08, 0x51, - 0xfa, 0x52, 0x47, 0xe3, 0x50, 0x5d, 0x9d, 0x22, 0x56, 0xdf, 0xe9, 0xea, 0x6a, 0xd5, 0x76, 0x61, - 0x73, 0xfb, 0x4c, 0x6b, 0x6e, 0x83, 0x14, 0xa9, 0x8d, 0x84, 0xa3, 0x48, 0x91, 0x52, 0xd9, 0xef, - 0xcc, 0xa4, 0x48, 0x8d, 0x75, 0x2c, 0x03, 0x39, 0x52, 0xe8, 0xc6, 0x00, 0x6b, 0xb1, 0x8d, 0xd6, - 0x82, 0x9c, 0x25, 0x45, 0x75, 0xa0, 0x4c, 0x8e, 0x14, 0x3c, 0x30, 0x78, 0xe0, 0x9d, 0xe7, 0x81, - 0x9f, 0xbd, 0x20, 0xe4, 0x60, 0x81, 0xcf, 0x34, 0xe6, 0x20, 0xb5, 0x13, 0x7d, 0xfd, 0x1f, 0x43, - 0x96, 0x94, 0x56, 0x23, 0x55, 0x93, 0x2b, 0xc4, 0xbb, 0x52, 0x7c, 0x2b, 0xb6, 0x60, 0xe5, 0xb4, - 0x1a, 0xb5, 0xae, 0x5d, 0xc3, 0xb7, 0x8c, 0x73, 0xea, 0xf6, 0xf8, 0x5c, 0x3a, 0x71, 0xd6, 0x1b, - 0xbe, 0x2e, 0xfb, 0xaf, 0xc1, 0x32, 0xd3, 0xe0, 0x30, 0xc3, 0xc2, 0x59, 0x83, 0x70, 0xa2, 0x31, - 0x6d, 0x8e, 0x1a, 0xd3, 0x1a, 0x56, 0xd5, 0xbd, 0xcd, 0x7e, 0x0f, 0x4d, 0x53, 0xc1, 0xe8, 0xf1, - 0x5b, 0x5e, 0xd7, 0x76, 0x5c, 0x2b, 0x3a, 0x3c, 0x61, 0x74, 0xf9, 0x0c, 0x16, 0xa1, 0xf8, 0x41, - 0xb8, 0x4f, 0x11, 0xa9, 0x91, 0x39, 0xa7, 0xcf, 0x99, 0x54, 0xce, 0x14, 0x8b, 0x2d, 0x9d, 0x76, - 0x9c, 0xe1, 0x5c, 0x62, 0x9e, 0xd7, 0x40, 0x96, 0x33, 0xb3, 0x23, 0x2d, 0x70, 0x27, 0x9f, 0xa7, - 0xb5, 0x55, 0xe5, 0xea, 0x49, 0x8e, 0x36, 0x2b, 0x2b, 0x06, 0x99, 0xc1, 0xe2, 0x70, 0x63, 0x8f, - 0xe2, 0xfe, 0xfe, 0xfe, 0x17, 0xdb, 0xfa, 0xbb, 0x6e, 0xfd, 0xe7, 0xd8, 0x3a, 0x7b, 0x68, 0x4c, - 0xfd, 0xe5, 0xfe, 0xde, 0x7a, 0x68, 0x1c, 0x7c, 0x3f, 0x3e, 0xac, 0x95, 0x06, 0x07, 0x3f, 0x4d, - 0x7e, 0xdf, 0x18, 0xe2, 0xe1, 0x7f, 0x52, 0x46, 0xfd, 0x74, 0xf0, 0xe3, 0xfe, 0xfe, 0x4d, 0x71, - 0xd3, 0x9e, 0x6d, 0x2b, 0x6b, 0x0d, 0xec, 0x20, 0xf0, 0x9a, 0x4e, 0x94, 0xea, 0xc0, 0x54, 0x73, - 0x30, 0x37, 0x23, 0x91, 0x0f, 0x99, 0xba, 0xef, 0xea, 0xf6, 0xe2, 0xe6, 0xf7, 0x8b, 0x1b, 0x50, - 0x81, 0xa0, 0x02, 0x41, 0x05, 0xaa, 0xc9, 0x8b, 0x70, 0xfb, 0x5d, 0xe1, 0x8f, 0x32, 0x99, 0x18, - 0x18, 0xc1, 0x8a, 0xc6, 0x1c, 0x6a, 0xd7, 0x2d, 0x6f, 0xc6, 0x1a, 0x3a, 0x8f, 0x7d, 0x3f, 0x08, - 0xf5, 0x6d, 0x60, 0x3c, 0x8f, 0xbe, 0xe5, 0x53, 0xb9, 0xe9, 0x0f, 0x86, 0x0f, 0x86, 0x0f, 0x86, - 0x8f, 0x7c, 0x53, 0xe1, 0x52, 0xa3, 0x57, 0xca, 0xb0, 0xc1, 0xea, 0x79, 0x3e, 0x83, 0xb9, 0x8a, - 0x66, 0xd1, 0x37, 0x56, 0xa5, 0xf2, 0x09, 0x4c, 0x15, 0x4c, 0x15, 0x4c, 0x95, 0xba, 0xf6, 0x59, - 0x6e, 0xbf, 0xfb, 0x28, 0x9d, 0xe9, 0xba, 0x4a, 0x85, 0xd0, 0xdb, 0xc2, 0x2c, 0xa7, 0x85, 0xde, - 0x16, 0xd9, 0xd9, 0x02, 0xf4, 0xb6, 0xc8, 0x1d, 0xdf, 0x34, 0xf4, 0x43, 0xc2, 0x67, 0x80, 0x2c, - 0xa3, 0x79, 0x10, 0x61, 0x01, 0xb6, 0x00, 0xb6, 0x20, 0xc2, 0x32, 0x67, 0xb0, 0xbe, 0x0a, 0x3f, - 0xa0, 0x56, 0x10, 0xcf, 0xac, 0xd7, 0x78, 0x22, 0x7d, 0x93, 0x55, 0x81, 0xb9, 0x82, 0xb9, 0x82, - 0xb9, 0x52, 0x93, 0x97, 0xbe, 0xe3, 0x86, 0x6f, 0x19, 0x8c, 0x55, 0x15, 0xf1, 0x55, 0x3a, 0xe0, - 0xbe, 0x84, 0xf8, 0x6a, 0xd3, 0x5b, 0x50, 0x41, 0x6c, 0xb5, 0xb1, 0xd8, 0x6a, 0x6b, 0x3a, 0xa3, - 0xc4, 0xdd, 0x00, 0xe2, 0x3f, 0x53, 0xb9, 0x7f, 0xe1, 0x76, 0xf4, 0xc8, 0xf8, 0xcf, 0x0c, 0xdd, - 0xbf, 0x80, 0x96, 0xea, 0x86, 0xc1, 0x1d, 0x8a, 0x05, 0x37, 0x60, 0x4d, 0x50, 0x2c, 0x88, 0xb8, - 0x08, 0x71, 0x11, 0x8a, 0x05, 0xc9, 0x73, 0xa0, 0x58, 0x30, 0xd5, 0x95, 0xe2, 0x5b, 0xb1, 0x05, - 0x2b, 0x87, 0x62, 0x41, 0x14, 0x0b, 0x66, 0x57, 0x38, 0x51, 0x2c, 0x88, 0x62, 0x41, 0x14, 0x0b, - 0xf2, 0x90, 0x28, 0x05, 0x14, 0x0b, 0xa6, 0x60, 0x11, 0x50, 0x2c, 0xc8, 0x4a, 0x69, 0xa2, 0x58, - 0x30, 0x37, 0x5b, 0x85, 0x62, 0x41, 0x8a, 0x41, 0x46, 0xb1, 0x20, 0x8a, 0x05, 0x0d, 0x59, 0x17, - 0x14, 0x0b, 0x82, 0x0a, 0x04, 0x15, 0xb8, 0xbd, 0x54, 0x20, 0x8a, 0x05, 0x95, 0xbe, 0x23, 0x8a, - 0x05, 0x61, 0xf8, 0x60, 0xf8, 0xb6, 0xc1, 0xf0, 0xed, 0x48, 0x2a, 0xab, 0xd7, 0x6e, 0x07, 0x82, - 0xc1, 0x60, 0xc5, 0xf3, 0xc0, 0xd0, 0xc0, 0xd0, 0xc0, 0xd0, 0x28, 0xc9, 0x4b, 0xdf, 0x71, 0xc3, - 0x5a, 0x85, 0xc1, 0xce, 0xbc, 0x45, 0x16, 0xaa, 0x51, 0x32, 0x0a, 0x55, 0x7e, 0xd9, 0xd9, 0x82, - 0xd2, 0xdb, 0x4a, 0xa5, 0x76, 0x5a, 0xa9, 0x1c, 0x9f, 0x9e, 0x9c, 0x1e, 0x9f, 0x55, 0xab, 0xa5, - 0x5a, 0x09, 0x45, 0x7f, 0xb9, 0xe2, 0x8d, 0x7a, 0x5e, 0xa7, 0x63, 0x39, 0x6e, 0x28, 0xfc, 0xaf, - 0x76, 0x87, 0xa3, 0x5d, 0xc1, 0xf4, 0x74, 0x80, 0x21, 0x80, 0x21, 0x80, 0x21, 0xca, 0x30, 0xe4, - 0xa4, 0xcc, 0x00, 0x43, 0x4e, 0x01, 0x43, 0x00, 0x43, 0x76, 0xa5, 0x18, 0xa6, 0x7c, 0x56, 0x39, - 0xab, 0x9d, 0x96, 0xcf, 0x00, 0x3e, 0x72, 0x06, 0x3e, 0xd0, 0x22, 0x09, 0x80, 0x05, 0x80, 0xa5, - 0x80, 0x16, 0x49, 0x68, 0x91, 0x04, 0xd4, 0xb2, 0x63, 0xa8, 0x05, 0x2d, 0x92, 0xf2, 0x07, 0x58, - 0xd0, 0x22, 0x09, 0xb0, 0x05, 0xb0, 0x65, 0x0b, 0x60, 0xcb, 0x8e, 0x9c, 0x2b, 0xfb, 0x9e, 0x17, - 0x5a, 0x2d, 0xd1, 0xb1, 0x5f, 0xf4, 0x8d, 0xd6, 0xd4, 0x5c, 0x30, 0x38, 0x30, 0x38, 0x30, 0x38, - 0x4a, 0xf2, 0x02, 0x62, 0x17, 0x21, 0x12, 0x42, 0x24, 0xc5, 0x2d, 0x00, 0xb1, 0x9b, 0xcf, 0x38, - 0x69, 0x04, 0x15, 0x9c, 0xa0, 0xc7, 0xd5, 0xa1, 0xf1, 0xf5, 0x84, 0x00, 0x20, 0x00, 0x20, 0x00, - 0x20, 0xca, 0x00, 0x04, 0x09, 0x6e, 0x00, 0x20, 0x00, 0x20, 0x0a, 0x5b, 0x80, 0x04, 0xb7, 0xbc, - 0x43, 0x91, 0x20, 0xf4, 0xed, 0x70, 0x54, 0xb1, 0xa4, 0x07, 0x41, 0xc6, 0x13, 0x01, 0x7a, 0x00, - 0x7a, 0x00, 0x7a, 0x28, 0x43, 0x0f, 0x34, 0x78, 0x06, 0xf2, 0x00, 0xf2, 0x90, 0xdf, 0x82, 0x72, - 0x15, 0x40, 0x23, 0x57, 0x40, 0x03, 0xb7, 0x51, 0x00, 0xac, 0x00, 0xac, 0x00, 0xac, 0x00, 0xac, - 0xa4, 0x1d, 0xa3, 0x03, 0xac, 0x6c, 0x7a, 0x0b, 0x70, 0x1b, 0xc5, 0xe6, 0xa0, 0xca, 0xb6, 0xde, - 0x46, 0x41, 0xb9, 0x51, 0xa1, 0xa0, 0x75, 0x19, 0xc5, 0x6d, 0xf4, 0x44, 0x53, 0x77, 0x51, 0xec, - 0x31, 0xee, 0xcf, 0x10, 0x4a, 0xa8, 0x37, 0xd7, 0x2f, 0x7e, 0x70, 0x82, 0xb0, 0x1e, 0x86, 0x6a, - 0x09, 0x8c, 0x43, 0x1f, 0x70, 0xd1, 0x11, 0x43, 0x58, 0x30, 0xd4, 0x48, 0xb7, 0xdf, 0xe9, 0x28, - 0x5c, 0xab, 0xf1, 0xd1, 0xfe, 0x46, 0x1f, 0x7c, 0xed, 0xb7, 0x84, 0x2f, 0x5a, 0x3f, 0xbf, 0xc4, - 0x43, 0x59, 0x97, 0x90, 0x28, 0xda, 0x1a, 0x22, 0x5d, 0x54, 0xba, 0x8e, 0x84, 0x26, 0xc4, 0x72, - 0xe2, 0xbb, 0x5e, 0x18, 0x57, 0x7f, 0x62, 0xcd, 0x1a, 0xab, 0xae, 0x2d, 0x65, 0x4d, 0x25, 0x16, - 0x53, 0x7d, 0x11, 0x57, 0xaf, 0xde, 0xf2, 0x35, 0x59, 0xb1, 0x1e, 0x92, 0x17, 0xcb, 0x28, 0x5d, - 0x24, 0x23, 0x79, 0x71, 0x8c, 0xf4, 0x45, 0x31, 0x2a, 0xf1, 0x96, 0x7a, 0x5c, 0xa5, 0x1a, 0x3f, - 0x91, 0xe3, 0x24, 0x72, 0x3c, 0x44, 0x8a, 0x7b, 0xf4, 0x34, 0x44, 0xf6, 0x62, 0x96, 0xa2, 0xdd, - 0x0f, 0x9f, 0xad, 0xae, 0x13, 0x74, 0xed, 0xb0, 0xf9, 0x2c, 0xbf, 0x86, 0x49, 0x17, 0xc7, 0x99, - 0xe1, 0xb2, 0xde, 0x45, 0x09, 0x25, 0x2a, 0x87, 0xfb, 0x94, 0xf0, 0x9e, 0x1e, 0xce, 0x53, 0xc3, - 0x77, 0xed, 0x70, 0x5d, 0x3b, 0x3c, 0xd7, 0x0a, 0xc7, 0x79, 0xf1, 0x86, 0x72, 0x78, 0x9d, 0xec, - 0x57, 0xd3, 0xeb, 0xbb, 0xa1, 0xf0, 0x95, 0x32, 0x0f, 0x08, 0x99, 0x06, 0xc4, 0x90, 0x99, 0x00, - 0x69, 0x75, 0x42, 0x62, 0x5d, 0x62, 0x4d, 0x93, 0x9f, 0xe7, 0x88, 0xaf, 0x28, 0xd4, 0xa8, 0x4e, - 0x08, 0xcb, 0xb5, 0x64, 0x7c, 0x27, 0xf9, 0x2c, 0xab, 0x68, 0x28, 0xca, 0x68, 0x70, 0xc1, 0x3f, - 0x09, 0xb7, 0x2e, 0x5c, 0xfb, 0xb1, 0x23, 0x2c, 0x37, 0xec, 0x59, 0x43, 0x2f, 0xa3, 0xee, 0x9b, - 0x5e, 0x4f, 0x20, 0x69, 0x8b, 0x88, 0xe5, 0x4f, 0xf0, 0x6a, 0xf0, 0x6a, 0x6c, 0x5e, 0x4d, 0xbd, - 0x7c, 0x48, 0xb1, 0x5c, 0x88, 0x53, 0x45, 0x5b, 0x54, 0xd5, 0x6c, 0x41, 0x25, 0xa1, 0x92, 0x50, - 0x49, 0x56, 0x95, 0x1c, 0x7a, 0xbb, 0x20, 0x12, 0x14, 0x4b, 0xf5, 0x8e, 0xcd, 0xe4, 0x55, 0x17, - 0xcc, 0x01, 0x85, 0x83, 0xc2, 0xa5, 0xac, 0x70, 0xa4, 0xab, 0x18, 0x29, 0x57, 0x2e, 0xd2, 0xae, - 0x56, 0xd4, 0xb8, 0xe3, 0x58, 0xf3, 0xaa, 0x44, 0x9d, 0x3b, 0xa6, 0xb4, 0x6f, 0x78, 0xc9, 0xfc, - 0x15, 0x87, 0x0d, 0x93, 0x07, 0x56, 0x7a, 0x9b, 0x5e, 0xcb, 0xfb, 0xa6, 0xe3, 0xea, 0xc0, 0x5c, - 0x5c, 0x1d, 0xd8, 0xc8, 0x7a, 0xf4, 0x9f, 0xdd, 0xc3, 0x1f, 0xc9, 0x43, 0x61, 0x95, 0xa3, 0x9f, - 0xf5, 0xa7, 0xbe, 0x2b, 0x0e, 0x7e, 0xf6, 0x14, 0x56, 0x48, 0x76, 0x65, 0x54, 0x56, 0xa4, 0xb8, - 0xf2, 0xe4, 0x49, 0x72, 0x0d, 0x16, 0xbf, 0xfd, 0xfc, 0xbb, 0x2d, 0x78, 0xaf, 0xe2, 0xf0, 0xcb, - 0xb5, 0x3b, 0xde, 0x5f, 0x4b, 0xdf, 0x68, 0x82, 0xef, 0xc6, 0x9f, 0x5c, 0xb2, 0x3a, 0xab, 0x0f, - 0xb5, 0xd6, 0x62, 0x51, 0x19, 0xec, 0x29, 0xfb, 0x5d, 0x54, 0xd0, 0xa5, 0x32, 0x9a, 0x54, 0x46, - 0x8f, 0xb3, 0x68, 0x71, 0xfc, 0xcd, 0x99, 0x64, 0x72, 0xdd, 0x41, 0x54, 0xd1, 0x7e, 0x1a, 0x3d, - 0x59, 0xf2, 0xfc, 0x72, 0xf4, 0x71, 0xe6, 0xf3, 0xcb, 0x63, 0x13, 0xe7, 0x97, 0xeb, 0x45, 0x80, - 0x1a, 0x68, 0x6c, 0xfa, 0x04, 0x73, 0xad, 0x88, 0xf0, 0x18, 0x7a, 0xe9, 0x33, 0xcc, 0xe6, 0x78, - 0x1f, 0x15, 0xe3, 0xdc, 0x78, 0x9c, 0x5a, 0x6c, 0x5b, 0xca, 0x64, 0x6c, 0x2b, 0x2f, 0x6c, 0xdb, - 0x16, 0xdd, 0x4a, 0x0b, 0xa3, 0x99, 0xf8, 0x56, 0x56, 0x48, 0x93, 0x01, 0x8f, 0x76, 0xf3, 0x4f, - 0xaf, 0xdd, 0xa6, 0x37, 0xc5, 0x9f, 0x30, 0x52, 0xaf, 0x67, 0x52, 0x5c, 0x46, 0xda, 0xc9, 0x17, - 0x39, 0xfb, 0x5e, 0x27, 0xeb, 0x5e, 0x47, 0xd0, 0x75, 0x05, 0x9e, 0x4d, 0xf0, 0xd9, 0x14, 0x80, - 0x49, 0x11, 0xd4, 0x03, 0x00, 0x42, 0xc4, 0x4c, 0xcf, 0x9c, 0xd7, 0x6f, 0x6d, 0xa4, 0xd1, 0xd2, - 0x48, 0x33, 0x45, 0x5e, 0xa3, 0x4e, 0x80, 0x23, 0x25, 0x9e, 0x29, 0x0f, 0x9b, 0xab, 0x5e, 0x8f, - 0x33, 0xef, 0x5a, 0x23, 0xe5, 0x9d, 0x25, 0xd5, 0x9d, 0x7b, 0x69, 0xb9, 0x5a, 0x10, 0xb1, 0xae, - 0x71, 0x4a, 0xb9, 0xe5, 0xa6, 0x78, 0x0a, 0x05, 0x19, 0x29, 0xb6, 0xec, 0x30, 0x8a, 0x84, 0x2d, - 0xa7, 0x45, 0xf7, 0xc4, 0xd3, 0x93, 0xc0, 0x09, 0xc3, 0x09, 0x6f, 0xa1, 0x13, 0xa6, 0x8b, 0x78, - 0x06, 0xd8, 0xeb, 0x69, 0x76, 0xf5, 0x35, 0x69, 0x5b, 0x1e, 0x1c, 0x7c, 0x3f, 0x1d, 0x64, 0x88, - 0x65, 0x55, 0xb1, 0x5e, 0x6d, 0xdb, 0xe9, 0xf4, 0x7d, 0x61, 0x75, 0xbd, 0x96, 0xa0, 0x9b, 0xaf, - 0x99, 0x59, 0x60, 0xbf, 0x60, 0xbf, 0xb6, 0xd0, 0x7e, 0x69, 0xc8, 0x78, 0x41, 0xf3, 0x6a, 0x73, - 0xe2, 0x95, 0xe6, 0x66, 0x2c, 0x86, 0xe3, 0x0e, 0x61, 0xe2, 0x57, 0x27, 0x7c, 0xb1, 0x7a, 0xbe, - 0xf7, 0xa8, 0x61, 0x35, 0xe6, 0x66, 0x82, 0xe5, 0x80, 0xe5, 0x00, 0xfd, 0x00, 0xfa, 0x01, 0xf4, - 0x03, 0xe8, 0x07, 0xd0, 0x0f, 0x72, 0xcb, 0xd6, 0xb5, 0xbf, 0x59, 0x31, 0x8f, 0x4f, 0xf7, 0xc4, - 0xd3, 0x93, 0xc0, 0x09, 0xc3, 0x09, 0xc3, 0x09, 0xc3, 0x09, 0xc3, 0x09, 0xc3, 0x09, 0xef, 0xb4, - 0x13, 0xce, 0x55, 0x33, 0x8f, 0xb1, 0xe1, 0x3e, 0x8a, 0xd2, 0x9b, 0x8e, 0x94, 0x12, 0x53, 0x0a, - 0xf2, 0xb9, 0x78, 0xd7, 0xf1, 0x63, 0x1e, 0xea, 0xc3, 0xc7, 0x3c, 0xc4, 0x5e, 0x3c, 0xc5, 0xea, - 0x14, 0xb9, 0x66, 0x15, 0x73, 0xd6, 0x5f, 0xa5, 0x57, 0x0f, 0x39, 0x4f, 0xa7, 0x8c, 0x3c, 0x1d, - 0x5e, 0x88, 0x82, 0x3c, 0x1d, 0xe4, 0xe9, 0x00, 0xa3, 0x03, 0xa3, 0x03, 0xa3, 0x03, 0xa3, 0x03, - 0xa3, 0x03, 0xa3, 0x6b, 0x11, 0x65, 0xc8, 0xd3, 0x81, 0x13, 0x86, 0x13, 0x36, 0x29, 0xe2, 0x05, - 0xe4, 0xe9, 0x20, 0x4f, 0x07, 0xf6, 0x0b, 0xf6, 0x6b, 0xa3, 0xf6, 0x0b, 0x79, 0x3a, 0xa3, 0xef, - 0x82, 0x3c, 0x1d, 0x58, 0x0e, 0x58, 0x0e, 0xd0, 0x0f, 0xa0, 0x1f, 0x40, 0x3f, 0x80, 0x7e, 0xd8, - 0xb8, 0x3b, 0x46, 0x9e, 0x0e, 0x9c, 0x30, 0x9c, 0x30, 0x9c, 0x30, 0x9c, 0x30, 0x9c, 0x30, 0x9c, - 0x30, 0xa7, 0x13, 0xce, 0x73, 0x9e, 0x8e, 0xea, 0x1d, 0x52, 0xb4, 0x34, 0x1d, 0x85, 0x7b, 0xa3, - 0xf2, 0xda, 0x7b, 0x6d, 0x76, 0x5d, 0xf9, 0x1a, 0xb0, 0xcd, 0xae, 0xa4, 0x89, 0xeb, 0x77, 0x9a, - 0x9e, 0x1b, 0xfa, 0x5e, 0xa7, 0x23, 0xfc, 0x40, 0xbe, 0x89, 0xd5, 0xf4, 0x20, 0xb4, 0xb2, 0x42, - 0x2b, 0xab, 0x45, 0xe2, 0x44, 0x6a, 0x67, 0x35, 0x1e, 0x8b, 0x96, 0x56, 0xa9, 0x46, 0x0b, 0x3b, - 0x9e, 0x2a, 0xa7, 0xd8, 0x7f, 0x6d, 0x91, 0xe0, 0xaa, 0xa5, 0xbb, 0x12, 0x84, 0x17, 0x21, 0x31, - 0x42, 0x62, 0x4a, 0x48, 0xac, 0xaa, 0x0c, 0xc9, 0xc0, 0x18, 0x9a, 0x68, 0x5e, 0xd6, 0x1e, 0xcd, - 0x82, 0x5b, 0xd6, 0x75, 0x14, 0x87, 0x4b, 0x81, 0xd8, 0x15, 0x89, 0x5d, 0xa1, 0x98, 0x15, 0x4b, - 0x33, 0xc4, 0xdc, 0xf8, 0x4d, 0xeb, 0x41, 0xe8, 0x3b, 0xee, 0x13, 0xc3, 0x55, 0xeb, 0xa5, 0xb7, - 0xb8, 0x6c, 0x99, 0x12, 0xcc, 0x4d, 0x85, 0x39, 0x53, 0x3f, 0x1f, 0x91, 0xdc, 0x3d, 0x25, 0xe8, - 0x3b, 0x9f, 0x3c, 0x7f, 0xea, 0x67, 0xa5, 0xb2, 0x17, 0x02, 0xa1, 0x71, 0xa8, 0x04, 0x9c, 0x5c, - 0x11, 0x31, 0x41, 0x81, 0x16, 0x7a, 0x4a, 0x26, 0x01, 0x84, 0x02, 0x84, 0xda, 0x1e, 0x08, 0x35, - 0x91, 0x6c, 0x7d, 0x20, 0x35, 0x35, 0x97, 0x1e, 0x9c, 0x2a, 0x01, 0x4e, 0x01, 0x4e, 0xe5, 0x07, - 0x4e, 0x51, 0x95, 0x2f, 0x99, 0xc0, 0xee, 0x7f, 0xa3, 0xe4, 0xdc, 0x2f, 0x15, 0xbd, 0x78, 0xbe, - 0xc3, 0x4c, 0x9c, 0xec, 0xe8, 0x2a, 0x25, 0xa7, 0x72, 0x9a, 0x50, 0x52, 0x6e, 0x65, 0x35, 0xa6, - 0xb4, 0xc6, 0x94, 0xd7, 0x90, 0x12, 0xeb, 0x29, 0xb3, 0xa6, 0x52, 0xf3, 0xc5, 0x4a, 0x73, 0x32, - 0xd7, 0x11, 0x76, 0xdb, 0x17, 0x6d, 0x0e, 0x91, 0x1b, 0xfb, 0xcb, 0x53, 0x86, 0xb9, 0x3e, 0xc5, - 0x41, 0xc7, 0x9b, 0x37, 0x71, 0xf4, 0x70, 0x14, 0x9b, 0x91, 0xbd, 0xcd, 0x6c, 0x9e, 0xce, 0xc9, - 0x36, 0x91, 0x2d, 0xe5, 0x65, 0x4f, 0x99, 0xd1, 0x0d, 0x0c, 0x2a, 0x0c, 0xea, 0x36, 0x18, 0x54, - 0x5d, 0xb4, 0x34, 0x41, 0x4d, 0x8a, 0x77, 0xaf, 0xca, 0xc3, 0x27, 0xf2, 0x0d, 0x82, 0x06, 0x71, - 0x14, 0xbb, 0xfa, 0x9b, 0x30, 0x03, 0x26, 0xcd, 0x81, 0x29, 0xb3, 0x60, 0xdc, 0x3c, 0x18, 0x37, - 0x13, 0x86, 0xcd, 0x05, 0x8f, 0xd9, 0x60, 0x32, 0x1f, 0xfc, 0xb8, 0x6c, 0x4e, 0x66, 0x49, 0x97, - 0xe2, 0x4a, 0x3b, 0xff, 0x33, 0xc6, 0x39, 0x49, 0x97, 0xea, 0xae, 0xfb, 0x8f, 0x57, 0xab, 0x0a, - 0x8c, 0x97, 0xf2, 0x4a, 0xaf, 0xf1, 0x5b, 0x03, 0x73, 0xeb, 0x56, 0xde, 0xae, 0x7d, 0x40, 0xd6, - 0x2f, 0xfd, 0x5d, 0xf7, 0x5f, 0x83, 0x75, 0xc6, 0xc1, 0x61, 0x8e, 0x84, 0xba, 0x06, 0xa1, 0x5e, - 0x2d, 0xd4, 0xb8, 0xd4, 0x38, 0x17, 0x97, 0x1a, 0xa7, 0xac, 0xe2, 0x7b, 0xd9, 0xfa, 0x5e, 0xfa, - 0xdf, 0x87, 0xc1, 0x68, 0x71, 0x71, 0xc1, 0xf3, 0x41, 0x0d, 0x07, 0x27, 0x8c, 0x98, 0x06, 0x31, - 0x0d, 0x62, 0x9a, 0x1c, 0xc6, 0x34, 0x76, 0xff, 0x9b, 0xd3, 0x71, 0x6c, 0xff, 0x85, 0xcf, 0x06, - 0x4c, 0xdb, 0x81, 0x2a, 0xe3, 0x94, 0x7a, 0x95, 0x66, 0x29, 0x02, 0x40, 0x8e, 0xca, 0xb4, 0x94, - 0x0c, 0xec, 0xdc, 0xf4, 0x4c, 0x95, 0x6c, 0x4b, 0xe7, 0x67, 0xac, 0xbe, 0x4a, 0x29, 0x42, 0x28, - 0x70, 0x55, 0xc4, 0x6d, 0x7a, 0x4b, 0x4b, 0xd5, 0x1c, 0xef, 0x29, 0x00, 0xa6, 0x71, 0x80, 0xd9, - 0x14, 0x7e, 0xe8, 0xb4, 0x9d, 0xa6, 0x1d, 0x0a, 0x23, 0x40, 0xf3, 0xd5, 0xfc, 0x00, 0x9c, 0x00, - 0x9c, 0x00, 0x9c, 0x3b, 0x07, 0x38, 0xb5, 0x13, 0xc3, 0x97, 0xf3, 0x60, 0x5b, 0x64, 0x8b, 0x7b, - 0x9e, 0x1f, 0xf2, 0x5b, 0xe0, 0x68, 0x56, 0x26, 0x09, 0x79, 0x2f, 0xda, 0x76, 0xbf, 0x13, 0x29, - 0x43, 0xad, 0x56, 0x3d, 0x81, 0x39, 0x87, 0x39, 0x87, 0x39, 0xdf, 0x3d, 0x73, 0x3e, 0x34, 0x29, - 0x96, 0xdb, 0xef, 0x3e, 0x4a, 0x17, 0x3e, 0xab, 0x98, 0x81, 0x1a, 0xe8, 0x03, 0xd0, 0x07, 0xa0, - 0x0f, 0x32, 0xb1, 0xa5, 0xb5, 0x6a, 0xf5, 0x04, 0x0c, 0x02, 0x18, 0x84, 0x55, 0xa8, 0xd5, 0x77, - 0x3c, 0xdf, 0x09, 0x5f, 0x0c, 0x20, 0xd7, 0xf1, 0xcc, 0x80, 0x99, 0x80, 0x99, 0x80, 0x99, 0x3b, - 0x07, 0x33, 0xfb, 0x8e, 0x1b, 0xbe, 0xc5, 0xf9, 0x14, 0x00, 0x26, 0x00, 0xe6, 0xd6, 0x02, 0xcc, - 0x72, 0x15, 0xf0, 0x12, 0xf0, 0x72, 0xc5, 0x36, 0x06, 0x11, 0xc8, 0x18, 0x5d, 0xe5, 0xd8, 0xb6, - 0x39, 0x0b, 0x80, 0x12, 0x72, 0xfa, 0xf5, 0x13, 0x00, 0x37, 0x01, 0x37, 0x01, 0x37, 0x77, 0x0e, - 0x6e, 0x3e, 0xda, 0xc1, 0x94, 0x15, 0xb0, 0x78, 0x8a, 0x72, 0x5f, 0x5b, 0x03, 0x8e, 0xe2, 0xdc, - 0x89, 0x06, 0x27, 0x9d, 0x81, 0x9a, 0x96, 0xd3, 0x7e, 0x97, 0x7c, 0xf7, 0xe0, 0xf5, 0x2f, 0xe2, - 0xbf, 0x47, 0x7d, 0x7c, 0xb6, 0xc8, 0x37, 0x84, 0xbe, 0xed, 0x06, 0x66, 0x4e, 0xcd, 0x26, 0x53, - 0xf3, 0x1f, 0x9d, 0xdd, 0x9d, 0x7f, 0x82, 0x8f, 0x81, 0x8f, 0x81, 0x8f, 0xd9, 0x3d, 0x1f, 0xc3, - 0x6d, 0x56, 0x0a, 0x9a, 0x37, 0xb0, 0x2d, 0x9d, 0x93, 0x76, 0x33, 0x9b, 0x41, 0x77, 0xb1, 0xd1, - 0x2a, 0x75, 0xcd, 0x46, 0x7e, 0xf3, 0x41, 0x0d, 0x5f, 0x63, 0xbf, 0x71, 0x27, 0xba, 0xa9, 0x9f, - 0x8f, 0x58, 0x1a, 0x54, 0x14, 0x58, 0xfb, 0xff, 0x8d, 0xbf, 0xe6, 0xd4, 0xcf, 0xa4, 0xb6, 0x80, - 0x7c, 0x72, 0xa1, 0xd3, 0x51, 0x64, 0x74, 0x0d, 0x01, 0x5b, 0x43, 0x11, 0xd5, 0x5b, 0x0d, 0x56, - 0x5a, 0x01, 0xae, 0x7e, 0x22, 0x65, 0xf4, 0x13, 0xc9, 0x84, 0x8b, 0x47, 0x3f, 0x11, 0x25, 0x98, - 0x8d, 0x7e, 0x22, 0x88, 0x00, 0x10, 0x01, 0x20, 0x02, 0xc8, 0x6a, 0x04, 0x80, 0x7e, 0x22, 0xcc, - 0xff, 0xa1, 0x9f, 0x88, 0xcc, 0x03, 0xd0, 0x4f, 0xc4, 0x80, 0x99, 0x48, 0x47, 0xa8, 0xd1, 0x4f, - 0x64, 0x8d, 0x50, 0xa3, 0x9f, 0x08, 0xfa, 0x89, 0x18, 0xc2, 0x13, 0x05, 0xf4, 0x13, 0x91, 0x0b, - 0x6a, 0xd0, 0x4f, 0x04, 0x31, 0x0d, 0x62, 0x9a, 0x1d, 0x8d, 0x69, 0xd0, 0x4f, 0x04, 0xf9, 0x9a, - 0xd3, 0xd3, 0x23, 0x5f, 0x73, 0xf1, 0x96, 0xa2, 0x9f, 0xc8, 0x66, 0xf7, 0x14, 0x00, 0xd3, 0x38, - 0xc0, 0x44, 0x3f, 0x11, 0x00, 0x4e, 0x00, 0x4e, 0x00, 0x4e, 0xf4, 0x13, 0xc9, 0x80, 0x2d, 0x1e, - 0xa5, 0x5a, 0x08, 0x13, 0x66, 0x38, 0x99, 0x1a, 0x16, 0x18, 0x16, 0x18, 0x16, 0x78, 0xe7, 0x2c, - 0xf0, 0xa3, 0xe7, 0x75, 0x84, 0xed, 0x9a, 0x30, 0xc1, 0x25, 0xb4, 0x74, 0x5a, 0xb3, 0xf8, 0x68, - 0xe9, 0x04, 0x7b, 0x0e, 0x7b, 0x0e, 0x7b, 0xce, 0x6c, 0x52, 0xd0, 0xd2, 0x89, 0x55, 0x30, 0xc1, - 0xe0, 0x2e, 0x9f, 0x1f, 0x0c, 0xee, 0xc6, 0xb6, 0x14, 0x2d, 0x9d, 0x8c, 0xcc, 0x86, 0x96, 0x4e, - 0x52, 0x6e, 0x06, 0x2d, 0x9d, 0x00, 0x33, 0x01, 0x33, 0x77, 0x16, 0x66, 0xa2, 0xa5, 0x13, 0x00, - 0x26, 0x00, 0xe6, 0x76, 0x03, 0x4c, 0xb4, 0x74, 0x02, 0xbc, 0x5c, 0xb9, 0x8d, 0x68, 0xe9, 0x04, - 0xb8, 0x09, 0xb8, 0x09, 0xb8, 0x69, 0x1e, 0x6e, 0xa2, 0xa5, 0x53, 0xde, 0x7c, 0x03, 0x5a, 0x3a, - 0xc1, 0xc7, 0xc0, 0xc7, 0xc0, 0xc7, 0xe4, 0xc7, 0xc7, 0xa0, 0xa5, 0xd3, 0x46, 0x66, 0xd8, 0xb1, - 0x96, 0x4e, 0x1c, 0x2d, 0x82, 0x0a, 0xc6, 0x3b, 0x3a, 0xdd, 0x46, 0xdf, 0x72, 0x53, 0x0d, 0x9d, - 0xf6, 0x52, 0x94, 0xa3, 0xa1, 0xf9, 0xd7, 0x2e, 0x7c, 0x2c, 0x7e, 0x70, 0x82, 0xb0, 0x1e, 0x86, - 0x7a, 0x2d, 0x6b, 0x8a, 0x1f, 0x1d, 0xf7, 0xa2, 0x23, 0x86, 0x96, 0x3c, 0x28, 0xbe, 0x2b, 0xb8, - 0xfd, 0x4e, 0x47, 0xa3, 0xb5, 0xd5, 0x47, 0xfb, 0x1b, 0xdf, 0x64, 0xd7, 0x7e, 0x4b, 0xf8, 0xa2, - 0xf5, 0xf3, 0x4b, 0x3c, 0x55, 0xaa, 0x3b, 0xc4, 0xa4, 0xe1, 0x86, 0x35, 0xbb, 0xa8, 0xd5, 0x86, - 0xcc, 0x9c, 0x2e, 0xd3, 0xb4, 0x58, 0x5d, 0x07, 0xd5, 0x46, 0x28, 0xca, 0x82, 0xae, 0x0c, 0x98, - 0xd8, 0x7b, 0xc2, 0x86, 0xf3, 0x6f, 0xb4, 0xda, 0xee, 0xca, 0xef, 0x91, 0xc2, 0xfe, 0x14, 0xe3, - 0xd7, 0x51, 0xdb, 0x95, 0x04, 0x76, 0x45, 0xa3, 0x15, 0xa5, 0x81, 0x16, 0x5a, 0x91, 0x43, 0x28, - 0x9d, 0x50, 0x89, 0x23, 0x24, 0xd2, 0x0d, 0x7d, 0xd8, 0x42, 0x1c, 0xb6, 0x50, 0x86, 0x29, 0x64, - 0x31, 0x6b, 0x73, 0xc8, 0xa1, 0x46, 0xb2, 0xe7, 0x1d, 0x61, 0xb7, 0x69, 0x5c, 0x95, 0x0e, 0x27, - 0x95, 0x70, 0x4f, 0x6f, 0xde, 0xc4, 0x1d, 0x44, 0x8f, 0xd4, 0xd9, 0x25, 0x33, 0xa6, 0x82, 0xd6, - 0x6f, 0x53, 0xab, 0xbf, 0x26, 0xb1, 0x9f, 0x26, 0xb9, 0x7f, 0x26, 0x8c, 0xc5, 0x4e, 0x1a, 0x0b, - 0x6a, 0xbf, 0x4a, 0x9a, 0xf7, 0xe4, 0xf0, 0xa2, 0x4c, 0x44, 0xa5, 0x36, 0x31, 0xc9, 0x41, 0x44, - 0x72, 0x12, 0x8f, 0x5c, 0x44, 0x23, 0x3b, 0xb1, 0xc8, 0x4e, 0x24, 0x32, 0x13, 0x87, 0xe9, 0xc6, - 0xed, 0xda, 0x44, 0x20, 0x5f, 0x11, 0xaa, 0x66, 0xd1, 0x29, 0x62, 0xad, 0xc5, 0xb1, 0x16, 0x95, - 0x2a, 0x63, 0x8a, 0xb2, 0x08, 0x1c, 0x98, 0x02, 0x68, 0xda, 0x63, 0xdc, 0xb9, 0x31, 0x87, 0xa5, - 0xe0, 0x04, 0x68, 0x8c, 0x95, 0x16, 0x43, 0xa5, 0xc5, 0x48, 0xd1, 0x18, 0x28, 0xd9, 0xf5, 0x23, - 0x4a, 0x3c, 0x97, 0xa4, 0x17, 0x95, 0x10, 0x34, 0x83, 0x6c, 0xcb, 0x49, 0xf5, 0x7a, 0x19, 0x5d, - 0xfd, 0x89, 0x35, 0xab, 0xaf, 0xba, 0xea, 0x5a, 0xab, 0x2d, 0xb1, 0xc4, 0x1a, 0x4b, 0xbb, 0x7a, - 0x3d, 0x97, 0xaf, 0xd2, 0xe2, 0x7f, 0x59, 0xb2, 0x6e, 0xb2, 0xeb, 0xa5, 0xbc, 0x4e, 0x2b, 0xd6, - 0x46, 0x71, 0x4d, 0x16, 0xaf, 0xc3, 0xfc, 0x5b, 0x2e, 0x78, 0xc3, 0x62, 0xcf, 0xf7, 0x9a, 0x22, - 0x08, 0xc4, 0xf2, 0x4e, 0xed, 0x53, 0xc5, 0x07, 0xe3, 0x8f, 0x2e, 0x59, 0xa9, 0xd5, 0x21, 0xdf, - 0x5a, 0xc4, 0x2a, 0x83, 0x48, 0x27, 0x88, 0xb3, 0x69, 0x0d, 0xbf, 0xcf, 0xaa, 0x45, 0x94, 0x04, - 0x94, 0xca, 0x80, 0x51, 0x19, 0x10, 0xce, 0x02, 0xbe, 0xf8, 0x8b, 0x33, 0x49, 0xe7, 0xba, 0x00, - 0x68, 0xbc, 0x6b, 0xeb, 0x97, 0xe1, 0xd5, 0x36, 0xaf, 0x5b, 0x04, 0xb9, 0xf8, 0x5e, 0x3a, 0x9e, - 0x57, 0x09, 0x47, 0x14, 0x84, 0x80, 0x1a, 0x5d, 0x90, 0xa3, 0x08, 0x72, 0xb4, 0xa0, 0x26, 0x24, - 0x3c, 0xae, 0x40, 0x36, 0x7a, 0x2e, 0xf6, 0x14, 0x7a, 0x51, 0x4d, 0x04, 0x49, 0xfa, 0x60, 0x4f, - 0x31, 0x16, 0x56, 0x8e, 0x7d, 0x29, 0xb1, 0x2e, 0x41, 0xc8, 0x74, 0x43, 0x59, 0xed, 0xd0, 0x55, - 0x3b, 0x54, 0xa5, 0x09, 0xa1, 0x19, 0x74, 0xad, 0x1c, 0x69, 0x6a, 0xf0, 0xbf, 0x14, 0xde, 0x77, - 0x9a, 0xef, 0x8d, 0x62, 0xa6, 0xa3, 0xa1, 0xc0, 0x73, 0x41, 0x3c, 0x29, 0xe0, 0xa4, 0xc2, 0xea, - 0x92, 0xd8, 0x5c, 0x45, 0x16, 0x57, 0x99, 0xbd, 0x85, 0x62, 0xe6, 0x50, 0x31, 0x55, 0x39, 0xd7, - 0xa2, 0xed, 0x3f, 0x05, 0xf4, 0xd3, 0x87, 0x68, 0xf4, 0x2e, 0x9c, 0x54, 0x2a, 0x8b, 0xf3, 0xae, - 0x9c, 0x3d, 0xa8, 0x8a, 0x7b, 0x3a, 0x7c, 0x9d, 0xfe, 0x39, 0x25, 0x99, 0x01, 0x25, 0x32, 0x9f, - 0xaa, 0x6f, 0xa8, 0x95, 0x5e, 0xc5, 0x92, 0x56, 0xc5, 0x92, 0x4e, 0xa5, 0x97, 0x46, 0x65, 0xe6, - 0x44, 0xb6, 0xd9, 0xeb, 0x5b, 0xfd, 0xc0, 0x7e, 0x12, 0x31, 0x39, 0x40, 0x37, 0x8f, 0x73, 0x33, - 0xc1, 0x54, 0xc2, 0x54, 0x6e, 0x9d, 0xa9, 0x6c, 0x7a, 0x7d, 0x37, 0x14, 0x7e, 0xad, 0xa2, 0x61, - 0x2d, 0x09, 0x77, 0xf4, 0x68, 0x16, 0xb3, 0xeb, 0x25, 0xa5, 0x32, 0x1c, 0x85, 0xb2, 0xd4, 0xc2, - 0x70, 0x15, 0x9b, 0x73, 0xd6, 0x1f, 0x0f, 0xf4, 0x52, 0x74, 0x33, 0xb7, 0xb4, 0xa5, 0xb7, 0x95, - 0x4a, 0xed, 0xb4, 0x52, 0x39, 0x3e, 0x3d, 0x39, 0x3d, 0x3e, 0xab, 0x56, 0x4b, 0x35, 0xdd, 0x4e, - 0xf1, 0xac, 0xab, 0x9d, 0xd2, 0x01, 0x6b, 0x23, 0x53, 0x9e, 0xb9, 0x1f, 0x08, 0x9f, 0xc3, 0x2f, - 0x47, 0xf3, 0xc0, 0x2b, 0xc3, 0x2b, 0xc3, 0x2b, 0xc3, 0x2b, 0xc3, 0x2b, 0xc3, 0x2b, 0xc3, 0x2b, - 0xd3, 0xbc, 0x72, 0xe8, 0x74, 0x9c, 0xbf, 0x69, 0x19, 0x52, 0xb3, 0x6e, 0x79, 0x6a, 0x22, 0xf8, - 0x65, 0xf8, 0xe5, 0xad, 0xf3, 0xcb, 0x3d, 0xe1, 0x37, 0x85, 0x1b, 0xda, 0x4f, 0x42, 0xc3, 0x31, - 0x57, 0xe1, 0x98, 0xe1, 0x98, 0xb3, 0xea, 0x98, 0x8f, 0x8f, 0xe1, 0x87, 0x37, 0xe1, 0x87, 0xbb, - 0xa2, 0xeb, 0xf9, 0x2f, 0xa3, 0xc0, 0x96, 0xee, 0x84, 0x67, 0x66, 0x81, 0x07, 0x86, 0x07, 0xde, - 0x3a, 0x0f, 0xdc, 0x77, 0xdc, 0x10, 0x61, 0x31, 0xbc, 0x2f, 0xc2, 0x62, 0xb8, 0xe3, 0x14, 0xdc, - 0x31, 0x47, 0x64, 0xbc, 0x60, 0x2e, 0xb8, 0x66, 0xb8, 0x66, 0x04, 0xc7, 0x08, 0x8e, 0xe1, 0x9e, - 0x11, 0x1c, 0xc3, 0x1b, 0xaf, 0x5d, 0x36, 0x74, 0xe4, 0x81, 0xc7, 0x85, 0xc7, 0x9d, 0xdf, 0xf1, - 0xd4, 0xf3, 0x5c, 0x8d, 0x68, 0x77, 0x8f, 0x70, 0x1f, 0x3f, 0xa1, 0x16, 0x0a, 0xba, 0x0d, 0xdd, - 0x06, 0xd1, 0x05, 0x24, 0x0d, 0x24, 0x0d, 0xa2, 0x0b, 0xd0, 0x7a, 0xbc, 0x6c, 0x41, 0x68, 0xfb, - 0xa1, 0x15, 0x3a, 0x5d, 0xbd, 0x36, 0x76, 0xe3, 0x39, 0xe0, 0x8a, 0xe1, 0x8a, 0xb7, 0xce, 0x15, - 0x0f, 0x25, 0x3b, 0x74, 0x9a, 0x7f, 0x06, 0xa9, 0xfb, 0xe3, 0xcf, 0xee, 0xc8, 0x96, 0x15, 0x5d, - 0xdb, 0xf5, 0x02, 0xd1, 0xf4, 0xdc, 0x16, 0xa9, 0x4f, 0x2f, 0xfc, 0x3a, 0xfc, 0x3a, 0xfc, 0x7a, - 0xee, 0xfd, 0x7a, 0xae, 0x9a, 0x84, 0x25, 0x5d, 0x8d, 0xc6, 0x3f, 0x29, 0x37, 0xc0, 0x93, 0xec, - 0xd6, 0xf4, 0x69, 0xfc, 0xa0, 0xf1, 0x4f, 0x2a, 0xad, 0xee, 0x4c, 0x37, 0x05, 0x8b, 0x5b, 0xd9, - 0xad, 0xa7, 0x29, 0xd4, 0x8a, 0x82, 0x49, 0x45, 0xc0, 0xa4, 0xa2, 0x5f, 0xb5, 0x22, 0xdf, 0x4d, - 0xf5, 0x48, 0x9b, 0x13, 0x36, 0xbe, 0x06, 0x69, 0x73, 0xe2, 0x95, 0xcf, 0xee, 0x68, 0xeb, 0x9a, - 0x8c, 0x51, 0x56, 0x44, 0xa7, 0x3f, 0x5a, 0x10, 0x3c, 0x5b, 0x81, 0xf0, 0xbf, 0xae, 0x28, 0x05, - 0x9b, 0x04, 0x18, 0x93, 0xcf, 0x66, 0xa3, 0x43, 0x5a, 0xf0, 0x12, 0x58, 0xa1, 0xf0, 0xbb, 0xb9, - 0xec, 0x92, 0x96, 0x7c, 0xf9, 0xb4, 0x3a, 0xa5, 0x35, 0xc7, 0xab, 0x2f, 0xd9, 0x28, 0x2d, 0xfe, - 0x3c, 0x73, 0x9f, 0xb4, 0x63, 0x33, 0x7d, 0xd2, 0x24, 0x44, 0x81, 0x1a, 0xff, 0x6d, 0xbe, 0x57, - 0xda, 0x7a, 0x51, 0xe1, 0xf1, 0x92, 0xd2, 0xfd, 0xd2, 0x84, 0x6b, 0x3f, 0x76, 0x08, 0xbd, 0x99, - 0xe2, 0x71, 0xb2, 0x8d, 0x78, 0x26, 0x17, 0x28, 0x0e, 0xd7, 0x6e, 0x4b, 0x9a, 0xad, 0x29, 0x48, - 0xaa, 0x2e, 0x63, 0x91, 0xbd, 0xbe, 0x4e, 0xf2, 0x92, 0x6c, 0x06, 0x6d, 0xd3, 0x9b, 0xae, 0x3d, - 0x7a, 0x5e, 0x47, 0xd8, 0x2e, 0xa5, 0xe9, 0x5a, 0x29, 0xc5, 0xa6, 0x69, 0x3d, 0xdf, 0x0b, 0xbd, - 0xa6, 0xd7, 0xb1, 0xbe, 0x0a, 0x3f, 0x50, 0x09, 0x2a, 0xa6, 0xfb, 0x63, 0xce, 0xce, 0xa0, 0xae, - 0xad, 0xbf, 0x97, 0xa1, 0xab, 0xd0, 0xd5, 0xcd, 0xe9, 0xaa, 0x70, 0xfb, 0x5d, 0xe1, 0xab, 0xe6, - 0x78, 0x52, 0x6e, 0xd5, 0x54, 0xbc, 0x35, 0x93, 0x47, 0xc7, 0x7d, 0x3b, 0x14, 0x56, 0xc7, 0xe9, - 0x3a, 0xa1, 0xba, 0x76, 0x4f, 0x8d, 0x85, 0x8a, 0x42, 0x45, 0x37, 0xa6, 0xa2, 0x7d, 0xc7, 0x0d, - 0x4b, 0x35, 0x82, 0x76, 0xd6, 0x14, 0x86, 0xd0, 0xf8, 0x76, 0x5a, 0x2f, 0x38, 0x8d, 0xe3, 0x24, - 0xbd, 0x8b, 0x72, 0x34, 0xf9, 0x74, 0x0e, 0x66, 0x77, 0x40, 0xeb, 0x7c, 0xb7, 0xf1, 0x25, 0xab, - 0x55, 0xab, 0x27, 0xd5, 0x0d, 0x2e, 0x9b, 0x21, 0x82, 0xba, 0x91, 0x66, 0x93, 0x5e, 0x11, 0x0c, - 0x41, 0x22, 0xd5, 0x1d, 0xcd, 0x0e, 0x87, 0x47, 0x82, 0x47, 0x82, 0x47, 0x82, 0x47, 0x82, 0x47, - 0x82, 0x47, 0x22, 0x7b, 0xa4, 0xd0, 0xe9, 0x0a, 0xaf, 0x4f, 0xf0, 0x45, 0xe3, 0x81, 0xf0, 0x42, - 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0x84, 0x4f, 0x6c, 0x2a, 0xf7, 0x62, - 0x72, 0x3a, 0x7f, 0x24, 0x75, 0x72, 0x5b, 0x90, 0xcf, 0x34, 0xb8, 0x0d, 0x9e, 0x6f, 0xa3, 0x99, - 0x1f, 0x62, 0x2f, 0x46, 0x4d, 0xbd, 0x58, 0x99, 0xf3, 0x20, 0x73, 0xdb, 0x8b, 0xd2, 0x2d, 0x2f, - 0x59, 0xb9, 0xc3, 0x0b, 0x67, 0xd3, 0x0c, 0x6a, 0x83, 0xb3, 0x69, 0x80, 0x46, 0x80, 0xc6, 0xc5, - 0x3b, 0x87, 0xb3, 0x69, 0x79, 0x6d, 0xc5, 0xd9, 0x34, 0x74, 0x75, 0x93, 0xba, 0x8a, 0xb3, 0xe9, - 0xa5, 0x4b, 0x83, 0xb3, 0x69, 0xa8, 0x28, 0x38, 0x18, 0x70, 0x30, 0xe0, 0x60, 0xc0, 0xc1, 0x70, - 0xf8, 0x22, 0x9c, 0x4d, 0xc3, 0x23, 0xc1, 0x23, 0xc1, 0x23, 0xc1, 0x23, 0xc1, 0x23, 0x65, 0xc3, - 0x23, 0xe1, 0x6c, 0x1a, 0x5e, 0x08, 0x5e, 0x08, 0x5e, 0x08, 0x5e, 0x08, 0x5e, 0xc8, 0x90, 0x17, - 0xca, 0xfa, 0xd9, 0xb4, 0x6c, 0xf7, 0x09, 0xe5, 0xa3, 0x69, 0x89, 0x6e, 0x13, 0x59, 0x6d, 0x0a, - 0xb0, 0xb6, 0xb0, 0x9e, 0xb2, 0x20, 0x5a, 0x5d, 0x01, 0x56, 0x1e, 0xc6, 0x4b, 0x1d, 0xc2, 0x4b, - 0xf7, 0x02, 0x28, 0xb3, 0xf5, 0x02, 0xc8, 0x6b, 0x1b, 0x80, 0xd4, 0x3a, 0x00, 0x3c, 0x7a, 0x9e, - 0x64, 0x93, 0xb9, 0xe9, 0xa3, 0x45, 0xa9, 0x9e, 0x72, 0x92, 0xe6, 0x3d, 0x8d, 0x3e, 0x00, 0xdb, - 0x9a, 0x66, 0x61, 0x3a, 0xc3, 0x42, 0x1a, 0x18, 0x12, 0x3b, 0xb2, 0x29, 0x74, 0x60, 0xa3, 0x76, - 0x5c, 0x53, 0x44, 0x8f, 0x0a, 0x18, 0x98, 0x82, 0x16, 0xa9, 0x7d, 0x15, 0x89, 0xe8, 0x50, 0x07, - 0xde, 0xa8, 0xf4, 0xaa, 0xa4, 0xa0, 0x40, 0xdd, 0xa5, 0xd0, 0xef, 0x68, 0xa6, 0xb5, 0x3a, 0x4c, - 0xe0, 0xac, 0x61, 0x20, 0x6f, 0xae, 0xd9, 0xf7, 0x7d, 0xe1, 0x86, 0x56, 0xcb, 0x0e, 0x85, 0x9a, - 0x69, 0x9f, 0x1b, 0x09, 0x0b, 0x0f, 0x0b, 0xff, 0x6a, 0xbd, 0x87, 0xb2, 0x61, 0xd9, 0x6e, 0x4b, - 0xb6, 0xad, 0xec, 0xa4, 0xa3, 0xbd, 0xc4, 0x67, 0x3f, 0xd9, 0x61, 0x28, 0x7c, 0x57, 0xda, 0x5c, - 0x17, 0xff, 0xfb, 0xe5, 0xd8, 0x3a, 0x6b, 0x7c, 0xaf, 0x0c, 0xee, 0xef, 0xad, 0xd1, 0x8f, 0xe5, - 0xe9, 0x1f, 0xef, 0xc6, 0x3f, 0xbc, 0x9b, 0xfb, 0x61, 0xff, 0xfe, 0xfe, 0x4d, 0xf4, 0xf3, 0xff, - 0x1c, 0xfc, 0xf4, 0x9f, 0x2f, 0xff, 0x63, 0x35, 0xe6, 0x3e, 0xf1, 0x8f, 0xe2, 0x46, 0xd4, 0xb7, - 0xe5, 0x75, 0x6d, 0xc7, 0xb5, 0xa4, 0xae, 0xd6, 0x98, 0xec, 0xca, 0xd4, 0x20, 0x28, 0x2d, 0x94, - 0x96, 0x2c, 0x1e, 0xca, 0x2a, 0xfb, 0x41, 0xb8, 0x4f, 0x51, 0x34, 0xbb, 0x15, 0x00, 0xab, 0x04, - 0x80, 0x35, 0x5e, 0x8a, 0x72, 0xf5, 0x24, 0x87, 0x78, 0xca, 0x84, 0x93, 0xd9, 0xdf, 0xdf, 0xff, - 0x62, 0x5b, 0x7f, 0xd7, 0xad, 0xff, 0x1c, 0x5b, 0x67, 0x0f, 0x8d, 0xa9, 0xbf, 0xdc, 0xdf, 0x5b, - 0x0f, 0x8d, 0x83, 0xef, 0xc7, 0x87, 0xb5, 0xd2, 0xe0, 0xe0, 0xa7, 0xc9, 0xef, 0x1b, 0xf7, 0xf7, - 0x6f, 0x0e, 0xfe, 0x49, 0x19, 0xf5, 0xd3, 0xc1, 0x8f, 0xfb, 0xfb, 0x37, 0x9b, 0xf1, 0x3c, 0xcf, - 0x5e, 0x10, 0xaa, 0xb9, 0x9d, 0x64, 0x04, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, 0x0e, 0x7c, - 0x0e, 0x7c, 0x8e, 0x92, 0xcf, 0xe9, 0x78, 0x4f, 0x8e, 0x6b, 0x3d, 0xda, 0xae, 0x2b, 0x7c, 0x79, - 0xbf, 0x33, 0x33, 0x0a, 0xbe, 0x07, 0xbe, 0xe7, 0xd5, 0x7a, 0x4b, 0xdf, 0xbf, 0x27, 0x79, 0xdf, - 0x1e, 0x4d, 0xb6, 0xbb, 0x5e, 0xd8, 0x52, 0x16, 0xed, 0xe9, 0x41, 0x90, 0x6c, 0x48, 0xf6, 0xe6, - 0x24, 0x7b, 0xb3, 0x07, 0xe0, 0x6b, 0x92, 0x02, 0x64, 0xcf, 0xbe, 0x97, 0xa7, 0x00, 0xc8, 0x9d, - 0x7b, 0x87, 0xa2, 0xe3, 0x8a, 0x50, 0xba, 0x21, 0xfe, 0xec, 0xc7, 0xd1, 0x13, 0x1f, 0x3d, 0xf1, - 0x65, 0xb6, 0x3c, 0x4d, 0x53, 0x8d, 0xbe, 0x03, 0xdb, 0xdb, 0x77, 0xa0, 0x6d, 0x77, 0x02, 0x34, - 0x1e, 0x40, 0x46, 0xb0, 0x6e, 0xfc, 0xbf, 0xfd, 0x8d, 0x07, 0x50, 0x94, 0x0c, 0x55, 0x43, 0xf2, - 0xbd, 0xc4, 0x10, 0x24, 0xdf, 0x9b, 0x25, 0x21, 0x09, 0xcc, 0xac, 0x16, 0x43, 0xcb, 0xbd, 0x64, - 0x48, 0xbe, 0xd7, 0xf6, 0x45, 0x28, 0x4a, 0x86, 0x47, 0x82, 0x47, 0x82, 0x47, 0x82, 0x47, 0x82, - 0x47, 0xca, 0x86, 0x47, 0x42, 0x51, 0x32, 0xbc, 0x10, 0xbc, 0x10, 0xbc, 0x10, 0xbc, 0x10, 0xbc, - 0x90, 0x21, 0x2f, 0x94, 0xc9, 0xa2, 0xe4, 0x99, 0xd3, 0x3b, 0xf6, 0x9e, 0xd9, 0x77, 0xd1, 0xec, - 0x68, 0x9b, 0x8d, 0xe3, 0x2b, 0x4d, 0x87, 0x8b, 0xe3, 0x2b, 0x60, 0x47, 0x60, 0x47, 0x23, 0xd8, - 0x11, 0xc7, 0x57, 0x50, 0x35, 0xa8, 0x1a, 0xc2, 0x34, 0x84, 0x69, 0x08, 0xd3, 0x10, 0xa6, 0xe1, - 0xf8, 0x0a, 0x1e, 0x09, 0x1e, 0x09, 0x1e, 0x09, 0x1e, 0x09, 0x1e, 0x29, 0x47, 0x1e, 0x09, 0xc7, - 0x57, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0xf0, 0x42, 0x86, 0xbc, 0x50, 0x0e, 0x8e, - 0xaf, 0x98, 0xdb, 0xea, 0xce, 0x9c, 0x5e, 0xe5, 0xb8, 0xb3, 0xae, 0x4c, 0x85, 0x1e, 0x71, 0x59, - 0xa4, 0xeb, 0x0c, 0xf7, 0x56, 0xbc, 0x78, 0xb1, 0xde, 0x7f, 0x1a, 0xfa, 0x31, 0xd1, 0x5a, 0x68, - 0x9e, 0xd7, 0xd4, 0x1f, 0x1e, 0x8d, 0x5c, 0xdf, 0xbb, 0xd1, 0xcb, 0x2e, 0x2b, 0x40, 0x7c, 0x2f, - 0x82, 0xa6, 0xef, 0xf4, 0xe2, 0x45, 0x2d, 0xd6, 0x5b, 0x2d, 0xc7, 0x7d, 0x2a, 0x0c, 0x5f, 0x71, - 0x84, 0x51, 0x0a, 0x2d, 0x3b, 0xb4, 0x0b, 0xa1, 0x57, 0x08, 0x9f, 0x45, 0x61, 0x34, 0x55, 0xa1, - 0xeb, 0xb5, 0x44, 0x27, 0x13, 0x15, 0x8d, 0x3d, 0xe1, 0xb6, 0x3b, 0xde, 0x5f, 0x39, 0x2c, 0x67, - 0x1c, 0x7f, 0xf3, 0xb4, 0x6a, 0x19, 0x93, 0x07, 0x4a, 0x9f, 0x06, 0x4b, 0x2c, 0xee, 0x22, 0x09, - 0x3a, 0xf7, 0xdc, 0xd0, 0x76, 0x5c, 0xe1, 0x17, 0xda, 0x9e, 0x1f, 0x09, 0xd2, 0x70, 0x92, 0x95, - 0x32, 0x23, 0x29, 0x3b, 0xca, 0xe8, 0x99, 0x76, 0xb6, 0x2c, 0xf7, 0xda, 0x85, 0x1c, 0x1e, 0x2c, - 0xaf, 0x95, 0x39, 0x49, 0x9f, 0xa6, 0x2a, 0xb3, 0x6b, 0xac, 0x5e, 0xe3, 0xb5, 0xd5, 0x5b, 0x6d, - 0xe6, 0x65, 0xcd, 0x7b, 0x71, 0x61, 0xeb, 0x72, 0x09, 0x43, 0x3e, 0xbb, 0x3e, 0x93, 0xef, 0x3a, - 0xfa, 0x29, 0xd6, 0xc0, 0x65, 0xdf, 0xb2, 0xe8, 0x04, 0xbf, 0xd8, 0x7f, 0x8a, 0x1b, 0xcf, 0x9b, - 0xdf, 0xa9, 0xd7, 0xdf, 0xbc, 0x38, 0xfd, 0x4f, 0x33, 0xdf, 0xec, 0xbd, 0xf8, 0xea, 0x34, 0x63, - 0xaf, 0x3a, 0xd8, 0x1b, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, - 0x87, 0xcd, 0xba, 0xcd, 0x9c, 0x25, 0x10, 0x00, - } -) - -// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that -// correspond with the leaf. The type is represented as a reflect.Type. The naming -// of the map ensures that there are no clashes with valid YANG identifiers. -var ΛEnumTypes = map[string][]reflect.Type{ - "/components/component/state/oper-status": { - reflect.TypeOf((E_OpenconfigPlatformTypes_COMPONENT_OPER_STATUS)(0)), - }, - "/components/component/state/temperature/alarm-severity": { - reflect.TypeOf((E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)), - }, - "/components/component/state/type": { - reflect.TypeOf((E_OpenconfigPlatformTypes_OPENCONFIG_HARDWARE_COMPONENT)(0)), - reflect.TypeOf((E_OpenconfigPlatformTypes_OPENCONFIG_SOFTWARE_COMPONENT)(0)), - }, - "/interfaces/interface/config/type": { - reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), - }, - "/interfaces/interface/state/admin-status": { - reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus)(0)), - }, - "/interfaces/interface/state/oper-status": { - reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus)(0)), - }, - "/interfaces/interface/state/type": { - reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/admin-status": { - reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_AdminStatus)(0)), - }, - "/interfaces/interface/subinterfaces/subinterface/state/oper-status": { - reflect.TypeOf((E_OpenconfigInterfaces_Interfaces_Interface_State_OperStatus)(0)), - }, - "/messages/config/severity": { - reflect.TypeOf((E_OpenconfigMessages_SyslogSeverity)(0)), - }, - "/messages/debug-entries/debug-service/config/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/messages/debug-entries/debug-service/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/messages/debug-entries/debug-service/state/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/messages/state/severity": { - reflect.TypeOf((E_OpenconfigMessages_SyslogSeverity)(0)), - }, - "/system/aaa/accounting/config/accounting-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/accounting/events/event/config/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE)(0)), - }, - "/system/aaa/accounting/events/event/config/record": { - reflect.TypeOf((E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record)(0)), - }, - "/system/aaa/accounting/events/event/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE)(0)), - }, - "/system/aaa/accounting/events/event/state/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_ACCOUNTING_EVENT_TYPE)(0)), - }, - "/system/aaa/accounting/events/event/state/record": { - reflect.TypeOf((E_OpenconfigSystem_System_Aaa_Accounting_Events_Event_Config_Record)(0)), - }, - "/system/aaa/accounting/state/accounting-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/authentication/config/authentication-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/authentication/state/authentication-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/authentication/users/user/config/role": { - reflect.TypeOf((E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES)(0)), - }, - "/system/aaa/authentication/users/user/state/role": { - reflect.TypeOf((E_OpenconfigAaaTypes_SYSTEM_DEFINED_ROLES)(0)), - }, - "/system/aaa/authorization/config/authorization-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/authorization/events/event/config/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE)(0)), - }, - "/system/aaa/authorization/events/event/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE)(0)), - }, - "/system/aaa/authorization/events/event/state/event-type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_AUTHORIZATION_EVENT_TYPE)(0)), - }, - "/system/aaa/authorization/state/authorization-method": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_METHOD_TYPE)(0)), - }, - "/system/aaa/server-groups/server-group/config/type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_SERVER_TYPE)(0)), - }, - "/system/aaa/server-groups/server-group/state/type": { - reflect.TypeOf((E_OpenconfigAaaTypes_AAA_SERVER_TYPE)(0)), - }, - "/system/alarms/alarm/state/severity": { - reflect.TypeOf((E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_SEVERITY)(0)), - }, - "/system/alarms/alarm/state/type-id": { - reflect.TypeOf((E_OpenconfigAlarmTypes_OPENCONFIG_ALARM_TYPE_ID)(0)), - }, - "/system/cpus/cpu/index": { - reflect.TypeOf((E_OpenconfigSystem_System_Cpus_Cpu_State_Index)(0)), - }, - "/system/cpus/cpu/state/index": { - reflect.TypeOf((E_OpenconfigSystem_System_Cpus_Cpu_State_Index)(0)), - }, - "/system/grpc-server/config/listen-addresses": { - reflect.TypeOf((E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses)(0)), - }, - "/system/grpc-server/state/listen-addresses": { - reflect.TypeOf((E_OpenconfigSystem_System_GrpcServer_Config_ListenAddresses)(0)), - }, - "/system/logging/console/selectors/selector/config/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/console/selectors/selector/config/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/logging/console/selectors/selector/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/console/selectors/selector/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/logging/console/selectors/selector/state/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/console/selectors/selector/state/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/config/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/config/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/state/facility": { - reflect.TypeOf((E_OpenconfigSystemLogging_SYSLOG_FACILITY)(0)), - }, - "/system/logging/remote-servers/remote-server/selectors/selector/state/severity": { - reflect.TypeOf((E_OpenconfigSystemLogging_SyslogSeverity)(0)), - }, - "/system/messages/config/severity": { - reflect.TypeOf((E_OpenconfigMessages_SyslogSeverity)(0)), - }, - "/system/messages/debug-entries/debug-service/config/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/system/messages/debug-entries/debug-service/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/system/messages/debug-entries/debug-service/state/service": { - reflect.TypeOf((E_OpenconfigMessages_DEBUG_SERVICE)(0)), - }, - "/system/messages/state/severity": { - reflect.TypeOf((E_OpenconfigMessages_SyslogSeverity)(0)), - }, - "/system/ntp/ntp-keys/ntp-key/config/key-type": { - reflect.TypeOf((E_OpenconfigSystem_NTP_AUTH_TYPE)(0)), - }, - "/system/ntp/ntp-keys/ntp-key/state/key-type": { - reflect.TypeOf((E_OpenconfigSystem_NTP_AUTH_TYPE)(0)), - }, - "/system/ntp/servers/server/config/association-type": { - reflect.TypeOf((E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType)(0)), - }, - "/system/ntp/servers/server/state/association-type": { - reflect.TypeOf((E_OpenconfigSystem_System_Ntp_Servers_Server_Config_AssociationType)(0)), - }, - "/system/openflow/agent/config/failure-mode": { - reflect.TypeOf((E_OpenconfigOpenflow_FailureMode)(0)), - }, - "/system/openflow/agent/state/failure-mode": { - reflect.TypeOf((E_OpenconfigOpenflow_FailureMode)(0)), - }, - "/system/openflow/controllers/controller/connections/connection/config/transport": { - reflect.TypeOf((E_OpenconfigOpenflow_Transport)(0)), - }, - "/system/openflow/controllers/controller/connections/connection/state/transport": { - reflect.TypeOf((E_OpenconfigOpenflow_Transport)(0)), - }, - "/system/ssh-server/config/protocol-version": { - reflect.TypeOf((E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion)(0)), - }, - "/system/ssh-server/state/protocol-version": { - reflect.TypeOf((E_OpenconfigSystem_System_SshServer_Config_ProtocolVersion)(0)), - }, -} diff --git a/forks/google/gnmi/server.go b/forks/google/gnmi/server.go index 3af5d9b50e74aa79c77a87f116920349374fbdc9..0cc56f64d062544d2ab1d5db5b00924e58285c6c 100644 --- a/forks/google/gnmi/server.go +++ b/forks/google/gnmi/server.go @@ -47,7 +47,7 @@ type ConfigCallback func(ygot.ValidatedGoStruct) error var ( pbRootPath = &pb.Path{} - supportedEncodings = []pb.Encoding{pb.Encoding_PROTO} + supportedEncodings = []pb.Encoding{pb.Encoding_PROTO, pb.Encoding_JSON_IETF, pb.Encoding_JSON} ) // Server struct maintains the data structure for device config and implements the interface of gnmi server. diff --git a/go.mod b/go.mod index dd60fd272aab3c56c223acadd69ecda15a8b365d..7a39f3f926c9d71ae3345171839222a20cf36e48 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( code.fbi.h-da.de/cocsn/swagger/apis v0.0.0-20200924152423-61030cab7b88 code.fbi.h-da.de/cocsn/yang-models v0.0.4 github.com/aristanetworks/goarista v0.0.0-20201120222254-94a892eb0c6a - github.com/gdamore/tcell/v2 v2.0.1-0.20201017141208-acf90d56d591 github.com/go-openapi/runtime v0.19.22 github.com/go-openapi/strfmt v0.19.5 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b @@ -16,11 +15,10 @@ require ( github.com/neo4j/neo4j-go-driver v1.8.3 github.com/openconfig/gnmi v0.0.0-20200617225440-d2b4e6a45802 github.com/openconfig/goyang v0.2.3 - github.com/openconfig/reference v0.0.0-20190727015836-8dfd928c9696 github.com/openconfig/ygot v0.10.0 - github.com/rivo/tview v0.0.0-20201018122409-d551c850a743 github.com/sirupsen/logrus v1.4.2 github.com/spf13/viper v1.7.1 + github.com/stretchr/testify v1.6.1 github.com/tidwall/gjson v1.6.3 golang.org/x/net v0.0.0-20201216054612-986b41b23924 google.golang.org/grpc v1.34.0 diff --git a/go.sum b/go.sum index 969f8580799a31dd91384a2076fd0099e1f90d4b..a13eb5160fd2c4d42be432c818f1ac93d2137dba 100644 --- a/go.sum +++ b/go.sum @@ -516,6 +516,7 @@ github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/mocks/ConfigCallback.go b/mocks/ConfigCallback.go new file mode 100644 index 0000000000000000000000000000000000000000..36173a9d7ae5bafba95cff07a023db983ab80db0 --- /dev/null +++ b/mocks/ConfigCallback.go @@ -0,0 +1,27 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + ygot "github.com/openconfig/ygot/ygot" + mock "github.com/stretchr/testify/mock" +) + +// ConfigCallback is an autogenerated mock type for the ConfigCallback type +type ConfigCallback struct { + mock.Mock +} + +// Execute provides a mock function with given fields: _a0 +func (_m *ConfigCallback) Execute(_a0 ygot.ValidatedGoStruct) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(ygot.ValidatedGoStruct) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} diff --git a/mocks/EscapeFunc.go b/mocks/EscapeFunc.go new file mode 100644 index 0000000000000000000000000000000000000000..3ab84b3e650e7bad1fb3e88f2f0f7d02bee2abb1 --- /dev/null +++ b/mocks/EscapeFunc.go @@ -0,0 +1,24 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// EscapeFunc is an autogenerated mock type for the EscapeFunc type +type EscapeFunc struct { + mock.Mock +} + +// Execute provides a mock function with given fields: k +func (_m *EscapeFunc) Execute(k string) string { + ret := _m.Called(k) + + var r0 string + if rf, ok := ret.Get(0).(func(string) string); ok { + r0 = rf(k) + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} diff --git a/mocks/GNMIClient.go b/mocks/GNMIClient.go new file mode 100644 index 0000000000000000000000000000000000000000..255d4a40d68513d1b1125101f8e9cdc12f139dc2 --- /dev/null +++ b/mocks/GNMIClient.go @@ -0,0 +1,137 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gnmi "github.com/openconfig/gnmi/proto/gnmi" + grpc "google.golang.org/grpc" + + mock "github.com/stretchr/testify/mock" +) + +// GNMIClient is an autogenerated mock type for the GNMIClient type +type GNMIClient struct { + mock.Mock +} + +// Capabilities provides a mock function with given fields: ctx, in, opts +func (_m *GNMIClient) Capabilities(ctx context.Context, in *gnmi.CapabilityRequest, opts ...grpc.CallOption) (*gnmi.CapabilityResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gnmi.CapabilityResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.CapabilityRequest, ...grpc.CallOption) *gnmi.CapabilityResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.CapabilityResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.CapabilityRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: ctx, in, opts +func (_m *GNMIClient) Get(ctx context.Context, in *gnmi.GetRequest, opts ...grpc.CallOption) (*gnmi.GetResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gnmi.GetResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.GetRequest, ...grpc.CallOption) *gnmi.GetResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.GetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.GetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Set provides a mock function with given fields: ctx, in, opts +func (_m *GNMIClient) Set(ctx context.Context, in *gnmi.SetRequest, opts ...grpc.CallOption) (*gnmi.SetResponse, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gnmi.SetResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.SetRequest, ...grpc.CallOption) *gnmi.SetResponse); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.SetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.SetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Subscribe provides a mock function with given fields: ctx, opts +func (_m *GNMIClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (gnmi.GNMI_SubscribeClient, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 gnmi.GNMI_SubscribeClient + if rf, ok := ret.Get(0).(func(context.Context, ...grpc.CallOption) gnmi.GNMI_SubscribeClient); ok { + r0 = rf(ctx, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(gnmi.GNMI_SubscribeClient) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, ...grpc.CallOption) error); ok { + r1 = rf(ctx, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/mocks/GNMIServer.go b/mocks/GNMIServer.go new file mode 100644 index 0000000000000000000000000000000000000000..0628c5b31fe2c971810f5a2c9f7be3a8326ee40c --- /dev/null +++ b/mocks/GNMIServer.go @@ -0,0 +1,98 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gnmi "github.com/openconfig/gnmi/proto/gnmi" + mock "github.com/stretchr/testify/mock" +) + +// GNMIServer is an autogenerated mock type for the GNMIServer type +type GNMIServer struct { + mock.Mock +} + +// Capabilities provides a mock function with given fields: _a0, _a1 +func (_m *GNMIServer) Capabilities(_a0 context.Context, _a1 *gnmi.CapabilityRequest) (*gnmi.CapabilityResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gnmi.CapabilityResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.CapabilityRequest) *gnmi.CapabilityResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.CapabilityResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.CapabilityRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Get provides a mock function with given fields: _a0, _a1 +func (_m *GNMIServer) Get(_a0 context.Context, _a1 *gnmi.GetRequest) (*gnmi.GetResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gnmi.GetResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.GetRequest) *gnmi.GetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.GetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.GetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Set provides a mock function with given fields: _a0, _a1 +func (_m *GNMIServer) Set(_a0 context.Context, _a1 *gnmi.SetRequest) (*gnmi.SetResponse, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gnmi.SetResponse + if rf, ok := ret.Get(0).(func(context.Context, *gnmi.SetRequest) *gnmi.SetResponse); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.SetResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gnmi.SetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Subscribe provides a mock function with given fields: _a0 +func (_m *GNMIServer) Subscribe(_a0 gnmi.GNMI_SubscribeServer) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(gnmi.GNMI_SubscribeServer) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} diff --git a/mocks/GNMI_SubscribeClient.go b/mocks/GNMI_SubscribeClient.go new file mode 100644 index 0000000000000000000000000000000000000000..456be898e5d92171a26add0d03e863f08f302d24 --- /dev/null +++ b/mocks/GNMI_SubscribeClient.go @@ -0,0 +1,151 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gnmi "github.com/openconfig/gnmi/proto/gnmi" + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// GNMI_SubscribeClient is an autogenerated mock type for the GNMI_SubscribeClient type +type GNMI_SubscribeClient struct { + mock.Mock +} + +// CloseSend provides a mock function with given fields: +func (_m *GNMI_SubscribeClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Context provides a mock function with given fields: +func (_m *GNMI_SubscribeClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +// Header provides a mock function with given fields: +func (_m *GNMI_SubscribeClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Recv provides a mock function with given fields: +func (_m *GNMI_SubscribeClient) Recv() (*gnmi.SubscribeResponse, error) { + ret := _m.Called() + + var r0 *gnmi.SubscribeResponse + if rf, ok := ret.Get(0).(func() *gnmi.SubscribeResponse); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.SubscribeResponse) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RecvMsg provides a mock function with given fields: m +func (_m *GNMI_SubscribeClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Send provides a mock function with given fields: _a0 +func (_m *GNMI_SubscribeClient) Send(_a0 *gnmi.SubscribeRequest) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*gnmi.SubscribeRequest) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendMsg provides a mock function with given fields: m +func (_m *GNMI_SubscribeClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Trailer provides a mock function with given fields: +func (_m *GNMI_SubscribeClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/mocks/GNMI_SubscribeServer.go b/mocks/GNMI_SubscribeServer.go new file mode 100644 index 0000000000000000000000000000000000000000..e19a9379ffc57345b30141b757dbd5d57327a82a --- /dev/null +++ b/mocks/GNMI_SubscribeServer.go @@ -0,0 +1,131 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gnmi "github.com/openconfig/gnmi/proto/gnmi" + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// GNMI_SubscribeServer is an autogenerated mock type for the GNMI_SubscribeServer type +type GNMI_SubscribeServer struct { + mock.Mock +} + +// Context provides a mock function with given fields: +func (_m *GNMI_SubscribeServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +// Recv provides a mock function with given fields: +func (_m *GNMI_SubscribeServer) Recv() (*gnmi.SubscribeRequest, error) { + ret := _m.Called() + + var r0 *gnmi.SubscribeRequest + if rf, ok := ret.Get(0).(func() *gnmi.SubscribeRequest); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gnmi.SubscribeRequest) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RecvMsg provides a mock function with given fields: m +func (_m *GNMI_SubscribeServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Send provides a mock function with given fields: _a0 +func (_m *GNMI_SubscribeServer) Send(_a0 *gnmi.SubscribeResponse) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*gnmi.SubscribeResponse) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *GNMI_SubscribeServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendMsg provides a mock function with given fields: m +func (_m *GNMI_SubscribeServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *GNMI_SubscribeServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *GNMI_SubscribeServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/mocks/GrpcCliClient.go b/mocks/GrpcCliClient.go new file mode 100644 index 0000000000000000000000000000000000000000..f52bffb70d5518b1b140fd2b2436632b104a5f0a --- /dev/null +++ b/mocks/GrpcCliClient.go @@ -0,0 +1,349 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gosdn "code.fbi.h-da.de/cocsn/gosdn/api/proto" + emptypb "google.golang.org/protobuf/types/known/emptypb" + + grpc "google.golang.org/grpc" + + mock "github.com/stretchr/testify/mock" +) + +// GrpcCliClient is an autogenerated mock type for the GrpcCliClient type +type GrpcCliClient struct { + mock.Mock +} + +// AddDevice provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) AddDevice(ctx context.Context, in *gosdn.AddDeviceRequest, opts ...grpc.CallOption) (*gosdn.AddDeviceReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.AddDeviceReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.AddDeviceRequest, ...grpc.CallOption) *gosdn.AddDeviceReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AddDeviceReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.AddDeviceRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateLogStream provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) CreateLogStream(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (gosdn.GrpcCli_CreateLogStreamClient, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 gosdn.GrpcCli_CreateLogStreamClient + if rf, ok := ret.Get(0).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) gosdn.GrpcCli_CreateLogStreamClient); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(gosdn.GrpcCli_CreateLogStreamClient) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreatePND provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) CreatePND(ctx context.Context, in *gosdn.CreatePNDRequest, opts ...grpc.CallOption) (*gosdn.CreatePNDReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.CreatePNDReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.CreatePNDRequest, ...grpc.CallOption) *gosdn.CreatePNDReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.CreatePNDReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.CreatePNDRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetAllPNDs provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) GetAllPNDs(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*gosdn.AllPNDsReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.AllPNDsReply + if rf, ok := ret.Get(0).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) *gosdn.AllPNDsReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AllPNDsReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetAllSBINames provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) GetAllSBINames(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*gosdn.AllSBINamesReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.AllSBINamesReply + if rf, ok := ret.Get(0).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) *gosdn.AllSBINamesReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AllSBINamesReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *emptypb.Empty, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HandleDeviceGetRequest provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) HandleDeviceGetRequest(ctx context.Context, in *gosdn.DeviceGetRequest, opts ...grpc.CallOption) (*gosdn.DeviceGetReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.DeviceGetReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.DeviceGetRequest, ...grpc.CallOption) *gosdn.DeviceGetReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.DeviceGetReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.DeviceGetRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SayHello provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) SayHello(ctx context.Context, in *gosdn.HelloRequest, opts ...grpc.CallOption) (*gosdn.HelloReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.HelloReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.HelloRequest, ...grpc.CallOption) *gosdn.HelloReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.HelloReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.HelloRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Shutdown provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) Shutdown(ctx context.Context, in *gosdn.ShutdownRequest, opts ...grpc.CallOption) (*gosdn.ShutdownReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.ShutdownReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.ShutdownRequest, ...grpc.CallOption) *gosdn.ShutdownReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.ShutdownReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.ShutdownRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetEdge provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) TAPIGetEdge(ctx context.Context, in *gosdn.TAPIRequest, opts ...grpc.CallOption) (*gosdn.TAPIReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) *gosdn.TAPIReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetEdgeNode provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) TAPIGetEdgeNode(ctx context.Context, in *gosdn.TAPIRequest, opts ...grpc.CallOption) (*gosdn.TAPIReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) *gosdn.TAPIReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetLink provides a mock function with given fields: ctx, in, opts +func (_m *GrpcCliClient) TAPIGetLink(ctx context.Context, in *gosdn.TAPIRequest, opts ...grpc.CallOption) (*gosdn.TAPIReply, error) { + _va := make([]interface{}, len(opts)) + for _i := range opts { + _va[_i] = opts[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx, in) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) *gosdn.TAPIReply); ok { + r0 = rf(ctx, in, opts...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest, ...grpc.CallOption) error); ok { + r1 = rf(ctx, in, opts...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/mocks/GrpcCliServer.go b/mocks/GrpcCliServer.go new file mode 100644 index 0000000000000000000000000000000000000000..e7b36e9e24f5c42ad7b927157fb3b9d6a7856927 --- /dev/null +++ b/mocks/GrpcCliServer.go @@ -0,0 +1,261 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gosdn "code.fbi.h-da.de/cocsn/gosdn/api/proto" + emptypb "google.golang.org/protobuf/types/known/emptypb" + + mock "github.com/stretchr/testify/mock" +) + +// GrpcCliServer is an autogenerated mock type for the GrpcCliServer type +type GrpcCliServer struct { + mock.Mock +} + +// AddDevice provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) AddDevice(_a0 context.Context, _a1 *gosdn.AddDeviceRequest) (*gosdn.AddDeviceReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.AddDeviceReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.AddDeviceRequest) *gosdn.AddDeviceReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AddDeviceReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.AddDeviceRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// CreateLogStream provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) CreateLogStream(_a0 *emptypb.Empty, _a1 gosdn.GrpcCli_CreateLogStreamServer) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(*emptypb.Empty, gosdn.GrpcCli_CreateLogStreamServer) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// CreatePND provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) CreatePND(_a0 context.Context, _a1 *gosdn.CreatePNDRequest) (*gosdn.CreatePNDReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.CreatePNDReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.CreatePNDRequest) *gosdn.CreatePNDReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.CreatePNDReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.CreatePNDRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetAllPNDs provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) GetAllPNDs(_a0 context.Context, _a1 *emptypb.Empty) (*gosdn.AllPNDsReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.AllPNDsReply + if rf, ok := ret.Get(0).(func(context.Context, *emptypb.Empty) *gosdn.AllPNDsReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AllPNDsReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *emptypb.Empty) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetAllSBINames provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) GetAllSBINames(_a0 context.Context, _a1 *emptypb.Empty) (*gosdn.AllSBINamesReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.AllSBINamesReply + if rf, ok := ret.Get(0).(func(context.Context, *emptypb.Empty) *gosdn.AllSBINamesReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.AllSBINamesReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *emptypb.Empty) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// HandleDeviceGetRequest provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) HandleDeviceGetRequest(_a0 context.Context, _a1 *gosdn.DeviceGetRequest) (*gosdn.DeviceGetReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.DeviceGetReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.DeviceGetRequest) *gosdn.DeviceGetReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.DeviceGetReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.DeviceGetRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// SayHello provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) SayHello(_a0 context.Context, _a1 *gosdn.HelloRequest) (*gosdn.HelloReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.HelloReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.HelloRequest) *gosdn.HelloReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.HelloReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.HelloRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Shutdown provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) Shutdown(_a0 context.Context, _a1 *gosdn.ShutdownRequest) (*gosdn.ShutdownReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.ShutdownReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.ShutdownRequest) *gosdn.ShutdownReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.ShutdownReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.ShutdownRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetEdge provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) TAPIGetEdge(_a0 context.Context, _a1 *gosdn.TAPIRequest) (*gosdn.TAPIReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest) *gosdn.TAPIReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetEdgeNode provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) TAPIGetEdgeNode(_a0 context.Context, _a1 *gosdn.TAPIRequest) (*gosdn.TAPIReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest) *gosdn.TAPIReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// TAPIGetLink provides a mock function with given fields: _a0, _a1 +func (_m *GrpcCliServer) TAPIGetLink(_a0 context.Context, _a1 *gosdn.TAPIRequest) (*gosdn.TAPIReply, error) { + ret := _m.Called(_a0, _a1) + + var r0 *gosdn.TAPIReply + if rf, ok := ret.Get(0).(func(context.Context, *gosdn.TAPIRequest) *gosdn.TAPIReply); ok { + r0 = rf(_a0, _a1) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.TAPIReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, *gosdn.TAPIRequest) error); ok { + r1 = rf(_a0, _a1) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} diff --git a/mocks/GrpcCli_CreateLogStreamClient.go b/mocks/GrpcCli_CreateLogStreamClient.go new file mode 100644 index 0000000000000000000000000000000000000000..8e8c0cc1f5a445354decaa4c491e9faa8938c6b5 --- /dev/null +++ b/mocks/GrpcCli_CreateLogStreamClient.go @@ -0,0 +1,137 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gosdn "code.fbi.h-da.de/cocsn/gosdn/api/proto" + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// GrpcCli_CreateLogStreamClient is an autogenerated mock type for the GrpcCli_CreateLogStreamClient type +type GrpcCli_CreateLogStreamClient struct { + mock.Mock +} + +// CloseSend provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamClient) CloseSend() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Context provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamClient) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +// Header provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamClient) Header() (metadata.MD, error) { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Recv provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamClient) Recv() (*gosdn.LogReply, error) { + ret := _m.Called() + + var r0 *gosdn.LogReply + if rf, ok := ret.Get(0).(func() *gosdn.LogReply); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*gosdn.LogReply) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RecvMsg provides a mock function with given fields: m +func (_m *GrpcCli_CreateLogStreamClient) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendMsg provides a mock function with given fields: m +func (_m *GrpcCli_CreateLogStreamClient) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Trailer provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamClient) Trailer() metadata.MD { + ret := _m.Called() + + var r0 metadata.MD + if rf, ok := ret.Get(0).(func() metadata.MD); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(metadata.MD) + } + } + + return r0 +} diff --git a/mocks/GrpcCli_CreateLogStreamServer.go b/mocks/GrpcCli_CreateLogStreamServer.go new file mode 100644 index 0000000000000000000000000000000000000000..6141c33a47ffc2e7707b088e70f426f9f661824d --- /dev/null +++ b/mocks/GrpcCli_CreateLogStreamServer.go @@ -0,0 +1,108 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + gosdn "code.fbi.h-da.de/cocsn/gosdn/api/proto" + metadata "google.golang.org/grpc/metadata" + + mock "github.com/stretchr/testify/mock" +) + +// GrpcCli_CreateLogStreamServer is an autogenerated mock type for the GrpcCli_CreateLogStreamServer type +type GrpcCli_CreateLogStreamServer struct { + mock.Mock +} + +// Context provides a mock function with given fields: +func (_m *GrpcCli_CreateLogStreamServer) Context() context.Context { + ret := _m.Called() + + var r0 context.Context + if rf, ok := ret.Get(0).(func() context.Context); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(context.Context) + } + } + + return r0 +} + +// RecvMsg provides a mock function with given fields: m +func (_m *GrpcCli_CreateLogStreamServer) RecvMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Send provides a mock function with given fields: _a0 +func (_m *GrpcCli_CreateLogStreamServer) Send(_a0 *gosdn.LogReply) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(*gosdn.LogReply) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendHeader provides a mock function with given fields: _a0 +func (_m *GrpcCli_CreateLogStreamServer) SendHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SendMsg provides a mock function with given fields: m +func (_m *GrpcCli_CreateLogStreamServer) SendMsg(m interface{}) error { + ret := _m.Called(m) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(m) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetHeader provides a mock function with given fields: _a0 +func (_m *GrpcCli_CreateLogStreamServer) SetHeader(_a0 metadata.MD) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(metadata.MD) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// SetTrailer provides a mock function with given fields: _a0 +func (_m *GrpcCli_CreateLogStreamServer) SetTrailer(_a0 metadata.MD) { + _m.Called(_a0) +} diff --git a/mocks/JSONUnmarshaler.go b/mocks/JSONUnmarshaler.go new file mode 100644 index 0000000000000000000000000000000000000000..15dd0529058297459efe0de40d6264846bb03586 --- /dev/null +++ b/mocks/JSONUnmarshaler.go @@ -0,0 +1,36 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + ygot "github.com/openconfig/ygot/ygot" + mock "github.com/stretchr/testify/mock" + + ytypes "github.com/openconfig/ygot/ytypes" +) + +// JSONUnmarshaler is an autogenerated mock type for the JSONUnmarshaler type +type JSONUnmarshaler struct { + mock.Mock +} + +// Execute provides a mock function with given fields: _a0, _a1, _a2 +func (_m *JSONUnmarshaler) Execute(_a0 []byte, _a1 ygot.GoStruct, _a2 ...ytypes.UnmarshalOpt) error { + _va := make([]interface{}, len(_a2)) + for _i := range _a2 { + _va[_i] = _a2[_i] + } + var _ca []interface{} + _ca = append(_ca, _a0, _a1) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func([]byte, ygot.GoStruct, ...ytypes.UnmarshalOpt) error); ok { + r0 = rf(_a0, _a1, _a2...) + } else { + r0 = ret.Error(0) + } + + return r0 +} diff --git a/mocks/PrincipalNetworkDomain.go b/mocks/PrincipalNetworkDomain.go new file mode 100644 index 0000000000000000000000000000000000000000..8796a000ba0933ee86973aa800b074914394bfa1 --- /dev/null +++ b/mocks/PrincipalNetworkDomain.go @@ -0,0 +1,207 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + + uuid "github.com/google/uuid" +) + +// PrincipalNetworkDomain is an autogenerated mock type for the PrincipalNetworkDomain type +type PrincipalNetworkDomain struct { + mock.Mock +} + +// AddDevice provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) AddDevice(_a0 interface{}) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// AddSbi provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) AddSbi(_a0 interface{}) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ContainsDevice provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) ContainsDevice(_a0 uuid.UUID) bool { + ret := _m.Called(_a0) + + var r0 bool + if rf, ok := ret.Get(0).(func(uuid.UUID) bool); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(bool) + } + + return r0 +} + +// Destroy provides a mock function with given fields: +func (_m *PrincipalNetworkDomain) Destroy() error { + ret := _m.Called() + + var r0 error + if rf, ok := ret.Get(0).(func() error); ok { + r0 = rf() + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// GetDescription provides a mock function with given fields: +func (_m *PrincipalNetworkDomain) GetDescription() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +// GetName provides a mock function with given fields: +func (_m *PrincipalNetworkDomain) GetName() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +// GetSBIs provides a mock function with given fields: +func (_m *PrincipalNetworkDomain) GetSBIs() interface{} { + ret := _m.Called() + + var r0 interface{} + if rf, ok := ret.Get(0).(func() interface{}); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(interface{}) + } + } + + return r0 +} + +// Id provides a mock function with given fields: +func (_m *PrincipalNetworkDomain) Id() uuid.UUID { + ret := _m.Called() + + var r0 uuid.UUID + if rf, ok := ret.Get(0).(func() uuid.UUID); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(uuid.UUID) + } + } + + return r0 +} + +// MarshalDevice provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) MarshalDevice(_a0 uuid.UUID) (string, error) { + ret := _m.Called(_a0) + + var r0 string + if rf, ok := ret.Get(0).(func(uuid.UUID) string); ok { + r0 = rf(_a0) + } else { + r0 = ret.Get(0).(string) + } + + var r1 error + if rf, ok := ret.Get(1).(func(uuid.UUID) error); ok { + r1 = rf(_a0) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// RemoveDevice provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) RemoveDevice(_a0 uuid.UUID) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(uuid.UUID) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// RemoveSbi provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) RemoveSbi(_a0 uuid.UUID) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(uuid.UUID) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Request provides a mock function with given fields: _a0, _a1 +func (_m *PrincipalNetworkDomain) Request(_a0 uuid.UUID, _a1 string) error { + ret := _m.Called(_a0, _a1) + + var r0 error + if rf, ok := ret.Get(0).(func(uuid.UUID, string) error); ok { + r0 = rf(_a0, _a1) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// RequestAll provides a mock function with given fields: _a0 +func (_m *PrincipalNetworkDomain) RequestAll(_a0 string) error { + ret := _m.Called(_a0) + + var r0 error + if rf, ok := ret.Get(0).(func(string) error); ok { + r0 = rf(_a0) + } else { + r0 = ret.Error(0) + } + + return r0 +} diff --git a/mocks/PublishFunc.go b/mocks/PublishFunc.go new file mode 100644 index 0000000000000000000000000000000000000000..9bafd22090b46cd8a0b9d9aedcb5d502b340911b --- /dev/null +++ b/mocks/PublishFunc.go @@ -0,0 +1,18 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + protoiface "google.golang.org/protobuf/runtime/protoiface" +) + +// PublishFunc is an autogenerated mock type for the PublishFunc type +type PublishFunc struct { + mock.Mock +} + +// Execute provides a mock function with given fields: addr, message +func (_m *PublishFunc) Execute(addr string, message protoiface.MessageV1) { + _m.Called(addr, message) +} diff --git a/mocks/SBIGreeter.go b/mocks/SBIGreeter.go new file mode 100644 index 0000000000000000000000000000000000000000..7b7c999166b64bdf711da1b7ddb8e5801e9330fc --- /dev/null +++ b/mocks/SBIGreeter.go @@ -0,0 +1,15 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// SBIGreeter is an autogenerated mock type for the SBIGreeter type +type SBIGreeter struct { + mock.Mock +} + +// SBIHello provides a mock function with given fields: +func (_m *SBIGreeter) SBIHello() { + _m.Called() +} diff --git a/mocks/SouthboundInterface.go b/mocks/SouthboundInterface.go new file mode 100644 index 0000000000000000000000000000000000000000..e4e0d4c16fedbdccf104e2bf5da3b01db4d25d6f --- /dev/null +++ b/mocks/SouthboundInterface.go @@ -0,0 +1,81 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + gnmi "github.com/openconfig/gnmi/proto/gnmi" + mock "github.com/stretchr/testify/mock" + + uuid "github.com/google/uuid" + + yang "github.com/openconfig/goyang/pkg/yang" + + ytypes "github.com/openconfig/ygot/ytypes" +) + +// SouthboundInterface is an autogenerated mock type for the SouthboundInterface type +type SouthboundInterface struct { + mock.Mock +} + +// Id provides a mock function with given fields: +func (_m *SouthboundInterface) Id() uuid.UUID { + ret := _m.Called() + + var r0 uuid.UUID + if rf, ok := ret.Get(0).(func() uuid.UUID); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(uuid.UUID) + } + } + + return r0 +} + +// SbiIdentifier provides a mock function with given fields: +func (_m *SouthboundInterface) SbiIdentifier() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} + +// Schema provides a mock function with given fields: +func (_m *SouthboundInterface) Schema() *ytypes.Schema { + ret := _m.Called() + + var r0 *ytypes.Schema + if rf, ok := ret.Get(0).(func() *ytypes.Schema); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*ytypes.Schema) + } + } + + return r0 +} + +// SetNode provides a mock function with given fields: +func (_m *SouthboundInterface) SetNode() func(*yang.Entry, interface{}, *gnmi.Path, interface{}, []ytypes.SetNodeOpt) error { + ret := _m.Called() + + var r0 func(*yang.Entry, interface{}, *gnmi.Path, interface{}, []ytypes.SetNodeOpt) error + if rf, ok := ret.Get(0).(func() func(*yang.Entry, interface{}, *gnmi.Path, interface{}, []ytypes.SetNodeOpt) error); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(func(*yang.Entry, interface{}, *gnmi.Path, interface{}, []ytypes.SetNodeOpt) error) + } + } + + return r0 +} diff --git a/mocks/Storable.go b/mocks/Storable.go new file mode 100644 index 0000000000000000000000000000000000000000..1d2dc7d9979820bd02541e28528acee5597a5781 --- /dev/null +++ b/mocks/Storable.go @@ -0,0 +1,30 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + mock "github.com/stretchr/testify/mock" + + uuid "github.com/google/uuid" +) + +// Storable is an autogenerated mock type for the Storable type +type Storable struct { + mock.Mock +} + +// Id provides a mock function with given fields: +func (_m *Storable) Id() uuid.UUID { + ret := _m.Called() + + var r0 uuid.UUID + if rf, ok := ret.Get(0).(func() uuid.UUID); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(uuid.UUID) + } + } + + return r0 +} diff --git a/mocks/Transport.go b/mocks/Transport.go new file mode 100644 index 0000000000000000000000000000000000000000..3d284039a1a313e4b661634dd96d71a6185ecbff --- /dev/null +++ b/mocks/Transport.go @@ -0,0 +1,125 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import ( + context "context" + + mock "github.com/stretchr/testify/mock" + + ytypes "github.com/openconfig/ygot/ytypes" +) + +// Transport is an autogenerated mock type for the Transport type +type Transport struct { + mock.Mock +} + +// Get provides a mock function with given fields: ctx, params +func (_m *Transport) Get(ctx context.Context, params ...string) (interface{}, error) { + _va := make([]interface{}, len(params)) + for _i := range params { + _va[_i] = params[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 interface{} + if rf, ok := ret.Get(0).(func(context.Context, ...string) interface{}); ok { + r0 = rf(ctx, params...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(interface{}) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, ...string) error); ok { + r1 = rf(ctx, params...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// ProcessResponse provides a mock function with given fields: resp, root, models +func (_m *Transport) ProcessResponse(resp interface{}, root interface{}, models *ytypes.Schema) error { + ret := _m.Called(resp, root, models) + + var r0 error + if rf, ok := ret.Get(0).(func(interface{}, interface{}, *ytypes.Schema) error); ok { + r0 = rf(resp, root, models) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Set provides a mock function with given fields: ctx, params +func (_m *Transport) Set(ctx context.Context, params ...string) (interface{}, error) { + _va := make([]interface{}, len(params)) + for _i := range params { + _va[_i] = params[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 interface{} + if rf, ok := ret.Get(0).(func(context.Context, ...string) interface{}); ok { + r0 = rf(ctx, params...) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(interface{}) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context, ...string) error); ok { + r1 = rf(ctx, params...) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// Subscribe provides a mock function with given fields: ctx, params +func (_m *Transport) Subscribe(ctx context.Context, params ...string) error { + _va := make([]interface{}, len(params)) + for _i := range params { + _va[_i] = params[_i] + } + var _ca []interface{} + _ca = append(_ca, ctx) + _ca = append(_ca, _va...) + ret := _m.Called(_ca...) + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, ...string) error); ok { + r0 = rf(ctx, params...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// Type provides a mock function with given fields: +func (_m *Transport) Type() string { + ret := _m.Called() + + var r0 string + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() + } else { + r0 = ret.Get(0).(string) + } + + return r0 +} diff --git a/mocks/isSubscribeRequest_Request.go b/mocks/isSubscribeRequest_Request.go new file mode 100644 index 0000000000000000000000000000000000000000..73f763981ed7bd4586787e88694c844885b2b843 --- /dev/null +++ b/mocks/isSubscribeRequest_Request.go @@ -0,0 +1,15 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isSubscribeRequest_Request is an autogenerated mock type for the isSubscribeRequest_Request type +type isSubscribeRequest_Request struct { + mock.Mock +} + +// isSubscribeRequest_Request provides a mock function with given fields: +func (_m *isSubscribeRequest_Request) isSubscribeRequest_Request() { + _m.Called() +} diff --git a/mocks/isSubscribeResponse_Response.go b/mocks/isSubscribeResponse_Response.go new file mode 100644 index 0000000000000000000000000000000000000000..ba10966e2703113f5fc03233883022efb7843b4b --- /dev/null +++ b/mocks/isSubscribeResponse_Response.go @@ -0,0 +1,15 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isSubscribeResponse_Response is an autogenerated mock type for the isSubscribeResponse_Response type +type isSubscribeResponse_Response struct { + mock.Mock +} + +// isSubscribeResponse_Response provides a mock function with given fields: +func (_m *isSubscribeResponse_Response) isSubscribeResponse_Response() { + _m.Called() +} diff --git a/mocks/isTypedValue_Value.go b/mocks/isTypedValue_Value.go new file mode 100644 index 0000000000000000000000000000000000000000..a49fc787f9dbe7f24023258d180371a5bcd42c7b --- /dev/null +++ b/mocks/isTypedValue_Value.go @@ -0,0 +1,15 @@ +// Code generated by mockery v2.6.0. DO NOT EDIT. + +package mocks + +import mock "github.com/stretchr/testify/mock" + +// isTypedValue_Value is an autogenerated mock type for the isTypedValue_Value type +type isTypedValue_Value struct { + mock.Mock +} + +// isTypedValue_Value provides a mock function with given fields: +func (_m *isTypedValue_Value) isTypedValue_Value() { + _m.Called() +} diff --git a/nucleus/cli-handling.go b/nucleus/cli-handling.go index 46851cb25e5a9add590d5b90996a168ce3ddac23..1e7ece71e74ec17dd371d241f48893ce72b7a95a 100644 --- a/nucleus/cli-handling.go +++ b/nucleus/cli-handling.go @@ -38,7 +38,6 @@ type server struct { pb.UnimplementedGrpcCliServer core *Core logConnections []*logConnection - devices map[uuid.UUID]Device } var srv *server @@ -57,7 +56,7 @@ func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloRe return &pb.HelloReply{Message: "Hello " + in.GetName(), GoSDNInfo: "goSDN in version: DEVELOP"}, nil } -//GetLog creates a continuous stream between ciena and server to send goSDN logs +// CreateLogStream creates a continuous stream between client and server to send goSDN logs func (s *server) CreateLogStream(req *emptypb.Empty, stream pb.GrpcCli_CreateLogStreamServer) error { conn := &logConnection{ stream: stream, @@ -137,44 +136,49 @@ func getCLIGoing(core *Core) { } } -// SBI specific calls, by now TAPI only -func (s *server) TAPIGetEdge(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { - log.Info("Received: ", in.GetName()) - // TODO: Implement - return &pb.TAPIReply{Message: "Done"}, nil -} - -func (s *server) TAPIGetEdgeNode(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { - log.Info("Received: ", in.GetName()) - // TODO: Implement - return &pb.TAPIReply{Message: "Done"}, nil -} - -func (s *server) TAPIGetLink(ctx context.Context, in *pb.TAPIRequest) (*pb.TAPIReply, error) { - log.Info("Received: ", in.GetName()) - // TODO: Implement - return &pb.TAPIReply{Message: "Done"}, nil -} - -//CreatePND creates a new PND and adds it to the principalNetworkDomain map of -//the core +// CreatePND creates a new PND and adds it to the principalNetworkDomain map of +// the core func (s *server) CreatePND(ctx context.Context, in *pb.CreatePNDRequest) (*pb.CreatePNDReply, error) { log.Info("Received: Create a PND with the name", in.GetName()) - sbi := s.core.southboundInterfaces[in.GetSbi()] + sbi, err := s.core.sbic.get(uuid.New()) + if err != nil { + return nil, err + } id := uuid.New() - s.core.principalNetworkDomains[id] = NewPND(in.GetName(), in.GetDescription(), sbi) + pnd, err := NewPNDwithId(in.GetName(), in.GetDescription(), id, sbi.(SouthboundInterface)) + if err != nil { + log.Error(err) + return &pb.CreatePNDReply{Message: err.Error()}, err + } + if err := s.core.pndc.add(pnd); err != nil { + return nil, err + } return &pb.CreatePNDReply{Message: "Created new PND: " + id.String()}, nil } -//GetAllPNDs is a request to get all current registered PNDs and returns a slim -//variant of PNDs and their respective devices +// deprecated +// Subject to change, using discontinued full device access +// GetAllPNDs is a request to get all currently registered PNDs and returns a slim +// variant of PNDs and their respective devices func (s *server) GetAllPNDs(ctx context.Context, in *emptypb.Empty) (*pb.AllPNDsReply, error) { log.Info("Received: Get all PNDs") var pnds []*pb.PND - for uuidPND, pnd := range s.core.principalNetworkDomains { + for _, uuidPND := range s.core.pndc.UUIDs() { + pnd, err := s.core.pndc.get(uuidPND) + if err != nil { + log.Error(err) + continue + } var devices []*pb.Device - for uuidDevice, device := range pnd.(*pndImplementation).devices { + for uuidDevice, d := range pnd.(*pndImplementation).devices.store { + device, ok := d.(*Device) + if !ok { + log.Error(&ErrInvalidTypeAssertion{ + v: d, + t: "Device", + }) + } tmpDevice := pb.Device{ Uuid: uuidDevice.String(), Address: device.Transport.GetOptions().GetAddress(), @@ -182,11 +186,16 @@ func (s *server) GetAllPNDs(ctx context.Context, in *emptypb.Empty) (*pb.AllPNDs Password: device.Transport.GetOptions().GetPassword()} devices = append(devices, &tmpDevice) } + sbi, err := s.core.sbic.get(pnd.GetSBIs().(*sbiStore).UUIDs()[0]) + if err != nil { + log.Error(err) + continue + } tmpPND := pb.PND{ Uuid: uuidPND.String(), Name: pnd.GetName(), Description: pnd.GetDescription(), - Sbi: pnd.GetSBIs()["default"].SbiIdentifier(), + Sbi: sbi.SbiIdentifier(), Devices: devices, } pnds = append(pnds, &tmpPND) @@ -194,29 +203,40 @@ func (s *server) GetAllPNDs(ctx context.Context, in *emptypb.Empty) (*pb.AllPNDs return &pb.AllPNDsReply{Pnds: pnds}, nil } -//GetAllSBINames returns all registered SBIs from core. +// GetAllSBINames returns all registered SBIs from core. func (s *server) GetAllSBINames(ctx context.Context, in *emptypb.Empty) (*pb.AllSBINamesReply, error) { var sbiNames []string - for _, s := range s.core.southboundInterfaces { + for _, uuidDevice := range s.core.sbic.UUIDs() { + s, err := s.core.sbic.get(uuidDevice) + if err != nil { + log.Error(err) + continue + } sbiNames = append(sbiNames, s.SbiIdentifier()) } return &pb.AllSBINamesReply{SbiNames: sbiNames}, nil } -//AddDevice adds a new Device to a specific PND -//currently this is only working with gnmi transports +// AddDevice adds a new Device to a specific PND +// currently this is only working with gnmi transports func (s *server) AddDevice(ctx context.Context, in *pb.AddDeviceRequest) (*pb.AddDeviceReply, error) { log.Info("Received: AddDevice") uuidPND, err := uuid.Parse(in.UuidPND) if err != nil { return &pb.AddDeviceReply{Message: err.Error()}, err } - pnd, exists := s.core.principalNetworkDomains[uuidPND] - if exists != true { - log.Info(err) + pnd, err := s.core.pndc.get(uuidPND) + if err != nil { + log.Error(err) + return &pb.AddDeviceReply{Message: err.Error()}, err + } + // TODO: Add notion of default SBI to PND or solve differently + uuidSbi := pnd.GetSBIs().(*sbiStore).UUIDs()[0] + sbi, err := s.core.sbic.get(uuidSbi) + if err != nil { + log.Error(err) return &pb.AddDeviceReply{Message: err.Error()}, err } - sbi := s.core.principalNetworkDomains[uuidPND].GetSBIs()["default"] newDevice, err := NewDevice("gnmi", sbi, &GnmiTransportOptions{in.Device.Address, in.Device.Username, in.Device.Password, sbi.SetNode(), nil, gpb.Encoding_JSON_IETF}) @@ -227,14 +247,14 @@ func (s *server) AddDevice(ctx context.Context, in *pb.AddDeviceRequest) (*pb.Ad err = pnd.AddDevice(newDevice) if err != nil { - log.Info(err) + log.Error(err) return &pb.AddDeviceReply{Message: err.Error()}, err } return &pb.AddDeviceReply{Message: "Added new Device: " + newDevice.Uuid.String()}, err } -//HandleDeviceGetRequest handles a GET request via pnd.Request() +// HandleDeviceGetRequest handles a GET request via pnd.Request() func (s *server) HandleDeviceGetRequest(ctx context.Context, in *pb.DeviceGetRequest) (*pb.DeviceGetReply, error) { log.Info("Received: HandleDeviceGetRequest") uuidPND, err := uuid.Parse(in.GetUuidPND()) @@ -247,8 +267,8 @@ func (s *server) HandleDeviceGetRequest(ctx context.Context, in *pb.DeviceGetReq log.Info(err) return &pb.DeviceGetReply{Message: err.Error()}, err } - pnd, exists := s.core.principalNetworkDomains[uuidPND] - if exists != true { + pnd, err := s.core.pndc.get(uuidPND) + if err != nil { err := errors.New("Couldnt find PND: UUID is wrong") log.Info(err) return &pb.DeviceGetReply{Message: err.Error()}, err diff --git a/nucleus/cli-handling_test.go b/nucleus/cli-handling_test.go new file mode 100644 index 0000000000000000000000000000000000000000..6a5a49d394fb238c662d9458411c1d448328ddf4 --- /dev/null +++ b/nucleus/cli-handling_test.go @@ -0,0 +1,377 @@ +package nucleus + +import ( + pb "code.fbi.h-da.de/cocsn/gosdn/api/proto" + "context" + "google.golang.org/protobuf/types/known/emptypb" + "reflect" + "testing" +) + +func Test_buf_Write(t *testing.T) { + type args struct { + p []byte + } + tests := []struct { + name string + b buf + args args + wantN int + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + gotN, err := tt.b.Write(tt.args.p) + if (err != nil) != tt.wantErr { + t.Errorf("Write() error = %v, wantErr %v", err, tt.wantErr) + return + } + if gotN != tt.wantN { + t.Errorf("Write() gotN = %v, want %v", gotN, tt.wantN) + } + }) + } +} + +func Test_getCLIGoing(t *testing.T) { + type args struct { + core *Core + } + tests := []struct { + name string + args args + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + }) + } +} + +func Test_server_AddDevice(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *pb.AddDeviceRequest + } + tests := []struct { + name string + fields fields + args args + want *pb.AddDeviceReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.AddDevice(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("AddDevice() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_BroadcastLog(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + log *pb.LogReply + } + tests := []struct { + name string + fields fields + args args + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _ = &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + }) + } +} + +func Test_server_CreateLogStream(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + req *emptypb.Empty + stream pb.GrpcCli_CreateLogStreamServer + } + tests := []struct { + name string + fields fields + args args + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + if err := s.CreateLogStream(tt.args.req, tt.args.stream); (err != nil) != tt.wantErr { + t.Errorf("CreateLogStream() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_server_CreatePND(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *pb.CreatePNDRequest + } + tests := []struct { + name string + fields fields + args args + want *pb.CreatePNDReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.CreatePND(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("CreatePND() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("CreatePND() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_GetAllPNDs(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *emptypb.Empty + } + tests := []struct { + name string + fields fields + args args + want *pb.AllPNDsReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.GetAllPNDs(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("GetAllPNDs() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("GetAllPNDs() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_GetAllSBINames(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *emptypb.Empty + } + tests := []struct { + name string + fields fields + args args + want *pb.AllSBINamesReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.GetAllSBINames(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("GetAllSBINames() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("GetAllSBINames() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_HandleDeviceGetRequest(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *pb.DeviceGetRequest + } + tests := []struct { + name string + fields fields + args args + want *pb.DeviceGetReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.HandleDeviceGetRequest(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("HandleDeviceGetRequest() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("HandleDeviceGetRequest() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_SayHello(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *pb.HelloRequest + } + tests := []struct { + name string + fields fields + args args + want *pb.HelloReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.SayHello(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("SayHello() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("SayHello() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_server_Shutdown(t *testing.T) { + type fields struct { + UnimplementedGrpcCliServer pb.UnimplementedGrpcCliServer + core *Core + logConnections []*logConnection + } + type args struct { + ctx context.Context + in *pb.ShutdownRequest + } + tests := []struct { + name string + fields fields + args args + want *pb.ShutdownReply + wantErr bool + }{ + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := &server{ + UnimplementedGrpcCliServer: tt.fields.UnimplementedGrpcCliServer, + core: tt.fields.core, + logConnections: tt.fields.logConnections, + } + got, err := s.Shutdown(tt.args.ctx, tt.args.in) + if (err != nil) != tt.wantErr { + t.Errorf("Shutdown() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("Shutdown() got = %v, want %v", got, tt.want) + } + }) + } +} \ No newline at end of file diff --git a/nucleus/clientConfig.go b/nucleus/clientConfig.go index 297e7a7fe53d3dcc9c67dad5e09f95601141da65..c88b951fc03fcb5be59a0fad54fa44aab749bbe5 100644 --- a/nucleus/clientConfig.go +++ b/nucleus/clientConfig.go @@ -1,6 +1,6 @@ package nucleus -// ClientConfig contains SBI ciena +// ClientConfig contains SBI client // configuration parameters // Deprecated in favor of spf viper type ClientConfig struct { diff --git a/nucleus/controller.go b/nucleus/controller.go index a02b55424f458f6977a0b93849d8741b1056e384..6c237be25c98da4e161413ed2507338338b0c894 100644 --- a/nucleus/controller.go +++ b/nucleus/controller.go @@ -1,25 +1,32 @@ package nucleus import ( - "fmt" "os" "code.fbi.h-da.de/cocsn/gosdn/database" - "github.com/google/uuid" log "github.com/sirupsen/logrus" "github.com/spf13/viper" ) // Core is the representation of the controllers core type Core struct { - southboundInterfaces map[string]SouthboundInterface - principalNetworkDomains map[uuid.UUID]PrincipalNetworkDomain - database database.Database - IsRunning chan bool + // deprecated + database database.Database + + pndc pndStore + sbic sbiStore + IsRunning chan bool } //Initialize does start-up housekeeping like reading controller config files -func (c *Core) Initialize(IsRunningChannel chan bool) { +func (c *Core) Initialize(IsRunningChannel chan bool) error { + c.sbic = sbiStore{ + store{}, + } + c.pndc = pndStore{ + store{}, + } + // Set config defaults viper.SetDefault("socket", "localhost:55055") @@ -30,25 +37,32 @@ func (c *Core) Initialize(IsRunningChannel chan bool) { viper.AddConfigPath("./configs/") err := viper.ReadInConfig() if err != nil { - log.Fatal(fmt.Errorf("Fatal error config file: %s \n", err)) + return err } c.AttachDatabase() - c.CreateSouthboundInterfaces() + if err := c.CreateSouthboundInterfaces(); err != nil { + return err + } c.IsRunning = IsRunningChannel + return nil } +// deprecated // AttachDatabase connects to the database and passes the connection to the controller core func (c *Core) AttachDatabase() { c.database = database.NewDatabaseClient() } -// CreateSouthboundInterfaces initializes the controller with his supported SBIs -func (c *Core) CreateSouthboundInterfaces() { - arista := &AristaOC{} - c.southboundInterfaces[arista.SbiIdentifier()] = arista - openconfig := &OpenConfig{} - c.southboundInterfaces[openconfig.SbiIdentifier()] = openconfig +// CreateSouthboundInterfaces initializes the controller with its supported SBIs +func (c *Core) CreateSouthboundInterfaces() error { + if err := c.sbic.add(&AristaOC{}); err != nil { + return err + } + if err := c.sbic.add(&OpenConfig{}); err != nil { + return err + } + return nil } // Shutdown waits for the shutdown signal and gracefully shuts down once it arrived diff --git a/nucleus/controller_test.go b/nucleus/controller_test.go new file mode 100644 index 0000000000000000000000000000000000000000..0fa4ffa903a1f894325aaf5211341e19a2df754a --- /dev/null +++ b/nucleus/controller_test.go @@ -0,0 +1 @@ +package nucleus diff --git a/nucleus/device.go b/nucleus/device.go index 720d2651e956322575b27b06a9c0d4df8914f872..ca734983f7f69c3138015d6c61738adacd14d6cc 100644 --- a/nucleus/device.go +++ b/nucleus/device.go @@ -40,3 +40,7 @@ func NewDevice(ttype string, sbi SouthboundInterface, opts TransportOptions) (*D Transport: transport, }, nil } + +func (d *Device) Id() uuid.UUID { + return d.Config.Uuid +} diff --git a/nucleus/device_test.go b/nucleus/device_test.go index d98401ba952e4b94d4ebcc36da12905065e510fa..0fa4ffa903a1f894325aaf5211341e19a2df754a 100644 --- a/nucleus/device_test.go +++ b/nucleus/device_test.go @@ -1,37 +1 @@ package nucleus - -import ( - "github.com/openconfig/ygot/ygot" - log "github.com/sirupsen/logrus" - "testing" -) - -func TestDevice_Add(t *testing.T) { - type fields struct { - ygot.GoStruct - SBI SouthboundInterface - Config DeviceConfig - Transport Transport - } - type args struct { - resp interface{} - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - d := Device{ - GoStruct: tt.fields.SBI.Schema().Root, - SBI: tt.fields.SBI, - Config: tt.fields.Config, - Transport: tt.fields.Transport, - } - log.Debug(d.SBI.SbiIdentifier()) - }) - } -} diff --git a/nucleus/errors.go b/nucleus/errors.go new file mode 100644 index 0000000000000000000000000000000000000000..ce23a6d6f9d18bc6a650b941c48fa561a2dfc98e --- /dev/null +++ b/nucleus/errors.go @@ -0,0 +1,35 @@ +package nucleus + +import "fmt" + +type ErrNilClient struct { +} + +func (e *ErrNilClient) Error() string { + return fmt.Sprintf("client cannot be nil") +} + +type ErrNotFound struct { + id interface{} +} + +func (e *ErrNotFound) Error() string { + return fmt.Sprintf("%v not found", e.id) +} + +type ErrAlreadyExists struct { + item interface{} +} + +func (e *ErrAlreadyExists) Error() string { + return fmt.Sprintf("%v already exists", e.item) +} + +type ErrInvalidTypeAssertion struct { + v interface{} + t interface{} +} + +func (e ErrInvalidTypeAssertion) Error() string { + return fmt.Sprintf("%v does not implement %v", e.v, e.t) +} diff --git a/nucleus/gnmi_transport.go b/nucleus/gnmi_transport.go index ad3b008ea31225bb5809e45b9a9d4b9cc8bc8eba..9ad44cd48c8b00fa7bd5b808ac446a6c6f54e907 100644 --- a/nucleus/gnmi_transport.go +++ b/nucleus/gnmi_transport.go @@ -2,6 +2,7 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" + "code.fbi.h-da.de/cocsn/gosdn/nucleus/util" "context" "errors" gpb "github.com/openconfig/gnmi/proto/gnmi" @@ -10,13 +11,37 @@ import ( "github.com/openconfig/ygot/ytypes" log "github.com/sirupsen/logrus" "strings" + "time" ) +var tapProto bool + +func init() { + // tapProto taps gpb.getResponse and gpb.Getrequests + // to binary file + // CAUTION only set true if you know what you do + tapProto = false +} + +func NewGnmiTransport(config *gnmi.Config) (*Gnmi, error) { + c, err := gnmi.Dial(config) + if err != nil { + return nil, err + } + return &Gnmi{ + SetNode: nil, + RespChan: nil, + config: config, + client: c, + }, nil +} + type Gnmi struct { SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error RespChan chan *gpb.SubscribeResponse Options *GnmiTransportOptions config *gnmi.Config + client gpb.GNMIClient } func NewGnmiTransport(opts *GnmiTransportOptions) *Gnmi { @@ -63,11 +88,23 @@ func (g *Gnmi) CreateConfig(opts *GnmiTransportOptions) *gnmi.Config { // interface satisfaction for now // TODO: Convert to meaningfiul calls func (g *Gnmi) Get(ctx context.Context, params ...string) (interface{}, error) { + if g.client == nil { + return nil, &ErrNilClient{} + } paths := gnmi.SplitPaths(params) return g.get(ctx, paths, "") } -func (g *Gnmi) Set(ctx context.Context, params ...string) (interface{}, error) { return nil, nil } +func (g *Gnmi) Set(ctx context.Context, params ...string) (interface{}, error) { + if g.client == nil { + return nil, &ErrNilClient{} + } + return nil, nil +} + func (g *Gnmi) Subscribe(ctx context.Context, params ...string) error { + if g.client == nil { + return &ErrNilClient{} + } return g.subscribe(ctx) } @@ -99,7 +136,7 @@ func (g *Gnmi) ProcessResponse(resp interface{}, root interface{}, s *ytypes.Sch schema := models["Device"] if err := g.SetNode(schema, root, update.Path, update.Val, opts...); err != nil { - log.Error(err) + return err } } } @@ -136,11 +173,7 @@ func gnmiFullPath(prefix, path *gpb.Path) (*gpb.Path, error) { // Capabilities calls GNMI capabilities func (g *Gnmi) Capabilities(ctx context.Context) (interface{}, error) { - client, err := gnmi.Dial(ctx.Value("config").(*gnmi.Config)) - if err != nil { - return nil, err - } - resp, err := client.Capabilities(ctx, &gpb.CapabilityRequest{}) + resp, err := g.client.Capabilities(ctx, &gpb.CapabilityRequest{}) if err != nil { return nil, err } @@ -161,11 +194,15 @@ func (g *Gnmi) get(ctx context.Context, paths [][]string, origin string) (interf // getWithRequest takes a fully formed GetRequest, performs the Get, // and returns any response. func (g *Gnmi) getWithRequest(ctx context.Context, req *gpb.GetRequest) (interface{}, error) { - client, err := gnmi.Dial(g.config) - if err != nil { - return nil, err + resp, err := g.client.Get(ctx, req) + if tapProto { + if err := util.Write(req, "req-"+time.Now().String()); err != nil { + log.Errorf("error while writing request: %v", err) + } + if err := util.Write(resp, "resp-"+time.Now().String()); err != nil { + log.Errorf("error while writing request: %v", err) + } } - resp, err := client.Get(ctx, req) if err != nil { return nil, err } @@ -176,20 +213,12 @@ func (g *Gnmi) getWithRequest(ctx context.Context, req *gpb.GetRequest) (interfa func (g *Gnmi) set(ctx context.Context, setOps []*gnmi.Operation, exts ...*gnmi_ext.Extension) error { ctx = gnmi.NewContext(ctx, g.config) - client, err := gnmi.Dial(g.config) - if err != nil { - return err - } - return gnmi.Set(ctx, client, setOps, exts...) + return gnmi.Set(ctx, g.client, setOps, exts...) } // Subscribe calls GNMI subscribe func (g *Gnmi) subscribe(ctx context.Context) error { ctx = gnmi.NewContext(ctx, g.config) - client, err := gnmi.Dial(g.config) - if err != nil { - return err - } opts := ctx.Value("opts").(*gnmi.SubscribeOptions) go func() { for { @@ -199,7 +228,7 @@ func (g *Gnmi) subscribe(ctx context.Context) error { } } }() - return gnmi.SubscribeErr(ctx, client, opts, g.RespChan) + return gnmi.SubscribeErr(ctx, g.client, opts, g.RespChan) } // Close calls GNMI close diff --git a/nucleus/gnmi_transport_test.go b/nucleus/gnmi_transport_test.go index 04fd14215216703ae7259fc4a5c8619c30dab5cd..b36a4a542e8fe2dae3f9f7e5e43b2164963afc5b 100644 --- a/nucleus/gnmi_transport_test.go +++ b/nucleus/gnmi_transport_test.go @@ -2,139 +2,414 @@ package nucleus import ( "code.fbi.h-da.de/cocsn/gosdn/forks/goarista/gnmi" + "code.fbi.h-da.de/cocsn/gosdn/mocks" + "code.fbi.h-da.de/cocsn/gosdn/nucleus/util" + "code.fbi.h-da.de/cocsn/gosdn/test_resources" + "code.fbi.h-da.de/cocsn/yang-models/generated/arista" + "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" "context" + log "github.com/golang/glog" gpb "github.com/openconfig/gnmi/proto/gnmi" - "github.com/openconfig/gnmi/proto/gnmi_ext" + "github.com/openconfig/goyang/pkg/yang" + "github.com/openconfig/ygot/ytypes" + "github.com/stretchr/testify/mock" + "os" "reflect" "testing" ) -func TestGetWithRequest(t *testing.T) { +// TestMain bootstraps all tests. Humongous beast +// TODO: Move somewhere more sensible +func TestMain(m *testing.M) { + testSetupGnmi() + testSetupPnd() + testSetupStore() + os.Exit(m.Run()) +} + +// testSetupGnmi bootstraps tests for gnmi transport +func testSetupGnmi() { + // TODO: Set sane defaults + gnmiConfig = &gnmi.Config{ + Username: "test", + Password: "test", + Addr: "localhost:13371", + Encoding: gpb.Encoding_PROTO, + } + + startGnmiTarget = make(chan string) + stopGnmiTarget = make(chan bool) + go targetRunner() +} + +func targetRunner() { + for { + addr := <-startGnmiTarget + if err := test_resources.GnmiTarget(stopGnmiTarget, addr); err != nil { + log.Fatal(err) + } + } +} + +func mockTransport() Gnmi { + return Gnmi{ + SetNode: nil, + RespChan: make(chan *gpb.SubscribeResponse), + config: gnmiConfig, + client: &mocks.GNMIClient{}, + } +} + +var gnmiConfig *gnmi.Config +var startGnmiTarget chan string +var stopGnmiTarget chan bool +var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true }) + +func TestGnmi_Capabilities(t *testing.T) { + transport := mockTransport() + capabilityResponse := &gpb.CapabilityResponse{ + SupportedModels: nil, + SupportedEncodings: []gpb.Encoding{gpb.Encoding_PROTO, gpb.Encoding_JSON_IETF, gpb.Encoding_JSON}, + GNMIVersion: "0.6.0", + Extension: nil, + } + + capabilityRequest := &gpb.CapabilityRequest{} + + ctx := context.Background() + transport.client.(*mocks.GNMIClient). + On("Capabilities", ctx, capabilityRequest). + Return(capabilityResponse, nil) + + type fields struct { + transport *Gnmi + } type args struct { - ctx context.Context - req *gpb.GetRequest + endpoint string + runEndpoint bool } tests := []struct { name string + fields fields args args - want interface{} + want *gpb.CapabilityResponse wantErr bool }{ - // TODO: Add test cases. + { + name: "mock", + fields: fields{transport: &transport}, + args: args{ + endpoint: gnmiConfig.Addr, + runEndpoint: false, + }, + want: capabilityResponse, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := getWithRequest(tt.args.ctx, tt.args.req) + if tt.args.runEndpoint { + startGnmiTarget <- tt.args.endpoint + } + + got, err := tt.fields.transport.Capabilities(context.Background()) if (err != nil) != tt.wantErr { - t.Errorf("getWithRequest() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("Capabilities() error = %v, wantErr %v", err, tt.wantErr) return } if !reflect.DeepEqual(got, tt.want) { - t.Errorf("getWithRequest() got = %v, want %v", got, tt.want) + t.Errorf("Get() got = %v, want %v", got, tt.want) + } + if tt.args.runEndpoint { + stopGnmiTarget <- true } }) } } -func TestGnmi_Capabilities(t *testing.T) { +func TestGnmi_Close(t *testing.T) { + type fields struct { + SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error + RespChan chan *gpb.SubscribeResponse + config *gnmi.Config + } + tests := []struct { + name string + fields fields + wantErr bool + }{ + {name: "dummy", fields: fields{}, wantErr: false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + g := &Gnmi{ + SetNode: tt.fields.SetNode, + RespChan: tt.fields.RespChan, + config: tt.fields.config, + } + if err := g.Close(); (err != nil) != tt.wantErr { + t.Errorf("Close() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestGnmi_Get(t *testing.T) { + transport := mockTransport() + getRequest := &gpb.GetRequest{ + Prefix: nil, + Path: nil, + Type: 0, + Encoding: 0, + UseModels: nil, + Extension: nil, + } + + getResponse := &gpb.GetResponse{ + Notification: nil, + Error: nil, + Extension: nil, + } + + transport.client.(*mocks.GNMIClient). + On("NewContext", mockContext, mock.Anything). + Return(mockContext) + transport.client.(*mocks.GNMIClient). + On("NewGetRequest", mockContext, mock.Anything, mock.Anything). + Return(getRequest, nil) + transport.client.(*mocks.GNMIClient). + On("Get", mockContext, mock.Anything). + Return(getResponse, nil) + + type fields struct { + transport *Gnmi + } type args struct { - ctx context.Context + params []string + runEndpoint bool } tests := []struct { name string - g Gnmi + fields fields args args want interface{} wantErr bool }{ - // TODO: Add test cases. + { + name: "uninitialised", + fields: fields{&Gnmi{}}, + args: args{ + params: nil, + }, + want: nil, + wantErr: true, + }, + { + name: "mock", + fields: fields{transport: &transport}, + args: args{}, + want: getResponse, + wantErr: false, + }, + { + name: "endpoint", + fields: fields{transport: &transport}, + args: args{ + runEndpoint: true, + }, + want: getResponse, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := tt.g.Capabilities(tt.args.ctx) + if tt.args.runEndpoint { + startGnmiTarget <- tt.fields.transport.config.Addr + } + got, err := tt.fields.transport.Get(context.Background(), tt.args.params...) if (err != nil) != tt.wantErr { - t.Errorf("Capabilities() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr) return } if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Capabilities() got = %v, want %v", got, tt.want) + t.Errorf("Get() got = %v, want %v", got, tt.want) + } + if tt.args.runEndpoint { + stopGnmiTarget <- true } }) } } -func TestGnmi_Close(t *testing.T) { +func TestGnmi_GetConfig(t *testing.T) { + transport := mockTransport() + type fields struct { + transport *Gnmi + } + tests := []struct { + name string + fields fields + want *gnmi.Config + }{ + { + name: "default", + fields: fields{transport: &transport}, + want: gnmiConfig, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.fields.transport.GetConfig(); !reflect.DeepEqual(got, tt.want) { + t.Errorf("GetConfig() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestGnmi_ProcessResponse(t *testing.T) { + type fields struct { + Sbi SouthboundInterface + } + type args struct { + path string + root interface{} + } tests := []struct { name string - g Gnmi + fields fields + args args wantErr bool }{ - // TODO: Add test cases. + { + name: "Arista Full Node", + fields: fields{Sbi: &AristaOC{}}, + args: args{ + path: "../test_resources/resp-full-node", + root: &arista.Device{}, + }, + wantErr: false, + }, + { + name: "Arista Interfaces Wildcard", + fields: fields{Sbi: &AristaOC{}}, + args: args{ + path: "../test_resources/resp-interfaces-wildcard", + root: &arista.Device{}, + }, + wantErr: false, + }, + { + name: "OC Full Node", + fields: fields{Sbi: &OpenConfig{}}, + args: args{ + path: "../test_resources/resp-full-node", + root: &openconfig.Device{}, + }, + wantErr: false, + }, + { + name: "OC Interfaces Wildcard", + fields: fields{Sbi: &OpenConfig{}}, + args: args{ + path: "../test_resources/resp-interfaces-wildcard", + root: &openconfig.Device{}, + }, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := tt.g.Close(); (err != nil) != tt.wantErr { - t.Errorf("Close() error = %v, wantErr %v", err, tt.wantErr) + g := &Gnmi{ + SetNode: tt.fields.Sbi.SetNode(), + } + s := tt.fields.Sbi.Schema() + resp := &gpb.GetResponse{} + if err := util.Read(tt.args.path, resp); err != nil { + t.Errorf("error reading file %v,", err) + } + if err := g.ProcessResponse(resp, tt.args.root, s); (err != nil) != tt.wantErr { + t.Errorf("ProcessResponse() error = %v, wantErr %v", err, tt.wantErr) } }) } } -func TestGnmi_Get(t *testing.T) { +func TestGnmi_Set(t *testing.T) { + type fields struct { + transport *Gnmi + } type args struct { - ctx context.Context - paths [][]string - origin string + params []string + runEndpoint bool } tests := []struct { name string - g Gnmi + fields fields args args want interface{} wantErr bool }{ - // TODO: Add test cases. + { + name: "uninitialised", + fields: fields{&Gnmi{}}, + args: args{ + params: nil, + }, + want: nil, + wantErr: true, + }, + // TODO: Positive test cases } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := tt.g.Get(tt.args.ctx, tt.args.paths, tt.args.origin) + got, err := tt.fields.transport.Set(context.Background(), tt.args.params...) if (err != nil) != tt.wantErr { - t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr) + t.Errorf("Set() error = %v, wantErr %v", err, tt.wantErr) return } if !reflect.DeepEqual(got, tt.want) { - t.Errorf("Get() got = %v, want %v", got, tt.want) + t.Errorf("Set() got = %v, want %v", got, tt.want) } }) } } -func TestGnmi_GetConfig(t *testing.T) { +func TestGnmi_SetConfig(t *testing.T) { + type fields struct { + SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error + RespChan chan *gpb.SubscribeResponse + config *gnmi.Config + } + type args struct { + config *gnmi.Config + } tests := []struct { - name string - g Gnmi - want interface{} + name string + fields fields + args args }{ // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := tt.g.GetConfig(); !reflect.DeepEqual(got, tt.want) { - t.Errorf("GetConfig() = %v, want %v", got, tt.want) - } + }) } } -func TestGnmi_Set(t *testing.T) { +func TestGnmi_Subscribe(t *testing.T) { + type fields struct { + SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error + RespChan chan *gpb.SubscribeResponse + config *gnmi.Config + } type args struct { ctx context.Context - setOps []*gnmi.Operation - exts []*gnmi_ext.Extension + params []string } tests := []struct { name string - g Gnmi + fields fields args args wantErr bool }{ @@ -142,52 +417,181 @@ func TestGnmi_Set(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := tt.g.Set(tt.args.ctx, tt.args.setOps, tt.args.exts...); (err != nil) != tt.wantErr { - t.Errorf("Set() error = %v, wantErr %v", err, tt.wantErr) + g := &Gnmi{ + SetNode: tt.fields.SetNode, + RespChan: tt.fields.RespChan, + config: tt.fields.config, + } + if err := g.Subscribe(tt.args.ctx, tt.args.params...); (err != nil) != tt.wantErr { + t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr) } }) } } -func TestGnmi_SetConfig(t *testing.T) { +func TestGnmi_Type(t *testing.T) { + type fields struct { + SetNode func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error + RespChan chan *gpb.SubscribeResponse + config *gnmi.Config + } + tests := []struct { + name string + fields fields + want string + }{ + {name: "dummy", fields: fields{}, want: "gnmi"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + g := &Gnmi{ + SetNode: tt.fields.SetNode, + RespChan: tt.fields.RespChan, + config: tt.fields.config, + } + if got := g.Type(); got != tt.want { + t.Errorf("Type() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestGnmi_get(t *testing.T) { + // TODO: Design integration test for this one +} + +func TestGnmi_getWithRequest(t *testing.T) { + transport := mockTransport() + reqFullNode := &gpb.GetRequest{} + reqInterfacesWildcard := &gpb.GetRequest{} + respFullNode := &gpb.GetResponse{} + respInterfacesWildcard := &gpb.GetResponse{} + respInterfacesWildcardExp := &gpb.GetResponse{} + respFullNodeExp := &gpb.GetResponse{} + if err := util.Read("../test_resources/req-full-node", reqFullNode); err != nil { + t.Errorf("error parsing req-full-node: %v", err) + } + if err := util.Read("../test_resources/req-interfaces-wildcard", reqInterfacesWildcard); err != nil { + t.Errorf("error parsing req-interfaces-wildcard: %v", err) + } + if err := util.Read("../test_resources/resp-full-node", respFullNode); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-full-node", respFullNodeExp); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-interfaces-wildcard", respInterfacesWildcard); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + if err := util.Read("../test_resources/resp-interfaces-wildcard", respInterfacesWildcardExp); err != nil { + t.Errorf("error parsing getFullNode: %v", err) + } + + transport.client.(*mocks.GNMIClient). + On("Get", mockContext, reqFullNode). + Return(respFullNode, nil) + + transport.client.(*mocks.GNMIClient). + On("Get", mockContext, reqInterfacesWildcard). + Return(respInterfacesWildcard, nil) + + type fields struct { + transport *Gnmi + } type args struct { - in0 interface{} + request *gpb.GetRequest + runEndpoint bool } tests := []struct { name string - g Gnmi + fields fields args args + want interface{} wantErr bool + }{ + { + name: "getFullNode", + fields: fields{transport: &transport}, + args: args{ + request: reqFullNode, + }, + want: respFullNodeExp, + wantErr: false, + }, + { + name: "getInterfacesWildcard", + fields: fields{transport: &transport}, + args: args{ + request: reqInterfacesWildcard, + }, + want: respInterfacesWildcardExp, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.fields.transport.getWithRequest(context.Background(), tt.args.request) + if (err != nil) != tt.wantErr { + t.Errorf("getWithRequest() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("getWithRequest() got = %v, want %v", got, tt.want) + } + }) + } +} + +func TestGnmi_set(t *testing.T) { + // Does not test well +} + +func TestGnmi_subscribe(t *testing.T) { + // TODO: Design integration test for this one +} + +func Test_extractModelKey(t *testing.T) { + type args struct { + path *gpb.Path + } + tests := []struct { + name string + args args + want string }{ // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := tt.g.SetConfig(tt.args.in0); (err != nil) != tt.wantErr { - t.Errorf("SetConfig() error = %v, wantErr %v", err, tt.wantErr) + if got := extractModelKey(tt.args.path); got != tt.want { + t.Errorf("extractModelKey() = %v, want %v", got, tt.want) } }) } } -func TestGnmi_Subscribe(t *testing.T) { +func Test_gnmiFullPath(t *testing.T) { type args struct { - ctx context.Context - subscribeOptions *gnmi.SubscribeOptions - respChan chan<- *gpb.SubscribeResponse + prefix *gpb.Path + path *gpb.Path } tests := []struct { name string - g Gnmi args args + want *gpb.Path wantErr bool }{ // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := tt.g.Subscribe(tt.args.ctx, tt.args.subscribeOptions, tt.args.respChan); (err != nil) != tt.wantErr { - t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr) + got, err := gnmiFullPath(tt.args.prefix, tt.args.path) + if (err != nil) != tt.wantErr { + t.Errorf("gnmiFullPath() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("gnmiFullPath() got = %v, want %v", got, tt.want) } }) } diff --git a/nucleus/nucleus-core.go b/nucleus/nucleus-core.go index ae6d78056beb1e9c7d19e9385026f0117d033a91..cb21c84458485f492800bdd382128122e94a50dd 100644 --- a/nucleus/nucleus-core.go +++ b/nucleus/nucleus-core.go @@ -3,8 +3,6 @@ package nucleus import ( "time" - "code.fbi.h-da.de/cocsn/gosdn/database" - "github.com/google/uuid" log "github.com/sirupsen/logrus" ) @@ -14,12 +12,10 @@ func StartAndRun(IsRunningChannel chan bool) { log.Info("Starting my ducks") // Initialize the Core - core := Core{ - principalNetworkDomains: make(map[uuid.UUID]PrincipalNetworkDomain), - southboundInterfaces: make(map[string]SouthboundInterface), - database: database.Database{}, + core := Core{} + if err := core.Initialize(IsRunningChannel); err != nil { + log.Fatal(err) } - core.Initialize(IsRunningChannel) // Start the GRCP CLI go getCLIGoing(&core) go core.Shutdown() diff --git a/nucleus/nucleus-core_test.go b/nucleus/nucleus-core_test.go new file mode 100644 index 0000000000000000000000000000000000000000..0fa4ffa903a1f894325aaf5211341e19a2df754a --- /dev/null +++ b/nucleus/nucleus-core_test.go @@ -0,0 +1 @@ +package nucleus diff --git a/nucleus/principalNetworkDomain.go b/nucleus/principalNetworkDomain.go index 5cb15f72d4657d34a1eddf3144d29c8acaca3194..7b26ada3e9e07f3426efbf8159c15a269e543359 100644 --- a/nucleus/principalNetworkDomain.go +++ b/nucleus/principalNetworkDomain.go @@ -11,9 +11,9 @@ import ( // interface for PND implementations type PrincipalNetworkDomain interface { Destroy() error - AddSbi(SouthboundInterface) error - RemoveSbi(string) error - AddDevice(*Device) error + AddSbi(interface{}) error + RemoveSbi(uuid.UUID) error + AddDevice(interface{}) error RemoveDevice(uuid.UUID) error Request(uuid.UUID, string) error RequestAll(string) error @@ -21,74 +21,108 @@ type PrincipalNetworkDomain interface { GetDescription() string MarshalDevice(uuid.UUID) (string, error) ContainsDevice(uuid.UUID) bool - GetSBIs() map[string]SouthboundInterface + GetSBIs() interface{} + Id() uuid.UUID } type pndImplementation struct { name string description string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device + sbic sbiStore + devices deviceStore + id uuid.UUID } -//NewPND creates a Principle Network Domain -func NewPND(name, description string, sbi SouthboundInterface) PrincipalNetworkDomain { - sbic := make(map[string]SouthboundInterface) - sbic["default"] = sbi - devices := make(map[uuid.UUID]*Device) - return &pndImplementation{ +// NewPND creates a Principle Network Domain +func NewPND(name, description string, sbi SouthboundInterface) (PrincipalNetworkDomain, error) { + pnd := &pndImplementation{ name: name, description: description, - sbi: sbic, - devices: devices, + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, } + if err := pnd.sbic.add(sbi); err != nil { + return nil, &ErrAlreadyExists{item: sbi} + } + return pnd, nil +} + +func NewPNDwithId(name, description string, id uuid.UUID, sbi SouthboundInterface) (PrincipalNetworkDomain, error) { + pnd := &pndImplementation{ + name: name, + description: description, + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + id: id, + } + if err := pnd.sbic.add(sbi); err != nil { + return nil, &ErrAlreadyExists{item: sbi} + } + return pnd, nil } -//GetName returns the name of the PND +func (pnd *pndImplementation) Id() uuid.UUID { + return pnd.id +} + +// GetName returns the name of the PND func (pnd *pndImplementation) GetName() string { return pnd.name } -//HasDevice checks if the given device uuid is registered for this PND -func (pnd *pndImplementation) ContainsDevice(uuid uuid.UUID) bool { - _, exists := pnd.devices[uuid] - return exists +// ContainsDevice checks if the given device uuid is registered for this PND +func (pnd *pndImplementation) ContainsDevice(id uuid.UUID) bool { + return pnd.devices.exists(id) } -//GetDescription returns the current description of the PND +// GetDescription returns the current description of the PND func (pnd *pndImplementation) GetDescription() string { return pnd.description } -//GetSBIs returns the registered SBIs -func (pnd *pndImplementation) GetSBIs() map[string]SouthboundInterface { - return pnd.sbi +// GetSBIs returns the registered SBIs +func (pnd *pndImplementation) GetSBIs() interface{} { + return &pnd.sbic } -// Interface satisfaction +// Destroy destroys the PND func (pnd *pndImplementation) Destroy() error { return destroy() } -//AddSbi adds a SBI to the PND which will be supported -func (pnd *pndImplementation) AddSbi(sbi SouthboundInterface) error { - return pnd.addSbi(sbi) +// AddSbi adds a SBI to the PND which will be supported +func (pnd *pndImplementation) AddSbi(sbi interface{}) error { + s, ok := sbi.(SouthboundInterface) + if !ok { + return &ErrInvalidTypeAssertion{ + v: sbi, + t: "Device", + } + } + return pnd.addSbi(s) } -//AddSbi removes a SBI from the PND -//TODO: this should to recursivly through -//devices and remove the devices using -//this SBI -func (pnd *pndImplementation) RemoveSbi(sbiIdentifier string) error { - return pnd.removeSbi(sbiIdentifier) +// AddSbi removes a SBI from the PND +// TODO: this should to recursivly through +// devices and remove the devices using +// this SBI +func (pnd *pndImplementation) RemoveSbi(id uuid.UUID) error { + return pnd.removeSbi(id) } //AddDevice adds a new device to the PND -func (pnd *pndImplementation) AddDevice(device *Device) error { - return pnd.addDevice(device) +func (pnd *pndImplementation) AddDevice(device interface{}) error { + d, ok := device.(*Device) + if !ok { + return &ErrInvalidTypeAssertion{ + v: device, + t: "Device", + } + } + return pnd.addDevice(d) } -//RemoveDevice removes a device from the PND +// RemoveDevice removes a device from the PND func (pnd *pndImplementation) RemoveDevice(uuid uuid.UUID) error { return pnd.removeDevice(uuid) } @@ -100,38 +134,44 @@ func destroy() error { } func (pnd *pndImplementation) addSbi(sbi SouthboundInterface) error { - pnd.sbi[sbi.SbiIdentifier()] = sbi - return nil + return pnd.sbic.add(sbi) } -func (pnd *pndImplementation) removeSbi(sbiIdentifier string) error { - delete(pnd.sbi, sbiIdentifier) - return nil +func (pnd *pndImplementation) removeSbi(id uuid.UUID) error { + return pnd.sbic.delete(id) } func (pnd *pndImplementation) addDevice(device *Device) error { - pnd.devices[device.Uuid] = device - return nil + return pnd.devices.add(device) } -func (pnd *pndImplementation) removeDevice(uuid uuid.UUID) error { - delete(pnd.devices, uuid) - return nil +func (pnd *pndImplementation) getDevice(id uuid.UUID) (*Device, error) { + return pnd.devices.get(id) +} + +func (pnd *pndImplementation) removeDevice(id uuid.UUID) error { + return pnd.devices.delete(id) } func (pnd *pndImplementation) MarshalDevice(uuid uuid.UUID) (string, error) { - d := pnd.devices[uuid] - json, err := json.MarshalIndent(d.GoStruct, "", "\t") + d, err := pnd.getDevice(uuid) + if err != nil { + return "", err + } + jsonTree, err := json.MarshalIndent(d.GoStruct, "", "\t") if err != nil { return "", err } - return string(json), nil + return string(jsonTree), nil } //Request sends a request for a specific device func (pnd *pndImplementation) Request(uuid uuid.UUID, path string) error { - d := pnd.devices[uuid] + d, err := pnd.getDevice(uuid) + if err != nil { + return err + } ctx := context.Background() res, err := d.Transport.Get(ctx, path) if err != nil { @@ -146,7 +186,7 @@ func (pnd *pndImplementation) Request(uuid uuid.UUID, path string) error { //RequestAll sends a request for all registered devices func (pnd *pndImplementation) RequestAll(path string) error { - for k := range pnd.devices { + for _, k := range pnd.devices.UUIDs() { if err := pnd.Request(k, path); err != nil { return err } diff --git a/nucleus/principalNetworkDomain_test.go b/nucleus/principalNetworkDomain_test.go index a5712e995138512966054471d1a905aeaf8c7935..5d77a64dd956a94b2ebcd7e92bb5598aca52428c 100644 --- a/nucleus/principalNetworkDomain_test.go +++ b/nucleus/principalNetworkDomain_test.go @@ -1,61 +1,156 @@ package nucleus import ( + "code.fbi.h-da.de/cocsn/gosdn/mocks" + "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" + "errors" "github.com/google/uuid" + log "github.com/sirupsen/logrus" + "github.com/stretchr/testify/mock" "reflect" "testing" ) +func testSetupPnd() { + var err error + did, err = uuid.Parse("4d8246f8-e884-41d6-87f5-c2c784df9e44") + if err != nil { + log.Fatal(err) + } + + mdid, err = uuid.Parse("688a264e-5f85-40f8-bd13-afc42fcd5c7a") + if err != nil { + log.Fatal(err) + } + + defaultSbiId, err = uuid.Parse("b70c8425-68c7-4d4b-bb5e-5586572bd64b") + if err != nil { + log.Fatal(err) + } + + defaultPndId, err = uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad") + if err != nil { + log.Fatal(err) + } +} + +func mockDevice() Device { + return Device{ + GoStruct: nil, + SBI: &OpenConfig{}, + Config: DeviceConfig{ + Uuid: mdid, + Address: "mock://localhost", + Username: "mock", + Password: "mock", + }, + Transport: &mocks.Transport{}, + } +} + +func newPnd() pndImplementation { + return pndImplementation{ + name: "default", + description: "default test pnd", + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + } +} + +func newPndWithId() pndImplementation { + return pndImplementation{ + name: "default", + description: "default test pnd", + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + id: defaultPndId, + } +} + +var did uuid.UUID +var mdid uuid.UUID +var defaultSbiId uuid.UUID +var defaultPndId uuid.UUID + func TestNewPND(t *testing.T) { + pnd := newPnd() + if err := pnd.addSbi(&OpenConfig{id: defaultSbiId}); err != nil { + t.Error(err) + } type args struct { - name string - desc string - sbi SouthboundInterface + name string + description string + sbi SouthboundInterface } tests := []struct { - name string - args args - want PrincipalNetworkDomain + name string + args args + want PrincipalNetworkDomain + wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{ + name: "default", + description: "default test pnd", + sbi: &OpenConfig{id: defaultSbiId}, + }, + want: &pnd, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := NewPND(tt.args.name, tt.args.desc, tt.args.sbi); !reflect.DeepEqual(got, tt.want) { + got, err := NewPND(tt.args.name, tt.args.description, tt.args.sbi) + if (err != nil) != tt.wantErr { + t.Errorf("NewPND() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { t.Errorf("NewPND() = %v, want %v", got, tt.want) } }) } } -func Test_addSbi(t *testing.T) { - type fields struct { - name string - desc string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device +func TestNewPNDwithId(t *testing.T) { + pnd := newPndWithId() + if err := pnd.addSbi(&OpenConfig{id: defaultSbiId}); err != nil { + t.Error(err) } type args struct { - sbi SouthboundInterface + name string + description string + id uuid.UUID + sbi SouthboundInterface } tests := []struct { name string - fields fields args args + want PrincipalNetworkDomain wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{ + name: "default", + description: "default test pnd", + id: defaultPndId, + sbi: &OpenConfig{id: defaultSbiId}, + }, + want: &pnd, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - description: tt.fields.desc, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + got, err := NewPNDwithId(tt.args.name, tt.args.description, tt.args.id, tt.args.sbi) + if (err != nil) != tt.wantErr { + t.Errorf("NewPNDwithId() error = %v, wantErr %v", err, tt.wantErr) + return } - if err := pnd.addSbi(tt.args.sbi); (err != nil) != tt.wantErr { - t.Errorf("addSbi() error = %v, wantErr %v", err, tt.wantErr) + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("NewPNDwithId() got = %v, want %v", got, tt.want) } }) } @@ -66,7 +161,7 @@ func Test_destroy(t *testing.T) { name string wantErr bool }{ - // TODO: Add test cases. + {name: "dummy", wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -78,88 +173,141 @@ func Test_destroy(t *testing.T) { } func Test_pndImplementation_AddDevice(t *testing.T) { - type fields struct { - name string - desc string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } type args struct { - device Device + device *Device } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{device: &Device{ + Config: DeviceConfig{ + Uuid: did, + }, + }}, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - description: tt.fields.desc, - sbi: tt.fields.sbi, - devices: tt.fields.devices, - } - if err := pnd.AddDevice(&tt.args.device); (err != nil) != tt.wantErr { + pnd := newPnd() + if err := pnd.AddDevice(tt.args.device); (err != nil) != tt.wantErr { t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr) } + _, ok := pnd.devices.store[did] + if !ok { + t.Errorf("AddDevice() Device %v not in device store %v", + tt.args.device, pnd.devices) + } + if err := pnd.devices.delete(did); err != nil { + t.Error(err) + } }) } } func Test_pndImplementation_AddSbi(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } type args struct { sbi SouthboundInterface } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{ + sbi: &OpenConfig{ + id: defaultSbiId, + }, + }, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, - } + pnd := newPnd() if err := pnd.AddSbi(tt.args.sbi); (err != nil) != tt.wantErr { t.Errorf("AddSbi() error = %v, wantErr %v", err, tt.wantErr) } + _, ok := pnd.sbic.store[defaultSbiId] + if !ok { + t.Errorf("AddSbi() SBI %v not in device store %v", + tt.args.sbi, pnd.GetSBIs()) + } + if err := pnd.sbic.delete(defaultSbiId); err != nil { + t.Error(err) + } + }) + } +} + +func Test_pndImplementation_ContainsDevice(t *testing.T) { + type args struct { + uuid uuid.UUID + device *Device + } + tests := []struct { + name string + args args + want bool + }{ + {name: "default", args: args{ + uuid: did, + device: &Device{Config: DeviceConfig{Uuid: did}}, + }, want: true}, + {name: "fails", args: args{ + uuid: uuid.New(), + device: &Device{Config: DeviceConfig{Uuid: did}}, + }, want: false}, + {name: "fails empty", args: args{ + uuid: uuid.New(), + device: &Device{Config: DeviceConfig{Uuid: did}}, + }, want: false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pnd := newPnd() + if tt.name != "fails empty" { + if err := pnd.devices.add(tt.args.device); err != nil { + t.Error(err) + } + } + if got := pnd.ContainsDevice(tt.args.uuid); got != tt.want { + t.Errorf("ContainsDevice() = %v, want %v", got, tt.want) + } + if err := pnd.devices.delete(did); err != nil && tt.name != "fails empty" { + t.Error(err) + } }) } } func Test_pndImplementation_Destroy(t *testing.T) { type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device + name string + description string + sbi sbiStore + devices deviceStore } tests := []struct { name string fields fields wantErr bool }{ - // TODO: Add test cases. + {name: "dummy", fields: fields{}, wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + name: tt.fields.name, + description: tt.fields.description, + sbic: tt.fields.sbi, + devices: tt.fields.devices, } if err := pnd.Destroy(); (err != nil) != tt.wantErr { t.Errorf("Destroy() error = %v, wantErr %v", err, tt.wantErr) @@ -168,157 +316,261 @@ func Test_pndImplementation_Destroy(t *testing.T) { } } -func Test_pndImplementation_RemoveDevice(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device +func Test_pndImplementation_GetDescription(t *testing.T) { + tests := []struct { + name string + want string + }{ + {name: "default", want: "default test pnd"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pnd := newPnd() + if got := pnd.GetDescription(); got != tt.want { + t.Errorf("GetDescription() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_pndImplementation_GetName(t *testing.T) { + tests := []struct { + name string + want string + }{ + {name: "default", want: "default"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pnd := newPnd() + if got := pnd.GetName(); got != tt.want { + t.Errorf("GetName() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_pndImplementation_GetSBIs(t *testing.T) { + pnd := newPnd() + tests := []struct { + name string + want *sbiStore + }{ + {name: "default", want: &pnd.sbic}, } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := pnd.GetSBIs(); !reflect.DeepEqual(got, tt.want) { + t.Errorf("GetSBIs() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_pndImplementation_MarshalDevice(t *testing.T) { type args struct { uuid uuid.UUID } tests := []struct { name string - fields fields args args + want string wantErr bool }{ - // TODO: Add test cases. + {name: "default", args: args{did}, want: "{\n\t\"Acl\": null,\n\t\"Bgp\": null,\n\t\"Components\": null,\n\t\"Interfaces\": null,\n\t\"LocalRoutes\": null,\n\t\"Messages\": null,\n\t\"NetworkInstances\": null,\n\t\"RoutingPolicy\": null,\n\t\"System\": null\n}", wantErr: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + pnd := newPnd() + d := &Device{ + GoStruct: &openconfig.Device{}, + SBI: nil, + Config: DeviceConfig{ + Uuid: tt.args.uuid, + Address: "localhost", + Username: "test", + Password: "test", + }, + Transport: nil, } - if err := pnd.RemoveDevice(tt.args.uuid); (err != nil) != tt.wantErr { - t.Errorf("RemoveDevice() error = %v, wantErr %v", err, tt.wantErr) + if err := pnd.addDevice(d); err != nil { + t.Error(err) + } + got, err := pnd.MarshalDevice(tt.args.uuid) + if (err != nil) != tt.wantErr { + t.Errorf("MarshalDevice() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("MarshalDevice() got = %v, want %v", got, tt.want) + } + if err := pnd.devices.delete(did); err != nil { + t.Error(err) } }) } } -func Test_pndImplementation_RemoveSbi(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } +func Test_pndImplementation_RemoveDevice(t *testing.T) { type args struct { - sbi SouthboundInterface + uuid uuid.UUID } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + {name: "default", args: args{uuid: did}, wantErr: false}, + {name: "fails", args: args{uuid: uuid.New()}, wantErr: true}, + {name: "fails empty", args: args{uuid: did}, wantErr: true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + pnd := newPnd() + if tt.name != "fails empty" { + d := &Device{Config: DeviceConfig{Uuid: did}} + if err := pnd.addDevice(d); err != nil { + t.Error(err) + } } - if err := pnd.RemoveSbi(tt.args.sbi.SbiIdentifier()); (err != nil) != tt.wantErr { - t.Errorf("RemoveSbi() error = %v, wantErr %v", err, tt.wantErr) + if err := pnd.RemoveDevice(tt.args.uuid); (err != nil) != tt.wantErr { + t.Errorf("RemoveDevice() error = %v, wantErr %v", err, tt.wantErr) + } + if pnd.devices.exists(did) && tt.name == "default" { + t.Errorf("RemoveDevice() device still in device store %v", pnd.devices) } }) } } -func Test_pndImplementation_addDevice(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } +func Test_pndImplementation_RemoveSbi(t *testing.T) { type args struct { - device Device + id uuid.UUID } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + {name: "default", args: args{id: defaultSbiId}, wantErr: false}, + {name: "fails", args: args{id: uuid.New()}, wantErr: true}, + {name: "fails empty", args: args{id: defaultSbiId}, wantErr: true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + name: "test-remove-sbi", + description: "test-remove-sbi", + sbic: sbiStore{store{}}, + devices: deviceStore{store{}}, + id: defaultPndId, } - if err := pnd.addDevice(&tt.args.device); (err != nil) != tt.wantErr { - t.Errorf("addDevice() error = %v, wantErr %v", err, tt.wantErr) + if tt.name != "fails empty" { + if err := pnd.addSbi(&OpenConfig{id: defaultSbiId}); err != nil { + t.Error(err) + } + } + if err := pnd.RemoveSbi(tt.args.id); (err != nil) != tt.wantErr { + t.Errorf("RemoveSbi() error = %v, wantErr %v", err, tt.wantErr) + } + if pnd.sbic.exists(tt.args.id) { + t.Errorf("RemoveDevice() SBI still in SBI store %v", pnd.sbic) } }) } } -func Test_pndImplementation_removeDevice(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } +func Test_pndImplementation_Request(t *testing.T) { type args struct { uuid uuid.UUID + path string + rErr error } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{ + uuid: mdid, + path: "", + rErr: nil, + }, + wantErr: false, + }, + { + name: "error", + args: args{ + uuid: did, + path: "", + rErr: errors.New("deliberate test fail"), + }, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + deviceWithMockTransport := mockDevice() + pnd := newPnd() + tr := deviceWithMockTransport.Transport.(*mocks.Transport) + tr.On("Get", mockContext, mock.Anything).Return(mock.Anything, tt.args.rErr) + tr.On("ProcessResponse", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.rErr) + _ = pnd.addDevice(&deviceWithMockTransport) + if err := pnd.Request(tt.args.uuid, tt.args.path); (err != nil) != tt.wantErr { + t.Errorf("Request() error = %v, wantErr %v", err, tt.wantErr) } - if err := pnd.removeDevice(tt.args.uuid); (err != nil) != tt.wantErr { - t.Errorf("removeDevice() error = %v, wantErr %v", err, tt.wantErr) + if err := pnd.devices.delete(mdid); err != nil { + t.Error(err) } }) } } -func Test_removeSbi(t *testing.T) { - type fields struct { - name string - sbi map[string]SouthboundInterface - devices map[uuid.UUID]*Device - } +func Test_pndImplementation_RequestAll(t *testing.T) { type args struct { uuid uuid.UUID - sbi SouthboundInterface + path string + rErr error } tests := []struct { name string - fields fields args args wantErr bool }{ - // TODO: Add test cases. + { + name: "default", + args: args{ + uuid: mdid, + path: "", + rErr: nil, + }, + wantErr: false, + }, + { + name: "error", + args: args{ + uuid: did, + path: "", + rErr: errors.New("deliberate test fail"), + }, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pnd := &pndImplementation{ - name: tt.fields.name, - sbi: tt.fields.sbi, - devices: tt.fields.devices, + deviceWithMockTransport := mockDevice() + pnd := newPnd() + tr := deviceWithMockTransport.Transport.(*mocks.Transport) + tr.On("Get", mockContext, mock.Anything).Return(mock.Anything, tt.args.rErr) + tr.On("ProcessResponse", mock.Anything, mock.Anything, mock.Anything).Return(tt.args.rErr) + _ = pnd.addDevice(&deviceWithMockTransport) + if err := pnd.RequestAll(tt.args.path); (err != nil) != tt.wantErr { + t.Errorf("RequestAll() error = %v, wantErr %v", err, tt.wantErr) } - if err := pnd.removeSbi(tt.args.sbi.SbiIdentifier()); (err != nil) != tt.wantErr { - t.Errorf("removeSbi() error = %v, wantErr %v", err, tt.wantErr) + if err := pnd.devices.delete(mdid); err != nil { + t.Error(err) } }) } diff --git a/nucleus/restconf_transport.go b/nucleus/restconf_transport.go index 452bc6d9916e0bdb5a25e3b152c1ccc75f9d41c9..84d904a562b6c87d84378814b8247ad0df484747 100644 --- a/nucleus/restconf_transport.go +++ b/nucleus/restconf_transport.go @@ -1,18 +1,29 @@ package nucleus -import "context" +import ( + "context" + "github.com/openconfig/ygot/ytypes" +) type Restconf struct { } -func (rc *Restconf) SetConfig(interface{}) error { - return nil +func (r Restconf) Get(ctx context.Context, params ...string) (interface{}, error) { + panic("implement me") } -func (rc *Restconf) GetConfig() interface{} { - return nil +func (r Restconf) Set(ctx context.Context, params ...string) (interface{}, error) { + panic("implement me") } -func (rc *Restconf) Subscribe(ctx context.Context, params ...string) error { - return nil +func (r Restconf) Subscribe(ctx context.Context, params ...string) error { + panic("implement me") +} + +func (r Restconf) Type() string { + panic("implement me") +} + +func (r Restconf) ProcessResponse(resp interface{}, root interface{}, models *ytypes.Schema) error { + panic("implement me") } diff --git a/nucleus/restconf_transport_test.go b/nucleus/restconf_transport_test.go deleted file mode 100644 index 57fb9de6f74e08b09fd1a93e551286d87b4358aa..0000000000000000000000000000000000000000 --- a/nucleus/restconf_transport_test.go +++ /dev/null @@ -1,67 +0,0 @@ -package nucleus - -import ( - "context" - "reflect" - "testing" -) - -func TestRestconf_GetConfig(t *testing.T) { - tests := []struct { - name string - want interface{} - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - rc := &Restconf{} - if got := rc.GetConfig(); !reflect.DeepEqual(got, tt.want) { - t.Errorf("GetConfig() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestRestconf_SetConfig(t *testing.T) { - type args struct { - in0 interface{} - } - tests := []struct { - name string - args args - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - rc := &Restconf{} - if err := rc.SetConfig(tt.args.in0); (err != nil) != tt.wantErr { - t.Errorf("SetConfig() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} - -func TestRestconf_Subscribe(t *testing.T) { - type args struct { - ctx context.Context - params []string - } - tests := []struct { - name string - args args - wantErr bool - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - rc := &Restconf{} - if err := rc.Subscribe(tt.args.ctx, tt.args.params...); (err != nil) != tt.wantErr { - t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr) - } - }) - } -} diff --git a/nucleus/southbound.go b/nucleus/southbound.go index 2a31d78f270f01e0cb153cdca907ee9422cfbc25..6d5db29f1deaffa4943bcda114dd6c78f194ab9b 100644 --- a/nucleus/southbound.go +++ b/nucleus/southbound.go @@ -4,6 +4,7 @@ import ( "code.fbi.h-da.de/cocsn/yang-models/generated/arista" "code.fbi.h-da.de/cocsn/yang-models/generated/openconfig" log "github.com/golang/glog" + "github.com/google/uuid" gpb "github.com/openconfig/gnmi/proto/gnmi" "github.com/openconfig/goyang/pkg/yang" "github.com/openconfig/ygot/ytypes" @@ -20,6 +21,7 @@ type SouthboundInterface interface { // Needed for type assertion. SetNode() func(schema *yang.Entry, root interface{}, path *gpb.Path, val interface{}, opts ...ytypes.SetNodeOpt) error Schema() *ytypes.Schema + Id() uuid.UUID } type Tapi struct { @@ -33,6 +35,7 @@ type OpenConfig struct { transport Transport schema *ytypes.Schema + id uuid.UUID } // SbiIdentifier returns the string representation of @@ -62,6 +65,10 @@ func (oc *OpenConfig) SetNode() func(schema *yang.Entry, root interface{}, path } } +func (oc *OpenConfig) Id() uuid.UUID { + return oc.id +} + // deprecated // Use for prototyping only. // Use OpenConfig instead @@ -70,6 +77,11 @@ type AristaOC struct { transport Transport schema *ytypes.Schema + id uuid.UUID +} + +func (oc *AristaOC) Id() uuid.UUID { + return oc.id } func (oc *AristaOC) SbiIdentifier() string { diff --git a/nucleus/southbound_test.go b/nucleus/southbound_test.go index 72536cbbb63612ae3e74312393ee4a94c462d91a..0fa4ffa903a1f894325aaf5211341e19a2df754a 100644 --- a/nucleus/southbound_test.go +++ b/nucleus/southbound_test.go @@ -1,50 +1 @@ package nucleus - -import "testing" - -func TestOpenConfig_SbiIdentifier(t *testing.T) { - type fields struct { - transport Transport - } - tests := []struct { - name string - fields fields - want string - }{ - {name: "default", want: "openconfig"}, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - oc := &OpenConfig{ - transport: tt.fields.transport, - } - if got := oc.SbiIdentifier(); got != tt.want { - t.Errorf("SbiIdentifier() = %v, want %v", got, tt.want) - } - }) - } -} - -func TestOpenConfig_OpenconfigInterfaces(t *testing.T) { - type fields struct { - transport Transport - } - type args struct { - device Device - } - tests := []struct { - name string - fields fields - args args - }{ - // TODO: Add test cases. - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - oc := &OpenConfig{ - transport: tt.fields.transport, - } - oc.OpenconfigInterfaces(tt.args.device) - }) - } -} diff --git a/nucleus/store.go b/nucleus/store.go new file mode 100644 index 0000000000000000000000000000000000000000..5923873d2f6dd291202aa53a03d20ea16b3eb4ad --- /dev/null +++ b/nucleus/store.go @@ -0,0 +1,107 @@ +package nucleus + +import ( + "github.com/google/uuid" +) + +type Storable interface { + Id() uuid.UUID +} + +type store map[uuid.UUID]Storable + +func (s store) exists(id uuid.UUID) bool { + _, ok := s[id] + return ok +} + +func (s store) add(item Storable) error { + if s.exists(item.Id()) { + return &ErrAlreadyExists{item: item} + } + s[item.Id()] = item + return nil +} + +func (s store) get(id uuid.UUID) (Storable, error) { + if !s.exists(id) { + return nil, &ErrNotFound{id: id} + } + return s[id], nil +} + +func (s store) delete(id uuid.UUID) error { + if !s.exists(id) { + return &ErrNotFound{id: id} + } + delete(s, id) + return nil +} + +func (s store) UUIDs() []uuid.UUID { + keys := make([]uuid.UUID, len(s)) + + i := 0 + for k := range s { + keys[i] = k + i++ + } + return keys +} + +type sbiStore struct { + store +} + +func (s sbiStore) get(id uuid.UUID) (SouthboundInterface, error) { + item, err := s.store.get(id) + if err != nil { + return nil, err + } + sbi, ok := item.(SouthboundInterface) + if !ok { + return nil, &ErrInvalidTypeAssertion{ + v: sbi, + t: "SouthboundInterface", + } + } + return sbi, nil +} + +type pndStore struct { + store +} + +func (s pndStore) get(id uuid.UUID) (PrincipalNetworkDomain, error) { + item, err := s.store.get(id) + if err != nil { + return nil, err + } + pnd, ok := item.(PrincipalNetworkDomain) + if !ok { + return nil, &ErrInvalidTypeAssertion{ + v: pnd, + t: "PrincipalNetworkDomain", + } + } + return pnd, nil +} + +type deviceStore struct { + store +} + +func (s deviceStore) get(id uuid.UUID) (*Device, error) { + item, err := s.store.get(id) + if err != nil { + return nil, err + } + device, ok := item.(*Device) + if !ok { + return nil, &ErrInvalidTypeAssertion{ + v: device, + t: "Device", + } + } + return device, nil +} diff --git a/nucleus/store_test.go b/nucleus/store_test.go new file mode 100644 index 0000000000000000000000000000000000000000..8a393efd6b93204de7a993affc5ca1bd0b3ca42a --- /dev/null +++ b/nucleus/store_test.go @@ -0,0 +1,448 @@ +package nucleus + +import ( + "code.fbi.h-da.de/cocsn/gosdn/mocks" + "github.com/google/uuid" + log "github.com/sirupsen/logrus" + "reflect" + "testing" +) + +func testSetupStore() { + var err error + iid, err = uuid.Parse("8495a8ac-a1e8-418e-b787-10f5878b2690") + altIid, err = uuid.Parse("edc5de93-2d15-4586-b2a7-fb1bc770986b") + if err != nil { + log.Fatal(err) + } +} + +var iid uuid.UUID +var altIid uuid.UUID + +func Test_store_add(t *testing.T) { + type args struct { + item Storable + } + tests := []struct { + name string + s store + args args + wantErr bool + }{ + { + name: "default", + s: store{}, + args: args{ + item: &mocks.Storable{}, + }, + }, + { + name: "already exists", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{ + item: &mocks.Storable{}, + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.args.item.(*mocks.Storable).On("Id").Return(iid) + switch tt.name { + case "already exixts": + _ = tt.s.add(tt.args.item) + default: + } + if err := tt.s.add(tt.args.item); (err != nil) != tt.wantErr { + t.Errorf("add() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func Test_store_delete(t *testing.T) { + type args struct { + id uuid.UUID + } + tests := []struct { + name string + s store + args args + wantErr bool + }{ + { + name: "default", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: iid}, + wantErr: false, + }, + { + name: "not found empty", + s: store{}, + args: args{id: iid}, + wantErr: true, + }, + { + name: "not found", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: altIid}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := tt.s.delete(tt.args.id); (err != nil) != tt.wantErr { + t.Errorf("delete() error = %v, wantErr %v", err, tt.wantErr) + } + if tt.name == "default" { + item, ok := tt.s[iid] + if ok { + t.Errorf("delete() item %v still in store %v", item, tt.s) + } + } + }) + } +} + +func Test_store_exists(t *testing.T) { + type args struct { + id uuid.UUID + } + tests := []struct { + name string + s store + args args + want bool + }{ + { + name: "default", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: iid}, + want: true, + }, + { + name: "not found empty", + s: store{}, + args: args{id: iid}, + want: false, + }, + { + name: "not found", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: altIid}, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.s.exists(tt.args.id); got != tt.want { + t.Errorf("exists() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_store_get(t *testing.T) { + type args struct { + id uuid.UUID + } + tests := []struct { + name string + s store + args args + want Storable + wantErr bool + }{ + { + name: "exists", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: iid}, + want: &mocks.Storable{}, + wantErr: false, + }, + { + name: "not found", + s: store{ + iid: &mocks.Storable{}, + }, + args: args{id: altIid}, + want: nil, + wantErr: true, + }, + { + name: "not found empty", + s: store{}, + args: args{id: iid}, + want: nil, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.s.get(tt.args.id) + if (err != nil) != tt.wantErr { + t.Errorf("get() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("get() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_store_UUIDs(t *testing.T) { + tests := []struct { + name string + s store + want []uuid.UUID + }{ + { + name: "default", + s: store{ + iid: &mocks.Storable{}, + altIid: &mocks.Storable{}, + }, + want: []uuid.UUID{iid, altIid}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.s.UUIDs(); !reflect.DeepEqual(got, tt.want) { + t.Errorf("UUIDs() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_sbiStore_get(t *testing.T) { + type fields struct { + store store + } + type args struct { + id uuid.UUID + } + tests := []struct { + name string + fields fields + args args + want SouthboundInterface + wantErr bool + }{ + { + name: "exists", + fields: fields{ + store: store{ + defaultSbiId: &OpenConfig{id: defaultSbiId}, + }, + }, + args: args{id: defaultSbiId}, + want: &OpenConfig{id: defaultSbiId}, + wantErr: false, + }, + { + name: "fails", + fields: fields{ + store: store{ + defaultSbiId: &OpenConfig{id: defaultSbiId}, + }, + }, + args: args{id: iid}, + wantErr: true, + }, + { + name: "fails empty", + fields: fields{ + store: store{}, + }, + args: args{id: defaultSbiId}, + wantErr: true, + }, + { + name: "fails wrong type", + fields: fields{ + store: store{ + did: &Device{ + Config: DeviceConfig{ + Uuid: did, + }, + }, + }, + }, + args: args{id: did}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := sbiStore{ + store: tt.fields.store, + } + got, err := s.get(tt.args.id) + if (err != nil) != tt.wantErr { + t.Errorf("get() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("get() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_pndStore_get(t *testing.T) { + type fields struct { + store store + } + type args struct { + id uuid.UUID + } + tests := []struct { + name string + fields fields + args args + want PrincipalNetworkDomain + wantErr bool + }{ + { + name: "exists", + fields: fields{ + store: store{ + defaultPndId: &pndImplementation{id: defaultPndId}, + }, + }, + args: args{id: defaultPndId}, + want: &pndImplementation{id: defaultPndId}, + wantErr: false, + }, + { + name: "fails", + fields: fields{ + store: store{ + defaultPndId: &pndImplementation{id: defaultPndId}, + }, + }, + args: args{id: iid}, + wantErr: true, + }, + { + name: "fails empty", + fields: fields{ + store: store{}, + }, + args: args{id: defaultPndId}, + wantErr: true, + }, + { + name: "fails wrong type", + fields: fields{ + store: store{ + did: &Device{ + Config: DeviceConfig{ + Uuid: did, + }, + }, + }, + }, + args: args{id: defaultPndId}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := pndStore{ + store: tt.fields.store, + } + got, err := s.get(tt.args.id) + if (err != nil) != tt.wantErr { + t.Errorf("get() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("get() got = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_deviceStore_get(t *testing.T) { + type fields struct { + store store + } + type args struct { + id uuid.UUID + } + tests := []struct { + name string + fields fields + args args + want *Device + wantErr bool + }{ + { + name: "exists", + fields: fields{ + store: store{ + defaultPndId: &Device{Config: DeviceConfig{Uuid: did}}}}, + args: args{id: defaultPndId}, + want: &Device{ + Config: DeviceConfig{ + Uuid: did, + }, + }, + wantErr: false, + }, + { + name: "fails", + fields: fields{ + store: store{ + defaultPndId: &Device{Config: DeviceConfig{Uuid: did}}}}, + args: args{id: iid}, + wantErr: true, + }, + { + name: "fails empty", + fields: fields{ + store: store{}, + }, + args: args{id: defaultPndId}, + wantErr: true, + }, + { + name: "fails wrong type", + fields: fields{ + store: store{ + defaultPndId: &pndImplementation{id: defaultPndId}}}, + args: args{id: defaultPndId}, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + s := deviceStore{ + store: tt.fields.store, + } + got, err := s.get(tt.args.id) + if (err != nil) != tt.wantErr { + t.Errorf("get() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("get() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/nucleus/transport_test.go b/nucleus/transport_test.go new file mode 100644 index 0000000000000000000000000000000000000000..0fa4ffa903a1f894325aaf5211341e19a2df754a --- /dev/null +++ b/nucleus/transport_test.go @@ -0,0 +1 @@ +package nucleus diff --git a/nucleus/util/message_tools.go b/nucleus/util/message_tools.go new file mode 100644 index 0000000000000000000000000000000000000000..30ba145ad3b4ee76bc5da4c48f0250afcd3f30fe --- /dev/null +++ b/nucleus/util/message_tools.go @@ -0,0 +1,40 @@ +package util + +import ( + "fmt" + "github.com/golang/protobuf/proto" + "io/ioutil" +) + +/* +Copycat source: https://dev.to/techschoolguru/go-generate-serialize-protobuf-message-4m7a +*/ + +// Write writes protocol buffer message to binary file +func Write(message proto.Message, filename string) error { + data, err := proto.Marshal(message) + if err != nil { + return fmt.Errorf("cannot marshal proto message to binary: %w", err) + } + + err = ioutil.WriteFile(filename, data, 0644) + if err != nil { + return fmt.Errorf("cannot write binary data to file: %w", err) + } + + return nil +} + +func Read(filename string, message proto.Message) error { + data, err := ioutil.ReadFile(filename) + if err != nil { + return fmt.Errorf("cannot read binary data from file: %w", err) + } + + err = proto.Unmarshal(data, message) + if err != nil { + return fmt.Errorf("cannot unmarshal binary to proto message: %w", err) + } + + return nil +} diff --git a/nucleus/util/path_traversal.go b/nucleus/util/path_traversal.go index c9a1ac39d870fffc1d5e400a9715ee1a9830f800..cbcdd9bbc4d4768715e36cb7a5dd5f48a40934e3 100644 --- a/nucleus/util/path_traversal.go +++ b/nucleus/util/path_traversal.go @@ -84,7 +84,7 @@ func (p Paths) StringBuilder() []string { return paths } -func appendix(c chan string, stop chan bool,p chan []string) { +func appendix(c chan string, stop chan bool, p chan []string) { paths := make([]string, 0) var sig bool for { @@ -96,7 +96,9 @@ func appendix(c chan string, stop chan bool,p chan []string) { log.Debugf("Signal received: %v", sig) } - if sig {break} + if sig { + break + } } p <- paths } diff --git a/nucleus/util/path_traversal_test.go b/nucleus/util/path_traversal_test.go new file mode 100644 index 0000000000000000000000000000000000000000..c7d868219f5edd141ec2d256a5fc84542fa4471d --- /dev/null +++ b/nucleus/util/path_traversal_test.go @@ -0,0 +1 @@ +package util diff --git a/test_resources/req-full-node b/test_resources/req-full-node new file mode 100644 index 0000000000000000000000000000000000000000..087f7d8275a07a95d6809081bab6ccecfa81a9f1 --- /dev/null +++ b/test_resources/req-full-node @@ -0,0 +1,7 @@ +2 + +interfaces + interface + +interfaces + interface( \ No newline at end of file diff --git a/test_resources/req-interfaces-wildcard b/test_resources/req-interfaces-wildcard new file mode 100644 index 0000000000000000000000000000000000000000..bd113697d2f21f1dbd7a3a881c6ab70cd4ec4644 --- /dev/null +++ b/test_resources/req-interfaces-wildcard @@ -0,0 +1,12 @@ +c + +interfaces +interface[name=*] +state +name + +interfaces + interface +name* +state +name( \ No newline at end of file diff --git a/test_resources/resp-full-node b/test_resources/resp-full-node new file mode 100644 index 0000000000000000000000000000000000000000..4614be84e811d8a96624192f082c97ec9edf76be --- /dev/null +++ b/test_resources/resp-full-node @@ -0,0 +1,7 @@ + +�""�" +0 + +interfaces + interface +nameEthernet510�"Z�"{"openconfig-interfaces:config":{"description":"","enabled":true,"arista-intf-augments:load-interval":300,"loopback-mode":false,"mtu":0,"name":"Ethernet510","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-if-ethernet:ethernet":{"config":{"arista-intf-augments:fec-encoding":{"disabled":false,"fire-code":false,"reed-solomon":false,"reed-solomon544":false},"openconfig-hercules-interfaces:forwarding-viable":true,"mac-address":"00:00:00:00:00:00","port-speed":"SPEED_UNKNOWN","arista-intf-augments:sfp-1000base-t":false},"arista-intf-augments:pfc":{"priorities":{"priority":[{"index":0,"state":{"in-frames":"0","index":0,"out-frames":"0"}},{"index":1,"state":{"in-frames":"0","index":1,"out-frames":"0"}},{"index":2,"state":{"in-frames":"0","index":2,"out-frames":"0"}},{"index":3,"state":{"in-frames":"0","index":3,"out-frames":"0"}},{"index":4,"state":{"in-frames":"0","index":4,"out-frames":"0"}},{"index":5,"state":{"in-frames":"0","index":5,"out-frames":"0"}},{"index":6,"state":{"in-frames":"0","index":6,"out-frames":"0"}},{"index":7,"state":{"in-frames":"0","index":7,"out-frames":"0"}}]}},"state":{"auto-negotiate":false,"counters":{"in-crc-errors":"0","in-fragment-frames":"0","in-jabber-frames":"0","in-mac-control-frames":"0","in-mac-pause-frames":"0","in-oversize-frames":"0","out-mac-control-frames":"0","out-mac-pause-frames":"0"},"duplex-mode":"FULL","enable-flow-control":false,"openconfig-hercules-interfaces:forwarding-viable":true,"hw-mac-address":"02:42:c0:a8:02:41","mac-address":"02:42:c0:a8:02:41","negotiated-port-speed":"SPEED_UNKNOWN","port-speed":"SPEED_UNKNOWN","arista-intf-augments:supported-speeds":["SPEED_5GB","SPEED_25GB","SPEED_50GB","SPEED_100GB","SPEED_10MB","SPEED_100GB_2LANE","SPEED_100MB","SPEED_1GB","SPEED_2500MB","SPEED_400GB","SPEED_10GB","SPEED_40GB","SPEED_200GB_4LANE","SPEED_200GB_8LANE","SPEED_50GB_1LANE"]}},"openconfig-interfaces:hold-time":{"config":{"down":0,"up":0},"state":{"down":0,"up":0}},"openconfig-interfaces:name":"Ethernet510","openconfig-interfaces:state":{"admin-status":"UP","counters":{"in-broadcast-pkts":"294224","in-discards":"0","in-errors":"0","in-fcs-errors":"0","in-multicast-pkts":"1412","in-octets":"72226989","in-unicast-pkts":"642","out-broadcast-pkts":"0","out-discards":"0","out-errors":"0","out-multicast-pkts":"0","out-octets":"0","out-unicast-pkts":"0"},"description":"","enabled":true,"openconfig-platform-port:hardware-port":"Port510","ifindex":510,"arista-intf-augments:inactive":false,"last-change":"1612959137249521152","loopback-mode":false,"mtu":0,"name":"Ethernet510","oper-status":"UP","openconfig-vlan:tpid":"openconfig-vlan-types:TPID_0X8100","type":"iana-if-type:ethernetCsmacd"},"openconfig-interfaces:subinterfaces":{"subinterface":[{"config":{"description":"","enabled":true,"index":0},"index":0,"openconfig-if-ip:ipv4":{"config":{"dhcp-client":false,"enabled":true,"mtu":1500},"state":{"dhcp-client":false,"enabled":true,"mtu":1500},"unnumbered":{"config":{"enabled":false},"state":{"enabled":false}}},"openconfig-if-ip:ipv6":{"addresses":{"address":[{"config":{"ip":"fdfd::ce05","prefix-length":64},"ip":"fdfd::ce05","state":{"ip":"fdfd::ce05","origin":"STATIC","prefix-length":64,"status":"PREFERRED"}}]},"config":{"dhcp-client":false,"enabled":false,"mtu":1500},"neighbors":{"neighbor":[{"config":{"ip":"fdfd::1"},"ip":"fdfd::1","state":{"ip":"fdfd::1","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::7683:c2ff:fefe:86ad"},"ip":"fe80::7683:c2ff:fefe:86ad","state":{"ip":"fe80::7683:c2ff:fefe:86ad","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::c3:43ff:fec5:da0b"},"ip":"fe80::c3:43ff:fec5:da0b","state":{"ip":"fe80::c3:43ff:fec5:da0b","link-layer-address":"02:c3:43:c5:da:0b","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fdfd::28"},"ip":"fdfd::28","state":{"ip":"fdfd::28","link-layer-address":"02:c3:43:c5:da:0b","neighbor-state":"REACHABLE","origin":"DYNAMIC"}},{"config":{"ip":"fe80::1"},"ip":"fe80::1","state":{"ip":"fe80::1","link-layer-address":"74:83:c2:fe:86:ad","neighbor-state":"REACHABLE","origin":"DYNAMIC"}}]},"state":{"dhcp-client":false,"enabled":false,"mtu":1500}},"state":{"counters":{"in-fcs-errors":"0"},"description":"","enabled":true,"index":0}}]}} \ No newline at end of file diff --git a/test_resources/resp-interfaces-wildcard b/test_resources/resp-interfaces-wildcard new file mode 100644 index 0000000000000000000000000000000000000000..50cb9f4c7021af0340d92cde6f1320ffb066e68d --- /dev/null +++ b/test_resources/resp-interfaces-wildcard @@ -0,0 +1,10 @@ + +T"R +A + +interfaces + interface +nameEthernet510 +state +name +Ethernet510 \ No newline at end of file diff --git a/test_resources/targets.go b/test_resources/targets.go new file mode 100644 index 0000000000000000000000000000000000000000..7aa3d84999e972ba0706641e048c40aa0c1f31c9 --- /dev/null +++ b/test_resources/targets.go @@ -0,0 +1,100 @@ +package test_resources + +import ( + "code.fbi.h-da.de/cocsn/gosdn/forks/google/gnmi" + "code.fbi.h-da.de/cocsn/gosdn/forks/google/gnmi/modeldata" + oc "code.fbi.h-da.de/cocsn/yang-models/generated/arista" + pb "github.com/openconfig/gnmi/proto/gnmi" + "github.com/openconfig/ygot/ygot" + log "github.com/sirupsen/logrus" + "google.golang.org/grpc" + "google.golang.org/grpc/reflection" + "net" + "reflect" +) + +type server struct { + *gnmi.Server +} + +func callback(newConfig ygot.ValidatedGoStruct) error { + // Apply the config to your device and return nil if success. return error if fails. + // + // Do something ... + return nil +} + +func newServer(model *gnmi.Model, config []byte) (*server, error) { + s, err := gnmi.NewServer(model, config, callback) + if err != nil { + return nil, err + } + return &server{Server: s}, nil +} + +/* +TODO: Implement multiple server configurations +// Get overrides the Get func of gnmi.Target to provide user auth. +func (s *server) Get(ctx context.Context, req *pb.GetRequest) (*pb.GetResponse, error) { + msg, ok := credentials.AuthorizeUser(ctx) + if !ok { + log.Infof("denied a Get request: %v", msg) + return nil, status.Error(codes.PermissionDenied, msg) + } + log.Infof("allowed a Get request: %v", msg) + return s.Server.Get(ctx, req) +} + +// Set overrides the Set func of gnmi.Target to provide user auth. +func (s *server) Set(ctx context.Context, req *pb.SetRequest) (*pb.SetResponse, error) { + msg, ok := credentials.AuthorizeUser(ctx) + if !ok { + log.Infof("denied a Set request: %v", msg) + return nil, status.Error(codes.PermissionDenied, msg) + } + log.Infof("allowed a Set request: %v", msg) + return s.Server.Set(ctx, req) +} +*/ + +func GnmiTarget(stop chan bool, bindAddr string) error { + if bindAddr == "" { + bindAddr = "localhost:13371" + } + + // Google stuff from here + model := gnmi.NewModel(modeldata.ModelData, + reflect.TypeOf((*oc.Device)(nil)), + oc.SchemaTree["Device"], + oc.Unmarshal, + oc.ΛEnum) + + g := grpc.NewServer() + + var configData []byte + s, err := newServer(model, configData) + if err != nil { + log.Errorf("error in creating gnmi target: %v", err) + return err + } + pb.RegisterGNMIServer(g, s) + reflection.Register(g) + + log.Infof("starting to listen on %s", bindAddr) + listen, err := net.Listen("tcp", bindAddr) + if err != nil { + log.Errorf("failed to listen: %v", err) + return err + } + + log.Info("starting to serve") + go func() { + <-stop + g.GracefulStop() + }() + if err := g.Serve(listen); err != nil { + log.Errorf("failed to serve: %v", err) + return err + } + return nil +}