From 137d6ed853242ead152ea968e06a2cf9b12d0933 Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Mon, 4 Apr 2022 14:12:09 -0700 Subject: [PATCH 1/4] Introduce UpgradeStrategy to OperatorGroups --- .../operators.coreos.com_operatorgroups.yaml | 10 +++ staging/api/crds/zz_defs.go | 2 +- .../pkg/operators/v1/operatorgroup_test.go | 66 +++++++++++++++++++ .../pkg/operators/v1/operatorgroup_types.go | 45 +++++++++++++ .../pkg/operators/v1/zz_generated.deepcopy.go | 16 +++++ 5 files changed, 138 insertions(+), 1 deletion(-) create mode 100644 staging/api/pkg/operators/v1/operatorgroup_test.go diff --git a/staging/api/crds/operators.coreos.com_operatorgroups.yaml b/staging/api/crds/operators.coreos.com_operatorgroups.yaml index 56ef0b5c4f..1d6076902c 100644 --- a/staging/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/staging/api/crds/operators.coreos.com_operatorgroups.yaml @@ -80,6 +80,16 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace." + type: object + properties: + name: + type: string + default: Default + enum: + - Default + - UnsafeFailForward status: description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object diff --git a/staging/api/crds/zz_defs.go b/staging/api/crds/zz_defs.go index 31a7d8bb5e..7f0ddacec2 100644 --- a/staging/api/crds/zz_defs.go +++ b/staging/api/crds/zz_defs.go @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x94\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\xa2\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x6e\x39\x49\xbb\xdd\x85\xfc\x25\xd1\xf0\x7a\xe7\xef\x1d\xa4\x28\xe5\xaf\x68\x9d\x34\x7a\x04\xa2\x94\xf8\xe0\x51\xd3\x2f\x97\xdc\x7e\xef\x12\x69\x86\x77\xc7\x07\xb7\x52\x67\x23\x78\x59\x39\x6f\x8a\x0f\xe8\x4c\x65\x53\x7c\x85\x13\xa9\xa5\x97\x46\x1f\x14\xe8\x45\x26\xbc\x18\x1d\x00\x08\xad\x8d\x17\xf4\xd9\xd1\x4f\x80\xd4\x68\x6f\x8d\x52\x68\x07\x39\xea\xe4\xb6\x1a\xe3\xb8\x92\x2a\x43\xcb\x9b\xd7\x47\xdf\x3d\x4b\xbe\x4f\x9e\x1d\x00\xa4\x16\x79\xf9\xa5\x2c\xd0\x79\x51\x94\x23\xd0\x95\x52\x07\x00\x5a\x14\x38\x02\x53\xa2\x15\xde\xd8\xdc\x9a\xaa\x74\x49\xfd\xd3\x25\xa9\xb1\x68\xe8\x9f\xe2\xc0\x95\x98\xd2\xe9\x3c\xa7\x5d\x32\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x00\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x9f\x68\x4b\xfe\xae\xa4\xf3\x3f\x2f\x8f\xbd\x91\xce\xf3\x78\xa9\x2a\x2b\xd4\x22\xc1\x3c\xe4\xa6\xc6\xfa\x77\xed\xf1\x7c\x5c\x1e\x86\xa4\xce\x2b\x25\xec\xc2\xba\x03\x00\x97\x9a\x12\x47\xc0\xcb\x4a\x91\x62\x76\x00\x10\xc5\x17\xb7\x19\x44\x11\xdd\x1d\xc7\x5d\x5d\x3a\xc5\x42\xd4\x67\x00\x6d\xa9\x4f\xcf\xcf\x7e\xfd\xf6\x62\x61\x00\x20\x43\x97\x5a\x59\x7a\x56\xc6\x1c\x43\x20\x1d\xf8\x29\x42\xa5\xa5\x07\x33\x81\xa2\x52\x5e\x7a\xd4\x42\xa7\x33\x98\x18\x0b\xef\xdf\xbc\x85\x42\x68\x91\x63\xd6\x11\x35\x9c\x79\xd2\xbd\xf3\x56\x48\x1d\x76\x90\xda\x79\xa1\x14\xab\x97\x76\x6a\x26\x83\xd4\x20\xbd\x0b\x1a\x21\xde\xc0\x1b\x10\x40\x6a\x94\x13\x89\x19\x38\xe4\xa3\xbd\xb0\x39\xfa\x76\x9a\x4b\x3a\x1c\xf8\x19\x89\xc7\x8c\x7f\xc7\xd4\x77\x3e\x5b\xfc\xa3\x92\x16\xb3\x2e\xb3\x24\xaa\xda\x68\x3b\x9f\x4b\x4b\x14\xf9\x8e\x15\x84\xbf\x8e\x8b\xcc\x7d\x5f\x90\xda\x13\x12\x6d\x98\x07\x19\x79\x07\x06\xb6\xa3\x92\x88\x0d\x16\x3b\x73\x32\x95\x0e\x2c\x96\x16\x1d\x6a\xdf\x48\x44\xe8\xc8\x40\x02\x17\x68\x69\x21\xd9\x4a\xa5\x32\x12\xe5\x1d\x5a\x0f\x16\x53\x93\x6b\xf9\x67\xb3\x9b\x23\x59\xd1\x31\x4a\x78\x74\x1e\xa4\xf6\x68\xb5\x50\x70\x27\x54\x85\x7d\x10\x3a\x83\x42\xcc\xc0\x22\xed\x0b\x95\xee\xec\xc0\x53\x5c\x02\x6f\x8d\x25\xed\x4c\xcc\x08\xa6\xde\x97\x6e\x34\x1c\xe6\xd2\xd7\x00\x90\x9a\xa2\x20\xe5\xcf\x86\xec\xcb\x72\x5c\x91\xce\x86\x19\xde\xa1\x1a\x3a\x99\x0f\x84\x4d\xa7\xd2\x63\xea\x2b\x8b\x43\x51\xca\x01\x13\xab\x19\x04\x92\x22\xfb\xc6\x46\xc8\x70\x4f\x16\xc4\x17\x54\xe6\xbc\x95\x3a\x9f\x1b\x62\x9f\xdb\x28\x6b\xf2\x3c\xb2\x4c\x11\x97\x07\x5e\x5a\x91\xd2\x27\x92\xca\x87\x1f\x2f\x2e\xa1\x26\x20\x88\x3d\x48\xb8\x9d\xea\x5a\x61\x93\xa0\xa4\x9e\xa0\x0d\x33\x27\xd6\x14\xbc\x0b\xea\xac\x34\x52\x7b\xfe\x91\x2a\x89\xda\x83\xab\xc6\x05\x19\x2d\x19\x18\x3a\x4f\x7a\x48\xe0\x25\xe3\x1f\x8c\x11\xaa\x32\x13\x1e\xb3\x04\xce\x34\xbc\x14\x05\xaa\x97\xc2\xe1\x5f\x2e\x6a\x92\xa8\x1b\x90\xf8\x76\x17\x76\x17\xbe\x97\x17\x2c\x39\x14\x40\x0d\xaf\x6b\xb5\x33\x87\x1f\x17\x25\xa6\x35\x86\xd0\x4a\xc6\x0c\xa1\x17\x40\xa6\x56\x51\xb2\x2b\x11\xeb\xdd\x95\x49\x44\x85\xa9\x37\x76\x79\x64\x81\xd4\x8b\x38\x31\xae\x08\x64\xce\x91\xf6\xc4\x6d\xc6\x9d\x1d\x28\xdd\x46\x2d\x6b\x41\xf8\x74\xfa\xe3\x03\xd9\x64\x07\xd2\xb7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\xbf\x9c\xe2\xdc\x17\x10\x16\xe1\xf4\xdd\x2b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x9f\x6e\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\x6e\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc5\x19\x4f\x8a\x60\xb7\x96\xba\x2d\xfa\x0b\x7f\xab\xa3\xc9\xfc\xdf\x80\x8e\xdc\x38\x5e\x13\xbb\x76\xd2\x36\x63\x09\x7f\xb7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\xfa\xc0\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xab\x59\x7d\x04\xa1\x8d\x2a\x5b\x84\x0e\xca\x7e\xe2\x82\x62\xc9\xd2\xa7\xb2\x8c\x49\x42\x48\x0d\xea\x50\xf6\xab\x50\xb2\x93\x86\xb0\x55\x9f\xe9\x3e\xbc\x33\x9e\xfe\xf9\xf1\x41\x12\x54\x93\x3d\xbc\x32\xe8\xde\x19\xcf\x5f\xbe\x0a\xab\x81\x84\x47\x30\x1a\x16\xb0\xb1\xeb\xe0\x57\xc4\x49\x37\x9e\x51\x1a\x35\x61\xfd\x34\x42\x91\x8e\x22\x8a\xb1\x35\x47\x9c\x61\x84\x8d\xc2\x16\x45\xe5\x38\x00\x69\xa3\x07\x58\x94\x7e\xb6\x72\x8f\x28\x08\x63\xe7\xe4\xb0\x61\xbb\xb8\xd5\x25\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\x64\x15\x13\xcd\xd1\x98\x72\x69\x99\x42\x81\x36\x47\x28\x09\xa1\x76\x11\xef\x26\x5c\x09\x7f\x5b\xd0\x65\x47\x5d\x31\x64\xbe\x21\x07\x78\x04\xc4\x86\xf9\x01\x96\x0a\x51\x92\x9a\x3e\x12\xfa\xb0\xa4\x3e\x41\x29\x24\x65\xbc\xa7\x9c\xbd\x2b\x9c\x1b\x93\x9a\x65\xda\xdd\x86\x76\x90\x0e\x08\x4a\xee\x84\x22\xbc\x23\x4b\xd6\x80\x2a\xa0\x1f\x25\xd9\x0b\xc0\xde\x87\xfb\xa9\x71\x01\xcc\x26\x12\x15\xe7\x3e\xbd\x5b\x9c\xf5\xfa\x4b\xaa\xed\x9d\xe9\x5e\xc0\xc5\x25\x65\x36\x20\x6a\xb4\x9a\x41\x8f\xc7\x7a\x9f\x1f\x0b\x36\x82\xa5\xc8\x32\x2e\x0f\x85\x3a\xdf\x01\xcd\x36\xea\xcd\xa1\xbd\x93\x29\x9e\xa6\xa9\xa9\x34\x17\x4e\x3b\xc4\xf5\xc5\x25\x35\xf8\x89\xac\x90\x7a\xae\xb6\xe0\x99\x20\xc2\x54\xb8\x9f\xca\x74\x0a\xf7\x52\x29\x4e\xe3\x1c\x66\xa4\x9e\x0c\x4b\x65\x66\x8d\x9c\x0f\xdd\x51\xd0\x2c\xe5\x93\xb5\xec\xb9\x52\x5b\x9f\x1a\xac\x63\x8e\xd2\xff\xf4\xdc\x9a\x3b\x99\x61\x76\x7a\x7e\xb6\x52\x4a\xf3\xcc\xf1\x12\xf0\xa8\x94\xe3\xf2\x8b\x72\x4e\x6f\x62\xce\xb9\x32\x85\x29\x3b\xfb\x77\x8a\xf4\xb5\xc4\x8e\x8d\x51\x28\x96\xc7\x43\x2a\xd4\x14\xa1\xdb\x69\xbd\x5c\x58\x10\xe1\x0e\x1f\x4a\x25\x53\xe9\x6b\xfc\x6e\x73\x2b\xae\x67\x78\x11\x03\x97\xe4\x6c\xc0\xa1\xef\xb7\xb9\x9a\x74\x20\x73\x6d\xec\x6a\xfb\xdc\x8c\x27\x1b\x50\x64\x0b\x76\x3c\x0c\x6e\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\x3a\x62\x43\x82\xcc\xf3\x9b\x14\x39\xfc\x5a\x95\x24\x7f\x78\x7c\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x12\xaa\x94\x47\x64\xd6\xa9\xd1\xc1\xaf\xb7\xab\xfe\x65\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\xaf\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf4\xfc\x0c\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8d\x05\x7c\x10\x45\xa9\xb0\xcf\x62\x80\xd7\xc6\x44\x9b\x09\x07\x7e\x84\xe1\x10\x3e\xb4\xc9\x12\x07\x84\x31\xe1\x5a\xc8\x95\xb8\xb3\x00\x13\x63\x48\xca\x5d\x7e\x12\x5a\xf8\xb3\x36\xf7\x7a\xd5\xd1\x7c\x96\xb0\x38\x82\xeb\xde\xe9\x9d\x90\x4a\x8c\x15\x5e\xf7\xfa\x70\xdd\x3b\xb7\x26\xe7\xd0\xa4\xf3\xeb\x18\x6b\xae\x7b\xaf\x30\xb7\x22\xc3\xec\xba\x47\xdb\xfe\x2b\x47\xfe\xb7\x94\x04\xfc\x8c\xb3\xe7\xbc\x59\xf3\xf9\x22\x64\x09\xb3\xe7\x21\x49\xa0\xef\xe4\x50\x97\xb3\x12\x9f\x53\x74\xac\x3f\xbc\x15\x65\xb3\xb8\x63\x4d\x57\x37\x54\xb3\xde\x1d\x27\xad\x3a\x7f\xfb\xdd\x19\x3d\xba\xee\xb5\xf4\xf7\x4d\x41\x66\x51\xfa\xd9\x75\x0f\xe6\x4e\x1d\x5d\xf7\xf8\xdc\xfa\x7b\x4d\xe4\xe8\xba\x47\x27\xd1\x67\x6b\xbc\x19\x57\x93\xd1\x75\x6f\x3c\xf3\xe8\xfa\xc7\x7d\x8b\x65\x9f\x40\xea\x79\x7b\xc2\x75\xef\x37\xb8\xd6\x44\xac\xf1\x53\xb4\x41\x93\x0e\x3e\xf5\x36\xa0\xcb\x86\x90\xb9\xad\xb6\x08\x1e\x7b\x69\x85\x76\xb2\xee\x90\xae\x9d\x5a\xa0\x73\x22\x5f\x3f\x6e\x51\xb8\x95\xf0\x1f\x86\x83\x35\xac\x1d\x26\x5e\x56\x0e\x6e\x2f\x5c\x96\x79\xd8\xb1\x60\x5c\x5e\xd8\x96\x33\xce\x83\xa7\x0f\xec\xb1\x8d\x4d\xf8\x66\x36\x39\xa2\x35\x05\xfb\x77\x04\x58\x4e\xb9\x58\x6f\x31\xa9\x8d\x8d\xb6\x31\xc2\xfd\x14\x75\x6c\x79\x66\x68\xd5\x8c\x32\xdb\x76\xd7\x74\x2a\x74\x8e\x59\x02\x21\xad\x16\xec\xef\x14\x80\x6f\xc9\x91\x38\x1d\xd3\x50\xb9\xba\x01\xc5\x74\x35\x3b\x12\x70\x04\x87\x8f\xdb\x30\x32\xa6\x29\x96\x9e\xbc\x6b\x5b\x75\xba\xa5\x06\x99\x18\x5b\x08\x3f\x02\xc2\xf4\x81\x5f\x6f\x1e\xd1\x38\x76\x14\x7c\x9c\x1d\xb2\xdf\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\xeb\x56\xe3\xa9\x18\x9b\x2a\x20\x5c\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x06\x90\x7f\x46\xb6\xbe\x90\xf9\x42\x3c\xbc\x41\x9d\xfb\xe9\x08\xbe\x3d\xf9\xf7\xef\xbe\x5f\x33\x31\x00\x23\x66\x3f\xa1\xa6\xf8\xb3\xa2\xa9\xbb\x46\x0c\xcb\x0b\xbb\x05\x2a\xf1\x99\xd4\x9d\xb4\x24\x6f\xe7\x34\x15\x76\x6b\x41\xf7\x82\x13\x1a\x18\x0b\x4a\x2e\xab\x92\xe4\x42\x28\xcf\xfd\x71\x9d\x62\x1f\xe4\x64\xf5\x66\xb2\x01\x70\x35\x83\xe3\x93\x3e\x8c\xa3\x88\x97\xe1\xfb\xea\xe1\x26\x59\x41\xb2\x74\xf0\x43\x7f\x81\x1e\xca\x61\x2b\x8e\x78\x9c\x3e\xde\x4b\x3f\x05\x8b\x21\x0c\xc6\xe6\xf2\x8a\x30\x88\x0d\xbd\xdb\x14\x47\xc1\x30\xc7\xf5\xdd\x8e\xda\x6c\xa5\xf6\xdf\xfd\xdb\x7a\xfd\x4a\x2d\x8b\xaa\x18\xc1\xb3\x35\x53\x02\xa4\xed\xa8\xcd\x30\xb9\xcd\x02\x04\x41\x57\x6e\x45\x51\x70\x6a\x2d\x33\xd4\x9e\xea\x03\xdb\x35\x6d\xcf\x75\x12\x2f\x9c\x70\xab\xa9\x23\xc5\x27\x2e\xe2\x50\xc7\xd8\xcf\xad\xc9\xaa\x14\x2d\x47\xe0\x58\x71\xa4\x5d\x80\x9a\x95\x18\xbc\x21\xdc\x17\x50\x56\x8c\xa9\x6f\x3a\xf3\xa1\x79\x8f\x42\x4b\x9d\xbb\x78\xa4\x74\x01\x40\x42\xd4\xbd\x9f\x22\x87\x9e\xb9\x4a\x8f\xa9\x72\x32\x43\x8b\x19\x08\xc8\x2b\x61\x85\xf6\x88\x19\xc1\x4f\xa8\xf6\x42\xb7\xbc\x85\x3c\xd1\xf6\xa8\x6b\x6f\x0c\xae\x1a\xc0\x8a\x48\x8c\x7d\xed\xd0\x07\xf8\x6a\xae\x7a\xfc\xec\x64\xa3\xca\x9b\x79\xeb\x7b\x65\xc2\x7b\xb4\x7a\x04\xff\x75\x75\x3a\xf8\x4f\x31\xf8\xf3\xe6\x30\xfe\xe7\xd9\xe0\x87\xff\xee\x8f\x6e\x9e\x76\x7e\xde\x1c\xbd\xf8\x97\x35\x3b\xad\x4e\xdb\xd7\x98\x4f\x0c\x22\x75\x92\x58\x6b\xb4\xcf\x11\xc6\x4c\xe0\xd2\x56\xd8\x87\xd7\x42\x39\xec\xc3\x2f\x9a\x43\xc3\x17\x0a\x0d\x75\x55\x6c\x6e\x3b\xf6\xe8\xd4\xd5\xc9\x47\x33\x85\x49\xda\x3c\x27\x92\xbb\xa9\xf2\xdf\x4d\x48\x9c\xb6\x99\x49\x17\x69\x3a\x77\x21\xc0\x88\x47\x69\x69\x12\xd3\xdb\x24\x35\xc5\xb0\x73\x57\x42\x79\xf5\x5b\xa1\x67\xd0\xc2\x5a\x48\x4a\x17\x2d\xdd\x79\xc2\x26\x91\x5a\xe3\x5c\x73\x93\xe0\x40\xc9\x5b\x84\x26\x73\x0d\x60\x39\xc6\x54\x70\x22\x6e\xc7\xd2\x5b\x61\x67\x9d\xba\x03\x52\xa1\x63\xcd\x3f\xa9\x14\x1c\x3a\x44\x48\xb4\xc9\x70\x19\x5d\x8f\x02\x86\x8a\xb1\x54\xd2\xcf\x42\x83\x20\x35\x7a\xa2\x64\xcc\xff\x8b\xd2\x58\x2f\xb4\xaf\x9b\x2b\x39\x3e\x50\x29\xcb\x7d\x9d\x50\x04\x1f\x66\xda\x1d\x1f\x9f\x7c\x7b\x51\x8d\x33\x53\x08\xa9\x5f\x17\x7e\x78\xf4\xe2\xf0\x8f\x4a\x28\xee\x4c\x50\xcd\xfc\xba\xf0\x47\x5f\x2f\x2c\x1e\x7f\xb7\x83\x17\x1d\x5e\x05\x5f\xb9\x39\xbc\x1a\xc4\xff\x3d\xad\x3f\x1d\xbd\x38\xbc\x4e\x36\x8e\x1f\x3d\x25\x1e\x3a\x1e\x78\x73\x35\x68\xdd\x2f\xb9\x79\x7a\xf4\xa2\x33\x76\xb4\xec\x8c\x9d\xaa\x74\x6b\x81\xf9\xa6\x9d\x1b\xb2\x13\x5f\x3f\x1a\xa8\x3d\x73\x3e\x35\x5c\x2c\x39\xa3\x17\x53\x3c\x8e\xdb\x3c\xba\x7b\xb3\x4b\xd2\xa5\x77\xef\x96\xcc\xf7\x49\x42\x63\x7e\xf5\xd5\x77\x13\x81\xe6\x98\xfa\x27\xf6\x43\x60\xa9\x83\xf7\x01\x27\x8f\x6c\xe0\x7d\xc0\x09\x58\x9c\xa0\x45\x9d\x62\x2d\x98\xf9\xbe\x5d\xbc\xd6\x6d\x1a\x7b\x7f\xc1\x1d\xdd\xfa\x87\x00\x2b\x59\xa0\x64\x3f\x5e\xfe\xd7\xf6\x18\x79\x58\x7b\xe1\xb0\xd5\xa5\x39\x1e\x9f\x0b\x3f\xdd\x89\x82\x27\x67\x51\x6c\xdc\x9d\xe7\xfb\x92\x52\x62\x8a\x73\x6f\x0d\x38\x8f\x43\x91\xc5\x8f\x94\xf8\x58\x8c\x63\xfd\x90\x71\xc4\x3b\x89\xf6\x2d\x02\x25\x4d\x20\x08\x88\x65\x06\xff\x71\xf1\xfe\xdd\xf0\x27\x13\x73\x05\xaa\x66\x5c\xf0\x2d\xee\x26\xf7\xc1\x55\xe9\x14\x84\x23\xd2\xa8\xbe\xbd\xe0\xd6\x43\x21\xb4\x9c\xa0\xf3\x49\xdc\x0d\xad\xbb\x3a\xb9\x49\xe6\xdb\x1d\x32\x5e\x5c\xd4\x37\xf6\xd1\x00\xd8\x37\x88\x99\x66\x2d\x27\xad\x4c\x52\x69\xb2\x48\xf4\x3d\x13\xeb\xc5\x2d\x82\x89\xc4\x56\xc8\x41\x61\x04\x3d\x32\x93\xce\xd1\x1f\xc9\xb1\x3e\xf5\xe0\xf0\x7e\x8a\x16\xa1\x47\x3f\x7b\xe1\xc0\xe6\x81\x05\x7d\xeb\x44\xfc\x78\x70\xc8\xef\xad\xcc\x73\x4e\xb7\xf8\xb5\xc0\x1d\x6a\x7f\xc4\xf1\x6d\x02\xda\x74\x26\xeb\xd8\x87\x6e\xbb\xcf\x8b\x84\x5c\x9d\xdc\xf4\xe0\x70\x9e\x2f\x4a\x41\xf1\x01\x4e\x9a\x8e\x73\x69\xb2\xa3\xba\x6a\x9d\x69\x2f\x1e\xb8\x30\x98\x1a\x87\x3a\x74\xf6\xbd\x81\xa9\xb8\x43\x70\x86\x8a\x4f\x54\x6a\x10\x12\xcc\x0c\xee\x43\x03\xae\x16\x65\xb8\xb4\x29\x85\xf5\x0b\xcf\x4f\x2e\xdf\xbf\x7a\x3f\x0a\xa7\x91\xda\x72\x5d\x57\xb9\x13\xa9\x85\x8a\xb7\x0b\x4d\x7e\x48\x84\x54\x41\x49\xde\xc4\xd2\xb6\xbe\xf9\x98\x54\xbe\xb2\x98\x2c\x3e\x47\xd8\xd9\xe2\x57\xbd\x05\x59\x6d\xec\xfc\x26\x64\xd1\xd1\xfe\x17\x5f\x5c\xec\xcc\xa2\x5e\x73\xa3\xb1\xcc\xe2\xbb\x8e\x0d\x6e\x64\xb1\x85\x66\xe2\x32\x33\xa9\x23\x06\x53\x2c\xbd\x1b\x9a\x3b\x82\x4e\xbc\x1f\xde\x1b\x7b\x2b\x75\x3e\x20\x23\x1b\x04\xcd\xbb\x21\x87\x98\xe1\x37\xfc\xcf\x17\x71\xc4\x71\x6a\x77\xb6\xc2\xc3\xaf\xbf\x81\x37\x0e\x9f\xc3\xcf\x66\xad\xce\x2f\x1f\x13\x09\x9e\x5c\xd4\xc5\xdf\xc2\x6a\x72\x97\x70\xe1\x14\x5f\x84\x75\x10\xae\x10\x59\x80\x40\xa1\x67\x7f\xb9\x19\x93\x00\xb9\xc6\x4f\x67\x83\xf8\x64\x73\x20\x74\x36\x68\xf2\xeb\x74\xf6\xd9\x12\xab\xe4\x8e\x0e\xfc\xcb\xd9\xab\xbf\xc7\xb8\x2b\xf9\x28\x6f\x0d\x5d\x94\x11\x78\x5b\xd5\xd9\x9d\xf3\xc6\x8a\x1c\xe7\xbf\x55\xe3\xa6\xf8\x68\x19\x8e\x75\x25\x7c\xfc\xc4\x9f\xda\x47\x9a\x42\x95\x53\x71\x52\xaf\xdd\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x28\xec\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\x2f\x63\x75\xff\x54\x73\xff\x54\x73\xff\x54\xb3\xf9\xdb\x3f\xd5\xdc\x91\xb9\xfd\x53\xcd\x7f\xfa\x53\xcd\xff\xdf\x8f\x2f\xf7\x97\x63\xff\x37\x2e\xc7\xf6\xd7\x5d\xfb\xeb\xae\xfd\x75\xd7\xfe\xba\xeb\x33\x2c\x7e\x7f\xdd\xb5\xbf\xee\xda\x5f\x77\xed\xaf\xbb\xfe\xa1\xd7\x5d\x13\xa1\xdc\xce\xf7\x5d\xff\x13\x00\x00\xff\xff\xc7\xa0\x23\x13\x5c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x79\x6f\x1c\x37\x96\xff\xdf\x9f\xe2\xa1\x67\x01\x4b\xd9\x3e\x2c\x67\x91\xcd\x34\x10\x04\x82\x1d\x07\xda\xd8\xb2\x60\xc9\x59\x60\x2d\xed\x0e\xbb\xea\x55\x35\x47\x2c\xb2\x86\x64\x75\xab\x27\xc8\x77\x5f\xbc\x47\xd6\xd5\x97\x5a\x89\x3d\x9b\x1d\xb4\xfe\xb1\xbb\x78\xbd\xf3\xf7\x0e\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\xd0\x67\x47\x3f\x01\x12\xa3\xbd\x35\x4a\xa1\x1d\xe5\xa8\xc7\xf7\xd5\x0c\x67\x95\x54\x29\x5a\xde\xbc\x3e\x7a\xf1\x62\xfc\xed\xf8\xc5\x33\x80\xc4\x22\x2f\xbf\x91\x05\x3a\x2f\x8a\x72\x0a\xba\x52\xea\x19\x80\x16\x05\x4e\xc1\x94\x68\x85\x37\x36\xb7\xa6\x2a\xdd\xb8\xfe\xe9\xc6\x89\xb1\x68\xe8\x9f\xe2\x99\x2b\x31\xa1\xd3\x79\x4e\xbb\xa4\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x08\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x1f\x69\x4b\xfe\xae\xa4\xf3\x3f\x6d\x8e\xbd\x95\xce\xf3\x78\xa9\x2a\x2b\xd4\x3a\xc1\x3c\xe4\xe6\xc6\xfa\xcb\xf6\x78\x3e\x2e\x0f\x43\x52\xe7\x95\x12\x76\x6d\xdd\x33\x00\x97\x98\x12\xa7\xc0\xcb\x4a\x91\x60\xfa\x0c\x20\x8a\x2f\x6e\x33\x8a\x22\x5a\x9c\xc5\x5d\x5d\x32\xc7\x42\xd4\x67\x00\x6d\xa9\xcf\xaf\x2e\x7e\xfe\xfa\x7a\x6d\x00\x20\x45\x97\x58\x59\x7a\x56\x46\x8f\x21\x90\x0e\xfc\x1c\xa1\xd2\xd2\x83\xc9\xa0\xa8\x94\x97\x1e\xb5\xd0\xc9\x0a\x32\x63\xe1\xfd\xdb\x77\x50\x08\x2d\x72\x4c\x3b\xa2\x86\x0b\x4f\xba\x77\xde\x0a\xa9\xc3\x0e\x52\x3b\x2f\x94\x62\xf5\xd2\x4e\xcd\x64\x90\x1a\xa4\x77\x41\x23\xc4\x1b\x78\x03\x02\x48\x8d\x32\x93\x98\x82\x43\x3e\xda\x0b\x9b\xa3\x6f\xa7\xb9\x71\x87\x03\xbf\x22\xf1\x98\xd9\x5f\x31\xf1\x9d\xcf\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\x6d\xb4\x9d\xcf\xa5\x25\x8a\x7c\xc7\x0a\xc2\x5f\xc7\x45\x7a\xdf\xd7\xa4\xf6\x9c\x44\x1b\xe6\x41\x4a\xde\x81\x81\xed\xa8\x24\x62\x83\xc5\xce\x9c\xcc\xa5\x03\x8b\xa5\x45\x87\xda\x37\x12\x11\x3a\x32\x30\x86\x6b\xb4\xb4\x90\x6c\xa5\x52\x29\x89\x72\x81\xd6\x83\xc5\xc4\xe4\x5a\xfe\xbd\xd9\xcd\x91\xac\xe8\x18\x25\x3c\x3a\x0f\x52\x7b\xb4\x5a\x28\x58\x08\x55\xe1\x10\x84\x4e\xa1\x10\x2b\xb0\x48\xfb\x42\xa5\x3b\x3b\xf0\x14\x37\x86\x77\xc6\x92\x76\x32\x33\x85\xb9\xf7\xa5\x9b\x4e\x26\xb9\xf4\x35\x00\x24\xa6\x28\x48\xf9\xab\x09\xfb\xb2\x9c\x55\xa4\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x2a\x73\xde\x4a\x9d\xf7\x86\xd8\xe7\xf6\xca\x9a\x3c\x8f\x2c\x53\xc4\xe5\x81\x97\x56\xa4\xf4\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\xa7\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x66\x66\x4d\xc1\xbb\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd1\x92\x81\xa1\xf3\xa4\x87\x31\xbc\x62\xfc\x83\x19\x42\x55\xa6\xc2\x63\x3a\x86\x0b\x0d\xaf\x44\x81\xea\x95\x70\xf8\xc5\x45\x4d\x12\x75\x23\x12\xdf\xe1\xc2\xee\xc2\xf7\xe6\x82\x0d\x87\x02\xa8\xe1\x75\xa7\x76\x7a\xf8\x71\x5d\x62\x52\x63\x08\xad\x64\xcc\x10\x7a\x0d\x64\x6a\x15\x8d\x0f\x25\x62\xb7\xbb\x32\x89\xa8\x30\xf1\xc6\x6e\x8e\xac\x91\x7a\x1d\x27\xc6\x15\x81\xcc\x1e\x69\xcf\xdd\x7e\xdc\x39\x80\xd2\xc7\xa8\x65\x2d\x08\x9f\xcc\x7f\x78\x20\x9b\xec\x40\xfa\x23\xd4\xaf\x2f\x0a\x1e\x41\x91\x89\xd0\x44\x89\x19\xaa\x46\x14\x35\x12\x16\xc1\xe4\x6f\xe6\xd8\xfb\x02\xc2\x22\x9c\x5f\xbe\xc6\x74\x1b\x73\x2d\x83\xc2\x5a\xb1\xda\x31\x43\x7a\x2c\x76\x12\xbe\x46\xfa\xf9\x1e\xf2\xa2\x63\xd7\x23\x7e\x2e\x38\x96\x78\x8e\x24\x01\xb4\x86\x20\xe0\x1e\x57\x01\xdf\x08\x36\xa3\xca\xc2\x64\x8b\x8c\x86\xac\xcc\x7b\x5c\xf1\xa4\x08\x76\x3b\xa9\x7b\x44\x7f\xe1\x6f\x7b\x34\xe9\xff\x8d\xe8\xc8\xbd\xe3\x35\xb1\x3b\x27\x3d\x66\x2c\xe1\xef\x1e\x57\xfb\x86\xd7\x04\x4e\x72\x88\x6e\x18\x24\x4f\x1f\x58\x5a\xec\x99\xb5\xb0\x45\x59\x2a\x89\x8c\x66\x7b\xf7\xde\x09\x27\xfd\xbf\x9a\xd5\x27\x10\xda\xa8\xb2\x45\xe8\xa0\xec\xe7\x2e\x28\x96\x2c\x7d\x2e\xcb\x98\x24\x84\xd4\xa0\x0e\x65\x3f\x0b\x25\x3b\x69\x08\x5b\xf5\x85\x1e\xc2\xa5\xf1\xf4\xcf\x0f\x0f\x92\xa0\x9a\xec\xe1\xb5\x41\x77\x69\x3c\x7f\xf9\x2c\xac\x06\x12\x9e\xc0\x68\x58\xc0\xc6\xae\x83\x5f\x11\x27\xdd\x78\x46\x69\x54\xc6\xfa\x69\x84\x22\x1d\x45\x14\x63\x6b\x8e\x38\xc3\x08\x1b\x85\x2d\x8a\xca\x71\x00\xd2\x46\x8f\xb0\x28\xfd\x6a\xeb\x1e\x51\x10\xc6\xf6\xe4\xb0\x67\xbb\xb8\xd5\x0d\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\xa4\x15\x13\xcd\xd1\x98\x72\x69\x99\x40\x81\x36\x47\x28\x09\xa1\x0e\x11\xef\x3e\x5c\x09\x7f\x8f\xa0\xcb\x81\xba\x62\xc8\x7c\x4b\x0e\xf0\x04\x88\x0d\xf3\x03\x2c\x15\xa2\x24\x35\xfd\x42\xe8\xc3\x92\xfa\x15\x4a\x21\x29\xe3\x3d\xe7\xec\x5d\x61\x6f\x4c\x6a\x96\x69\x77\x1b\xda\x41\x3a\x20\x28\x59\x08\x45\x78\x47\x96\xac\x01\x55\x40\x3f\x4a\xb2\xd7\x80\x7d\x08\xcb\xb9\x71\x01\xcc\x32\x89\x8a\x73\x9f\xc1\x3d\xae\x06\xc3\x0d\xd5\x0e\x2e\xf4\x20\xe0\xe2\x86\x32\x1b\x10\x35\x5a\xad\x60\xc0\x63\x83\xdf\x1e\x0b\xf6\x82\xa5\x48\x53\x2e\x0f\x85\xba\x3a\x00\xcd\xf6\xea\xcd\xa1\x5d\xc8\x04\xcf\x93\xc4\x54\x9a\x0b\xa7\x03\xe2\xfa\xfa\x92\x1a\xfc\x44\x5a\x48\xdd\xab\x2d\x78\x26\x88\x30\x15\x96\x73\x99\xcc\x61\x29\x95\xe2\x34\xce\x61\x4a\xea\x49\xb1\x54\x66\xd5\xc8\xf9\xc4\x9d\x06\xcd\x52\x3e\x59\xcb\x9e\x2b\xb5\xdd\xa9\xc1\x2e\xe6\x28\xfd\x4f\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x4b\xc0\xa3\x52\x8e\xcb\x2f\xca\x39\xbd\x89\x39\xe7\xd6\x14\xa6\xec\xec\xdf\x29\xd2\x77\x12\x3b\x33\x46\xa1\xd8\x1c\x0f\xa9\x50\x53\x84\x3e\x4e\xeb\xcd\xda\x82\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x9b\x5b\x71\x3d\xc3\x8b\x18\xb8\x24\x67\x03\x0e\xfd\xb0\xcd\xd5\xa4\x03\x99\x6b\x63\xb7\xdb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc7\x1a\xc5\x05\xb8\xe9\x02\x55\x99\x5b\x91\xe2\x75\x40\xc3\xad\x61\xba\x27\xa5\xc1\xc7\xfe\x82\x5e\x01\x19\x37\xab\xb1\x35\x54\xdd\xbd\xe2\x99\x66\x35\x12\x64\x7f\xb6\xc8\x4e\x9c\x54\xd6\xa2\xf6\x6a\x05\x7e\x69\xc0\x55\x65\x69\xac\xc7\x74\x7d\x4b\x72\x4d\xb8\xd5\xf0\x1a\x33\x51\x29\x3f\x65\xa3\x62\x17\x60\xa0\x10\x4a\x99\x25\x24\xaa\x72\x1e\x6d\xf4\xac\x58\xe9\xb2\xba\x0a\xb3\xc0\xba\x0c\x0d\x21\x81\x82\x41\x39\x17\x0e\xdb\x1a\xca\x55\x49\x82\x98\x62\x1a\x06\x62\x28\xc1\x2c\xc3\xc4\xcb\x05\xaa\x15\x14\x28\xb8\x53\x20\x7c\x7b\x3e\x59\x76\x38\xbe\x65\x78\xed\x44\x8d\x0f\xbe\x2e\xb2\x41\x72\x11\xdd\xef\x34\xd8\x86\xdd\xb9\x70\x90\x09\xa9\xa8\x2e\xbb\xd5\xf0\x51\x3b\x91\xe1\x1b\x21\xd5\x1b\x63\x97\xc2\xa6\x1d\xc6\xbf\x04\xcf\x44\x4a\x33\x16\xe8\xa8\x85\x71\xde\xa0\xa5\x5a\x0d\x5b\x2a\x72\xd4\xc4\x35\x31\xb9\xac\xb9\xba\x52\x24\xa6\xe5\x1c\x35\xc5\xdb\x6a\xd6\x98\x11\x58\xcc\xd0\xa2\x26\x27\x12\xf5\xfe\x9d\x45\x4d\x4c\x48\x84\x17\xca\xe4\x2c\x8e\x19\xa2\xae\x8b\x55\x58\x4a\x3f\x07\xc1\x87\xd5\x22\xcb\x38\xa7\x46\x40\xca\x0f\x88\xc5\xe8\xb0\x9d\x4e\xcf\xad\x86\xff\x3c\xff\x70\x79\x71\xf9\xe3\x94\x43\xc9\x86\x58\x37\x2d\x58\x3a\xa8\x78\x56\xa7\x3f\xe1\x2a\xe5\xc9\x98\x2b\x8d\x0f\x25\x26\x44\xcf\x0c\xe7\x62\x21\xc9\xda\x6d\xec\x5c\x2c\xd0\x8a\x99\x42\xa0\x82\x15\x94\x71\xb4\x8f\x42\xe7\x60\x65\x2a\x98\x8b\x05\x42\x8a\x58\x42\xa5\x53\xb4\xce\x0b\x9d\x12\xc9\x26\x8b\x39\x6e\x9f\x72\x98\x21\x8d\xd6\xbd\xab\x0d\x3f\x1a\x7c\xfe\x2a\x4f\xef\x88\x5d\x07\xc0\x4f\xc0\x8c\xe8\x9f\xd1\x51\x77\x4c\x43\x5d\x15\xbb\x43\xed\xe8\x91\xd5\x34\x63\x43\x85\xfd\x06\x80\x17\xbe\xda\xe0\x70\x4f\x0b\x80\xe7\x37\x4d\x80\xf0\x6b\x5b\x1b\xe0\xc3\xd3\xbb\x00\xbb\x2b\xb2\x11\x28\xe1\xfc\xc7\x60\xda\x4f\xe8\x1d\x24\x46\x07\x5f\x7c\x3c\xb8\xbd\x6a\xa6\xae\x67\xf1\xdb\x62\x70\xbb\xf1\x67\x0d\x5b\xfd\x40\xd2\x90\xd4\x26\x7b\x29\x7a\x21\x55\x90\xb8\xd1\x08\x82\x92\x1f\x5f\x53\x19\x43\x04\xab\x05\x9b\xde\xe4\xf9\xd5\x05\x34\xda\x80\xd1\x68\x14\xe0\xda\x79\x5b\x25\x1c\x91\xa5\xf6\xa8\x09\xd9\x68\xd7\x54\x5a\x6e\x2e\x3a\xda\xbc\x95\x43\xac\x2d\x43\xc2\x5a\x0a\x3f\x87\x71\x50\xfe\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xcd\x84\x03\x7f\x81\xc9\x04\x3e\xb4\xe5\x20\xa7\xbc\x33\xca\xdc\x42\x35\xc8\xbd\x53\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc2\x9f\xb4\x59\xea\x6d\x47\xf3\x59\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x41\xcb\xed\x60\x08\xb7\x83\x2b\x6b\x72\x4e\xbe\x75\x7e\x1b\xb3\xe9\xdb\xc1\x6b\x64\x18\x4b\x6f\x07\xb4\xed\xbf\x72\x6d\xf3\x8e\xca\x9c\x9f\x70\xf5\x1d\x6f\xd6\x7c\xae\x03\xf9\x77\xa1\x0c\xa2\xef\x94\x32\xdc\xac\x4a\xfc\x8e\xf2\xff\xfa\xc3\x3b\x51\x36\x8b\x3b\xd6\xf4\xe9\xae\x40\x2f\x16\x67\xe3\x56\x9d\x7f\xf9\xab\x33\x7a\x7a\x3b\x68\xe9\x1f\x9a\x82\xcc\xa2\xf4\xab\xdb\x01\xf4\x4e\x9d\xde\x0e\xf8\xdc\xfa\x7b\x4d\xe4\xf4\x76\x40\x27\xd1\x67\x6b\xbc\x99\x55\xd9\xf4\x76\x30\x5b\x79\x74\xc3\xb3\xa1\xc5\x72\x48\xf8\xf4\x5d\x7b\xc2\xed\xe0\x2f\x84\xee\x93\x09\x18\x3f\x47\x1b\x34\xe9\xe0\xd7\x6d\xc8\x78\x40\x51\xf0\x58\xf7\x24\x78\xec\x8d\x15\xda\xc9\xfa\x0e\x68\xe7\xd4\x02\x9d\x13\xf9\xee\x71\x8b\xc2\x6d\x4d\x70\xc3\x70\xb0\x86\x9d\xc3\xc4\xcb\xd6\xc1\xc7\x5b\x33\x9b\x3c\x1c\xd8\x12\xdb\x5c\xd8\x36\x6c\x9c\x07\x4f\x1f\xd8\x63\x1b\x9b\xf0\xcd\x6c\x72\x44\xca\x2c\xc8\xbf\x23\xc0\x72\x51\xc9\x7a\x8b\xb9\x56\xbc\x4a\x98\x61\x48\x1e\xc2\xa5\x4e\x8a\x56\xad\x28\x0c\xb6\xbb\x26\x73\xa1\x73\x4a\x91\x42\xe3\x40\xb0\xbf\x53\x22\x76\x4f\x8e\xc4\x05\xa7\x86\xca\xd5\x2d\x76\xa6\xab\xd9\x91\x80\x23\x38\x7c\xdc\x86\x91\x31\x49\xb0\xf4\xe4\x5d\x8f\xf5\xdf\x1e\xe9\xb2\x64\xc6\x16\xc2\x4f\x29\xfc\xe3\xc8\xef\x36\x8f\x68\x1c\x07\x0a\x3e\xce\x0e\xf5\xfd\xbc\x2a\x04\xa5\x52\x22\xe5\x44\xa3\x19\xd3\xa9\x4c\x04\x67\x40\x35\x9e\x8a\x99\xa9\x02\xc2\xb5\x7a\x88\xa2\xa6\x8c\x66\x86\x5c\xe8\x90\x7f\x46\xb6\x7e\x27\xf3\x85\x78\x78\x8b\x3a\xf7\xf3\x29\x7c\xfd\xf2\xdf\xbf\xf9\x76\xc7\xc4\x00\x8c\x98\xfe\x18\x72\xc7\x2d\xd7\x56\x3b\xc4\xb0\xb9\xb0\xdb\x82\x23\x3e\xc7\xf5\x5d\xc1\x38\x6f\xe7\x34\x3d\xc4\xd6\x82\x96\x82\x4b\x36\x98\x09\xc7\xc5\x06\xc9\x85\x50\x9e\x93\x51\x9d\xe0\x90\xf2\xf4\xad\x9b\x49\xd7\xa9\x59\xce\x5e\x0e\x61\x16\x45\xbc\x09\xdf\x9f\x1e\xee\xc6\x5b\x48\x96\x0e\xfe\x3c\x5c\xa3\x87\xaa\xf4\x8a\x23\x1e\x17\xc8\x9c\xe6\x5a\x0c\x61\x30\xe6\xf0\x5b\xc2\x20\x36\xf4\x3e\xa6\x38\x0a\x86\x39\xee\xee\xe7\xd6\x66\x2b\xb5\xff\xe6\xdf\x76\xeb\x57\x6a\x59\x54\xc5\x14\x5e\xec\x98\x12\x20\xed\x40\x6d\x86\xc9\x6d\x16\x20\x08\xba\x72\x2b\x8a\x82\x9b\x07\x32\x45\xed\x65\x26\xd1\x76\x4d\x3b\x54\x33\xbc\xb0\x4e\xfc\x1b\x29\x3e\x77\x11\x87\x3a\xc6\x7e\x65\x4d\x5a\x25\x68\x39\x02\xc7\x9e\x4a\xd2\x05\xa8\x55\x89\xc1\x1b\x42\x41\x0b\x4d\x6a\x5f\xf7\xa5\x28\xfd\x47\xa1\xa5\xce\x5d\x3c\x52\xba\x00\x20\x21\xea\x2e\xe7\xc8\xa1\xa7\xd7\xcb\x62\xaa\x9c\x4c\xd1\x62\x0a\x02\xf2\x4a\x58\xa1\x3d\x62\x4a\xf0\x13\xfa\x59\xe1\x3e\xb0\x85\x3c\xd1\xde\xc2\xd5\xde\x18\x5c\x35\x80\x15\x91\x18\x6f\xee\x42\xa7\xf3\xb3\xb9\xea\xd9\x8b\x97\x7b\x55\xde\xcc\xdb\x7d\x1b\x20\xbc\x47\xab\xa7\xf0\xdf\x9f\xce\x47\xff\x25\x46\x7f\xbf\x3b\x89\xff\x79\x31\xfa\xf3\xff\x0c\xa7\x77\x5f\x75\x7e\xde\x9d\x7e\xff\x2f\x3b\x76\xda\x9e\xb6\xef\x30\x9f\x18\x44\xea\x24\xb1\xd6\xe8\x90\x23\x8c\xc9\xe0\xc6\x56\x38\x84\x37\x42\x39\x1c\xc2\x47\xcd\xa1\xe1\x77\x0a\x6d\x7f\xd9\x42\x51\x79\x40\xa7\x6e\x4f\x3e\x9a\x29\x4c\xd2\xfe\x39\x91\xdc\x7d\x75\xd8\x61\x42\xe2\xb4\xcd\x64\x5d\xa4\xe9\xdc\xf6\x02\x23\x1e\xa5\xa5\xe3\x98\xde\x8e\x13\x53\x4c\x3a\xb7\xc1\x94\x57\xbf\x13\x7a\x05\x2d\xac\x85\xa4\x74\xdd\xd2\x9d\x27\x6c\x12\x89\xa5\x8a\xb7\xb9\x4f\x07\x25\xef\x11\x9a\xcc\x35\x80\xe5\x0c\x13\xc1\x89\xb8\x9d\x49\x6f\x85\x5d\x75\xea\x0e\x48\x84\x8e\x5d\xcd\xac\x52\x70\xe2\x10\x61\xac\x4d\x8a\x9b\xe8\x7a\x1a\x30\x54\xcc\xa4\x92\x7e\x15\x5a\xa0\x89\xd1\x99\x92\x31\xff\x2f\x4a\x63\xbd\xd0\xbe\x6e\x1f\xe7\xf8\x00\xd2\x87\xce\x75\x68\xf3\x9d\xa4\xda\x9d\x9d\xbd\xfc\xfa\xba\x9a\xa5\xa6\x10\x52\xbf\x29\xfc\xe4\xf4\xfb\x93\xbf\x55\x42\x71\xef\xf5\x52\x14\xf8\xa6\xf0\xa7\x9f\x2f\x2c\x9e\x7d\x73\x80\x17\x9d\x7c\x0a\xbe\x72\x77\xf2\x69\x14\xff\xf7\x55\xfd\xe9\xf4\xfb\x93\xdb\xf1\xde\xf1\xd3\xaf\x88\x87\x8e\x07\xde\x7d\x1a\xb5\xee\x37\xbe\xfb\xea\xf4\xfb\xce\xd8\xe9\xa6\x33\x76\xaa\xd2\x47\x0b\xcc\xb7\xed\xdc\x90\x9d\xf8\xfa\x59\x54\xed\x99\xfd\xd4\x70\xbd\xe4\x8c\x5e\x4c\xf1\x38\x6e\xf3\xe4\xfe\xf4\x21\x49\x97\x3e\xbc\x1f\xdc\xef\x04\x77\xda\x32\x1b\x97\xec\x4d\x04\xea\x31\xf5\x47\xed\xf8\xf6\xef\x28\x3e\x60\xf6\xc4\x2b\x8a\x0f\x98\x75\xfb\x77\x41\x30\xfd\x9b\x89\xf8\x70\xa5\xb9\xba\xf8\x02\xaf\x10\x76\x3f\x75\xda\xca\x02\x25\xfb\x75\xe7\x35\xda\x63\xe4\x61\xe7\x95\xea\xa3\x2e\xcd\xf1\xf8\x4a\xf8\xf9\x41\x14\x3c\xbf\x88\x62\xe3\xfb\x47\xbe\x11\x2e\x25\x26\xd8\x7b\x4d\xc5\x79\x1c\x8a\x34\x7e\xa4\xc4\xc7\x62\x1c\x1b\x86\x8c\x23\xde\xba\xb6\xaf\xad\x28\x69\x02\x41\x40\x2c\x53\xf8\x8f\xeb\xf7\x97\x93\x1f\x4d\xcc\x15\xa8\x9a\x71\xc1\xb7\xf8\xbe\x6c\x08\xae\x4a\xe6\x20\x1c\x91\x46\xf5\xed\x35\xb7\x1e\x0a\xa1\x65\x86\xce\x8f\xe3\x6e\x68\xdd\xa7\x97\x77\xe3\x7e\xbb\x43\xc6\xab\xd9\xfa\x4d\x52\x34\x00\xf6\x0d\x62\xa6\x59\xcb\x49\x2b\x93\x54\x9a\x34\x12\xbd\x64\x62\xbd\xb8\x47\x30\x91\xd8\x0a\x39\x28\x4c\x61\x40\x66\xd2\x39\xfa\x17\x72\xac\x5f\x07\x70\xb2\xe4\xcb\x81\x01\xfd\x1c\x84\x03\x9b\x27\x64\xf4\xad\x13\xf1\xe3\xc1\x21\xbf\xb7\x32\xcf\x39\xdd\xe2\x66\xf0\x02\xb5\x3f\xe5\xf8\x96\x81\x36\x9d\xc9\x3a\xde\xb4\xb5\xf7\x6b\xeb\x84\x7c\x7a\x79\x37\x80\x93\x3e\x5f\x94\x82\xe2\x03\xbc\x6c\xee\xd4\x4a\x93\x9e\xd6\x55\xeb\x4a\x7b\xf1\xc0\x85\xc1\xdc\x38\xd4\xe1\x4a\xc2\x9b\xd0\xed\x75\x86\x8a\x4f\x54\x6a\x14\x12\xcc\x14\x96\xa1\x01\x57\x8b\x32\x5c\x4b\x97\xc2\xfa\xb5\x07\x76\x37\xef\x5f\xbf\x9f\x86\xd3\x48\x6d\xb9\xae\xab\xdc\x4c\x6a\xa1\x62\xaf\xbc\xc9\x0f\x89\x90\x2a\x28\xc9\x9b\x58\xda\xd6\x1d\xe3\xac\xf2\x95\xc5\xf1\xfa\x83\xab\x83\x2d\x7e\xdb\x6b\xb7\xed\xc6\xce\xaf\xde\xd6\x1d\xed\xff\xf0\x4d\xd9\xc1\x2c\xee\xeb\x7b\xf7\x59\xbc\xec\xd8\xe0\x5e\x16\x5b\x68\x26\x2e\x53\x93\x38\x62\x30\xc1\xd2\xbb\x89\x59\x10\x74\xe2\x72\xb2\x34\xf6\x5e\xea\x7c\x44\x46\x36\x0a\x9a\x77\x13\x0e\x31\x93\x3f\xf1\x3f\xbf\x8b\x23\x8e\x53\x87\xb3\x15\x9e\xb6\xfe\x03\x78\xe3\xf0\x39\xf9\xcd\xac\xd5\xf9\xe5\x53\x22\xc1\xf3\xeb\xba\xf8\x5b\x5b\x4d\xee\x12\xae\xd4\xe3\x9b\xd7\x0e\xc2\x15\x22\x0d\x10\x28\xf4\xea\x8b\x9b\x31\x09\x90\x6b\xfc\x64\x35\x8a\x8f\xd2\x47\x42\xa7\xa3\x26\xbf\x4e\x56\xbf\x59\x62\x95\x3c\xd0\x81\x3f\x5e\xbc\xfe\xc7\x18\x77\x25\x9f\xe4\xad\xa1\x8b\x32\x05\x6f\xab\x3a\xbb\x73\xde\x58\x91\x63\xff\x5b\x35\x6b\x8a\x8f\x96\xe1\x58\x57\xc2\x2f\xbf\xf2\xa7\xf6\x19\xba\x50\xe5\x5c\xbc\xac\xd7\x1e\x1f\xa3\x1f\x1f\xa3\x1f\x1f\xa3\x1f\x1f\xa3\xef\x15\xf6\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xef\x63\xf5\xf8\x18\xfd\xf8\x18\xfd\xf8\x18\xbd\xf9\x3b\x3e\x46\x3f\x90\xb9\xe3\x63\xf4\x3f\xfa\x63\xf4\x7f\xee\xc7\x97\xc7\xcb\xb1\xff\x1f\x97\x63\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x1b\x2c\xfe\x78\xdd\x75\xbc\xee\x3a\x5e\x77\x1d\xaf\xbb\xfe\xa0\xd7\x5d\x99\x50\xee\xe0\xfb\xae\xff\x0d\x00\x00\xff\xff\xfa\x3e\x7a\x42\x3e\x4b\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/staging/api/pkg/operators/v1/operatorgroup_test.go b/staging/api/pkg/operators/v1/operatorgroup_test.go new file mode 100644 index 0000000000..3741fb2279 --- /dev/null +++ b/staging/api/pkg/operators/v1/operatorgroup_test.go @@ -0,0 +1,66 @@ +package v1 + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestUpgradeStrategy(t *testing.T) { + tests := []struct { + description string + og *OperatorGroup + expected upgradeStrategyName + }{ + { + description: "NoSpec", + og: &OperatorGroup{}, + expected: DefaultUpgradeStrategy, + }, + { + description: "NoUpgradeStrategy", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{}, + }, + expected: DefaultUpgradeStrategy, + }, + + { + description: "NoUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: UpgradeStrategy{}, + }, + }, + expected: DefaultUpgradeStrategy, + }, + { + description: "NonSupportedUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: UpgradeStrategy{ + Name: "", + }, + }, + }, + expected: DefaultUpgradeStrategy, + }, + { + description: "UnsafeFailForwardUpgradeStrategyName", + og: &OperatorGroup{ + Spec: OperatorGroupSpec{ + UpgradeStrategy: UpgradeStrategy{ + Name: "UnsafeFailForward", + }, + }, + }, + expected: UnsafeFailForwardUpgradeStrategy, + }, + } + + for _, tt := range tests { + t.Run(tt.description, func(t *testing.T) { + require.EqualValues(t, tt.expected, tt.og.UpgradeStrategy()) + }) + } +} diff --git a/staging/api/pkg/operators/v1/operatorgroup_types.go b/staging/api/pkg/operators/v1/operatorgroup_types.go index 1706eb17e4..6763ffca62 100644 --- a/staging/api/pkg/operators/v1/operatorgroup_types.go +++ b/staging/api/pkg/operators/v1/operatorgroup_types.go @@ -45,6 +45,33 @@ type OperatorGroupSpec struct { // Static tells OLM not to update the OperatorGroup's providedAPIs annotation // +optional StaticProvidedAPIs bool `json:"staticProvidedAPIs,omitempty"` + + // +optional + UpgradeStrategy UpgradeStrategy `json:"upgradeStrategy,omitempty"` +} + +// UpgradeStrategy defines the upgrade strategy for operators in the namespace. +// There are currently two supported upgrade strategies: +// +// Default: OLM will only allow clusterServiceVersions to move to the replacing +// phase from the succeeded phase. This effectively means that OLM will not +// allow operators to move to the next version if an installation or upgrade +// has failed. +// +// UnsafeFailForward: OLM will allow clusterServiceVersions to move to the +// replacing phase from the succeeded phase or from the failed phase. +// Additionally, OLM will generate new installPlans when a subscription references +// a failed installPlan and the catalog has been updated with a new upgrade for +// the existing set of operators. +// +// WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result +// in unexpected behavior or unrecoverable data loss unless you have deep +// understanding of the set of operators being managed in the namespace. +type UpgradeStrategy struct { + // +kubebuilder:validation:Enum=Default;UnsafeFailForward + // +kubebuilder:default=Default + // +optional + Name upgradeStrategyName `json:"name"` } // OperatorGroupStatus is the status for an OperatorGroupResource. @@ -90,6 +117,24 @@ type OperatorGroupList struct { Items []OperatorGroup `json:"items"` } +type upgradeStrategyName string + +const ( + DefaultUpgradeStrategy upgradeStrategyName = "Default" + UnsafeFailForwardUpgradeStrategy upgradeStrategyName = "UnsafeFailForward" +) + +// IsServiceAccountSpecified returns true if the spec has a service account name specified. +func (o *OperatorGroup) UpgradeStrategy() upgradeStrategyName { + strategyName := o.Spec.UpgradeStrategy.Name + switch { + case strategyName == UnsafeFailForwardUpgradeStrategy: + return strategyName + default: + return DefaultUpgradeStrategy + } +} + // BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string func (o *OperatorGroup) BuildTargetNamespaces() string { ns := make([]string, len(o.Status.Namespaces)) diff --git a/staging/api/pkg/operators/v1/zz_generated.deepcopy.go b/staging/api/pkg/operators/v1/zz_generated.deepcopy.go index 89a3007bc1..8648b8111c 100644 --- a/staging/api/pkg/operators/v1/zz_generated.deepcopy.go +++ b/staging/api/pkg/operators/v1/zz_generated.deepcopy.go @@ -409,6 +409,7 @@ func (in *OperatorGroupSpec) DeepCopyInto(out *OperatorGroupSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + out.UpgradeStrategy = in.UpgradeStrategy } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorGroupSpec. @@ -550,3 +551,18 @@ func (in *RichReference) DeepCopy() *RichReference { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeStrategy) DeepCopyInto(out *UpgradeStrategy) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeStrategy. +func (in *UpgradeStrategy) DeepCopy() *UpgradeStrategy { + if in == nil { + return nil + } + out := new(UpgradeStrategy) + in.DeepCopyInto(out) + return out +} From a931729c32717824fe6a89ee75de6c66a519ec57 Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Tue, 5 Apr 2022 12:43:00 -0700 Subject: [PATCH 2/4] upgradeStrategy always appears --- .../operators.coreos.com_operatorgroups.yaml | 18 +++-- staging/api/crds/zz_defs.go | 2 +- .../pkg/operators/v1/operatorgroup_test.go | 13 ++-- .../pkg/operators/v1/operatorgroup_types.go | 71 +++++++++---------- .../pkg/operators/v1/zz_generated.deepcopy.go | 16 ----- 5 files changed, 46 insertions(+), 74 deletions(-) diff --git a/staging/api/crds/operators.coreos.com_operatorgroups.yaml b/staging/api/crds/operators.coreos.com_operatorgroups.yaml index 1d6076902c..d63a7b78c5 100644 --- a/staging/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/staging/api/crds/operators.coreos.com_operatorgroups.yaml @@ -37,6 +37,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -81,17 +83,13 @@ spec: type: string x-kubernetes-list-type: set upgradeStrategy: - description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace." - type: object - properties: - name: - type: string - default: Default - enum: - - Default - - UnsafeFailForward + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - UnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/staging/api/crds/zz_defs.go b/staging/api/crds/zz_defs.go index 7f0ddacec2..22bfcf53ff 100644 --- a/staging/api/crds/zz_defs.go +++ b/staging/api/crds/zz_defs.go @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x79\x6f\x1c\x37\x96\xff\xdf\x9f\xe2\xa1\x67\x01\x4b\xd9\x3e\x2c\x67\x91\xcd\x34\x10\x04\x82\x1d\x07\xda\xd8\xb2\x60\xc9\x59\x60\x2d\xed\x0e\xbb\xea\x55\x35\x47\x2c\xb2\x86\x64\x75\xab\x27\xc8\x77\x5f\xbc\x47\xd6\xd5\x97\x5a\x89\x3d\x9b\x1d\xb4\xfe\xb1\xbb\x78\xbd\xf3\xf7\x0e\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\xd0\x67\x47\x3f\x01\x12\xa3\xbd\x35\x4a\xa1\x1d\xe5\xa8\xc7\xf7\xd5\x0c\x67\x95\x54\x29\x5a\xde\xbc\x3e\x7a\xf1\x62\xfc\xed\xf8\xc5\x33\x80\xc4\x22\x2f\xbf\x91\x05\x3a\x2f\x8a\x72\x0a\xba\x52\xea\x19\x80\x16\x05\x4e\xc1\x94\x68\x85\x37\x36\xb7\xa6\x2a\xdd\xb8\xfe\xe9\xc6\x89\xb1\x68\xe8\x9f\xe2\x99\x2b\x31\xa1\xd3\x79\x4e\xbb\xa4\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x08\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x1f\x69\x4b\xfe\xae\xa4\xf3\x3f\x6d\x8e\xbd\x95\xce\xf3\x78\xa9\x2a\x2b\xd4\x3a\xc1\x3c\xe4\xe6\xc6\xfa\xcb\xf6\x78\x3e\x2e\x0f\x43\x52\xe7\x95\x12\x76\x6d\xdd\x33\x00\x97\x98\x12\xa7\xc0\xcb\x4a\x91\x60\xfa\x0c\x20\x8a\x2f\x6e\x33\x8a\x22\x5a\x9c\xc5\x5d\x5d\x32\xc7\x42\xd4\x67\x00\x6d\xa9\xcf\xaf\x2e\x7e\xfe\xfa\x7a\x6d\x00\x20\x45\x97\x58\x59\x7a\x56\x46\x8f\x21\x90\x0e\xfc\x1c\xa1\xd2\xd2\x83\xc9\xa0\xa8\x94\x97\x1e\xb5\xd0\xc9\x0a\x32\x63\xe1\xfd\xdb\x77\x50\x08\x2d\x72\x4c\x3b\xa2\x86\x0b\x4f\xba\x77\xde\x0a\xa9\xc3\x0e\x52\x3b\x2f\x94\x62\xf5\xd2\x4e\xcd\x64\x90\x1a\xa4\x77\x41\x23\xc4\x1b\x78\x03\x02\x48\x8d\x32\x93\x98\x82\x43\x3e\xda\x0b\x9b\xa3\x6f\xa7\xb9\x71\x87\x03\xbf\x22\xf1\x98\xd9\x5f\x31\xf1\x9d\xcf\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\x6d\xb4\x9d\xcf\xa5\x25\x8a\x7c\xc7\x0a\xc2\x5f\xc7\x45\x7a\xdf\xd7\xa4\xf6\x9c\x44\x1b\xe6\x41\x4a\xde\x81\x81\xed\xa8\x24\x62\x83\xc5\xce\x9c\xcc\xa5\x03\x8b\xa5\x45\x87\xda\x37\x12\x11\x3a\x32\x30\x86\x6b\xb4\xb4\x90\x6c\xa5\x52\x29\x89\x72\x81\xd6\x83\xc5\xc4\xe4\x5a\xfe\xbd\xd9\xcd\x91\xac\xe8\x18\x25\x3c\x3a\x0f\x52\x7b\xb4\x5a\x28\x58\x08\x55\xe1\x10\x84\x4e\xa1\x10\x2b\xb0\x48\xfb\x42\xa5\x3b\x3b\xf0\x14\x37\x86\x77\xc6\x92\x76\x32\x33\x85\xb9\xf7\xa5\x9b\x4e\x26\xb9\xf4\x35\x00\x24\xa6\x28\x48\xf9\xab\x09\xfb\xb2\x9c\x55\xa4\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x2a\x73\xde\x4a\x9d\xf7\x86\xd8\xe7\xf6\xca\x9a\x3c\x8f\x2c\x53\xc4\xe5\x81\x97\x56\xa4\xf4\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\xa7\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x66\x66\x4d\xc1\xbb\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd1\x92\x81\xa1\xf3\xa4\x87\x31\xbc\x62\xfc\x83\x19\x42\x55\xa6\xc2\x63\x3a\x86\x0b\x0d\xaf\x44\x81\xea\x95\x70\xf8\xc5\x45\x4d\x12\x75\x23\x12\xdf\xe1\xc2\xee\xc2\xf7\xe6\x82\x0d\x87\x02\xa8\xe1\x75\xa7\x76\x7a\xf8\x71\x5d\x62\x52\x63\x08\xad\x64\xcc\x10\x7a\x0d\x64\x6a\x15\x8d\x0f\x25\x62\xb7\xbb\x32\x89\xa8\x30\xf1\xc6\x6e\x8e\xac\x91\x7a\x1d\x27\xc6\x15\x81\xcc\x1e\x69\xcf\xdd\x7e\xdc\x39\x80\xd2\xc7\xa8\x65\x2d\x08\x9f\xcc\x7f\x78\x20\x9b\xec\x40\xfa\x23\xd4\xaf\x2f\x0a\x1e\x41\x91\x89\xd0\x44\x89\x19\xaa\x46\x14\x35\x12\x16\xc1\xe4\x6f\xe6\xd8\xfb\x02\xc2\x22\x9c\x5f\xbe\xc6\x74\x1b\x73\x2d\x83\xc2\x5a\xb1\xda\x31\x43\x7a\x2c\x76\x12\xbe\x46\xfa\xf9\x1e\xf2\xa2\x63\xd7\x23\x7e\x2e\x38\x96\x78\x8e\x24\x01\xb4\x86\x20\xe0\x1e\x57\x01\xdf\x08\x36\xa3\xca\xc2\x64\x8b\x8c\x86\xac\xcc\x7b\x5c\xf1\xa4\x08\x76\x3b\xa9\x7b\x44\x7f\xe1\x6f\x7b\x34\xe9\xff\x8d\xe8\xc8\xbd\xe3\x35\xb1\x3b\x27\x3d\x66\x2c\xe1\xef\x1e\x57\xfb\x86\xd7\x04\x4e\x72\x88\x6e\x18\x24\x4f\x1f\x58\x5a\xec\x99\xb5\xb0\x45\x59\x2a\x89\x8c\x66\x7b\xf7\xde\x09\x27\xfd\xbf\x9a\xd5\x27\x10\xda\xa8\xb2\x45\xe8\xa0\xec\xe7\x2e\x28\x96\x2c\x7d\x2e\xcb\x98\x24\x84\xd4\xa0\x0e\x65\x3f\x0b\x25\x3b\x69\x08\x5b\xf5\x85\x1e\xc2\xa5\xf1\xf4\xcf\x0f\x0f\x92\xa0\x9a\xec\xe1\xb5\x41\x77\x69\x3c\x7f\xf9\x2c\xac\x06\x12\x9e\xc0\x68\x58\xc0\xc6\xae\x83\x5f\x11\x27\xdd\x78\x46\x69\x54\xc6\xfa\x69\x84\x22\x1d\x45\x14\x63\x6b\x8e\x38\xc3\x08\x1b\x85\x2d\x8a\xca\x71\x00\xd2\x46\x8f\xb0\x28\xfd\x6a\xeb\x1e\x51\x10\xc6\xf6\xe4\xb0\x67\xbb\xb8\xd5\x0d\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\xa4\x15\x13\xcd\xd1\x98\x72\x69\x99\x40\x81\x36\x47\x28\x09\xa1\x0e\x11\xef\x3e\x5c\x09\x7f\x8f\xa0\xcb\x81\xba\x62\xc8\x7c\x4b\x0e\xf0\x04\x88\x0d\xf3\x03\x2c\x15\xa2\x24\x35\xfd\x42\xe8\xc3\x92\xfa\x15\x4a\x21\x29\xe3\x3d\xe7\xec\x5d\x61\x6f\x4c\x6a\x96\x69\x77\x1b\xda\x41\x3a\x20\x28\x59\x08\x45\x78\x47\x96\xac\x01\x55\x40\x3f\x4a\xb2\xd7\x80\x7d\x08\xcb\xb9\x71\x01\xcc\x32\x89\x8a\x73\x9f\xc1\x3d\xae\x06\xc3\x0d\xd5\x0e\x2e\xf4\x20\xe0\xe2\x86\x32\x1b\x10\x35\x5a\xad\x60\xc0\x63\x83\xdf\x1e\x0b\xf6\x82\xa5\x48\x53\x2e\x0f\x85\xba\x3a\x00\xcd\xf6\xea\xcd\xa1\x5d\xc8\x04\xcf\x93\xc4\x54\x9a\x0b\xa7\x03\xe2\xfa\xfa\x92\x1a\xfc\x44\x5a\x48\xdd\xab\x2d\x78\x26\x88\x30\x15\x96\x73\x99\xcc\x61\x29\x95\xe2\x34\xce\x61\x4a\xea\x49\xb1\x54\x66\xd5\xc8\xf9\xc4\x9d\x06\xcd\x52\x3e\x59\xcb\x9e\x2b\xb5\xdd\xa9\xc1\x2e\xe6\x28\xfd\x4f\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x4b\xc0\xa3\x52\x8e\xcb\x2f\xca\x39\xbd\x89\x39\xe7\xd6\x14\xa6\xec\xec\xdf\x29\xd2\x77\x12\x3b\x33\x46\xa1\xd8\x1c\x0f\xa9\x50\x53\x84\x3e\x4e\xeb\xcd\xda\x82\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x9b\x5b\x71\x3d\xc3\x8b\x18\xb8\x24\x67\x03\x0e\xfd\xb0\xcd\xd5\xa4\x03\x99\x6b\x63\xb7\xdb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc7\x1a\xc5\x05\xb8\xe9\x02\x55\x99\x5b\x91\xe2\x75\x40\xc3\xad\x61\xba\x27\xa5\xc1\xc7\xfe\x82\x5e\x01\x19\x37\xab\xb1\x35\x54\xdd\xbd\xe2\x99\x66\x35\x12\x64\x7f\xb6\xc8\x4e\x9c\x54\xd6\xa2\xf6\x6a\x05\x7e\x69\xc0\x55\x65\x69\xac\xc7\x74\x7d\x4b\x72\x4d\xb8\xd5\xf0\x1a\x33\x51\x29\x3f\x65\xa3\x62\x17\x60\xa0\x10\x4a\x99\x25\x24\xaa\x72\x1e\x6d\xf4\xac\x58\xe9\xb2\xba\x0a\xb3\xc0\xba\x0c\x0d\x21\x81\x82\x41\x39\x17\x0e\xdb\x1a\xca\x55\x49\x82\x98\x62\x1a\x06\x62\x28\xc1\x2c\xc3\xc4\xcb\x05\xaa\x15\x14\x28\xb8\x53\x20\x7c\x7b\x3e\x59\x76\x38\xbe\x65\x78\xed\x44\x8d\x0f\xbe\x2e\xb2\x41\x72\x11\xdd\xef\x34\xd8\x86\xdd\xb9\x70\x90\x09\xa9\xa8\x2e\xbb\xd5\xf0\x51\x3b\x91\xe1\x1b\x21\xd5\x1b\x63\x97\xc2\xa6\x1d\xc6\xbf\x04\xcf\x44\x4a\x33\x16\xe8\xa8\x85\x71\xde\xa0\xa5\x5a\x0d\x5b\x2a\x72\xd4\xc4\x35\x31\xb9\xac\xb9\xba\x52\x24\xa6\xe5\x1c\x35\xc5\xdb\x6a\xd6\x98\x11\x58\xcc\xd0\xa2\x26\x27\x12\xf5\xfe\x9d\x45\x4d\x4c\x48\x84\x17\xca\xe4\x2c\x8e\x19\xa2\xae\x8b\x55\x58\x4a\x3f\x07\xc1\x87\xd5\x22\xcb\x38\xa7\x46\x40\xca\x0f\x88\xc5\xe8\xb0\x9d\x4e\xcf\xad\x86\xff\x3c\xff\x70\x79\x71\xf9\xe3\x94\x43\xc9\x86\x58\x37\x2d\x58\x3a\xa8\x78\x56\xa7\x3f\xe1\x2a\xe5\xc9\x98\x2b\x8d\x0f\x25\x26\x44\xcf\x0c\xe7\x62\x21\xc9\xda\x6d\xec\x5c\x2c\xd0\x8a\x99\x42\xa0\x82\x15\x94\x71\xb4\x8f\x42\xe7\x60\x65\x2a\x98\x8b\x05\x42\x8a\x58\x42\xa5\x53\xb4\xce\x0b\x9d\x12\xc9\x26\x8b\x39\x6e\x9f\x72\x98\x21\x8d\xd6\xbd\xab\x0d\x3f\x1a\x7c\xfe\x2a\x4f\xef\x88\x5d\x07\xc0\x4f\xc0\x8c\xe8\x9f\xd1\x51\x77\x4c\x43\x5d\x15\xbb\x43\xed\xe8\x91\xd5\x34\x63\x43\x85\xfd\x06\x80\x17\xbe\xda\xe0\x70\x4f\x0b\x80\xe7\x37\x4d\x80\xf0\x6b\x5b\x1b\xe0\xc3\xd3\xbb\x00\xbb\x2b\xb2\x11\x28\xe1\xfc\xc7\x60\xda\x4f\xe8\x1d\x24\x46\x07\x5f\x7c\x3c\xb8\xbd\x6a\xa6\xae\x67\xf1\xdb\x62\x70\xbb\xf1\x67\x0d\x5b\xfd\x40\xd2\x90\xd4\x26\x7b\x29\x7a\x21\x55\x90\xb8\xd1\x08\x82\x92\x1f\x5f\x53\x19\x43\x04\xab\x05\x9b\xde\xe4\xf9\xd5\x05\x34\xda\x80\xd1\x68\x14\xe0\xda\x79\x5b\x25\x1c\x91\xa5\xf6\xa8\x09\xd9\x68\xd7\x54\x5a\x6e\x2e\x3a\xda\xbc\x95\x43\xac\x2d\x43\xc2\x5a\x0a\x3f\x87\x71\x50\xfe\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xcd\x84\x03\x7f\x81\xc9\x04\x3e\xb4\xe5\x20\xa7\xbc\x33\xca\xdc\x42\x35\xc8\xbd\x53\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc2\x9f\xb4\x59\xea\x6d\x47\xf3\x59\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x41\xcb\xed\x60\x08\xb7\x83\x2b\x6b\x72\x4e\xbe\x75\x7e\x1b\xb3\xe9\xdb\xc1\x6b\x64\x18\x4b\x6f\x07\xb4\xed\xbf\x72\x6d\xf3\x8e\xca\x9c\x9f\x70\xf5\x1d\x6f\xd6\x7c\xae\x03\xf9\x77\xa1\x0c\xa2\xef\x94\x32\xdc\xac\x4a\xfc\x8e\xf2\xff\xfa\xc3\x3b\x51\x36\x8b\x3b\xd6\xf4\xe9\xae\x40\x2f\x16\x67\xe3\x56\x9d\x7f\xf9\xab\x33\x7a\x7a\x3b\x68\xe9\x1f\x9a\x82\xcc\xa2\xf4\xab\xdb\x01\xf4\x4e\x9d\xde\x0e\xf8\xdc\xfa\x7b\x4d\xe4\xf4\x76\x40\x27\xd1\x67\x6b\xbc\x99\x55\xd9\xf4\x76\x30\x5b\x79\x74\xc3\xb3\xa1\xc5\x72\x48\xf8\xf4\x5d\x7b\xc2\xed\xe0\x2f\x84\xee\x93\x09\x18\x3f\x47\x1b\x34\xe9\xe0\xd7\x6d\xc8\x78\x40\x51\xf0\x58\xf7\x24\x78\xec\x8d\x15\xda\xc9\xfa\x0e\x68\xe7\xd4\x02\x9d\x13\xf9\xee\x71\x8b\xc2\x6d\x4d\x70\xc3\x70\xb0\x86\x9d\xc3\xc4\xcb\xd6\xc1\xc7\x5b\x33\x9b\x3c\x1c\xd8\x12\xdb\x5c\xd8\x36\x6c\x9c\x07\x4f\x1f\xd8\x63\x1b\x9b\xf0\xcd\x6c\x72\x44\xca\x2c\xc8\xbf\x23\xc0\x72\x51\xc9\x7a\x8b\xb9\x56\xbc\x4a\x98\x61\x48\x1e\xc2\xa5\x4e\x8a\x56\xad\x28\x0c\xb6\xbb\x26\x73\xa1\x73\x4a\x91\x42\xe3\x40\xb0\xbf\x53\x22\x76\x4f\x8e\xc4\x05\xa7\x86\xca\xd5\x2d\x76\xa6\xab\xd9\x91\x80\x23\x38\x7c\xdc\x86\x91\x31\x49\xb0\xf4\xe4\x5d\x8f\xf5\xdf\x1e\xe9\xb2\x64\xc6\x16\xc2\x4f\x29\xfc\xe3\xc8\xef\x36\x8f\x68\x1c\x07\x0a\x3e\xce\x0e\xf5\xfd\xbc\x2a\x04\xa5\x52\x22\xe5\x44\xa3\x19\xd3\xa9\x4c\x04\x67\x40\x35\x9e\x8a\x99\xa9\x02\xc2\xb5\x7a\x88\xa2\xa6\x8c\x66\x86\x5c\xe8\x90\x7f\x46\xb6\x7e\x27\xf3\x85\x78\x78\x8b\x3a\xf7\xf3\x29\x7c\xfd\xf2\xdf\xbf\xf9\x76\xc7\xc4\x00\x8c\x98\xfe\x18\x72\xc7\x2d\xd7\x56\x3b\xc4\xb0\xb9\xb0\xdb\x82\x23\x3e\xc7\xf5\x5d\xc1\x38\x6f\xe7\x34\x3d\xc4\xd6\x82\x96\x82\x4b\x36\x98\x09\xc7\xc5\x06\xc9\x85\x50\x9e\x93\x51\x9d\xe0\x90\xf2\xf4\xad\x9b\x49\xd7\xa9\x59\xce\x5e\x0e\x61\x16\x45\xbc\x09\xdf\x9f\x1e\xee\xc6\x5b\x48\x96\x0e\xfe\x3c\x5c\xa3\x87\xaa\xf4\x8a\x23\x1e\x17\xc8\x9c\xe6\x5a\x0c\x61\x30\xe6\xf0\x5b\xc2\x20\x36\xf4\x3e\xa6\x38\x0a\x86\x39\xee\xee\xe7\xd6\x66\x2b\xb5\xff\xe6\xdf\x76\xeb\x57\x6a\x59\x54\xc5\x14\x5e\xec\x98\x12\x20\xed\x40\x6d\x86\xc9\x6d\x16\x20\x08\xba\x72\x2b\x8a\x82\x9b\x07\x32\x45\xed\x65\x26\xd1\x76\x4d\x3b\x54\x33\xbc\xb0\x4e\xfc\x1b\x29\x3e\x77\x11\x87\x3a\xc6\x7e\x65\x4d\x5a\x25\x68\x39\x02\xc7\x9e\x4a\xd2\x05\xa8\x55\x89\xc1\x1b\x42\x41\x0b\x4d\x6a\x5f\xf7\xa5\x28\xfd\x47\xa1\xa5\xce\x5d\x3c\x52\xba\x00\x20\x21\xea\x2e\xe7\xc8\xa1\xa7\xd7\xcb\x62\xaa\x9c\x4c\xd1\x62\x0a\x02\xf2\x4a\x58\xa1\x3d\x62\x4a\xf0\x13\xfa\x59\xe1\x3e\xb0\x85\x3c\xd1\xde\xc2\xd5\xde\x18\x5c\x35\x80\x15\x91\x18\x6f\xee\x42\xa7\xf3\xb3\xb9\xea\xd9\x8b\x97\x7b\x55\xde\xcc\xdb\x7d\x1b\x20\xbc\x47\xab\xa7\xf0\xdf\x9f\xce\x47\xff\x25\x46\x7f\xbf\x3b\x89\xff\x79\x31\xfa\xf3\xff\x0c\xa7\x77\x5f\x75\x7e\xde\x9d\x7e\xff\x2f\x3b\x76\xda\x9e\xb6\xef\x30\x9f\x18\x44\xea\x24\xb1\xd6\xe8\x90\x23\x8c\xc9\xe0\xc6\x56\x38\x84\x37\x42\x39\x1c\xc2\x47\xcd\xa1\xe1\x77\x0a\x6d\x7f\xd9\x42\x51\x79\x40\xa7\x6e\x4f\x3e\x9a\x29\x4c\xd2\xfe\x39\x91\xdc\x7d\x75\xd8\x61\x42\xe2\xb4\xcd\x64\x5d\xa4\xe9\xdc\xf6\x02\x23\x1e\xa5\xa5\xe3\x98\xde\x8e\x13\x53\x4c\x3a\xb7\xc1\x94\x57\xbf\x13\x7a\x05\x2d\xac\x85\xa4\x74\xdd\xd2\x9d\x27\x6c\x12\x89\xa5\x8a\xb7\xb9\x4f\x07\x25\xef\x11\x9a\xcc\x35\x80\xe5\x0c\x13\xc1\x89\xb8\x9d\x49\x6f\x85\x5d\x75\xea\x0e\x48\x84\x8e\x5d\xcd\xac\x52\x70\xe2\x10\x61\xac\x4d\x8a\x9b\xe8\x7a\x1a\x30\x54\xcc\xa4\x92\x7e\x15\x5a\xa0\x89\xd1\x99\x92\x31\xff\x2f\x4a\x63\xbd\xd0\xbe\x6e\x1f\xe7\xf8\x00\xd2\x87\xce\x75\x68\xf3\x9d\xa4\xda\x9d\x9d\xbd\xfc\xfa\xba\x9a\xa5\xa6\x10\x52\xbf\x29\xfc\xe4\xf4\xfb\x93\xbf\x55\x42\x71\xef\xf5\x52\x14\xf8\xa6\xf0\xa7\x9f\x2f\x2c\x9e\x7d\x73\x80\x17\x9d\x7c\x0a\xbe\x72\x77\xf2\x69\x14\xff\xf7\x55\xfd\xe9\xf4\xfb\x93\xdb\xf1\xde\xf1\xd3\xaf\x88\x87\x8e\x07\xde\x7d\x1a\xb5\xee\x37\xbe\xfb\xea\xf4\xfb\xce\xd8\xe9\xa6\x33\x76\xaa\xd2\x47\x0b\xcc\xb7\xed\xdc\x90\x9d\xf8\xfa\x59\x54\xed\x99\xfd\xd4\x70\xbd\xe4\x8c\x5e\x4c\xf1\x38\x6e\xf3\xe4\xfe\xf4\x21\x49\x97\x3e\xbc\x1f\xdc\xef\x04\x77\xda\x32\x1b\x97\xec\x4d\x04\xea\x31\xf5\x47\xed\xf8\xf6\xef\x28\x3e\x60\xf6\xc4\x2b\x8a\x0f\x98\x75\xfb\x77\x41\x30\xfd\x9b\x89\xf8\x70\xa5\xb9\xba\xf8\x02\xaf\x10\x76\x3f\x75\xda\xca\x02\x25\xfb\x75\xe7\x35\xda\x63\xe4\x61\xe7\x95\xea\xa3\x2e\xcd\xf1\xf8\x4a\xf8\xf9\x41\x14\x3c\xbf\x88\x62\xe3\xfb\x47\xbe\x11\x2e\x25\x26\xd8\x7b\x4d\xc5\x79\x1c\x8a\x34\x7e\xa4\xc4\xc7\x62\x1c\x1b\x86\x8c\x23\xde\xba\xb6\xaf\xad\x28\x69\x02\x41\x40\x2c\x53\xf8\x8f\xeb\xf7\x97\x93\x1f\x4d\xcc\x15\xa8\x9a\x71\xc1\xb7\xf8\xbe\x6c\x08\xae\x4a\xe6\x20\x1c\x91\x46\xf5\xed\x35\xb7\x1e\x0a\xa1\x65\x86\xce\x8f\xe3\x6e\x68\xdd\xa7\x97\x77\xe3\x7e\xbb\x43\xc6\xab\xd9\xfa\x4d\x52\x34\x00\xf6\x0d\x62\xa6\x59\xcb\x49\x2b\x93\x54\x9a\x34\x12\xbd\x64\x62\xbd\xb8\x47\x30\x91\xd8\x0a\x39\x28\x4c\x61\x40\x66\xd2\x39\xfa\x17\x72\xac\x5f\x07\x70\xb2\xe4\xcb\x81\x01\xfd\x1c\x84\x03\x9b\x27\x64\xf4\xad\x13\xf1\xe3\xc1\x21\xbf\xb7\x32\xcf\x39\xdd\xe2\x66\xf0\x02\xb5\x3f\xe5\xf8\x96\x81\x36\x9d\xc9\x3a\xde\xb4\xb5\xf7\x6b\xeb\x84\x7c\x7a\x79\x37\x80\x93\x3e\x5f\x94\x82\xe2\x03\xbc\x6c\xee\xd4\x4a\x93\x9e\xd6\x55\xeb\x4a\x7b\xf1\xc0\x85\xc1\xdc\x38\xd4\xe1\x4a\xc2\x9b\xd0\xed\x75\x86\x8a\x4f\x54\x6a\x14\x12\xcc\x14\x96\xa1\x01\x57\x8b\x32\x5c\x4b\x97\xc2\xfa\xb5\x07\x76\x37\xef\x5f\xbf\x9f\x86\xd3\x48\x6d\xb9\xae\xab\xdc\x4c\x6a\xa1\x62\xaf\xbc\xc9\x0f\x89\x90\x2a\x28\xc9\x9b\x58\xda\xd6\x1d\xe3\xac\xf2\x95\xc5\xf1\xfa\x83\xab\x83\x2d\x7e\xdb\x6b\xb7\xed\xc6\xce\xaf\xde\xd6\x1d\xed\xff\xf0\x4d\xd9\xc1\x2c\xee\xeb\x7b\xf7\x59\xbc\xec\xd8\xe0\x5e\x16\x5b\x68\x26\x2e\x53\x93\x38\x62\x30\xc1\xd2\xbb\x89\x59\x10\x74\xe2\x72\xb2\x34\xf6\x5e\xea\x7c\x44\x46\x36\x0a\x9a\x77\x13\x0e\x31\x93\x3f\xf1\x3f\xbf\x8b\x23\x8e\x53\x87\xb3\x15\x9e\xb6\xfe\x03\x78\xe3\xf0\x39\xf9\xcd\xac\xd5\xf9\xe5\x53\x22\xc1\xf3\xeb\xba\xf8\x5b\x5b\x4d\xee\x12\xae\xd4\xe3\x9b\xd7\x0e\xc2\x15\x22\x0d\x10\x28\xf4\xea\x8b\x9b\x31\x09\x90\x6b\xfc\x64\x35\x8a\x8f\xd2\x47\x42\xa7\xa3\x26\xbf\x4e\x56\xbf\x59\x62\x95\x3c\xd0\x81\x3f\x5e\xbc\xfe\xc7\x18\x77\x25\x9f\xe4\xad\xa1\x8b\x32\x05\x6f\xab\x3a\xbb\x73\xde\x58\x91\x63\xff\x5b\x35\x6b\x8a\x8f\x96\xe1\x58\x57\xc2\x2f\xbf\xf2\xa7\xf6\x19\xba\x50\xe5\x5c\xbc\xac\xd7\x1e\x1f\xa3\x1f\x1f\xa3\x1f\x1f\xa3\x1f\x1f\xa3\xef\x15\xf6\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xf1\x31\xfa\xef\x63\xf5\xf8\x18\xfd\xf8\x18\xfd\xf8\x18\xbd\xf9\x3b\x3e\x46\x3f\x90\xb9\xe3\x63\xf4\x3f\xfa\x63\xf4\x7f\xee\xc7\x97\xc7\xcb\xb1\xff\x1f\x97\x63\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x1b\x2c\xfe\x78\xdd\x75\xbc\xee\x3a\x5e\x77\x1d\xaf\xbb\xfe\xa0\xd7\x5d\x99\x50\xee\xe0\xfb\xae\xff\x0d\x00\x00\xff\xff\xfa\x3e\x7a\x42\x3e\x4b\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x7b\x6f\x1c\x37\x92\xff\xdf\x9f\xa2\x30\x7b\x80\xa5\xdc\x3c\x2c\xe7\x90\xcb\x0e\x10\x04\x82\x1d\x07\xba\xd8\xb2\x60\xc9\x39\xe0\x2c\xdd\x2d\xa7\xbb\xba\x87\x2b\x36\xd9\x4b\xb2\x67\x34\x1b\xe4\xbb\x1f\xaa\xc8\x7e\xcd\x4b\xa3\xc4\xde\xdd\x00\xd3\xff\x48\xc3\x67\x55\xb1\xea\x57\x0f\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\x50\xb3\xa3\x9f\x00\x89\xd1\xde\x1a\xa5\xd0\x8e\x72\xd4\xe3\xfb\x6a\x86\xb3\x4a\xaa\x14\x2d\x2f\x5e\x6f\xbd\x78\x31\xfe\x76\xfc\xe2\x19\x40\x62\x91\xa7\xdf\xc8\x02\x9d\x17\x45\x39\x05\x5d\x29\xf5\x0c\x40\x8b\x02\xa7\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x6e\x5c\xff\x74\xe3\xc4\x58\x34\xf4\xa7\x78\xe6\x4a\x4c\x68\x77\x1e\xd3\x4e\xe9\x8d\x09\xeb\xd5\x44\x0a\x8f\xb9\xb1\xb2\xfe\x0d\x30\x02\xa3\x0a\xfe\x3f\x30\xff\x3e\xae\xf1\x23\x2d\xc9\xed\x4a\x3a\xff\xd3\x66\xdf\x5b\xe9\x3c\xf7\x97\xaa\xb2\x42\xad\x13\xcc\x5d\x6e\x6e\xac\xbf\x6c\xb7\xe7\xed\xf2\xd0\x25\x75\x5e\x29\x61\xd7\xe6\x3d\x03\x70\x89\x29\x71\x0a\x3c\xad\x14\x09\xa6\xcf\x00\xa2\xf8\xe2\x32\xa3\x28\xa2\xc5\x59\x5c\xd5\x25\x73\x2c\x44\xbd\x07\xd0\x92\xfa\xfc\xea\xe2\xe7\xaf\xaf\xd7\x3a\x00\x52\x74\x89\x95\xa5\xe7\xc3\xe8\x31\x04\xd2\x81\x9f\x23\x54\x5a\x7a\x30\x19\x14\x95\xf2\xd2\xa3\x16\x3a\x59\x41\x66\x2c\xbc\x7f\xfb\x0e\x0a\xa1\x45\x8e\x69\x47\xd4\x70\xe1\xe9\xec\x9d\xb7\x42\xea\xb0\x82\xd4\xce\x0b\xa5\xf8\x78\x69\xa5\x66\x30\x48\x0d\xd2\xbb\x70\x22\xc4\x1b\x78\x03\x02\xe8\x18\x65\x26\x31\x05\x87\xbc\xb5\x17\x36\x47\xdf\x0e\x73\xe3\x0e\x07\x7e\x45\xe2\x31\xb3\xbf\x62\xe2\x3b\xcd\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\xad\xb4\x9d\xe6\xd2\x12\x45\xbe\xa3\x05\xe1\xeb\x98\x48\xaf\x7d\x4d\x6a\xcf\x49\xb4\x61\x1c\xa4\x64\x1d\x18\xd8\x8e\x87\x44\x6c\xb0\xd8\x99\x93\xb9\x74\x60\xb1\xb4\xe8\x50\xfb\x46\x22\x42\x47\x06\xc6\x70\x8d\x96\x26\x92\xae\x54\x2a\x25\x51\x2e\xd0\x7a\xb0\x98\x98\x5c\xcb\xbf\x37\xab\x39\x92\x15\x6d\xa3\x84\x47\xe7\x41\x6a\x8f\x56\x0b\x05\x0b\xa1\x2a\x1c\x82\xd0\x29\x14\x62\x05\x16\x69\x5d\xa8\x74\x67\x05\x1e\xe2\xc6\xf0\xce\x58\x3a\x9d\xcc\x4c\x61\xee\x7d\xe9\xa6\x93\x49\x2e\x7d\x0d\x00\x89\x29\x0a\x3a\xfc\xd5\x84\x6d\x59\xce\x2a\x3a\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x47\xe6\xbc\x95\x3a\xef\x75\xb1\xcd\xed\x95\x35\x59\x1e\x69\xa6\x88\xd3\x03\x2f\xad\x48\xa9\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\x87\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x64\x66\x4d\xc1\xab\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd2\x92\x82\xa1\xf3\x74\x0e\x63\x78\xc5\xf8\x07\x33\x84\xaa\x4c\x85\xc7\x74\x0c\x17\x1a\x5e\x89\x02\xd5\x2b\xe1\xf0\x8b\x8b\x9a\x24\xea\x46\x24\xbe\xc3\x85\xdd\x85\xef\xcd\x09\x1b\x06\x05\x50\xc3\xeb\xce\xd3\xe9\xe1\xc7\x75\x89\x49\x8d\x21\x34\x93\x31\x43\xe8\x35\x90\xa9\x8f\x68\x7c\x28\x11\xb4\x65\x26\x2a\xe5\xd7\x29\x01\xa8\xca\xdc\x8a\x14\xaf\xbd\x25\x58\x5f\x4d\xe1\x75\x18\xb9\x36\x70\x97\xb9\x33\x8b\xa8\x30\xf1\xc6\x6e\xf6\xac\xb1\x7a\x1d\x07\xc6\x19\x81\xcd\x1e\x6b\xcf\xdd\x7e\xdc\x3a\x80\xd3\xc7\xa8\xa5\xaf\x10\x3e\x99\xff\xf0\x40\x3a\xdd\x71\x09\x8f\x50\xbf\x3e\x29\x58\x14\x79\x36\x42\x23\x25\x66\xa8\x1a\x51\xd4\x48\x5a\x04\x93\xb9\x99\x63\xaf\x05\x84\x45\x38\xbf\x7c\x8d\xe9\x36\xe6\x5a\x06\x85\xb5\x62\xb5\x63\x84\xf4\x58\xec\x24\x7c\x8d\xf4\xf3\x3d\xe4\x45\x60\xa8\x7b\xfc\x5c\xb0\x2f\xf2\xec\x89\x02\xe8\x0d\x41\xc0\x3d\xae\x02\x3e\x12\xec\xc6\x23\x0b\x83\x2d\x32\x9a\xf2\x61\xde\xe3\x8a\x07\x45\xb0\xdc\x49\xdd\x23\xe7\x17\xbe\xed\xde\xa8\xff\x8d\x68\xcb\xbd\xfd\x35\xb1\x3b\x07\x3d\xa6\x2c\xe1\xbb\xc7\xd5\xbe\xee\x35\x81\x93\x1c\xa2\x19\x07\xc9\x53\x03\x4b\x8b\x2d\xbb\x16\xb6\x28\x4b\x25\x91\xd1\x70\xef\xda\x3b\xe1\xa8\xff\xd5\xac\x3e\x81\xd0\xe6\x28\x5b\x84\x0f\x87\xfd\xdc\x85\x83\x25\x4d\x9f\xcb\x32\x06\x19\x21\xb4\xa8\x5d\xe1\xcf\x42\xc9\x4e\x18\xc3\x5a\x7d\xa1\x87\x70\x69\x3c\xfd\xf9\xe1\x41\x12\xd4\x93\x3e\xbc\x36\xe8\x2e\x8d\xe7\x96\xcf\xc2\x6a\x20\xe1\x09\x8c\x86\x09\xac\xec\x3a\xd8\x15\x71\xd2\xf5\x87\x14\x86\x65\x7c\x3e\x8d\x50\xa4\x23\x8f\x64\x6c\xcd\x11\x47\x28\x61\xa1\xb0\x44\x51\x39\x76\x60\xda\xe8\x11\x16\xa5\x5f\x6d\x5d\x23\x0a\xc2\xd8\x9e\x1c\xf6\x2c\x17\x97\xba\x21\xbf\x1a\x7a\x42\x04\xa4\x28\x94\x85\xb4\x62\xa2\xd9\x9b\x13\x68\xcb\x04\x0a\xb4\x39\x42\x49\x08\x75\x88\x78\xf7\xe1\x4a\xf8\x1e\x41\x97\x03\xcf\x8a\x21\xf3\x2d\x19\xc0\x13\x20\x36\x8c\x0f\xb0\x54\x88\x92\x8e\xe9\x17\x42\x1f\x96\xd4\xaf\x50\x0a\x49\x11\xf3\x39\x47\xff\x0a\x7b\x7d\x52\xb3\x4c\xbb\xcb\xd0\x0a\xd2\x01\x41\xc9\x42\x28\xc2\x3b\xd2\x64\x0d\xa8\x02\xfa\x51\x90\xbe\x06\xec\x43\x58\xce\x8d\x0b\x60\x96\x49\x54\x1c\x3b\x0d\xee\x71\x35\x18\x6e\x1c\xed\xe0\x42\x0f\x02\x2e\x6e\x1c\x66\x03\xa2\x46\xab\x15\x0c\xb8\x6f\xf0\xdb\x7d\xc1\x5e\xb0\x14\x69\xca\xe9\xa5\x50\x57\x07\xa0\xd9\xde\x73\x73\x68\x17\x32\xc1\xf3\x24\x31\x95\xe6\xc4\xeb\x00\xbf\xbe\x3e\xa5\x06\x3f\x91\x16\x52\xf7\x72\x13\x1e\x09\x22\x0c\x85\xe5\x5c\x26\x73\x58\x4a\xa5\x38\x0c\x74\x98\xd2\xf1\xa4\x58\x2a\xb3\x6a\xe4\x7c\xe2\x4e\xc3\xc9\x52\x3c\x5a\xcb\x9e\x33\xbd\xdd\xa1\xc1\x2e\xe6\x28\x7d\x48\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x53\xc0\xa3\x52\x8e\xd3\x37\x8a\x59\xbd\x89\x31\xeb\xd6\x10\xa6\xec\xac\xdf\x49\xf2\x77\x12\x3b\x33\x46\xa1\xd8\xec\x0f\xa1\x50\x93\xc4\x3e\x4e\xeb\xcd\xda\x84\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x1b\x5b\x71\x3e\xc4\x93\x18\xb8\x24\x47\x03\x0e\xfd\xb0\x8d\xd5\xa4\x03\x99\x6b\x63\xb7\xeb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc6\x1a\xc5\x09\xb8\x69\x02\xeb\x21\xec\x63\x52\x1a\x7c\xec\x4f\xe8\x25\xa0\x71\xb1\x1a\x5b\x43\xd6\xde\x4b\xbe\x69\x54\x23\x41\xb6\x67\x8b\x6c\xc4\x49\x65\x2d\x6a\xaf\x56\xe0\x97\x06\x5c\x55\x96\xc6\x7a\x4c\xd7\x97\x24\xd3\x84\x5b\x5d\x07\xda\x53\x56\x2a\x36\x01\x06\x0a\xa1\x94\x59\x42\xa2\x2a\xe7\xd1\x46\xcb\x8a\x99\x32\x1f\x57\x61\x16\x58\xa7\xb1\xc1\x25\x90\x33\x28\xe7\xc2\x61\x9b\x83\xb9\x2a\x49\x10\x53\x4c\x43\x47\x74\x25\x98\x65\x98\x78\xb9\x40\xb5\x82\x02\x05\x57\x1a\x84\x6f\xf7\x27\xcd\x0e\xdb\xb7\x0c\xaf\xed\xa8\xf1\xc1\xd7\x49\x3a\x48\x4e\xc2\xfb\x95\x0a\xdb\xb0\x3b\x17\x0e\x32\x21\x15\xe5\x75\xb7\x1a\x3e\x6a\x27\x32\x7c\x23\xa4\x7a\x63\xec\x52\xd8\xb4\xc3\xf8\x97\xe0\x99\x48\x69\xfa\x02\x1d\xb5\x30\xce\x1b\xb4\x54\xab\x61\x4b\x45\x8e\x9a\xb8\x26\x26\x97\x35\x57\x57\x8a\xc4\xb4\x9c\xa3\x26\x7f\x5b\xcd\x1a\x35\x02\x8b\x19\x5a\xd4\x64\x44\xa2\x5e\xbf\x33\xa9\xf1\x09\x89\xf0\x42\x99\x9c\xc5\x31\x43\xd4\x75\xb2\x0b\x4b\xe9\xe7\x20\x78\xb3\x5a\x64\x19\xc7\xd4\x08\x48\xf1\x01\xb1\x18\x0d\xb6\x53\x29\xba\xd5\xf0\xdf\xe7\x1f\x2e\x2f\x2e\x7f\x9c\xb2\x2b\xd9\x10\xeb\xa6\x06\x4b\x07\x15\x8f\xea\xd4\x37\x5c\xa5\x3c\x29\x73\xa5\xf1\xa1\xc4\x84\xe8\x99\xe1\x5c\x2c\x24\x69\xbb\x8d\x95\x8f\x05\x5a\x31\x53\x08\x94\xf0\x82\x32\x8e\xd6\x51\xe8\x1c\xac\x4c\x05\x73\xb1\x40\x48\x11\x4b\xa8\x74\x8a\xd6\x79\xa1\x53\x22\xd9\x64\x31\xc6\xed\x53\x0e\x33\xa4\xde\xba\xf6\xb5\x69\x47\xfd\x3c\xd8\x0b\x5f\xb9\x26\x13\x0e\xbf\xb6\xe5\xc2\x75\x85\x75\x3c\x78\xaa\x2b\x68\x73\xe2\x1d\x29\x2f\x7d\xa8\xab\x62\x3b\x7e\x8d\xf6\xcc\xa2\xde\x8d\x73\xe9\x57\x05\x98\xa3\x83\x8b\x08\xfb\x72\xa1\x11\x28\xe1\xfc\xc7\xa0\x54\x4f\xc8\xda\x13\xa3\x83\x15\x3c\xee\x56\x5e\x35\x43\xd7\xe3\xe7\x6d\xde\xaf\x5d\xf8\xb3\x3a\x8c\x3e\x84\x37\x24\xb5\x61\x56\x8a\x5e\x48\x15\xd4\xc4\x68\x04\x41\x61\x87\xaf\xa9\x8c\xe0\xcc\x92\xc7\xa6\xaa\x78\x7e\x75\x01\x8d\x0a\xc1\x68\x34\x0a\x40\xe9\xbc\xad\x12\xf6\x85\x52\x7b\xd4\x84\x29\xb4\x6a\x2a\x2d\x97\x05\x1d\x2d\xde\xca\x21\x66\x75\x21\x54\x2c\x85\x9f\xc3\x38\x9c\xef\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xa2\x87\x0d\x7f\x81\xc9\x04\x3e\xb4\x89\x18\x07\x9b\x33\x8a\x99\x42\x1e\xc6\x55\x4f\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc4\x9f\xb4\x59\xea\x6d\x5b\xf3\x5e\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x19\xf5\xed\x60\x08\xb7\x83\x2b\x6b\x72\x0e\x7b\x75\x7e\x1b\xe3\xd8\xdb\xc1\x6b\x64\x00\x49\x6f\x07\xb4\xec\xbf\x73\x56\xf1\x8e\x12\x8c\x9f\x70\xf5\x1d\x2f\xd6\x34\xd7\x2e\xf4\xbb\x90\x80\x50\x3b\x39\xeb\x9b\x55\x89\xdf\x51\xe4\x5d\x37\xbc\x13\x65\x33\xb9\xa3\x4d\x9f\xee\x0a\xf4\x62\x71\x36\x6e\x8f\xf3\x2f\x7f\x75\x46\x4f\x6f\x07\x2d\xfd\x43\x53\x90\x5a\x94\x7e\x75\x3b\x80\xde\xae\xd3\xdb\x01\xef\x5b\xb7\xd7\x44\x4e\x6f\x07\xb4\x13\x35\x5b\xe3\xcd\xac\xca\xa6\xb7\x83\xd9\xca\xa3\x1b\x9e\x0d\x2d\x96\x43\x82\x9d\xef\xda\x1d\x6e\x07\x7f\x21\x5c\x9d\x4c\xc0\xf8\x39\xda\x70\x92\x0e\x7e\xdd\x86\x29\x07\x84\xe3\x8f\xd5\x2d\x82\xc5\xde\x58\xa1\x9d\xac\x6f\x6f\x76\x0e\x2d\xd0\x39\x91\xef\xee\xb7\x28\xdc\xd6\xd0\x32\x74\x07\x6d\xd8\xd9\x4d\xbc\x6c\xed\x7c\xbc\x28\xb2\xc9\xc3\x81\xc5\xa8\xcd\x89\x6d\xa9\xc4\x79\xf0\xd4\xc0\x16\xdb\xe8\x84\x6f\x46\x93\x21\x92\x4f\x27\xfb\x8e\x5e\x81\xd3\x39\x3e\xb7\x18\xe5\xc4\x4b\x80\x19\x06\xb7\x1d\xae\x63\x52\xb4\x6a\x45\x0e\xa8\x5d\x35\x99\x0b\x9d\x53\x70\x12\x52\x76\xc1\xf6\x4e\x21\xd0\x3d\x19\x12\xa7\x7a\x1a\x2a\x57\x17\xc7\x99\xae\x66\x45\x02\x8e\x60\xf0\x71\x19\x46\xc6\x24\xc1\xd2\x93\x75\x3d\x56\xf9\x7a\xa4\xbe\x91\x19\x5b\x08\x3f\x25\xc7\x8b\x23\xbf\x5b\x3d\xa2\x72\x1c\x28\xf8\x38\x3a\x64\xd6\xf3\xaa\x10\x14\xc4\x88\x94\x5d\x7c\xd3\xa7\x53\x99\x08\x8e\x3d\x6a\x3c\x15\x33\x53\x05\x84\x6b\xcf\x21\x8a\x9a\x62\x89\x19\x72\x8a\x41\xf6\x19\xd9\xfa\x9d\xcc\x17\xe2\xe1\x2d\xea\xdc\xcf\xa7\xf0\xf5\xcb\xff\xfc\xe6\xdb\x1d\x03\x03\x30\x62\xfa\x63\x88\xda\xb6\x5c\x38\xed\x10\xc3\xe6\xc4\x6e\xf1\x8b\xf8\x1c\xd7\x55\xfe\x71\xde\x8e\x69\xaa\x77\xad\x06\x2d\x05\x27\x4b\x30\x13\x8e\xc3\x7c\x92\x0b\xa1\x3c\x87\x81\x3a\xc1\x21\x45\xc8\x5b\x17\x93\xae\x93\x2d\x9c\xbd\x1c\xc2\x2c\x8a\x78\x13\xbe\x3f\x3d\xdc\x8d\xb7\x90\x2c\x1d\xfc\x79\xb8\x46\x0f\xe5\xc7\x15\x7b\x3c\x4e\x4d\x39\xc0\xb4\x18\xdc\x60\x8c\x9e\xb7\xb8\x41\x6c\xe8\x7d\xec\xe0\xc8\x19\xe6\xb8\xbb\x92\x5a\xab\xad\xd4\xfe\x9b\xff\xd8\x7d\xbe\x52\xcb\xa2\x2a\xa6\xf0\x62\xc7\x90\x00\x69\x07\x9e\x66\x18\xdc\x46\x01\x82\xa0\x2b\xb7\xa2\x28\x38\x6d\x97\x29\x6a\x2f\x33\x89\xb6\xab\xda\x21\x8f\xe0\x89\x75\xc8\xdd\x48\xf1\xb9\x8b\x38\xd4\x51\xf6\x2b\x6b\xd2\x2a\x41\xcb\x1e\x38\x56\x33\x92\x2e\x40\xad\x4a\x0c\xd6\x10\x52\x49\x68\x82\xea\xba\x22\x44\x81\x37\x0a\x2d\x75\xee\xe2\x96\xd2\x05\x00\x09\x5e\x77\x39\x47\x76\x3d\xbd\x2a\x12\x53\xe5\x64\x8a\x16\x53\x10\x90\x57\xc2\x0a\xed\x11\x53\x82\x9f\x50\x49\x0a\x37\x79\x2d\xe4\x89\xf6\xfe\xac\xb6\xc6\x60\xaa\x01\xac\x88\xc4\x78\xe7\x16\x6a\x8c\x9f\xcd\x54\xcf\x5e\xbc\xdc\x7b\xe4\xcd\xb8\xdd\x75\x78\xe1\x3d\x5a\x3d\x85\xff\xfd\x74\x3e\xfa\x1f\x31\xfa\xfb\xdd\x49\xfc\xe7\xc5\xe8\xcf\xff\x37\x9c\xde\x7d\xd5\xf9\x79\x77\xfa\xfd\xbf\xed\x58\x69\x7b\x6c\xbd\x43\x7d\xa2\x13\xa9\x83\xc4\xfa\x44\x87\xec\x61\x4c\x06\x37\xb6\xc2\x21\xbc\x11\xca\xe1\x10\x3e\x6a\x76\x0d\xbf\x53\x68\xbb\x73\x8a\xf0\x8d\x60\x40\xbb\x6e\x0f\x3e\x9a\x21\x4c\xd2\xfe\x31\x91\xdc\x7d\x55\xc5\xc3\x84\xc4\x61\x9b\xc9\xba\x48\xd3\xb9\xa7\x05\x46\x3c\x0a\x4b\xc7\x31\xbc\x1d\x27\xa6\x98\x74\xee\x71\x29\xae\x7e\x27\xf4\x0a\x5a\x58\x0b\x41\xe9\xba\xa6\x3b\x4f\xd8\x24\x12\x4b\xb9\x66\x73\x13\x0e\x4a\xde\x23\x34\x91\x6b\x00\xcb\x19\x26\x82\x03\x71\x3b\x93\xde\x0a\xbb\xea\xe4\x1d\x90\x08\x1d\xeb\x89\x59\xa5\xe0\xc4\x21\xc2\x58\x9b\x14\x37\xd1\xf5\x34\x60\xa8\x98\x49\x25\xfd\x2a\x14\x1f\x13\xa3\x33\x25\x63\xfc\x5f\x94\xc6\x7a\xa1\x7d\x5d\xb8\xcd\xf1\x01\xa4\x0f\x35\xe3\x50\x60\x3b\x49\xb5\x3b\x3b\x7b\xf9\xf5\x75\x35\x4b\x4d\x21\xa4\x7e\x53\xf8\xc9\xe9\xf7\x27\x7f\xab\x84\xe2\xaa\xe7\xa5\x28\xf0\x4d\xe1\x4f\x3f\x9f\x5b\x3c\xfb\xe6\x00\x2b\x3a\xf9\x14\x6c\xe5\xee\xe4\xd3\x28\xfe\xf7\x55\xdd\x74\xfa\xfd\xc9\xed\x78\x6f\xff\xe9\x57\xc4\x43\xc7\x02\xef\x3e\x8d\x5a\xf3\x1b\xdf\x7d\x75\xfa\x7d\xa7\xef\x74\xd3\x18\x3b\x59\xe9\xa3\x09\xe6\xdb\x76\x6c\x88\x4e\x7c\xfd\xa0\xa9\xb6\xcc\x7e\x68\xb8\x9e\x72\x46\x2b\x26\x7f\x1c\x97\x79\x72\x65\xf8\x90\xa0\x4b\x1f\x5e\x89\xed\xd7\x60\x3b\x05\x91\x8d\xeb\xed\xc6\x03\xf5\x98\xfa\x57\xad\xb5\xf6\x6f\x07\x3e\x60\xf6\xc4\xcb\x81\x0f\x98\x75\x2b\x67\x41\x30\xfd\x3b\x81\xf8\xe4\xa4\xb9\x34\xf8\x02\xf7\xff\xbb\x1f\x29\x6d\x65\x81\x82\xfd\xba\xe6\x19\xf5\x31\xf2\xb0\xf3\x32\xf3\x51\x93\x66\x7f\x7c\x25\xfc\xfc\x20\x0a\x9e\x5f\x44\xb1\xf1\xcd\x1f\xdf\xc5\x96\x12\x13\xec\xbd\x83\xe2\x38\x0e\x45\x1a\x1b\x29\xf0\xb1\x18\xfb\x86\x21\xe2\x88\xf7\x9d\xed\x3b\x29\x0a\x9a\x40\x10\x10\xcb\x14\xfe\xeb\xfa\xfd\xe5\xe4\x47\x13\x63\x05\xca\x66\x5c\xb0\x2d\xbe\xa9\x1a\x82\xab\x92\x39\x08\x47\xa4\x51\x7e\x7b\xcd\xa5\x87\x42\x68\x99\xa1\xf3\xe3\xb8\x1a\x5a\xf7\xe9\xe5\xdd\xb8\x5f\xee\x90\xf1\x52\xb4\x7e\x4d\x14\x15\x80\x6d\x83\x98\x69\xe6\x72\xd0\xca\x24\x95\x26\x8d\x44\x2f\x99\x58\x2f\xee\x11\x4c\x24\xb6\x42\x76\x0a\x53\x18\x90\x9a\x74\xb6\xfe\x85\x0c\xeb\xd7\x01\x9c\x2c\xb9\x2c\x3f\xa0\x9f\x83\xb0\x61\xf3\xf8\x8b\xda\x3a\x1e\x3f\x6e\x1c\xe2\x7b\x2b\xf3\x9c\xc3\x2d\x2e\xc3\x2e\x50\xfb\x53\xf6\x6f\x19\x68\xd3\x19\xac\xe3\x1d\x57\x7b\xb3\xb5\x4e\xc8\xa7\x97\x77\x03\x38\xe9\xf3\x45\x21\x28\x3e\xc0\xcb\xe6\x36\xab\x34\xe9\x69\x9d\xb5\xae\xb4\x17\x0f\x9c\x18\xcc\x8d\x43\x1d\x2e\x03\xbc\x09\x75\x56\x67\x28\xf9\x44\xa5\x46\x21\xc0\x4c\x61\x19\x0a\x70\xb5\x28\xc3\x85\x70\x29\xac\x5f\x7b\x1a\x77\xf3\xfe\xf5\xfb\x69\xd8\x8d\x8e\x2d\xd7\x75\x96\x9b\x49\x2d\x54\xac\x52\x37\xf1\x21\x11\x52\x85\x43\xf2\x26\xa6\xb6\x75\xad\x36\xab\x7c\x65\x71\xbc\xfe\x54\xea\x60\x8d\xdf\xf6\x4e\x6d\xbb\xb2\xf3\x7b\xb5\x75\x43\xfb\x27\xbe\x06\x3b\x98\x45\xbd\xe3\xb6\x74\x93\xc5\xcb\x8e\x0e\xee\x65\xb1\x85\x66\xe2\x32\x35\x89\x23\x06\x13\x2c\xbd\x9b\x98\x05\x41\x27\x2e\x27\x4b\x63\xef\xa5\xce\x47\xa4\x64\xa3\x70\xf2\x6e\xc2\x2e\x66\xf2\x27\xfe\xf3\xbb\x38\x62\x3f\x75\x38\x5b\xe1\x51\xea\x3f\x80\x37\x76\x9f\x93\xdf\xcc\x5a\x1d\x5f\x3e\xc5\x13\x3c\xbf\xae\x93\xbf\xb5\xd9\x64\x2e\xe1\x32\x3b\xbe\x56\xed\x20\x5c\x21\xd2\x00\x81\x42\xaf\xbe\xb8\x1a\x93\x00\x39\xc7\x4f\x56\xa3\xf8\x9c\x7c\x24\x74\x3a\x6a\xe2\xeb\x64\xf5\x9b\x25\x56\xc9\x03\x0d\xf8\xe3\xc5\xeb\x7f\x8c\x72\x57\xf2\x49\xd6\x1a\xaa\x28\x53\xf0\xb6\xaa\xa3\x3b\xe7\x8d\x15\x39\xf6\xdb\xaa\x59\x93\x7c\xb4\x0c\xc7\xbc\x12\x7e\xf9\x95\x9b\xda\x07\xe4\x42\x95\x73\xf1\xb2\x9e\x7b\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\xbe\x57\xd8\x7f\xd4\x67\xe4\xc7\x67\xe0\xc7\x67\xe0\xc7\x67\xe0\xbb\xbb\x8f\xcf\xc0\x8f\xcf\xc0\x8f\xcf\xc0\xd7\xbf\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\x2d\xdf\xce\x63\xda\x7e\x8b\xbb\x27\xe4\x7d\xf2\x8b\xd1\xc3\xa3\xde\xcf\xff\xf8\xf2\x78\x39\xf6\xc7\xb8\x1c\x3b\x5e\x77\x1d\xaf\xbb\x8e\xd7\x5d\xc7\xeb\xae\xdf\xa0\xf1\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x2f\x7a\xdd\x95\x09\xe5\x0e\xbe\xef\xfa\xff\x00\x00\x00\xff\xff\xf3\xee\x0f\x50\xf8\x4a\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/staging/api/pkg/operators/v1/operatorgroup_test.go b/staging/api/pkg/operators/v1/operatorgroup_test.go index 3741fb2279..ee5fb15180 100644 --- a/staging/api/pkg/operators/v1/operatorgroup_test.go +++ b/staging/api/pkg/operators/v1/operatorgroup_test.go @@ -10,7 +10,7 @@ func TestUpgradeStrategy(t *testing.T) { tests := []struct { description string og *OperatorGroup - expected upgradeStrategyName + expected string }{ { description: "NoSpec", @@ -24,12 +24,11 @@ func TestUpgradeStrategy(t *testing.T) { }, expected: DefaultUpgradeStrategy, }, - { description: "NoUpgradeStrategyName", og: &OperatorGroup{ Spec: OperatorGroupSpec{ - UpgradeStrategy: UpgradeStrategy{}, + UpgradeStrategy: "", }, }, expected: DefaultUpgradeStrategy, @@ -38,9 +37,7 @@ func TestUpgradeStrategy(t *testing.T) { description: "NonSupportedUpgradeStrategyName", og: &OperatorGroup{ Spec: OperatorGroupSpec{ - UpgradeStrategy: UpgradeStrategy{ - Name: "", - }, + UpgradeStrategy: "foo", }, }, expected: DefaultUpgradeStrategy, @@ -49,9 +46,7 @@ func TestUpgradeStrategy(t *testing.T) { description: "UnsafeFailForwardUpgradeStrategyName", og: &OperatorGroup{ Spec: OperatorGroupSpec{ - UpgradeStrategy: UpgradeStrategy{ - Name: "UnsafeFailForward", - }, + UpgradeStrategy: "UnsafeFailForward", }, }, expected: UnsafeFailForwardUpgradeStrategy, diff --git a/staging/api/pkg/operators/v1/operatorgroup_types.go b/staging/api/pkg/operators/v1/operatorgroup_types.go index 6763ffca62..0110ce8948 100644 --- a/staging/api/pkg/operators/v1/operatorgroup_types.go +++ b/staging/api/pkg/operators/v1/operatorgroup_types.go @@ -46,35 +46,31 @@ type OperatorGroupSpec struct { // +optional StaticProvidedAPIs bool `json:"staticProvidedAPIs,omitempty"` - // +optional - UpgradeStrategy UpgradeStrategy `json:"upgradeStrategy,omitempty"` -} - -// UpgradeStrategy defines the upgrade strategy for operators in the namespace. -// There are currently two supported upgrade strategies: -// -// Default: OLM will only allow clusterServiceVersions to move to the replacing -// phase from the succeeded phase. This effectively means that OLM will not -// allow operators to move to the next version if an installation or upgrade -// has failed. -// -// UnsafeFailForward: OLM will allow clusterServiceVersions to move to the -// replacing phase from the succeeded phase or from the failed phase. -// Additionally, OLM will generate new installPlans when a subscription references -// a failed installPlan and the catalog has been updated with a new upgrade for -// the existing set of operators. -// -// WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result -// in unexpected behavior or unrecoverable data loss unless you have deep -// understanding of the set of operators being managed in the namespace. -type UpgradeStrategy struct { + // UpgradeStrategy defines the upgrade strategy for operators in the namespace. + // There are currently two supported upgrade strategies: + // + // Default: OLM will only allow clusterServiceVersions to move to the replacing + // phase from the succeeded phase. This effectively means that OLM will not + // allow operators to move to the next version if an installation or upgrade + // has failed. + // + // UnsafeFailForward: OLM will allow clusterServiceVersions to move to the + // replacing phase from the succeeded phase or from the failed phase. + // Additionally, OLM will generate new installPlans when a subscription references + // a failed installPlan and the catalog has been updated with a new upgrade for + // the existing set of operators. + // + // WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result + // in unexpected behavior or unrecoverable data loss unless you have deep + // understanding of the set of operators being managed in the namespace. + // OperatorGroupStatus is the status for an OperatorGroupResource. + // // +kubebuilder:validation:Enum=Default;UnsafeFailForward // +kubebuilder:default=Default // +optional - Name upgradeStrategyName `json:"name"` + UpgradeStrategy string `json:"upgradeStrategy,omitempty"` } -// OperatorGroupStatus is the status for an OperatorGroupResource. type OperatorGroupStatus struct { // Namespaces is the set of target namespaces for the OperatorGroup. // +listType=set @@ -103,6 +99,7 @@ type OperatorGroup struct { metav1.ObjectMeta `json:"metadata"` // +optional + // +kubebuilder:default={upgradeStrategy:Default} Spec OperatorGroupSpec `json:"spec"` Status OperatorGroupStatus `json:"status,omitempty"` } @@ -117,16 +114,22 @@ type OperatorGroupList struct { Items []OperatorGroup `json:"items"` } -type upgradeStrategyName string - const ( - DefaultUpgradeStrategy upgradeStrategyName = "Default" - UnsafeFailForwardUpgradeStrategy upgradeStrategyName = "UnsafeFailForward" + DefaultUpgradeStrategy = "Default" + UnsafeFailForwardUpgradeStrategy = "UnsafeFailForward" ) +// BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string +func (o *OperatorGroup) BuildTargetNamespaces() string { + ns := make([]string, len(o.Status.Namespaces)) + copy(ns, o.Status.Namespaces) + sort.Strings(ns) + return strings.Join(ns, ",") +} + // IsServiceAccountSpecified returns true if the spec has a service account name specified. -func (o *OperatorGroup) UpgradeStrategy() upgradeStrategyName { - strategyName := o.Spec.UpgradeStrategy.Name +func (o *OperatorGroup) UpgradeStrategy() string { + strategyName := o.Spec.UpgradeStrategy switch { case strategyName == UnsafeFailForwardUpgradeStrategy: return strategyName @@ -135,14 +138,6 @@ func (o *OperatorGroup) UpgradeStrategy() upgradeStrategyName { } } -// BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string -func (o *OperatorGroup) BuildTargetNamespaces() string { - ns := make([]string, len(o.Status.Namespaces)) - copy(ns, o.Status.Namespaces) - sort.Strings(ns) - return strings.Join(ns, ",") -} - // IsServiceAccountSpecified returns true if the spec has a service account name specified. func (o *OperatorGroup) IsServiceAccountSpecified() bool { if o.Spec.ServiceAccountName == "" { diff --git a/staging/api/pkg/operators/v1/zz_generated.deepcopy.go b/staging/api/pkg/operators/v1/zz_generated.deepcopy.go index 8648b8111c..89a3007bc1 100644 --- a/staging/api/pkg/operators/v1/zz_generated.deepcopy.go +++ b/staging/api/pkg/operators/v1/zz_generated.deepcopy.go @@ -409,7 +409,6 @@ func (in *OperatorGroupSpec) DeepCopyInto(out *OperatorGroupSpec) { *out = make([]string, len(*in)) copy(*out, *in) } - out.UpgradeStrategy = in.UpgradeStrategy } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperatorGroupSpec. @@ -551,18 +550,3 @@ func (in *RichReference) DeepCopy() *RichReference { in.DeepCopyInto(out) return out } - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *UpgradeStrategy) DeepCopyInto(out *UpgradeStrategy) { - *out = *in -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeStrategy. -func (in *UpgradeStrategy) DeepCopy() *UpgradeStrategy { - if in == nil { - return nil - } - out := new(UpgradeStrategy) - in.DeepCopyInto(out) - return out -} From 48204858286546611389d5db5040b895417ab62a Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Mon, 11 Apr 2022 12:17:40 -0700 Subject: [PATCH 3/4] vendor --- .../operators.coreos.com_operatorgroups.yaml | 10 ++++- .../operator-framework/api/crds/zz_defs.go | 2 +- .../pkg/operators/v1/operatorgroup_types.go | 42 ++++++++++++++++++- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml index 56ef0b5c4f..d63a7b78c5 100644 --- a/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/vendor/github.com/operator-framework/api/crds/operators.coreos.com_operatorgroups.yaml @@ -37,6 +37,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -80,8 +82,14 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - UnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/vendor/github.com/operator-framework/api/crds/zz_defs.go b/vendor/github.com/operator-framework/api/crds/zz_defs.go index 31a7d8bb5e..22bfcf53ff 100644 --- a/vendor/github.com/operator-framework/api/crds/zz_defs.go +++ b/vendor/github.com/operator-framework/api/crds/zz_defs.go @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\xe9\x6f\x1b\x37\x94\xff\xee\xbf\xe2\x41\x5d\x20\x76\x56\x1a\xc5\xee\xa2\xdb\x0a\x08\x02\x23\x69\x0a\x6f\x73\x18\xb1\xdb\x0f\x6b\x7b\xb7\xd4\xcc\xd3\x88\x35\x87\x9c\x92\x1c\xdb\x6a\x90\xff\x7d\xf1\x1e\x39\x87\x6e\x39\x49\xbb\xdd\x85\xfc\x25\xd1\xf0\x7a\xe7\xef\x1d\xa4\x28\xe5\xaf\x68\x9d\x34\x7a\x04\xa2\x94\xf8\xe0\x51\xd3\x2f\x97\xdc\x7e\xef\x12\x69\x86\x77\xc7\x07\xb7\x52\x67\x23\x78\x59\x39\x6f\x8a\x0f\xe8\x4c\x65\x53\x7c\x85\x13\xa9\xa5\x97\x46\x1f\x14\xe8\x45\x26\xbc\x18\x1d\x00\x08\xad\x8d\x17\xf4\xd9\xd1\x4f\x80\xd4\x68\x6f\x8d\x52\x68\x07\x39\xea\xe4\xb6\x1a\xe3\xb8\x92\x2a\x43\xcb\x9b\xd7\x47\xdf\x3d\x4b\xbe\x4f\x9e\x1d\x00\xa4\x16\x79\xf9\xa5\x2c\xd0\x79\x51\x94\x23\xd0\x95\x52\x07\x00\x5a\x14\x38\x02\x53\xa2\x15\xde\xd8\xdc\x9a\xaa\x74\x49\xfd\xd3\x25\xa9\xb1\x68\xe8\x9f\xe2\xc0\x95\x98\xd2\xe9\x3c\xa7\x5d\x32\x37\x27\xec\x57\x13\x29\x3c\xe6\xc6\xca\xfa\x37\xc0\x00\x8c\x2a\xf8\xff\x81\xf9\xf7\x71\x8f\x9f\x68\x4b\xfe\xae\xa4\xf3\x3f\x2f\x8f\xbd\x91\xce\xf3\x78\xa9\x2a\x2b\xd4\x22\xc1\x3c\xe4\xa6\xc6\xfa\x77\xed\xf1\x7c\x5c\x1e\x86\xa4\xce\x2b\x25\xec\xc2\xba\x03\x00\x97\x9a\x12\x47\xc0\xcb\x4a\x91\x62\x76\x00\x10\xc5\x17\xb7\x19\x44\x11\xdd\x1d\xc7\x5d\x5d\x3a\xc5\x42\xd4\x67\x00\x6d\xa9\x4f\xcf\xcf\x7e\xfd\xf6\x62\x61\x00\x20\x43\x97\x5a\x59\x7a\x56\xc6\x1c\x43\x20\x1d\xf8\x29\x42\xa5\xa5\x07\x33\x81\xa2\x52\x5e\x7a\xd4\x42\xa7\x33\x98\x18\x0b\xef\xdf\xbc\x85\x42\x68\x91\x63\xd6\x11\x35\x9c\x79\xd2\xbd\xf3\x56\x48\x1d\x76\x90\xda\x79\xa1\x14\xab\x97\x76\x6a\x26\x83\xd4\x20\xbd\x0b\x1a\x21\xde\xc0\x1b\x10\x40\x6a\x94\x13\x89\x19\x38\xe4\xa3\xbd\xb0\x39\xfa\x76\x9a\x4b\x3a\x1c\xf8\x19\x89\xc7\x8c\x7f\xc7\xd4\x77\x3e\x5b\xfc\xa3\x92\x16\xb3\x2e\xb3\x24\xaa\xda\x68\x3b\x9f\x4b\x4b\x14\xf9\x8e\x15\x84\xbf\x8e\x8b\xcc\x7d\x5f\x90\xda\x13\x12\x6d\x98\x07\x19\x79\x07\x06\xb6\xa3\x92\x88\x0d\x16\x3b\x73\x32\x95\x0e\x2c\x96\x16\x1d\x6a\xdf\x48\x44\xe8\xc8\x40\x02\x17\x68\x69\x21\xd9\x4a\xa5\x32\x12\xe5\x1d\x5a\x0f\x16\x53\x93\x6b\xf9\x67\xb3\x9b\x23\x59\xd1\x31\x4a\x78\x74\x1e\xa4\xf6\x68\xb5\x50\x70\x27\x54\x85\x7d\x10\x3a\x83\x42\xcc\xc0\x22\xed\x0b\x95\xee\xec\xc0\x53\x5c\x02\x6f\x8d\x25\xed\x4c\xcc\x08\xa6\xde\x97\x6e\x34\x1c\xe6\xd2\xd7\x00\x90\x9a\xa2\x20\xe5\xcf\x86\xec\xcb\x72\x5c\x91\xce\x86\x19\xde\xa1\x1a\x3a\x99\x0f\x84\x4d\xa7\xd2\x63\xea\x2b\x8b\x43\x51\xca\x01\x13\xab\x19\x04\x92\x22\xfb\xc6\x46\xc8\x70\x4f\x16\xc4\x17\x54\xe6\xbc\x95\x3a\x9f\x1b\x62\x9f\xdb\x28\x6b\xf2\x3c\xb2\x4c\x11\x97\x07\x5e\x5a\x91\xd2\x27\x92\xca\x87\x1f\x2f\x2e\xa1\x26\x20\x88\x3d\x48\xb8\x9d\xea\x5a\x61\x93\xa0\xa4\x9e\xa0\x0d\x33\x27\xd6\x14\xbc\x0b\xea\xac\x34\x52\x7b\xfe\x91\x2a\x89\xda\x83\xab\xc6\x05\x19\x2d\x19\x18\x3a\x4f\x7a\x48\xe0\x25\xe3\x1f\x8c\x11\xaa\x32\x13\x1e\xb3\x04\xce\x34\xbc\x14\x05\xaa\x97\xc2\xe1\x5f\x2e\x6a\x92\xa8\x1b\x90\xf8\x76\x17\x76\x17\xbe\x97\x17\x2c\x39\x14\x40\x0d\xaf\x6b\xb5\x33\x87\x1f\x17\x25\xa6\x35\x86\xd0\x4a\xc6\x0c\xa1\x17\x40\xa6\x56\x51\xb2\x2b\x11\xeb\xdd\x95\x49\x44\x85\xa9\x37\x76\x79\x64\x81\xd4\x8b\x38\x31\xae\x08\x64\xce\x91\xf6\xc4\x6d\xc6\x9d\x1d\x28\xdd\x46\x2d\x6b\x41\xf8\x74\xfa\xe3\x03\xd9\x64\x07\xd2\xb7\x50\xbf\xb8\x28\x78\x04\x45\x26\x42\x13\x25\xc6\xa8\x1a\x51\xd4\x48\x58\x04\x93\xbf\x9c\xe2\xdc\x17\x10\x16\xe1\xf4\xdd\x2b\xcc\x56\x31\xd7\x32\x28\xac\x15\xb3\x35\x33\xa4\xc7\x62\x2d\xe1\x0b\xa4\x9f\x6e\x20\x2f\x3a\x76\x3d\xe2\xa7\x82\x63\x89\xe7\x48\x12\x40\xab\x0f\x02\x6e\x71\x16\xf0\x8d\x60\x33\xaa\x2c\x4c\xb6\xc8\x68\xc8\xca\xbc\xc5\x19\x4f\x8a\x60\xb7\x96\xba\x2d\xfa\x0b\x7f\xab\xa3\xc9\xfc\xdf\x80\x8e\xdc\x38\x5e\x13\xbb\x76\xd2\x36\x63\x09\x7f\xb7\x38\xdb\x34\xbc\x20\x70\x92\x43\x74\xc3\x20\x79\xfa\xc0\xd2\x62\xcf\xac\x85\x2d\xca\x52\x49\x64\x34\xdb\xb8\xf7\x5a\x38\x99\xff\xab\x59\x7d\x04\xa1\x8d\x2a\x5b\x84\x0e\xca\x7e\xe2\x82\x62\xc9\xd2\xa7\xb2\x8c\x49\x42\x48\x0d\xea\x50\xf6\xab\x50\xb2\x93\x86\xb0\x55\x9f\xe9\x3e\xbc\x33\x9e\xfe\xf9\xf1\x41\x12\x54\x93\x3d\xbc\x32\xe8\xde\x19\xcf\x5f\xbe\x0a\xab\x81\x84\x47\x30\x1a\x16\xb0\xb1\xeb\xe0\x57\xc4\x49\x37\x9e\x51\x1a\x35\x61\xfd\x34\x42\x91\x8e\x22\x8a\xb1\x35\x47\x9c\x61\x84\x8d\xc2\x16\x45\xe5\x38\x00\x69\xa3\x07\x58\x94\x7e\xb6\x72\x8f\x28\x08\x63\xe7\xe4\xb0\x61\xbb\xb8\xd5\x25\xc5\xc5\x30\x12\x32\x18\x45\xa9\x28\x64\x15\x13\xcd\xd1\x98\x72\x69\x99\x42\x81\x36\x47\x28\x09\xa1\x76\x11\xef\x26\x5c\x09\x7f\x5b\xd0\x65\x47\x5d\x31\x64\xbe\x21\x07\x78\x04\xc4\x86\xf9\x01\x96\x0a\x51\x92\x9a\x3e\x12\xfa\xb0\xa4\x3e\x41\x29\x24\x65\xbc\xa7\x9c\xbd\x2b\x9c\x1b\x93\x9a\x65\xda\xdd\x86\x76\x90\x0e\x08\x4a\xee\x84\x22\xbc\x23\x4b\xd6\x80\x2a\xa0\x1f\x25\xd9\x0b\xc0\xde\x87\xfb\xa9\x71\x01\xcc\x26\x12\x15\xe7\x3e\xbd\x5b\x9c\xf5\xfa\x4b\xaa\xed\x9d\xe9\x5e\xc0\xc5\x25\x65\x36\x20\x6a\xb4\x9a\x41\x8f\xc7\x7a\x9f\x1f\x0b\x36\x82\xa5\xc8\x32\x2e\x0f\x85\x3a\xdf\x01\xcd\x36\xea\xcd\xa1\xbd\x93\x29\x9e\xa6\xa9\xa9\x34\x17\x4e\x3b\xc4\xf5\xc5\x25\x35\xf8\x89\xac\x90\x7a\xae\xb6\xe0\x99\x20\xc2\x54\xb8\x9f\xca\x74\x0a\xf7\x52\x29\x4e\xe3\x1c\x66\xa4\x9e\x0c\x4b\x65\x66\x8d\x9c\x0f\xdd\x51\xd0\x2c\xe5\x93\xb5\xec\xb9\x52\x5b\x9f\x1a\xac\x63\x8e\xd2\xff\xf4\xdc\x9a\x3b\x99\x61\x76\x7a\x7e\xb6\x52\x4a\xf3\xcc\xf1\x12\xf0\xa8\x94\xe3\xf2\x8b\x72\x4e\x6f\x62\xce\xb9\x32\x85\x29\x3b\xfb\x77\x8a\xf4\xb5\xc4\x8e\x8d\x51\x28\x96\xc7\x43\x2a\xd4\x14\xa1\xdb\x69\xbd\x5c\x58\x10\xe1\x0e\x1f\x4a\x25\x53\xe9\x6b\xfc\x6e\x73\x2b\xae\x67\x78\x11\x03\x97\xe4\x6c\xc0\xa1\xef\xb7\xb9\x9a\x74\x20\x73\x6d\xec\x6a\xfb\xdc\x8c\x27\x1b\x50\x64\x0b\x76\x3c\x0c\x6e\xab\x31\x5a\x8d\x1e\xdd\x80\x72\xac\x41\x5c\x80\x0b\xe9\xb1\x17\xbe\x5a\x3a\x62\x43\x82\xcc\xf3\x9b\x14\x39\xfc\x5a\x95\x24\x7f\x78\x7c\x8e\xbc\x3e\x5f\x19\x80\x12\xce\xff\x12\xaa\x94\x47\x64\xd6\xa9\xd1\xc1\xaf\xb7\xab\xfe\x65\x33\x75\x31\xc6\xad\xb2\xd0\x76\xe3\xaf\xaa\xd4\x39\x8a\x7a\x0d\x49\x2d\x14\x66\xe8\x85\x54\x41\xe2\x46\x23\x08\x82\x06\x5f\x53\x99\x56\xd6\x72\xb5\xe7\xc9\xb3\xea\xca\xfd\xf4\xfc\x0c\x1a\x6d\xc0\x60\x30\x08\x71\xd1\x79\x5b\xa5\x6c\xaf\x54\x85\xeb\x0c\x33\xde\x35\x93\x96\x4b\x6f\x47\x9b\xb7\x72\x88\x99\x57\x80\xf3\x52\xf8\x29\x24\x41\xf9\x49\x47\x14\x00\xaf\x8d\x05\x7c\x10\x45\xa9\xb0\xcf\x62\x80\xd7\xc6\x44\x9b\x09\x07\x7e\x84\xe1\x10\x3e\xb4\xc9\x12\x07\x84\x31\xe1\x5a\xc8\x95\xb8\xb3\x00\x13\x63\x48\xca\x5d\x7e\x12\x5a\xf8\xb3\x36\xf7\x7a\xd5\xd1\x7c\x96\xb0\x38\x82\xeb\xde\xe9\x9d\x90\x4a\x8c\x15\x5e\xf7\xfa\x70\xdd\x3b\xb7\x26\xe7\xd0\xa4\xf3\xeb\x18\x6b\xae\x7b\xaf\x30\xb7\x22\xc3\xec\xba\x47\xdb\xfe\x2b\x47\xfe\xb7\x94\x04\xfc\x8c\xb3\xe7\xbc\x59\xf3\xf9\x22\x64\x09\xb3\xe7\x21\x49\xa0\xef\xe4\x50\x97\xb3\x12\x9f\x53\x74\xac\x3f\xbc\x15\x65\xb3\xb8\x63\x4d\x57\x37\x54\xb3\xde\x1d\x27\xad\x3a\x7f\xfb\xdd\x19\x3d\xba\xee\xb5\xf4\xf7\x4d\x41\x66\x51\xfa\xd9\x75\x0f\xe6\x4e\x1d\x5d\xf7\xf8\xdc\xfa\x7b\x4d\xe4\xe8\xba\x47\x27\xd1\x67\x6b\xbc\x19\x57\x93\xd1\x75\x6f\x3c\xf3\xe8\xfa\xc7\x7d\x8b\x65\x9f\x40\xea\x79\x7b\xc2\x75\xef\x37\xb8\xd6\x44\xac\xf1\x53\xb4\x41\x93\x0e\x3e\xf5\x36\xa0\xcb\x86\x90\xb9\xad\xb6\x08\x1e\x7b\x69\x85\x76\xb2\xee\x90\xae\x9d\x5a\xa0\x73\x22\x5f\x3f\x6e\x51\xb8\x95\xf0\x1f\x86\x83\x35\xac\x1d\x26\x5e\x56\x0e\x6e\x2f\x5c\x96\x79\xd8\xb1\x60\x5c\x5e\xd8\x96\x33\xce\x83\xa7\x0f\xec\xb1\x8d\x4d\xf8\x66\x36\x39\xa2\x35\x05\xfb\x77\x04\x58\x4e\xb9\x58\x6f\x31\xa9\x8d\x8d\xb6\x31\xc2\xfd\x14\x75\x6c\x79\x66\x68\xd5\x8c\x32\xdb\x76\xd7\x74\x2a\x74\x8e\x59\x02\x21\xad\x16\xec\xef\x14\x80\x6f\xc9\x91\x38\x1d\xd3\x50\xb9\xba\x01\xc5\x74\x35\x3b\x12\x70\x04\x87\x8f\xdb\x30\x32\xa6\x29\x96\x9e\xbc\x6b\x5b\x75\xba\xa5\x06\x99\x18\x5b\x08\x3f\x02\xc2\xf4\x81\x5f\x6f\x1e\xd1\x38\x76\x14\x7c\x9c\x1d\xb2\xdf\x69\x55\x08\x4d\xd6\x93\x11\xbd\xed\x98\xce\x64\x2a\xb8\xeb\x56\xe3\xa9\x18\x9b\x2a\x20\x5c\xab\x87\x28\xea\x42\xcc\x48\xce\x94\x06\x90\x7f\x46\xb6\xbe\x90\xf9\x42\x3c\xbc\x41\x9d\xfb\xe9\x08\xbe\x3d\xf9\xf7\xef\xbe\x5f\x33\x31\x00\x23\x66\x3f\xa1\xa6\xf8\xb3\xa2\xa9\xbb\x46\x0c\xcb\x0b\xbb\x05\x2a\xf1\x99\xd4\x9d\xb4\x24\x6f\xe7\x34\x15\x76\x6b\x41\xf7\x82\x13\x1a\x18\x0b\x4a\x2e\xab\x92\xe4\x42\x28\xcf\xfd\x71\x9d\x62\x1f\xe4\x64\xf5\x66\xb2\x01\x70\x35\x83\xe3\x93\x3e\x8c\xa3\x88\x97\xe1\xfb\xea\xe1\x26\x59\x41\xb2\x74\xf0\x43\x7f\x81\x1e\xca\x61\x2b\x8e\x78\x9c\x3e\xde\x4b\x3f\x05\x8b\x21\x0c\xc6\xe6\xf2\x8a\x30\x88\x0d\xbd\xdb\x14\x47\xc1\x30\xc7\xf5\xdd\x8e\xda\x6c\xa5\xf6\xdf\xfd\xdb\x7a\xfd\x4a\x2d\x8b\xaa\x18\xc1\xb3\x35\x53\x02\xa4\xed\xa8\xcd\x30\xb9\xcd\x02\x04\x41\x57\x6e\x45\x51\x70\x6a\x2d\x33\xd4\x9e\xea\x03\xdb\x35\x6d\xcf\x75\x12\x2f\x9c\x70\xab\xa9\x23\xc5\x27\x2e\xe2\x50\xc7\xd8\xcf\xad\xc9\xaa\x14\x2d\x47\xe0\x58\x71\xa4\x5d\x80\x9a\x95\x18\xbc\x21\xdc\x17\x50\x56\x8c\xa9\x6f\x3a\xf3\xa1\x79\x8f\x42\x4b\x9d\xbb\x78\xa4\x74\x01\x40\x42\xd4\xbd\x9f\x22\x87\x9e\xb9\x4a\x8f\xa9\x72\x32\x43\x8b\x19\x08\xc8\x2b\x61\x85\xf6\x88\x19\xc1\x4f\xa8\xf6\x42\xb7\xbc\x85\x3c\xd1\xf6\xa8\x6b\x6f\x0c\xae\x1a\xc0\x8a\x48\x8c\x7d\xed\xd0\x07\xf8\x6a\xae\x7a\xfc\xec\x64\xa3\xca\x9b\x79\xeb\x7b\x65\xc2\x7b\xb4\x7a\x04\xff\x75\x75\x3a\xf8\x4f\x31\xf8\xf3\xe6\x30\xfe\xe7\xd9\xe0\x87\xff\xee\x8f\x6e\x9e\x76\x7e\xde\x1c\xbd\xf8\x97\x35\x3b\xad\x4e\xdb\xd7\x98\x4f\x0c\x22\x75\x92\x58\x6b\xb4\xcf\x11\xc6\x4c\xe0\xd2\x56\xd8\x87\xd7\x42\x39\xec\xc3\x2f\x9a\x43\xc3\x17\x0a\x0d\x75\x55\x6c\x6e\x3b\xf6\xe8\xd4\xd5\xc9\x47\x33\x85\x49\xda\x3c\x27\x92\xbb\xa9\xf2\xdf\x4d\x48\x9c\xb6\x99\x49\x17\x69\x3a\x77\x21\xc0\x88\x47\x69\x69\x12\xd3\xdb\x24\x35\xc5\xb0\x73\x57\x42\x79\xf5\x5b\xa1\x67\xd0\xc2\x5a\x48\x4a\x17\x2d\xdd\x79\xc2\x26\x91\x5a\xe3\x5c\x73\x93\xe0\x40\xc9\x5b\x84\x26\x73\x0d\x60\x39\xc6\x54\x70\x22\x6e\xc7\xd2\x5b\x61\x67\x9d\xba\x03\x52\xa1\x63\xcd\x3f\xa9\x14\x1c\x3a\x44\x48\xb4\xc9\x70\x19\x5d\x8f\x02\x86\x8a\xb1\x54\xd2\xcf\x42\x83\x20\x35\x7a\xa2\x64\xcc\xff\x8b\xd2\x58\x2f\xb4\xaf\x9b\x2b\x39\x3e\x50\x29\xcb\x7d\x9d\x50\x04\x1f\x66\xda\x1d\x1f\x9f\x7c\x7b\x51\x8d\x33\x53\x08\xa9\x5f\x17\x7e\x78\xf4\xe2\xf0\x8f\x4a\x28\xee\x4c\x50\xcd\xfc\xba\xf0\x47\x5f\x2f\x2c\x1e\x7f\xb7\x83\x17\x1d\x5e\x05\x5f\xb9\x39\xbc\x1a\xc4\xff\x3d\xad\x3f\x1d\xbd\x38\xbc\x4e\x36\x8e\x1f\x3d\x25\x1e\x3a\x1e\x78\x73\x35\x68\xdd\x2f\xb9\x79\x7a\xf4\xa2\x33\x76\xb4\xec\x8c\x9d\xaa\x74\x6b\x81\xf9\xa6\x9d\x1b\xb2\x13\x5f\x3f\x1a\xa8\x3d\x73\x3e\x35\x5c\x2c\x39\xa3\x17\x53\x3c\x8e\xdb\x3c\xba\x7b\xb3\x4b\xd2\xa5\x77\xef\x96\xcc\xf7\x49\x42\x63\x7e\xf5\xd5\x77\x13\x81\xe6\x98\xfa\x27\xf6\x43\x60\xa9\x83\xf7\x01\x27\x8f\x6c\xe0\x7d\xc0\x09\x58\x9c\xa0\x45\x9d\x62\x2d\x98\xf9\xbe\x5d\xbc\xd6\x6d\x1a\x7b\x7f\xc1\x1d\xdd\xfa\x87\x00\x2b\x59\xa0\x64\x3f\x5e\xfe\xd7\xf6\x18\x79\x58\x7b\xe1\xb0\xd5\xa5\x39\x1e\x9f\x0b\x3f\xdd\x89\x82\x27\x67\x51\x6c\xdc\x9d\xe7\xfb\x92\x52\x62\x8a\x73\x6f\x0d\x38\x8f\x43\x91\xc5\x8f\x94\xf8\x58\x8c\x63\xfd\x90\x71\xc4\x3b\x89\xf6\x2d\x02\x25\x4d\x20\x08\x88\x65\x06\xff\x71\xf1\xfe\xdd\xf0\x27\x13\x73\x05\xaa\x66\x5c\xf0\x2d\xee\x26\xf7\xc1\x55\xe9\x14\x84\x23\xd2\xa8\xbe\xbd\xe0\xd6\x43\x21\xb4\x9c\xa0\xf3\x49\xdc\x0d\xad\xbb\x3a\xb9\x49\xe6\xdb\x1d\x32\x5e\x5c\xd4\x37\xf6\xd1\x00\xd8\x37\x88\x99\x66\x2d\x27\xad\x4c\x52\x69\xb2\x48\xf4\x3d\x13\xeb\xc5\x2d\x82\x89\xc4\x56\xc8\x41\x61\x04\x3d\x32\x93\xce\xd1\x1f\xc9\xb1\x3e\xf5\xe0\xf0\x7e\x8a\x16\xa1\x47\x3f\x7b\xe1\xc0\xe6\x81\x05\x7d\xeb\x44\xfc\x78\x70\xc8\xef\xad\xcc\x73\x4e\xb7\xf8\xb5\xc0\x1d\x6a\x7f\xc4\xf1\x6d\x02\xda\x74\x26\xeb\xd8\x87\x6e\xbb\xcf\x8b\x84\x5c\x9d\xdc\xf4\xe0\x70\x9e\x2f\x4a\x41\xf1\x01\x4e\x9a\x8e\x73\x69\xb2\xa3\xba\x6a\x9d\x69\x2f\x1e\xb8\x30\x98\x1a\x87\x3a\x74\xf6\xbd\x81\xa9\xb8\x43\x70\x86\x8a\x4f\x54\x6a\x10\x12\xcc\x0c\xee\x43\x03\xae\x16\x65\xb8\xb4\x29\x85\xf5\x0b\xcf\x4f\x2e\xdf\xbf\x7a\x3f\x0a\xa7\x91\xda\x72\x5d\x57\xb9\x13\xa9\x85\x8a\xb7\x0b\x4d\x7e\x48\x84\x54\x41\x49\xde\xc4\xd2\xb6\xbe\xf9\x98\x54\xbe\xb2\x98\x2c\x3e\x47\xd8\xd9\xe2\x57\xbd\x05\x59\x6d\xec\xfc\x26\x64\xd1\xd1\xfe\x17\x5f\x5c\xec\xcc\xa2\x5e\x73\xa3\xb1\xcc\xe2\xbb\x8e\x0d\x6e\x64\xb1\x85\x66\xe2\x32\x33\xa9\x23\x06\x53\x2c\xbd\x1b\x9a\x3b\x82\x4e\xbc\x1f\xde\x1b\x7b\x2b\x75\x3e\x20\x23\x1b\x04\xcd\xbb\x21\x87\x98\xe1\x37\xfc\xcf\x17\x71\xc4\x71\x6a\x77\xb6\xc2\xc3\xaf\xbf\x81\x37\x0e\x9f\xc3\xcf\x66\xad\xce\x2f\x1f\x13\x09\x9e\x5c\xd4\xc5\xdf\xc2\x6a\x72\x97\x70\xe1\x14\x5f\x84\x75\x10\xae\x10\x59\x80\x40\xa1\x67\x7f\xb9\x19\x93\x00\xb9\xc6\x4f\x67\x83\xf8\x64\x73\x20\x74\x36\x68\xf2\xeb\x74\xf6\xd9\x12\xab\xe4\x8e\x0e\xfc\xcb\xd9\xab\xbf\xc7\xb8\x2b\xf9\x28\x6f\x0d\x5d\x94\x11\x78\x5b\xd5\xd9\x9d\xf3\xc6\x8a\x1c\xe7\xbf\x55\xe3\xa6\xf8\x68\x19\x8e\x75\x25\x7c\xfc\xc4\x9f\xda\x47\x9a\x42\x95\x53\x71\x52\xaf\xdd\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x3f\xd5\xdc\x28\xec\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\xfd\x53\xcd\x2f\x63\x75\xff\x54\x73\xff\x54\x73\xff\x54\xb3\xf9\xdb\x3f\xd5\xdc\x91\xb9\xfd\x53\xcd\x7f\xfa\x53\xcd\xff\xdf\x8f\x2f\xf7\x97\x63\xff\x37\x2e\xc7\xf6\xd7\x5d\xfb\xeb\xae\xfd\x75\xd7\xfe\xba\xeb\x33\x2c\x7e\x7f\xdd\xb5\xbf\xee\xda\x5f\x77\xed\xaf\xbb\xfe\xa1\xd7\x5d\x13\xa1\xdc\xce\xf7\x5d\xff\x13\x00\x00\xff\xff\xc7\xa0\x23\x13\x5c\x46\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x7b\x6f\x1c\x37\x92\xff\xdf\x9f\xa2\x30\x7b\x80\xa5\xdc\x3c\x2c\xe7\x90\xcb\x0e\x10\x04\x82\x1d\x07\xba\xd8\xb2\x60\xc9\x39\xe0\x2c\xdd\x2d\xa7\xbb\xba\x87\x2b\x36\xd9\x4b\xb2\x67\x34\x1b\xe4\xbb\x1f\xaa\xc8\x7e\xcd\x4b\xa3\xc4\xde\xdd\x00\xd3\xff\x48\xc3\x67\x55\xb1\xea\x57\x0f\x52\x94\xf2\x67\xb4\x4e\x1a\x3d\x05\x51\x4a\x7c\xf0\xa8\xe9\x97\x1b\xdf\x7f\xeb\xc6\xd2\x4c\x16\x67\xcf\xee\xa5\x4e\xa7\xf0\xaa\x72\xde\x14\x1f\xd0\x99\xca\x26\xf8\x1a\x33\xa9\xa5\x97\x46\x3f\x2b\xd0\x8b\x54\x78\x31\x7d\x06\x20\xb4\x36\x5e\x50\xb3\xa3\x9f\x00\x89\xd1\xde\x1a\xa5\xd0\x8e\x72\xd4\xe3\xfb\x6a\x86\xb3\x4a\xaa\x14\x2d\x2f\x5e\x6f\xbd\x78\x31\xfe\x76\xfc\xe2\x19\x40\x62\x91\xa7\xdf\xc8\x02\x9d\x17\x45\x39\x05\x5d\x29\xf5\x0c\x40\x8b\x02\xa7\x60\x4a\xb4\xc2\x1b\x9b\x5b\x53\x95\x6e\x5c\xff\x74\xe3\xc4\x58\x34\xf4\xa7\x78\xe6\x4a\x4c\x68\x77\x1e\xd3\x4e\xe9\x8d\x09\xeb\xd5\x44\x0a\x8f\xb9\xb1\xb2\xfe\x0d\x30\x02\xa3\x0a\xfe\x3f\x30\xff\x3e\xae\xf1\x23\x2d\xc9\xed\x4a\x3a\xff\xd3\x66\xdf\x5b\xe9\x3c\xf7\x97\xaa\xb2\x42\xad\x13\xcc\x5d\x6e\x6e\xac\xbf\x6c\xb7\xe7\xed\xf2\xd0\x25\x75\x5e\x29\x61\xd7\xe6\x3d\x03\x70\x89\x29\x71\x0a\x3c\xad\x14\x09\xa6\xcf\x00\xa2\xf8\xe2\x32\xa3\x28\xa2\xc5\x59\x5c\xd5\x25\x73\x2c\x44\xbd\x07\xd0\x92\xfa\xfc\xea\xe2\xe7\xaf\xaf\xd7\x3a\x00\x52\x74\x89\x95\xa5\xe7\xc3\xe8\x31\x04\xd2\x81\x9f\x23\x54\x5a\x7a\x30\x19\x14\x95\xf2\xd2\xa3\x16\x3a\x59\x41\x66\x2c\xbc\x7f\xfb\x0e\x0a\xa1\x45\x8e\x69\x47\xd4\x70\xe1\xe9\xec\x9d\xb7\x42\xea\xb0\x82\xd4\xce\x0b\xa5\xf8\x78\x69\xa5\x66\x30\x48\x0d\xd2\xbb\x70\x22\xc4\x1b\x78\x03\x02\xe8\x18\x65\x26\x31\x05\x87\xbc\xb5\x17\x36\x47\xdf\x0e\x73\xe3\x0e\x07\x7e\x45\xe2\x31\xb3\xbf\x62\xe2\x3b\xcd\x16\xff\x56\x49\x8b\x69\x97\x59\x12\x55\xad\xb4\x9d\xe6\xd2\x12\x45\xbe\xa3\x05\xe1\xeb\x98\x48\xaf\x7d\x4d\x6a\xcf\x49\xb4\x61\x1c\xa4\x64\x1d\x18\xd8\x8e\x87\x44\x6c\xb0\xd8\x99\x93\xb9\x74\x60\xb1\xb4\xe8\x50\xfb\x46\x22\x42\x47\x06\xc6\x70\x8d\x96\x26\x92\xae\x54\x2a\x25\x51\x2e\xd0\x7a\xb0\x98\x98\x5c\xcb\xbf\x37\xab\x39\x92\x15\x6d\xa3\x84\x47\xe7\x41\x6a\x8f\x56\x0b\x05\x0b\xa1\x2a\x1c\x82\xd0\x29\x14\x62\x05\x16\x69\x5d\xa8\x74\x67\x05\x1e\xe2\xc6\xf0\xce\x58\x3a\x9d\xcc\x4c\x61\xee\x7d\xe9\xa6\x93\x49\x2e\x7d\x0d\x00\x89\x29\x0a\x3a\xfc\xd5\x84\x6d\x59\xce\x2a\x3a\xb3\x49\x8a\x0b\x54\x13\x27\xf3\x91\xb0\xc9\x5c\x7a\x4c\x7c\x65\x71\x22\x4a\x39\x62\x62\x35\x83\xc0\xb8\x48\xff\x64\x23\x64\xb8\xe7\x6b\xe2\x0b\x47\xe6\xbc\x95\x3a\xef\x75\xb1\xcd\xed\x95\x35\x59\x1e\x69\xa6\x88\xd3\x03\x2f\xad\x48\xa9\x89\xa4\xf2\xe1\x87\xeb\x1b\xa8\x09\x08\x62\x0f\x12\x6e\x87\xba\x56\xd8\x24\x28\xa9\x33\xb4\x61\x64\x66\x4d\xc1\xab\xa0\x4e\x4b\x23\xb5\xe7\x1f\x89\x92\xa8\x3d\xb8\x6a\x56\x90\xd2\x92\x82\xa1\xf3\x74\x0e\x63\x78\xc5\xf8\x07\x33\x84\xaa\x4c\x85\xc7\x74\x0c\x17\x1a\x5e\x89\x02\xd5\x2b\xe1\xf0\x8b\x8b\x9a\x24\xea\x46\x24\xbe\xc3\x85\xdd\x85\xef\xcd\x09\x1b\x06\x05\x50\xc3\xeb\xce\xd3\xe9\xe1\xc7\x75\x89\x49\x8d\x21\x34\x93\x31\x43\xe8\x35\x90\xa9\x8f\x68\x7c\x28\x11\xb4\x65\x26\x2a\xe5\xd7\x29\x01\xa8\xca\xdc\x8a\x14\xaf\xbd\x25\x58\x5f\x4d\xe1\x75\x18\xb9\x36\x70\x97\xb9\x33\x8b\xa8\x30\xf1\xc6\x6e\xf6\xac\xb1\x7a\x1d\x07\xc6\x19\x81\xcd\x1e\x6b\xcf\xdd\x7e\xdc\x3a\x80\xd3\xc7\xa8\xa5\xaf\x10\x3e\x99\xff\xf0\x40\x3a\xdd\x71\x09\x8f\x50\xbf\x3e\x29\x58\x14\x79\x36\x42\x23\x25\x66\xa8\x1a\x51\xd4\x48\x5a\x04\x93\xb9\x99\x63\xaf\x05\x84\x45\x38\xbf\x7c\x8d\xe9\x36\xe6\x5a\x06\x85\xb5\x62\xb5\x63\x84\xf4\x58\xec\x24\x7c\x8d\xf4\xf3\x3d\xe4\x45\x60\xa8\x7b\xfc\x5c\xb0\x2f\xf2\xec\x89\x02\xe8\x0d\x41\xc0\x3d\xae\x02\x3e\x12\xec\xc6\x23\x0b\x83\x2d\x32\x9a\xf2\x61\xde\xe3\x8a\x07\x45\xb0\xdc\x49\xdd\x23\xe7\x17\xbe\xed\xde\xa8\xff\x8d\x68\xcb\xbd\xfd\x35\xb1\x3b\x07\x3d\xa6\x2c\xe1\xbb\xc7\xd5\xbe\xee\x35\x81\x93\x1c\xa2\x19\x07\xc9\x53\x03\x4b\x8b\x2d\xbb\x16\xb6\x28\x4b\x25\x91\xd1\x70\xef\xda\x3b\xe1\xa8\xff\xd5\xac\x3e\x81\xd0\xe6\x28\x5b\x84\x0f\x87\xfd\xdc\x85\x83\x25\x4d\x9f\xcb\x32\x06\x19\x21\xb4\xa8\x5d\xe1\xcf\x42\xc9\x4e\x18\xc3\x5a\x7d\xa1\x87\x70\x69\x3c\xfd\xf9\xe1\x41\x12\xd4\x93\x3e\xbc\x36\xe8\x2e\x8d\xe7\x96\xcf\xc2\x6a\x20\xe1\x09\x8c\x86\x09\xac\xec\x3a\xd8\x15\x71\xd2\xf5\x87\x14\x86\x65\x7c\x3e\x8d\x50\xa4\x23\x8f\x64\x6c\xcd\x11\x47\x28\x61\xa1\xb0\x44\x51\x39\x76\x60\xda\xe8\x11\x16\xa5\x5f\x6d\x5d\x23\x0a\xc2\xd8\x9e\x1c\xf6\x2c\x17\x97\xba\x21\xbf\x1a\x7a\x42\x04\xa4\x28\x94\x85\xb4\x62\xa2\xd9\x9b\x13\x68\xcb\x04\x0a\xb4\x39\x42\x49\x08\x75\x88\x78\xf7\xe1\x4a\xf8\x1e\x41\x97\x03\xcf\x8a\x21\xf3\x2d\x19\xc0\x13\x20\x36\x8c\x0f\xb0\x54\x88\x92\x8e\xe9\x17\x42\x1f\x96\xd4\xaf\x50\x0a\x49\x11\xf3\x39\x47\xff\x0a\x7b\x7d\x52\xb3\x4c\xbb\xcb\xd0\x0a\xd2\x01\x41\xc9\x42\x28\xc2\x3b\xd2\x64\x0d\xa8\x02\xfa\x51\x90\xbe\x06\xec\x43\x58\xce\x8d\x0b\x60\x96\x49\x54\x1c\x3b\x0d\xee\x71\x35\x18\x6e\x1c\xed\xe0\x42\x0f\x02\x2e\x6e\x1c\x66\x03\xa2\x46\xab\x15\x0c\xb8\x6f\xf0\xdb\x7d\xc1\x5e\xb0\x14\x69\xca\xe9\xa5\x50\x57\x07\xa0\xd9\xde\x73\x73\x68\x17\x32\xc1\xf3\x24\x31\x95\xe6\xc4\xeb\x00\xbf\xbe\x3e\xa5\x06\x3f\x91\x16\x52\xf7\x72\x13\x1e\x09\x22\x0c\x85\xe5\x5c\x26\x73\x58\x4a\xa5\x38\x0c\x74\x98\xd2\xf1\xa4\x58\x2a\xb3\x6a\xe4\x7c\xe2\x4e\xc3\xc9\x52\x3c\x5a\xcb\x9e\x33\xbd\xdd\xa1\xc1\x2e\xe6\x28\x7d\x48\xae\xac\x59\xc8\x14\xd3\xf3\xab\x8b\xad\x52\xea\x33\xc7\x53\xc0\xa3\x52\x8e\xd3\x37\x8a\x59\xbd\x89\x31\xeb\xd6\x10\xa6\xec\xac\xdf\x49\xf2\x77\x12\x3b\x33\x46\xa1\xd8\xec\x0f\xa1\x50\x93\xc4\x3e\x4e\xeb\xcd\xda\x84\x08\x77\xf8\x50\x2a\x99\x48\x5f\xe3\x77\x1b\x5b\x71\x3e\xc4\x93\x18\xb8\x24\x47\x03\x0e\xfd\xb0\x8d\xd5\xa4\x03\x99\x6b\x63\xb7\xeb\xe7\x7e\x3c\xd9\x83\x22\x8f\x60\xc7\xc3\xe8\xbe\x9a\xa1\xd5\xe8\xd1\x8d\x28\xc6\x1a\xc5\x09\xb8\x69\x02\xeb\x21\xec\x63\x52\x1a\x7c\xec\x4f\xe8\x25\xa0\x71\xb1\x1a\x5b\x43\xd6\xde\x4b\xbe\x69\x54\x23\x41\xb6\x67\x8b\x6c\xc4\x49\x65\x2d\x6a\xaf\x56\xe0\x97\x06\x5c\x55\x96\xc6\x7a\x4c\xd7\x97\x24\xd3\x84\x5b\x5d\x07\xda\x53\x56\x2a\x36\x01\x06\x0a\xa1\x94\x59\x42\xa2\x2a\xe7\xd1\x46\xcb\x8a\x99\x32\x1f\x57\x61\x16\x58\xa7\xb1\xc1\x25\x90\x33\x28\xe7\xc2\x61\x9b\x83\xb9\x2a\x49\x10\x53\x4c\x43\x47\x74\x25\x98\x65\x98\x78\xb9\x40\xb5\x82\x02\x05\x57\x1a\x84\x6f\xf7\x27\xcd\x0e\xdb\xb7\x0c\xaf\xed\xa8\xf1\xc1\xd7\x49\x3a\x48\x4e\xc2\xfb\x95\x0a\xdb\xb0\x3b\x17\x0e\x32\x21\x15\xe5\x75\xb7\x1a\x3e\x6a\x27\x32\x7c\x23\xa4\x7a\x63\xec\x52\xd8\xb4\xc3\xf8\x97\xe0\x99\x48\x69\xfa\x02\x1d\xb5\x30\xce\x1b\xb4\x54\xab\x61\x4b\x45\x8e\x9a\xb8\x26\x26\x97\x35\x57\x57\x8a\xc4\xb4\x9c\xa3\x26\x7f\x5b\xcd\x1a\x35\x02\x8b\x19\x5a\xd4\x64\x44\xa2\x5e\xbf\x33\xa9\xf1\x09\x89\xf0\x42\x99\x9c\xc5\x31\x43\xd4\x75\xb2\x0b\x4b\xe9\xe7\x20\x78\xb3\x5a\x64\x19\xc7\xd4\x08\x48\xf1\x01\xb1\x18\x0d\xb6\x53\x29\xba\xd5\xf0\xdf\xe7\x1f\x2e\x2f\x2e\x7f\x9c\xb2\x2b\xd9\x10\xeb\xa6\x06\x4b\x07\x15\x8f\xea\xd4\x37\x5c\xa5\x3c\x29\x73\xa5\xf1\xa1\xc4\x84\xe8\x99\xe1\x5c\x2c\x24\x69\xbb\x8d\x95\x8f\x05\x5a\x31\x53\x08\x94\xf0\x82\x32\x8e\xd6\x51\xe8\x1c\xac\x4c\x05\x73\xb1\x40\x48\x11\x4b\xa8\x74\x8a\xd6\x79\xa1\x53\x22\xd9\x64\x31\xc6\xed\x53\x0e\x33\xa4\xde\xba\xf6\xb5\x69\x47\xfd\x3c\xd8\x0b\x5f\xb9\x26\x13\x0e\xbf\xb6\xe5\xc2\x75\x85\x75\x3c\x78\xaa\x2b\x68\x73\xe2\x1d\x29\x2f\x7d\xa8\xab\x62\x3b\x7e\x8d\xf6\xcc\xa2\xde\x8d\x73\xe9\x57\x05\x98\xa3\x83\x8b\x08\xfb\x72\xa1\x11\x28\xe1\xfc\xc7\xa0\x54\x4f\xc8\xda\x13\xa3\x83\x15\x3c\xee\x56\x5e\x35\x43\xd7\xe3\xe7\x6d\xde\xaf\x5d\xf8\xb3\x3a\x8c\x3e\x84\x37\x24\xb5\x61\x56\x8a\x5e\x48\x15\xd4\xc4\x68\x04\x41\x61\x87\xaf\xa9\x8c\xe0\xcc\x92\xc7\xa6\xaa\x78\x7e\x75\x01\x8d\x0a\xc1\x68\x34\x0a\x40\xe9\xbc\xad\x12\xf6\x85\x52\x7b\xd4\x84\x29\xb4\x6a\x2a\x2d\x97\x05\x1d\x2d\xde\xca\x21\x66\x75\x21\x54\x2c\x85\x9f\xc3\x38\x9c\xef\xb8\x23\x0a\x80\x37\xc6\x02\x3e\x88\xa2\x54\x38\x64\x31\xc0\x1b\x63\xa2\xa2\x87\x0d\x7f\x81\xc9\x04\x3e\xb4\x89\x18\x07\x9b\x33\x8a\x99\x42\x1e\xc6\x55\x4f\xc8\x8c\x21\x29\x77\xf9\x19\xd3\xc4\x9f\xb4\x59\xea\x6d\x5b\xf3\x5e\xc2\xe2\x14\x6e\x07\xe7\x0b\x21\x15\x19\xf5\xed\x60\x08\xb7\x83\x2b\x6b\x72\x0e\x7b\x75\x7e\x1b\xe3\xd8\xdb\xc1\x6b\x64\x00\x49\x6f\x07\xb4\xec\xbf\x73\x56\xf1\x8e\x12\x8c\x9f\x70\xf5\x1d\x2f\xd6\x34\xd7\x2e\xf4\xbb\x90\x80\x50\x3b\x39\xeb\x9b\x55\x89\xdf\x51\xe4\x5d\x37\xbc\x13\x65\x33\xb9\xa3\x4d\x9f\xee\x0a\xf4\x62\x71\x36\x6e\x8f\xf3\x2f\x7f\x75\x46\x4f\x6f\x07\x2d\xfd\x43\x53\x90\x5a\x94\x7e\x75\x3b\x80\xde\xae\xd3\xdb\x01\xef\x5b\xb7\xd7\x44\x4e\x6f\x07\xb4\x13\x35\x5b\xe3\xcd\xac\xca\xa6\xb7\x83\xd9\xca\xa3\x1b\x9e\x0d\x2d\x96\x43\x82\x9d\xef\xda\x1d\x6e\x07\x7f\x21\x5c\x9d\x4c\xc0\xf8\x39\xda\x70\x92\x0e\x7e\xdd\x86\x29\x07\x84\xe3\x8f\xd5\x2d\x82\xc5\xde\x58\xa1\x9d\xac\x6f\x6f\x76\x0e\x2d\xd0\x39\x91\xef\xee\xb7\x28\xdc\xd6\xd0\x32\x74\x07\x6d\xd8\xd9\x4d\xbc\x6c\xed\x7c\xbc\x28\xb2\xc9\xc3\x81\xc5\xa8\xcd\x89\x6d\xa9\xc4\x79\xf0\xd4\xc0\x16\xdb\xe8\x84\x6f\x46\x93\x21\x92\x4f\x27\xfb\x8e\x5e\x81\xd3\x39\x3e\xb7\x18\xe5\xc4\x4b\x80\x19\x06\xb7\x1d\xae\x63\x52\xb4\x6a\x45\x0e\xa8\x5d\x35\x99\x0b\x9d\x53\x70\x12\x52\x76\xc1\xf6\x4e\x21\xd0\x3d\x19\x12\xa7\x7a\x1a\x2a\x57\x17\xc7\x99\xae\x66\x45\x02\x8e\x60\xf0\x71\x19\x46\xc6\x24\xc1\xd2\x93\x75\x3d\x56\xf9\x7a\xa4\xbe\x91\x19\x5b\x08\x3f\x25\xc7\x8b\x23\xbf\x5b\x3d\xa2\x72\x1c\x28\xf8\x38\x3a\x64\xd6\xf3\xaa\x10\x14\xc4\x88\x94\x5d\x7c\xd3\xa7\x53\x99\x08\x8e\x3d\x6a\x3c\x15\x33\x53\x05\x84\x6b\xcf\x21\x8a\x9a\x62\x89\x19\x72\x8a\x41\xf6\x19\xd9\xfa\x9d\xcc\x17\xe2\xe1\x2d\xea\xdc\xcf\xa7\xf0\xf5\xcb\xff\xfc\xe6\xdb\x1d\x03\x03\x30\x62\xfa\x63\x88\xda\xb6\x5c\x38\xed\x10\xc3\xe6\xc4\x6e\xf1\x8b\xf8\x1c\xd7\x55\xfe\x71\xde\x8e\x69\xaa\x77\xad\x06\x2d\x05\x27\x4b\x30\x13\x8e\xc3\x7c\x92\x0b\xa1\x3c\x87\x81\x3a\xc1\x21\x45\xc8\x5b\x17\x93\xae\x93\x2d\x9c\xbd\x1c\xc2\x2c\x8a\x78\x13\xbe\x3f\x3d\xdc\x8d\xb7\x90\x2c\x1d\xfc\x79\xb8\x46\x0f\xe5\xc7\x15\x7b\x3c\x4e\x4d\x39\xc0\xb4\x18\xdc\x60\x8c\x9e\xb7\xb8\x41\x6c\xe8\x7d\xec\xe0\xc8\x19\xe6\xb8\xbb\x92\x5a\xab\xad\xd4\xfe\x9b\xff\xd8\x7d\xbe\x52\xcb\xa2\x2a\xa6\xf0\x62\xc7\x90\x00\x69\x07\x9e\x66\x18\xdc\x46\x01\x82\xa0\x2b\xb7\xa2\x28\x38\x6d\x97\x29\x6a\x2f\x33\x89\xb6\xab\xda\x21\x8f\xe0\x89\x75\xc8\xdd\x48\xf1\xb9\x8b\x38\xd4\x51\xf6\x2b\x6b\xd2\x2a\x41\xcb\x1e\x38\x56\x33\x92\x2e\x40\xad\x4a\x0c\xd6\x10\x52\x49\x68\x82\xea\xba\x22\x44\x81\x37\x0a\x2d\x75\xee\xe2\x96\xd2\x05\x00\x09\x5e\x77\x39\x47\x76\x3d\xbd\x2a\x12\x53\xe5\x64\x8a\x16\x53\x10\x90\x57\xc2\x0a\xed\x11\x53\x82\x9f\x50\x49\x0a\x37\x79\x2d\xe4\x89\xf6\xfe\xac\xb6\xc6\x60\xaa\x01\xac\x88\xc4\x78\xe7\x16\x6a\x8c\x9f\xcd\x54\xcf\x5e\xbc\xdc\x7b\xe4\xcd\xb8\xdd\x75\x78\xe1\x3d\x5a\x3d\x85\xff\xfd\x74\x3e\xfa\x1f\x31\xfa\xfb\xdd\x49\xfc\xe7\xc5\xe8\xcf\xff\x37\x9c\xde\x7d\xd5\xf9\x79\x77\xfa\xfd\xbf\xed\x58\x69\x7b\x6c\xbd\x43\x7d\xa2\x13\xa9\x83\xc4\xfa\x44\x87\xec\x61\x4c\x06\x37\xb6\xc2\x21\xbc\x11\xca\xe1\x10\x3e\x6a\x76\x0d\xbf\x53\x68\xbb\x73\x8a\xf0\x8d\x60\x40\xbb\x6e\x0f\x3e\x9a\x21\x4c\xd2\xfe\x31\x91\xdc\x7d\x55\xc5\xc3\x84\xc4\x61\x9b\xc9\xba\x48\xd3\xb9\xa7\x05\x46\x3c\x0a\x4b\xc7\x31\xbc\x1d\x27\xa6\x98\x74\xee\x71\x29\xae\x7e\x27\xf4\x0a\x5a\x58\x0b\x41\xe9\xba\xa6\x3b\x4f\xd8\x24\x12\x4b\xb9\x66\x73\x13\x0e\x4a\xde\x23\x34\x91\x6b\x00\xcb\x19\x26\x82\x03\x71\x3b\x93\xde\x0a\xbb\xea\xe4\x1d\x90\x08\x1d\xeb\x89\x59\xa5\xe0\xc4\x21\xc2\x58\x9b\x14\x37\xd1\xf5\x34\x60\xa8\x98\x49\x25\xfd\x2a\x14\x1f\x13\xa3\x33\x25\x63\xfc\x5f\x94\xc6\x7a\xa1\x7d\x5d\xb8\xcd\xf1\x01\xa4\x0f\x35\xe3\x50\x60\x3b\x49\xb5\x3b\x3b\x7b\xf9\xf5\x75\x35\x4b\x4d\x21\xa4\x7e\x53\xf8\xc9\xe9\xf7\x27\x7f\xab\x84\xe2\xaa\xe7\xa5\x28\xf0\x4d\xe1\x4f\x3f\x9f\x5b\x3c\xfb\xe6\x00\x2b\x3a\xf9\x14\x6c\xe5\xee\xe4\xd3\x28\xfe\xf7\x55\xdd\x74\xfa\xfd\xc9\xed\x78\x6f\xff\xe9\x57\xc4\x43\xc7\x02\xef\x3e\x8d\x5a\xf3\x1b\xdf\x7d\x75\xfa\x7d\xa7\xef\x74\xd3\x18\x3b\x59\xe9\xa3\x09\xe6\xdb\x76\x6c\x88\x4e\x7c\xfd\xa0\xa9\xb6\xcc\x7e\x68\xb8\x9e\x72\x46\x2b\x26\x7f\x1c\x97\x79\x72\x65\xf8\x90\xa0\x4b\x1f\x5e\x89\xed\xd7\x60\x3b\x05\x91\x8d\xeb\xed\xc6\x03\xf5\x98\xfa\x57\xad\xb5\xf6\x6f\x07\x3e\x60\xf6\xc4\xcb\x81\x0f\x98\x75\x2b\x67\x41\x30\xfd\x3b\x81\xf8\xe4\xa4\xb9\x34\xf8\x02\xf7\xff\xbb\x1f\x29\x6d\x65\x81\x82\xfd\xba\xe6\x19\xf5\x31\xf2\xb0\xf3\x32\xf3\x51\x93\x66\x7f\x7c\x25\xfc\xfc\x20\x0a\x9e\x5f\x44\xb1\xf1\xcd\x1f\xdf\xc5\x96\x12\x13\xec\xbd\x83\xe2\x38\x0e\x45\x1a\x1b\x29\xf0\xb1\x18\xfb\x86\x21\xe2\x88\xf7\x9d\xed\x3b\x29\x0a\x9a\x40\x10\x10\xcb\x14\xfe\xeb\xfa\xfd\xe5\xe4\x47\x13\x63\x05\xca\x66\x5c\xb0\x2d\xbe\xa9\x1a\x82\xab\x92\x39\x08\x47\xa4\x51\x7e\x7b\xcd\xa5\x87\x42\x68\x99\xa1\xf3\xe3\xb8\x1a\x5a\xf7\xe9\xe5\xdd\xb8\x5f\xee\x90\xf1\x52\xb4\x7e\x4d\x14\x15\x80\x6d\x83\x98\x69\xe6\x72\xd0\xca\x24\x95\x26\x8d\x44\x2f\x99\x58\x2f\xee\x11\x4c\x24\xb6\x42\x76\x0a\x53\x18\x90\x9a\x74\xb6\xfe\x85\x0c\xeb\xd7\x01\x9c\x2c\xb9\x2c\x3f\xa0\x9f\x83\xb0\x61\xf3\xf8\x8b\xda\x3a\x1e\x3f\x6e\x1c\xe2\x7b\x2b\xf3\x9c\xc3\x2d\x2e\xc3\x2e\x50\xfb\x53\xf6\x6f\x19\x68\xd3\x19\xac\xe3\x1d\x57\x7b\xb3\xb5\x4e\xc8\xa7\x97\x77\x03\x38\xe9\xf3\x45\x21\x28\x3e\xc0\xcb\xe6\x36\xab\x34\xe9\x69\x9d\xb5\xae\xb4\x17\x0f\x9c\x18\xcc\x8d\x43\x1d\x2e\x03\xbc\x09\x75\x56\x67\x28\xf9\x44\xa5\x46\x21\xc0\x4c\x61\x19\x0a\x70\xb5\x28\xc3\x85\x70\x29\xac\x5f\x7b\x1a\x77\xf3\xfe\xf5\xfb\x69\xd8\x8d\x8e\x2d\xd7\x75\x96\x9b\x49\x2d\x54\xac\x52\x37\xf1\x21\x11\x52\x85\x43\xf2\x26\xa6\xb6\x75\xad\x36\xab\x7c\x65\x71\xbc\xfe\x54\xea\x60\x8d\xdf\xf6\x4e\x6d\xbb\xb2\xf3\x7b\xb5\x75\x43\xfb\x27\xbe\x06\x3b\x98\x45\xbd\xe3\xb6\x74\x93\xc5\xcb\x8e\x0e\xee\x65\xb1\x85\x66\xe2\x32\x35\x89\x23\x06\x13\x2c\xbd\x9b\x98\x05\x41\x27\x2e\x27\x4b\x63\xef\xa5\xce\x47\xa4\x64\xa3\x70\xf2\x6e\xc2\x2e\x66\xf2\x27\xfe\xf3\xbb\x38\x62\x3f\x75\x38\x5b\xe1\x51\xea\x3f\x80\x37\x76\x9f\x93\xdf\xcc\x5a\x1d\x5f\x3e\xc5\x13\x3c\xbf\xae\x93\xbf\xb5\xd9\x64\x2e\xe1\x32\x3b\xbe\x56\xed\x20\x5c\x21\xd2\x00\x81\x42\xaf\xbe\xb8\x1a\x93\x00\x39\xc7\x4f\x56\xa3\xf8\x9c\x7c\x24\x74\x3a\x6a\xe2\xeb\x64\xf5\x9b\x25\x56\xc9\x03\x0d\xf8\xe3\xc5\xeb\x7f\x8c\x72\x57\xf2\x49\xd6\x1a\xaa\x28\x53\xf0\xb6\xaa\xa3\x3b\xe7\x8d\x15\x39\xf6\xdb\xaa\x59\x93\x7c\xb4\x0c\xc7\xbc\x12\x7e\xf9\x95\x9b\xda\x07\xe4\x42\x95\x73\xf1\xb2\x9e\x7b\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\x7e\x7c\x46\xbe\x57\xd8\x7f\xd4\x67\xe4\xc7\x67\xe0\xc7\x67\xe0\xc7\x67\xe0\xbb\xbb\x8f\xcf\xc0\x8f\xcf\xc0\x8f\xcf\xc0\xd7\xbf\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\xe3\x33\xf0\x2d\xdf\xce\x63\xda\x7e\x8b\xbb\x27\xe4\x7d\xf2\x8b\xd1\xc3\xa3\xde\xcf\xff\xf8\xf2\x78\x39\xf6\xc7\xb8\x1c\x3b\x5e\x77\x1d\xaf\xbb\x8e\xd7\x5d\xc7\xeb\xae\xdf\xa0\xf1\xc7\xeb\xae\xe3\x75\xd7\xf1\xba\xeb\x78\xdd\xf5\x2f\x7a\xdd\x95\x09\xe5\x0e\xbe\xef\xfa\xff\x00\x00\x00\xff\xff\xf3\xee\x0f\x50\xf8\x4a\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go b/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go index 1706eb17e4..0110ce8948 100644 --- a/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go +++ b/vendor/github.com/operator-framework/api/pkg/operators/v1/operatorgroup_types.go @@ -45,9 +45,32 @@ type OperatorGroupSpec struct { // Static tells OLM not to update the OperatorGroup's providedAPIs annotation // +optional StaticProvidedAPIs bool `json:"staticProvidedAPIs,omitempty"` + + // UpgradeStrategy defines the upgrade strategy for operators in the namespace. + // There are currently two supported upgrade strategies: + // + // Default: OLM will only allow clusterServiceVersions to move to the replacing + // phase from the succeeded phase. This effectively means that OLM will not + // allow operators to move to the next version if an installation or upgrade + // has failed. + // + // UnsafeFailForward: OLM will allow clusterServiceVersions to move to the + // replacing phase from the succeeded phase or from the failed phase. + // Additionally, OLM will generate new installPlans when a subscription references + // a failed installPlan and the catalog has been updated with a new upgrade for + // the existing set of operators. + // + // WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result + // in unexpected behavior or unrecoverable data loss unless you have deep + // understanding of the set of operators being managed in the namespace. + // OperatorGroupStatus is the status for an OperatorGroupResource. + // + // +kubebuilder:validation:Enum=Default;UnsafeFailForward + // +kubebuilder:default=Default + // +optional + UpgradeStrategy string `json:"upgradeStrategy,omitempty"` } -// OperatorGroupStatus is the status for an OperatorGroupResource. type OperatorGroupStatus struct { // Namespaces is the set of target namespaces for the OperatorGroup. // +listType=set @@ -76,6 +99,7 @@ type OperatorGroup struct { metav1.ObjectMeta `json:"metadata"` // +optional + // +kubebuilder:default={upgradeStrategy:Default} Spec OperatorGroupSpec `json:"spec"` Status OperatorGroupStatus `json:"status,omitempty"` } @@ -90,6 +114,11 @@ type OperatorGroupList struct { Items []OperatorGroup `json:"items"` } +const ( + DefaultUpgradeStrategy = "Default" + UnsafeFailForwardUpgradeStrategy = "UnsafeFailForward" +) + // BuildTargetNamespaces returns the set of target namespaces as a sorted, comma-delimited string func (o *OperatorGroup) BuildTargetNamespaces() string { ns := make([]string, len(o.Status.Namespaces)) @@ -98,6 +127,17 @@ func (o *OperatorGroup) BuildTargetNamespaces() string { return strings.Join(ns, ",") } +// IsServiceAccountSpecified returns true if the spec has a service account name specified. +func (o *OperatorGroup) UpgradeStrategy() string { + strategyName := o.Spec.UpgradeStrategy + switch { + case strategyName == UnsafeFailForwardUpgradeStrategy: + return strategyName + default: + return DefaultUpgradeStrategy + } +} + // IsServiceAccountSpecified returns true if the spec has a service account name specified. func (o *OperatorGroup) IsServiceAccountSpecified() bool { if o.Spec.ServiceAccountName == "" { From 6e7ef4be471373fd5196ec39695634ccddf7f6d1 Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Mon, 11 Apr 2022 12:25:18 -0700 Subject: [PATCH 4/4] Override OG API Enums --- Makefile | 2 +- manifests/0000_50_olm_00-operatorgroups.crd.yaml | 10 +++++++++- scripts/generate_crds_manifests.sh | 5 +++++ staging/api/pkg/operators/v1/operatorgroup_types.go | 2 +- .../pkg/controller/operators/olm/operator.go | 2 ++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 808f428579..c789812bd6 100644 --- a/Makefile +++ b/Makefile @@ -69,7 +69,7 @@ $(REGISTRY_CMDS): version_flags=-ldflags "-X '$(REGISTRY_PKG)/cmd/opm/version.gi $(REGISTRY_CMDS): go build $(version_flags) $(GO_BUILD_OPTS) $(GO_BUILD_TAGS) -o $@ $(REGISTRY_PKG)/cmd/$(notdir $@) -$(OLM_CMDS): version_flags=-ldflags "-X $(OLM_PKG)/pkg/version.GitCommit=$(GIT_COMMIT) -X $(OLM_PKG)/pkg/version.OLMVersion=`cat staging/operator-lifecycle-manager/OLM_VERSION`" +$(OLM_CMDS): version_flags=-ldflags "-X $(OLM_PKG)/pkg/version.GitCommit=$(GIT_COMMIT) -X $(OLM_PKG)/pkg/version.OLMVersion=`cat staging/operator-lifecycle-manager/OLM_VERSION` -X $(API_PKG)/pkg/operators/v1.UnsafeFailForwardUpgradeStrategy=TechPreviewUnsafeFailForward" $(OLM_CMDS): go build $(version_flags) $(GO_BUILD_OPTS) $(GO_BUILD_TAGS) -o bin/$(shell basename $@) $@ diff --git a/manifests/0000_50_olm_00-operatorgroups.crd.yaml b/manifests/0000_50_olm_00-operatorgroups.crd.yaml index 36e90f667f..5ab5376a27 100644 --- a/manifests/0000_50_olm_00-operatorgroups.crd.yaml +++ b/manifests/0000_50_olm_00-operatorgroups.crd.yaml @@ -39,6 +39,8 @@ spec: spec: description: OperatorGroupSpec is the spec for an OperatorGroup resource. type: object + default: + upgradeStrategy: Default properties: selector: description: Selector selects the OperatorGroup's target namespaces. @@ -82,8 +84,14 @@ spec: items: type: string x-kubernetes-list-type: set + upgradeStrategy: + description: "UpgradeStrategy defines the upgrade strategy for operators in the namespace. There are currently two supported upgrade strategies: \n Default: OLM will only allow clusterServiceVersions to move to the replacing phase from the succeeded phase. This effectively means that OLM will not allow operators to move to the next version if an installation or upgrade has failed. \n UnsafeFailForward: OLM will allow clusterServiceVersions to move to the replacing phase from the succeeded phase or from the failed phase. Additionally, OLM will generate new installPlans when a subscription references a failed installPlan and the catalog has been updated with a new upgrade for the existing set of operators. \n WARNING: The UnsafeFailForward upgrade strategy is unsafe and may result in unexpected behavior or unrecoverable data loss unless you have deep understanding of the set of operators being managed in the namespace. OperatorGroupStatus is the status for an OperatorGroupResource." + type: string + default: Default + enum: + - Default + - TechPreviewUnsafeFailForward status: - description: OperatorGroupStatus is the status for an OperatorGroupResource. type: object required: - lastUpdated diff --git a/scripts/generate_crds_manifests.sh b/scripts/generate_crds_manifests.sh index df6cabb105..8cfdcba94a 100755 --- a/scripts/generate_crds_manifests.sh +++ b/scripts/generate_crds_manifests.sh @@ -24,6 +24,11 @@ rm -rf ./manifests/* ${crddir}/* trap "rm -rf ${tmpdir}" EXIT + +# SED Commands +sed -i 's/+kubebuilder:validation:Enum=Default;UnsafeFailForward/+kubebuilder:validation:Enum=Default;TechPreviewUnsafeFailForward/g' staging/api/pkg/operators/v1/operatorgroup_types.go + + ${CONTROLLER_GEN} crd:crdVersions=v1 output:crd:dir=${crddir} paths=${crdsrcdir}/... ${CONTROLLER_GEN} schemapatch:manifests=${crddir} output:dir=${crddir} paths=${crdsrcdir}/... diff --git a/staging/api/pkg/operators/v1/operatorgroup_types.go b/staging/api/pkg/operators/v1/operatorgroup_types.go index 0110ce8948..cd9a8afdb6 100644 --- a/staging/api/pkg/operators/v1/operatorgroup_types.go +++ b/staging/api/pkg/operators/v1/operatorgroup_types.go @@ -65,7 +65,7 @@ type OperatorGroupSpec struct { // understanding of the set of operators being managed in the namespace. // OperatorGroupStatus is the status for an OperatorGroupResource. // - // +kubebuilder:validation:Enum=Default;UnsafeFailForward + // +kubebuilder:validation:Enum=Default;TechPreviewUnsafeFailForward // +kubebuilder:default=Default // +optional UpgradeStrategy string `json:"upgradeStrategy,omitempty"` diff --git a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go index 7efa2746d6..384260d6f5 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go +++ b/staging/operator-lifecycle-manager/pkg/controller/operators/olm/operator.go @@ -1209,6 +1209,8 @@ func (a *Operator) syncClusterServiceVersion(obj interface{}) (syncError error) return } + a.logger.Infof("FailForwardStrategy == %v", operatorsv1.UnsafeFailForwardUpgradeStrategy) + if len(operatorGroup.Status.Namespaces) == 1 && operatorGroup.Status.Namespaces[0] == operatorGroup.GetNamespace() { logger.Debug("skipping copy for OwnNamespace operatorgroup") return