minio argo nats face
diff --git a/.gitignore b/.gitignore
index 5c58399..6b79163 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
+.DS_Store
core
*.pb.go
diff --git "a/argo/\043argo-events-crds-install.yaml\043" "b/argo/\043argo-events-crds-install.yaml\043"
new file mode 100644
index 0000000..92b812a
--- /dev/null
+++ "b/argo/\043argo-events-crds-install.yaml\043"
@@ -0,0 +1,221 @@
+oapiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: gateways.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: Gateway
+ listKind: GatewayList
+ plural: gateways
+ singular: gateway
+ shortNames:
+ - gw
+ scope: Namespaced
+ version: "v1alpha1"
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: sensors.argoproj.io
+spec:
+ group: argoproj.io
+ names:
+ kind: Sensor
+ listKind: SensorList
+ plural: sensors
+ singular: sensor
+ shortNames:
+ - sn
+ scope: Namespaced
+ version: "v1alpha1"
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: eventsources.argoproj.io
+spec:
+ group: argoproj.io
+ scope: Namespaced
+ names:
+ kind: EventSource
+ plural: eventsources
+ singular: eventsource
+ listKind: EventSourceList
+ shortNames:
+ - es
+ version: "v1alpha1"
+---
+# apiVersion: v1
+# kind: Namespace
+# metadata:
+# name: argo-events
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: argo-events-sa
+ namespace: kube-system
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+ name: argo-events-role-binding
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: Role
+ name: argo-events-role
+subjects:
+ - kind: ServiceAccount
+ name: argo-events-sa
+ namespace: kube-system
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+ name: argo-events-role
+rules:
+ - apiGroups:
+ - argoproj.io
+ verbs:
+ - create
+ - delete
+ - deletecollection
+ - get
+ - list
+ - patch
+ - update
+ - watch
+ resources:
+ - workflows
+ - workflows/finalizers
+ - workflowtemplates
+ - workflowtemplates/finalizers
+ - gateways
+ - gateways/finalizers
+ - sensors
+ - sensors/finalizers
+ - eventsources
+ - eventsources/finalizers
+ - apiGroups:
+ - ""
+ resources:
+ - pods
+ - pods/exec
+ - configmaps
+ - secrets
+ - services
+ - events
+ - persistentvolumeclaims
+ verbs:
+ - create
+ - get
+ - list
+ - watch
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - "batch"
+ resources:
+ - jobs
+ verbs:
+ - create
+ - get
+ - list
+ - watch
+ - update
+ - patch
+ - delete
+ - apiGroups:
+ - "apps"
+ resources:
+ - deployments
+ verbs:
+ - create
+ - get
+ - list
+ - watch
+ - update
+ - patch
+ - delete
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: gateway-controller-configmap
+ namespace: kube-system
+data:
+ config: |
+ instanceID: argo-events
+ namespace: kube-system
+---
+# The gateway-controller listens for changes on the gateway CRD and creates gateway
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: gateway-controller
+ namespace: kube-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: gateway-controller
+ template:
+ metadata:
+ labels:
+ app: gateway-controller
+ spec:
+ serviceAccountName: argo-events-sa
+ containers:
+ - name: gateway-controller
+ image: argoproj/gateway-controller:v0.13.0
+ imagePullPolicy: Always
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: CONTROLLER_CONFIG_MAP
+ value: gateway-controller-configmap
+---
+# The sensor-controller configmap includes configuration information for the sensor-controller
+# To watch sensors created in different namespace than the controller is deployed in, remove the namespace: kube-system.
+# Similarly to watch sensors created in specific namespace, change to namespace: <your_namespace>
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: sensor-controller-configmap
+ namespace: kube-system
+data:
+ config: |
+ instanceID: argo-events
+ namespace: kube-system
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: sensor-controller
+ namespace: kube-system
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: sensor-controller
+ template:
+ metadata:
+ labels:
+ app: sensor-controller
+ spec:
+ serviceAccountName: argo-events-sa
+ containers:
+ - name: sensor-controller
+ image: argoproj/sensor-controller:v0.13.0
+ imagePullPolicy: Always
+ env:
+ - name: NAMESPACE
+ valueFrom:
+ fieldRef:
+ fieldPath: metadata.namespace
+ - name: CONTROLLER_CONFIG_MAP
+ value: sensor-controller-configmap
diff --git a/argo/event-source.yaml b/argo/event-source.yaml
index 11610a0..23ec5ed 100644
--- a/argo/event-source.yaml
+++ b/argo/event-source.yaml
@@ -1,21 +1,48 @@
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
- name: minio-event-source
+ name: nats-event-source
spec:
- type: "minio"
- minio:
+ type: nats
+ nats:
example:
- bucket:
- name: input
- endpoint: mio-minio.default.svc:9000
- events:
- - s3:ObjectCreated:Put
- - s3:ObjectRemoved:Delete
- insecure: true
- accessKey:
- key: accesskey
- name: artifacts-minio
- secretKey:
- key: secretkey
- name: artifacts-minio
\ No newline at end of file
+ # url of the nats service
+ url: nats://nats.svc:4222
+ # jsonBody specifies that all event body payload coming from this
+ # source will be JSON
+ jsonBody: true
+ # subject name
+ subject: input-objects
+ # optional backoff time for connection retries.
+ # if not provided, default connection backoff time will be used.
+ connectionBackoff:
+ # duration in nanoseconds. following value is 10 seconds
+ duration: 10000000000
+ # how many backoffs
+ steps: 5
+ # factor to increase on each step.
+ # setting factor > 1 makes backoff exponential.
+ factor: 2
+ jitter: 0.2
+
+# apiVersion: argoproj.io/v1alpha1
+# kind: EventSource
+# metadata:
+# name: minio-event-source
+# spec:
+# type: "minio"
+# minio:
+# example:
+# bucket:
+# name: input
+# endpoint: mio-minio.default.svc:9000
+# events:
+# - s3:ObjectCreated:Put
+# - s3:ObjectRemoved:Delete
+# insecure: true
+# accessKey:
+# key: accesskey
+# name: artifacts-minio
+# secretKey:
+# key: secretkey
+# name: artifacts-minio
\ No newline at end of file
diff --git a/argo/gateway.yaml b/argo/gateway.yaml
index e56f926..b98baf4 100644
--- a/argo/gateway.yaml
+++ b/argo/gateway.yaml
@@ -1,29 +1,61 @@
apiVersion: argoproj.io/v1alpha1
kind: Gateway
metadata:
- name: minio-gateway
+ name: nats-gateway
labels:
# gateway controller with instanceId "argo-events" will process this gateway
gateways.argoproj.io/gateway-controller-instanceid: argo-events
spec:
- type: minio
+ type: nats
eventSourceRef:
- name: minio-event-source
+ name: nats-event-source
template:
metadata:
- name: minio-gateway
+ name: nats-gateway
labels:
- gateway-name: minio-gateway
+ gateway-name: nats-gateway
spec:
containers:
- name: gateway-client
- image: argoproj/gateway-client:v0.13.0
- imagePullPolicy: Always
+ image: argoproj/gateway-client:v0.14.0
+ imagePullPolicy: IfNotPresent
command: ["/bin/gateway-client"]
- - name: minio-events
- image: argoproj/artifact-gateway:v0.13.0
- imagePullPolicy: Always
+ - name: nats-events
+ image: argoproj/nats-gateway:v0.14.0
+ imagePullPolicy: IfNotPresent
+ command: ["/bin/nats-gateway"]
serviceAccountName: argo-events-sa
subscribers:
http:
- - "http://minio-sensor.kube-system.svc:9300/"
+ - "http://nats-sensor.svc:9300/"
+
+
+# apiVersion: argoproj.io/v1alpha1
+# kind: Gateway
+# metadata:
+# name: minio-gateway
+# labels:
+# # gateway controller with instanceId "argo-events" will process this gateway
+# gateways.argoproj.io/gateway-controller-instanceid: argo-events
+# spec:
+# type: minio
+# eventSourceRef:
+# name: minio-event-source
+# template:
+# metadata:
+# name: minio-gateway
+# labels:
+# gateway-name: minio-gateway
+# spec:
+# containers:
+# - name: gateway-client
+# image: argoproj/gateway-client:v0.13.0
+# imagePullPolicy: Always
+# command: ["/bin/gateway-client"]
+# - name: minio-events
+# image: argoproj/artifact-gateway:v0.13.0
+# imagePullPolicy: Always
+# serviceAccountName: argo-events-sa
+# subscribers:
+# http:
+# - "http://minio-sensor.kube-system.svc:9300/"
diff --git a/argo/mio-minio-secrets.yaml b/argo/mio-minio-secrets.yaml
index cdd09f3..c48d5ef 100644
--- a/argo/mio-minio-secrets.yaml
+++ b/argo/mio-minio-secrets.yaml
@@ -1,9 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
- name: artifacts-minio
+ name: minio-credentials
data:
# base64 of minio
- accesskey: Z2lv
+ accesskey: bWluaW8K
# base64 of minio123
- secretkey: cDEyMzQ1Njc4
+ secretkey: bWluaW8xMjMK
diff --git a/argo/sensor.yaml b/argo/sensor.yaml
index 8c0427c..6918bd5 100644
--- a/argo/sensor.yaml
+++ b/argo/sensor.yaml
@@ -1,28 +1,27 @@
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
- name: minio-sensor
+ name: nats-sensor
labels:
- # sensor controller with instanceId "argo-events" will process this sensor
sensors.argoproj.io/sensor-controller-instanceid: argo-events
spec:
template:
spec:
containers:
- name: sensor
- image: argoproj/sensor:v0.13.0
- imagePullPolicy: Always
+ image: argoproj/sensor:v0.14.0
+ imagePullPolicy: IfNotPresent
serviceAccountName: argo-events-sa
subscription:
http:
port: 9300
dependencies:
- name: test-dep
- gatewayName: minio-gateway
+ gatewayName: nats-gateway
eventName: example
triggers:
- template:
- name: minio-workflow-trigger
+ name: nats-workflow-trigger
k8s:
group: argoproj.io
version: v1alpha1
@@ -33,20 +32,107 @@
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
- generateName: artifact-workflow-2-
+ generateName: nats-workflow-
spec:
entrypoint: whalesay
+ arguments:
+ parameters:
+ - name: message
+ value: WILL_BE_REPLACED
templates:
- - name: whalesay
- container:
- command:
- - cowsay
- image: docker/whalesay:latest
- args:
- - THIS_WILL_BE_REPLACED
- # The container args from the workflow are overridden by the s3 notification key
+ - name: whalesay
+ inputs:
+ parameters:
+ - name: message
+ container:
+ image: docker/whalesay:latest
+ imagePyllPolicy: IfNotPresent
+ command: [cowsay]
+ args: ["{{inputs.parameters.message}}"]
parameters:
- src:
dependencyName: test-dep
- dataKey: notification.0.s3.object.key
- dest: spec.templates.0.container.args.0
+ dest: spec.arguments.parameters.0.value
+
+
+# apiVersion: argoproj.io/v1alpha1
+# kind: Sensor
+# metadata:
+# name: minio-sensor
+# labels:
+# # sensor controller with instanceId "argo-events" will process this sensor
+# sensors.argoproj.io/sensor-controller-instanceid: argo-events
+# spec:
+# template:
+# spec:
+# containers:
+# - name: sensor
+# image: argoproj/sensor:v0.13.0
+# imagePullPolicy: Always
+# serviceAccountName: argo-events-sa
+# subscription:
+# http:
+# port: 9300
+# dependencies:
+# - name: test-dep
+# gatewayName: minio-gateway
+# eventName: example
+# triggers:
+# - template:
+# name: minio-workflow-trigger
+# k8s:
+# group: argoproj.io
+# version: v1alpha1
+# resource: workflows
+# operation: create
+# source:
+# resource:
+# apiVersion: argoproj.io/v1alpha1
+# kind: Workflow
+# metadata:
+# generateName: artifact-workflow-2-
+# spec:
+# entrypoint: detect
+# templates:
+# - name: detect
+# inputs:
+# artifacts:
+# - name: input-image
+# path: /input
+# s3:
+# # endpoint: mio-minio.default.svc:9000
+# # bucket: input # change
+# key: harry.jpg
+# # insecure: true
+# # accessKeySecret:
+# # key: accessKey
+# # name: artifacts-minio
+# # secretKeySecret:
+# # key: secretKey
+# # name: artifacts-minio
+# # useSDKCreds: true
+# # outputs:
+# # artifacts:
+# # - name: output-image
+# # path: /output
+# # s3:
+# # endpoint: mio-minio.default.svc:9000
+# # bucket: output # change
+# # key: PARAMETER
+# # insecure: true
+# # accessKeySecret:
+# # key: accessKey
+# # name: artifacts-minio
+# # secretKeySecret:
+# # key: secretKey
+# # name: artifacts-minio
+# # useSDKCreds: true
+# container:
+# image: face:latest
+# command: [python face.py]
+# args: ["/input", "/output"]
+# # parameters:
+# # - src:
+# # dependencyName: test-dep
+# # dataKey: notification.0.s3.object.key
+# # dest: spec.templates.0.inputs.artifacts.0.s3.key
diff --git a/argo/setup.sh b/argo/setup.sh
index 72a2339..493e866 100644
--- a/argo/setup.sh
+++ b/argo/setup.sh
@@ -1,30 +1,16 @@
#!/bin/sh
-export MINIO_ACCESSKEY="gio"
-export MINIO_SECRETKEY="p12345678"
-export MINIO_HOST="http://localhost:9000"
-
-# -- kubectl apply -n kube-system -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
-# helm install mio --set accessKey=${MINIO_ACCESSKEY},secretKey=${MINIO_SECRETKEY} stable/minio
-read -s
-kubectl port-forward svc/mio-minio 9000 &
-read -s
-mc config host add mio-minio ${MINIO_HOST} ${MINIO_ACCESSKEY} ${MINIO_SECRETKEY}
-mc mb mio-minio/input
+# kubectl apply -n kube-system -f mio-minio-secrets.yaml
-kubectl apply -n kube-system -f mio-minio-secrets.yaml
-
-
-
-helm repo add argo https://argoproj.github.io/argo-helm
-helm install my-argo --namespace kube-system argo/argo
-read -s
-kubectl -n kube-system port-forward deployment/my-argo-server 2746 &
-read -s
+# helm repo add argo https://argoproj.github.io/argo-helm
+# helm install my-argo --namespace kube-system argo/argo
+# read -s
+# kubectl -n kube-system port-forward deployment/my-argo-server 2746 &
+# read -s
kubectl apply -n kube-system -f argo-events-crds-install.yaml
+read -s
kubectl apply -n kube-system -f event-source.yaml
diff --git a/dgraph/schema.graphql b/dgraph/schema.graphql
new file mode 100644
index 0000000..1ce2e10
--- /dev/null
+++ b/dgraph/schema.graphql
@@ -0,0 +1,46 @@
+enum EntityType {
+ HUMAN
+ CAR
+}
+
+type Person {
+ id: Int!
+ fullName: String!
+ nick: String
+ imgs: [Image]
+}
+
+type Image {
+ id: Int! @search
+ objectPath: String! @search(by: [term])
+ segments: [ImageSegment]
+}
+
+type Point {
+ x: Int!
+ y: Int!
+}
+
+type ImageSegment {
+ id: Int!
+ upperLeft: Point!
+ lowerRight: Point!
+ represents: EntityType
+ depicts: Person
+}
+
+type A {
+ id: ID!
+}
+
+type B {
+ id: ID!
+ name: String
+ a: [A]
+}
+
+extend type A {
+ name: String @search(by: [term])
+ b: B @hasInverse(field: a)
+
+}
\ No newline at end of file
diff --git a/face/.DS_Store b/face/.DS_Store
index 5008ddf..1b83a3b 100644
--- a/face/.DS_Store
+++ b/face/.DS_Store
Binary files differ
diff --git a/face/Dockerfile b/face/Dockerfile
index 8b7641a..b0fc938 100644
--- a/face/Dockerfile
+++ b/face/Dockerfile
@@ -7,4 +7,9 @@
RUN pip install opencv-python-headless --no-cache-dir
RUN pip install matplotlib --no-cache-dir
-WORKDIR /face
\ No newline at end of file
+# COPY . /face
+WORKDIR /face
+
+# RUN rm -r -f output/*
+CMD python face.py detect input output
+# CMD python face.py classify output class
diff --git a/face/detected.jpg b/face/detected.jpg
deleted file mode 100644
index dfd5bfd..0000000
--- a/face/detected.jpg
+++ /dev/null
Binary files differ
diff --git a/face/face.py b/face/face.py
index 4dc874f..8501957 100644
--- a/face/face.py
+++ b/face/face.py
@@ -1,16 +1,46 @@
-from facenet_pytorch import MTCNN
-import cv2
-from PIL import Image, ImageDraw, ImageColor
-import numpy as np
-from matplotlib import pyplot as plt
+import os
+import sys
-mtcnn = MTCNN(keep_all=True)
+from facenet_pytorch import MTCNN, InceptionResnetV1
+from PIL import Image
-img = Image.open("face.jpg")
-boxes, _ = mtcnn.detect(img)
-draw = ImageDraw.Draw(img)
-for i, box in enumerate(boxes):
- draw.rectangle(((box[0], box[1]), (box[2], box[3])), outline="red")
-img.save("detected.jpg")
-#print(face)
+def detect(input_dir, output_dir):
+ mtcnn = MTCNN(keep_all=True)
+ resnet = InceptionResnetV1(pretrained='vggface2').eval()
+ for f in os.listdir(input_dir):
+ with Image.open(input_dir + "/" + f) as img:
+ # if img.filename != "input/P7260028.jpg":
+ # continue
+ print(img.filename)
+ for m in mtcnn(img):
+ print(resnet(m))
+
+ # embedding = resnet(mtcnn(img))
+ # print(len(embedding[0]))
+
+ # boxes, _ = mtcnn.detect(img)
+ # for i, box in enumerate(boxes):
+ # cropped = img.crop(box)
+ # cropped.save(output_dir + "/" + str(i) + "_" + f)
+
+
+def classify(input_dir, output_dir):
+ mtcnn = MTCNN()
+ resnet = InceptionResnetV1(pretrained='vggface2').eval()
+ for f in os.listdir(input_dir):
+ with Image.open(input_dir + "/" + f) as img:
+ print(img.filename)
+ embedding = resnet(mtcnn(img))
+ print(len(embedding[0]))
+
+
+def main():
+ if sys.argv[1] == "detect":
+ detect(sys.argv[2], sys.argv[3])
+ else:
+ classify(sys.argv[2], sys.argv[3])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/face/input/P7260009.jpg b/face/input/P7260009.jpg
new file mode 100644
index 0000000..c059fb9
--- /dev/null
+++ b/face/input/P7260009.jpg
Binary files differ
diff --git a/face/input/P7260011.jpg b/face/input/P7260011.jpg
new file mode 100644
index 0000000..ffe8e6a
--- /dev/null
+++ b/face/input/P7260011.jpg
Binary files differ
diff --git a/face/input/P7260013.jpg b/face/input/P7260013.jpg
new file mode 100644
index 0000000..6d954fc
--- /dev/null
+++ b/face/input/P7260013.jpg
Binary files differ
diff --git a/face/input/P7260020.jpg b/face/input/P7260020.jpg
new file mode 100644
index 0000000..61e6657
--- /dev/null
+++ b/face/input/P7260020.jpg
Binary files differ
diff --git a/face/input/P7260026.jpg b/face/input/P7260026.jpg
new file mode 100644
index 0000000..192735e
--- /dev/null
+++ b/face/input/P7260026.jpg
Binary files differ
diff --git a/face/input/P7260027.jpg b/face/input/P7260027.jpg
new file mode 100644
index 0000000..dd739f2
--- /dev/null
+++ b/face/input/P7260027.jpg
Binary files differ
diff --git a/face/input/P7260028.jpg b/face/input/P7260028.jpg
new file mode 100644
index 0000000..7a62a34
--- /dev/null
+++ b/face/input/P7260028.jpg
Binary files differ
diff --git a/face/input/P7260029.jpg b/face/input/P7260029.jpg
new file mode 100644
index 0000000..42789e3
--- /dev/null
+++ b/face/input/P7260029.jpg
Binary files differ
diff --git a/face/input/Picture 031.jpg b/face/input/Picture 031.jpg
new file mode 100644
index 0000000..bbe29c1
--- /dev/null
+++ b/face/input/Picture 031.jpg
Binary files differ
diff --git a/face/input/Picture 033.jpg b/face/input/Picture 033.jpg
new file mode 100644
index 0000000..dbffd80
--- /dev/null
+++ b/face/input/Picture 033.jpg
Binary files differ
diff --git a/face/input/Picture 035.jpg b/face/input/Picture 035.jpg
new file mode 100644
index 0000000..be2d4f1
--- /dev/null
+++ b/face/input/Picture 035.jpg
Binary files differ
diff --git a/face/input/Picture 039.jpg b/face/input/Picture 039.jpg
new file mode 100644
index 0000000..bf3d6c6
--- /dev/null
+++ b/face/input/Picture 039.jpg
Binary files differ
diff --git a/face/input/Picture 048.jpg b/face/input/Picture 048.jpg
new file mode 100644
index 0000000..088abea
--- /dev/null
+++ b/face/input/Picture 048.jpg
Binary files differ
diff --git a/face/input/Picture 057.jpg b/face/input/Picture 057.jpg
new file mode 100644
index 0000000..f522cbb
--- /dev/null
+++ b/face/input/Picture 057.jpg
Binary files differ
diff --git a/face/input/Picture 070.jpg b/face/input/Picture 070.jpg
new file mode 100644
index 0000000..ad4d11d
--- /dev/null
+++ b/face/input/Picture 070.jpg
Binary files differ
diff --git a/face/input/Picture 082.jpg b/face/input/Picture 082.jpg
new file mode 100644
index 0000000..3885845
--- /dev/null
+++ b/face/input/Picture 082.jpg
Binary files differ
diff --git a/face/input/Picture 083.jpg b/face/input/Picture 083.jpg
new file mode 100644
index 0000000..2f0e13a
--- /dev/null
+++ b/face/input/Picture 083.jpg
Binary files differ
diff --git a/face/input/Picture 091.jpg b/face/input/Picture 091.jpg
new file mode 100644
index 0000000..b3807eb
--- /dev/null
+++ b/face/input/Picture 091.jpg
Binary files differ
diff --git a/face/input/Picture 095.jpg b/face/input/Picture 095.jpg
new file mode 100644
index 0000000..4d98c81
--- /dev/null
+++ b/face/input/Picture 095.jpg
Binary files differ
diff --git a/face/gl.jpg b/face/input/gl.jpg
similarity index 100%
rename from face/gl.jpg
rename to face/input/gl.jpg
Binary files differ
diff --git a/face/harry.jpg b/face/input/harry.jpg
similarity index 100%
rename from face/harry.jpg
rename to face/input/harry.jpg
Binary files differ
diff --git a/face/output/0_P7260009.jpg b/face/output/0_P7260009.jpg
new file mode 100644
index 0000000..88cf7ea
--- /dev/null
+++ b/face/output/0_P7260009.jpg
Binary files differ
diff --git a/face/output/0_P7260011.jpg b/face/output/0_P7260011.jpg
new file mode 100644
index 0000000..ba2daf1
--- /dev/null
+++ b/face/output/0_P7260011.jpg
Binary files differ
diff --git a/face/output/0_P7260013.jpg b/face/output/0_P7260013.jpg
new file mode 100644
index 0000000..f0f0d97
--- /dev/null
+++ b/face/output/0_P7260013.jpg
Binary files differ
diff --git a/face/output/0_P7260020.jpg b/face/output/0_P7260020.jpg
new file mode 100644
index 0000000..5746118
--- /dev/null
+++ b/face/output/0_P7260020.jpg
Binary files differ
diff --git a/face/output/0_P7260026.jpg b/face/output/0_P7260026.jpg
new file mode 100644
index 0000000..78c8647
--- /dev/null
+++ b/face/output/0_P7260026.jpg
Binary files differ
diff --git a/face/output/0_P7260027.jpg b/face/output/0_P7260027.jpg
new file mode 100644
index 0000000..a1a7da1
--- /dev/null
+++ b/face/output/0_P7260027.jpg
Binary files differ
diff --git a/face/output/0_P7260028.jpg b/face/output/0_P7260028.jpg
new file mode 100644
index 0000000..7173654
--- /dev/null
+++ b/face/output/0_P7260028.jpg
Binary files differ
diff --git a/face/output/0_P7260029.jpg b/face/output/0_P7260029.jpg
new file mode 100644
index 0000000..3df841a
--- /dev/null
+++ b/face/output/0_P7260029.jpg
Binary files differ
diff --git a/face/output/0_Picture 031.jpg b/face/output/0_Picture 031.jpg
new file mode 100644
index 0000000..d9423e1
--- /dev/null
+++ b/face/output/0_Picture 031.jpg
Binary files differ
diff --git a/face/output/0_Picture 033.jpg b/face/output/0_Picture 033.jpg
new file mode 100644
index 0000000..c65a7e2
--- /dev/null
+++ b/face/output/0_Picture 033.jpg
Binary files differ
diff --git a/face/output/0_Picture 035.jpg b/face/output/0_Picture 035.jpg
new file mode 100644
index 0000000..48110ae
--- /dev/null
+++ b/face/output/0_Picture 035.jpg
Binary files differ
diff --git a/face/output/0_Picture 039.jpg b/face/output/0_Picture 039.jpg
new file mode 100644
index 0000000..a2fea06
--- /dev/null
+++ b/face/output/0_Picture 039.jpg
Binary files differ
diff --git a/face/output/0_Picture 048.jpg b/face/output/0_Picture 048.jpg
new file mode 100644
index 0000000..1f2d553
--- /dev/null
+++ b/face/output/0_Picture 048.jpg
Binary files differ
diff --git a/face/output/0_Picture 057.jpg b/face/output/0_Picture 057.jpg
new file mode 100644
index 0000000..cd00f05
--- /dev/null
+++ b/face/output/0_Picture 057.jpg
Binary files differ
diff --git a/face/output/0_Picture 070.jpg b/face/output/0_Picture 070.jpg
new file mode 100644
index 0000000..5018cb2
--- /dev/null
+++ b/face/output/0_Picture 070.jpg
Binary files differ
diff --git a/face/output/0_Picture 082.jpg b/face/output/0_Picture 082.jpg
new file mode 100644
index 0000000..cf380ec
--- /dev/null
+++ b/face/output/0_Picture 082.jpg
Binary files differ
diff --git a/face/output/0_Picture 083.jpg b/face/output/0_Picture 083.jpg
new file mode 100644
index 0000000..9ab1db8
--- /dev/null
+++ b/face/output/0_Picture 083.jpg
Binary files differ
diff --git a/face/output/0_Picture 091.jpg b/face/output/0_Picture 091.jpg
new file mode 100644
index 0000000..25a932a
--- /dev/null
+++ b/face/output/0_Picture 091.jpg
Binary files differ
diff --git a/face/output/0_Picture 095.jpg b/face/output/0_Picture 095.jpg
new file mode 100644
index 0000000..5890ba6
--- /dev/null
+++ b/face/output/0_Picture 095.jpg
Binary files differ
diff --git a/face/output/0_gl.jpg b/face/output/0_gl.jpg
new file mode 100644
index 0000000..a23ac3e
--- /dev/null
+++ b/face/output/0_gl.jpg
Binary files differ
diff --git a/face/output/0_harry.jpg b/face/output/0_harry.jpg
new file mode 100644
index 0000000..2a70ee6
--- /dev/null
+++ b/face/output/0_harry.jpg
Binary files differ
diff --git a/face/output/10_P7260026.jpg b/face/output/10_P7260026.jpg
new file mode 100644
index 0000000..1859fd5
--- /dev/null
+++ b/face/output/10_P7260026.jpg
Binary files differ
diff --git a/face/output/10_gl.jpg b/face/output/10_gl.jpg
new file mode 100644
index 0000000..10de102
--- /dev/null
+++ b/face/output/10_gl.jpg
Binary files differ
diff --git a/face/output/11_gl.jpg b/face/output/11_gl.jpg
new file mode 100644
index 0000000..0294c57
--- /dev/null
+++ b/face/output/11_gl.jpg
Binary files differ
diff --git a/face/output/12_gl.jpg b/face/output/12_gl.jpg
new file mode 100644
index 0000000..9057fe1
--- /dev/null
+++ b/face/output/12_gl.jpg
Binary files differ
diff --git a/face/output/13_gl.jpg b/face/output/13_gl.jpg
new file mode 100644
index 0000000..bf7d0e6
--- /dev/null
+++ b/face/output/13_gl.jpg
Binary files differ
diff --git a/face/output/1_P7260009.jpg b/face/output/1_P7260009.jpg
new file mode 100644
index 0000000..c043c1d
--- /dev/null
+++ b/face/output/1_P7260009.jpg
Binary files differ
diff --git a/face/output/1_P7260011.jpg b/face/output/1_P7260011.jpg
new file mode 100644
index 0000000..640e7ec
--- /dev/null
+++ b/face/output/1_P7260011.jpg
Binary files differ
diff --git a/face/output/1_P7260013.jpg b/face/output/1_P7260013.jpg
new file mode 100644
index 0000000..2ca0a74
--- /dev/null
+++ b/face/output/1_P7260013.jpg
Binary files differ
diff --git a/face/output/1_P7260020.jpg b/face/output/1_P7260020.jpg
new file mode 100644
index 0000000..fd97587
--- /dev/null
+++ b/face/output/1_P7260020.jpg
Binary files differ
diff --git a/face/output/1_P7260026.jpg b/face/output/1_P7260026.jpg
new file mode 100644
index 0000000..e2c859a
--- /dev/null
+++ b/face/output/1_P7260026.jpg
Binary files differ
diff --git a/face/output/1_P7260027.jpg b/face/output/1_P7260027.jpg
new file mode 100644
index 0000000..3fce948
--- /dev/null
+++ b/face/output/1_P7260027.jpg
Binary files differ
diff --git a/face/output/1_P7260028.jpg b/face/output/1_P7260028.jpg
new file mode 100644
index 0000000..ef20132
--- /dev/null
+++ b/face/output/1_P7260028.jpg
Binary files differ
diff --git a/face/output/1_P7260029.jpg b/face/output/1_P7260029.jpg
new file mode 100644
index 0000000..cf8f79c
--- /dev/null
+++ b/face/output/1_P7260029.jpg
Binary files differ
diff --git a/face/output/1_Picture 031.jpg b/face/output/1_Picture 031.jpg
new file mode 100644
index 0000000..9a1c3a4
--- /dev/null
+++ b/face/output/1_Picture 031.jpg
Binary files differ
diff --git a/face/output/1_Picture 033.jpg b/face/output/1_Picture 033.jpg
new file mode 100644
index 0000000..d831d25
--- /dev/null
+++ b/face/output/1_Picture 033.jpg
Binary files differ
diff --git a/face/output/1_Picture 035.jpg b/face/output/1_Picture 035.jpg
new file mode 100644
index 0000000..7f64d58
--- /dev/null
+++ b/face/output/1_Picture 035.jpg
Binary files differ
diff --git a/face/output/1_Picture 039.jpg b/face/output/1_Picture 039.jpg
new file mode 100644
index 0000000..db0d4f1
--- /dev/null
+++ b/face/output/1_Picture 039.jpg
Binary files differ
diff --git a/face/output/1_Picture 048.jpg b/face/output/1_Picture 048.jpg
new file mode 100644
index 0000000..3eb1f7a
--- /dev/null
+++ b/face/output/1_Picture 048.jpg
Binary files differ
diff --git a/face/output/1_Picture 082.jpg b/face/output/1_Picture 082.jpg
new file mode 100644
index 0000000..c2b45f1
--- /dev/null
+++ b/face/output/1_Picture 082.jpg
Binary files differ
diff --git a/face/output/1_Picture 083.jpg b/face/output/1_Picture 083.jpg
new file mode 100644
index 0000000..d0e7679
--- /dev/null
+++ b/face/output/1_Picture 083.jpg
Binary files differ
diff --git a/face/output/1_Picture 091.jpg b/face/output/1_Picture 091.jpg
new file mode 100644
index 0000000..dbd409a
--- /dev/null
+++ b/face/output/1_Picture 091.jpg
Binary files differ
diff --git a/face/output/1_gl.jpg b/face/output/1_gl.jpg
new file mode 100644
index 0000000..2486358
--- /dev/null
+++ b/face/output/1_gl.jpg
Binary files differ
diff --git a/face/output/1_harry.jpg b/face/output/1_harry.jpg
new file mode 100644
index 0000000..867748b
--- /dev/null
+++ b/face/output/1_harry.jpg
Binary files differ
diff --git a/face/output/2_P7260009.jpg b/face/output/2_P7260009.jpg
new file mode 100644
index 0000000..0bc2495
--- /dev/null
+++ b/face/output/2_P7260009.jpg
Binary files differ
diff --git a/face/output/2_P7260011.jpg b/face/output/2_P7260011.jpg
new file mode 100644
index 0000000..596d900
--- /dev/null
+++ b/face/output/2_P7260011.jpg
Binary files differ
diff --git a/face/output/2_P7260013.jpg b/face/output/2_P7260013.jpg
new file mode 100644
index 0000000..625c87b
--- /dev/null
+++ b/face/output/2_P7260013.jpg
Binary files differ
diff --git a/face/output/2_P7260020.jpg b/face/output/2_P7260020.jpg
new file mode 100644
index 0000000..c2bf889
--- /dev/null
+++ b/face/output/2_P7260020.jpg
Binary files differ
diff --git a/face/output/2_P7260026.jpg b/face/output/2_P7260026.jpg
new file mode 100644
index 0000000..0fddf82
--- /dev/null
+++ b/face/output/2_P7260026.jpg
Binary files differ
diff --git a/face/output/2_P7260027.jpg b/face/output/2_P7260027.jpg
new file mode 100644
index 0000000..328efbd
--- /dev/null
+++ b/face/output/2_P7260027.jpg
Binary files differ
diff --git a/face/output/2_P7260028.jpg b/face/output/2_P7260028.jpg
new file mode 100644
index 0000000..712c142
--- /dev/null
+++ b/face/output/2_P7260028.jpg
Binary files differ
diff --git a/face/output/2_P7260029.jpg b/face/output/2_P7260029.jpg
new file mode 100644
index 0000000..5c29def
--- /dev/null
+++ b/face/output/2_P7260029.jpg
Binary files differ
diff --git a/face/output/2_Picture 031.jpg b/face/output/2_Picture 031.jpg
new file mode 100644
index 0000000..933f5cc
--- /dev/null
+++ b/face/output/2_Picture 031.jpg
Binary files differ
diff --git a/face/output/2_Picture 033.jpg b/face/output/2_Picture 033.jpg
new file mode 100644
index 0000000..af7357c
--- /dev/null
+++ b/face/output/2_Picture 033.jpg
Binary files differ
diff --git a/face/output/2_Picture 039.jpg b/face/output/2_Picture 039.jpg
new file mode 100644
index 0000000..6f8dc1b
--- /dev/null
+++ b/face/output/2_Picture 039.jpg
Binary files differ
diff --git a/face/output/2_Picture 048.jpg b/face/output/2_Picture 048.jpg
new file mode 100644
index 0000000..0bdac9d
--- /dev/null
+++ b/face/output/2_Picture 048.jpg
Binary files differ
diff --git a/face/output/2_Picture 082.jpg b/face/output/2_Picture 082.jpg
new file mode 100644
index 0000000..87ad2de
--- /dev/null
+++ b/face/output/2_Picture 082.jpg
Binary files differ
diff --git a/face/output/2_gl.jpg b/face/output/2_gl.jpg
new file mode 100644
index 0000000..6541d7b
--- /dev/null
+++ b/face/output/2_gl.jpg
Binary files differ
diff --git a/face/output/2_harry.jpg b/face/output/2_harry.jpg
new file mode 100644
index 0000000..b6526f8
--- /dev/null
+++ b/face/output/2_harry.jpg
Binary files differ
diff --git a/face/output/3_P7260009.jpg b/face/output/3_P7260009.jpg
new file mode 100644
index 0000000..20b529f
--- /dev/null
+++ b/face/output/3_P7260009.jpg
Binary files differ
diff --git a/face/output/3_P7260011.jpg b/face/output/3_P7260011.jpg
new file mode 100644
index 0000000..07483f4
--- /dev/null
+++ b/face/output/3_P7260011.jpg
Binary files differ
diff --git a/face/output/3_P7260013.jpg b/face/output/3_P7260013.jpg
new file mode 100644
index 0000000..a2024ed
--- /dev/null
+++ b/face/output/3_P7260013.jpg
Binary files differ
diff --git a/face/output/3_P7260026.jpg b/face/output/3_P7260026.jpg
new file mode 100644
index 0000000..4dde7c1
--- /dev/null
+++ b/face/output/3_P7260026.jpg
Binary files differ
diff --git a/face/output/3_P7260027.jpg b/face/output/3_P7260027.jpg
new file mode 100644
index 0000000..927ff34
--- /dev/null
+++ b/face/output/3_P7260027.jpg
Binary files differ
diff --git a/face/output/3_P7260028.jpg b/face/output/3_P7260028.jpg
new file mode 100644
index 0000000..a4abcd4
--- /dev/null
+++ b/face/output/3_P7260028.jpg
Binary files differ
diff --git a/face/output/3_P7260029.jpg b/face/output/3_P7260029.jpg
new file mode 100644
index 0000000..9f0f0ad
--- /dev/null
+++ b/face/output/3_P7260029.jpg
Binary files differ
diff --git a/face/output/3_Picture 031.jpg b/face/output/3_Picture 031.jpg
new file mode 100644
index 0000000..fe23c77
--- /dev/null
+++ b/face/output/3_Picture 031.jpg
Binary files differ
diff --git a/face/output/3_Picture 039.jpg b/face/output/3_Picture 039.jpg
new file mode 100644
index 0000000..a15005c
--- /dev/null
+++ b/face/output/3_Picture 039.jpg
Binary files differ
diff --git a/face/output/3_Picture 048.jpg b/face/output/3_Picture 048.jpg
new file mode 100644
index 0000000..86c6caf
--- /dev/null
+++ b/face/output/3_Picture 048.jpg
Binary files differ
diff --git a/face/output/3_Picture 082.jpg b/face/output/3_Picture 082.jpg
new file mode 100644
index 0000000..fa7bce9
--- /dev/null
+++ b/face/output/3_Picture 082.jpg
Binary files differ
diff --git a/face/output/3_gl.jpg b/face/output/3_gl.jpg
new file mode 100644
index 0000000..8a9fe6b
--- /dev/null
+++ b/face/output/3_gl.jpg
Binary files differ
diff --git a/face/output/4_P7260009.jpg b/face/output/4_P7260009.jpg
new file mode 100644
index 0000000..670ab77
--- /dev/null
+++ b/face/output/4_P7260009.jpg
Binary files differ
diff --git a/face/output/4_P7260011.jpg b/face/output/4_P7260011.jpg
new file mode 100644
index 0000000..a4e3fda
--- /dev/null
+++ b/face/output/4_P7260011.jpg
Binary files differ
diff --git a/face/output/4_P7260013.jpg b/face/output/4_P7260013.jpg
new file mode 100644
index 0000000..92eaf7c
--- /dev/null
+++ b/face/output/4_P7260013.jpg
Binary files differ
diff --git a/face/output/4_P7260026.jpg b/face/output/4_P7260026.jpg
new file mode 100644
index 0000000..12710a2
--- /dev/null
+++ b/face/output/4_P7260026.jpg
Binary files differ
diff --git a/face/output/4_P7260027.jpg b/face/output/4_P7260027.jpg
new file mode 100644
index 0000000..ec45b9f
--- /dev/null
+++ b/face/output/4_P7260027.jpg
Binary files differ
diff --git a/face/output/4_P7260028.jpg b/face/output/4_P7260028.jpg
new file mode 100644
index 0000000..6a57733
--- /dev/null
+++ b/face/output/4_P7260028.jpg
Binary files differ
diff --git a/face/output/4_P7260029.jpg b/face/output/4_P7260029.jpg
new file mode 100644
index 0000000..b9bc659
--- /dev/null
+++ b/face/output/4_P7260029.jpg
Binary files differ
diff --git a/face/output/4_Picture 031.jpg b/face/output/4_Picture 031.jpg
new file mode 100644
index 0000000..a55e3af
--- /dev/null
+++ b/face/output/4_Picture 031.jpg
Binary files differ
diff --git a/face/output/4_Picture 039.jpg b/face/output/4_Picture 039.jpg
new file mode 100644
index 0000000..d72ce4d
--- /dev/null
+++ b/face/output/4_Picture 039.jpg
Binary files differ
diff --git a/face/output/4_gl.jpg b/face/output/4_gl.jpg
new file mode 100644
index 0000000..8d83101
--- /dev/null
+++ b/face/output/4_gl.jpg
Binary files differ
diff --git a/face/output/5_P7260009.jpg b/face/output/5_P7260009.jpg
new file mode 100644
index 0000000..203c831
--- /dev/null
+++ b/face/output/5_P7260009.jpg
Binary files differ
diff --git a/face/output/5_P7260011.jpg b/face/output/5_P7260011.jpg
new file mode 100644
index 0000000..c8449b8
--- /dev/null
+++ b/face/output/5_P7260011.jpg
Binary files differ
diff --git a/face/output/5_P7260013.jpg b/face/output/5_P7260013.jpg
new file mode 100644
index 0000000..ce9aec3
--- /dev/null
+++ b/face/output/5_P7260013.jpg
Binary files differ
diff --git a/face/output/5_P7260026.jpg b/face/output/5_P7260026.jpg
new file mode 100644
index 0000000..4170be9
--- /dev/null
+++ b/face/output/5_P7260026.jpg
Binary files differ
diff --git a/face/output/5_P7260027.jpg b/face/output/5_P7260027.jpg
new file mode 100644
index 0000000..65b08ad
--- /dev/null
+++ b/face/output/5_P7260027.jpg
Binary files differ
diff --git a/face/output/5_P7260028.jpg b/face/output/5_P7260028.jpg
new file mode 100644
index 0000000..b2b7482
--- /dev/null
+++ b/face/output/5_P7260028.jpg
Binary files differ
diff --git a/face/output/5_P7260029.jpg b/face/output/5_P7260029.jpg
new file mode 100644
index 0000000..438f27c
--- /dev/null
+++ b/face/output/5_P7260029.jpg
Binary files differ
diff --git a/face/output/5_Picture 031.jpg b/face/output/5_Picture 031.jpg
new file mode 100644
index 0000000..eedf822
--- /dev/null
+++ b/face/output/5_Picture 031.jpg
Binary files differ
diff --git a/face/output/5_Picture 039.jpg b/face/output/5_Picture 039.jpg
new file mode 100644
index 0000000..dc6d473
--- /dev/null
+++ b/face/output/5_Picture 039.jpg
Binary files differ
diff --git a/face/output/5_gl.jpg b/face/output/5_gl.jpg
new file mode 100644
index 0000000..04aba8c
--- /dev/null
+++ b/face/output/5_gl.jpg
Binary files differ
diff --git a/face/output/6_P7260009.jpg b/face/output/6_P7260009.jpg
new file mode 100644
index 0000000..e053d76
--- /dev/null
+++ b/face/output/6_P7260009.jpg
Binary files differ
diff --git a/face/output/6_P7260011.jpg b/face/output/6_P7260011.jpg
new file mode 100644
index 0000000..871c89a
--- /dev/null
+++ b/face/output/6_P7260011.jpg
Binary files differ
diff --git a/face/output/6_P7260026.jpg b/face/output/6_P7260026.jpg
new file mode 100644
index 0000000..28e7e8b
--- /dev/null
+++ b/face/output/6_P7260026.jpg
Binary files differ
diff --git a/face/output/6_P7260027.jpg b/face/output/6_P7260027.jpg
new file mode 100644
index 0000000..bdfd2c4
--- /dev/null
+++ b/face/output/6_P7260027.jpg
Binary files differ
diff --git a/face/output/6_P7260028.jpg b/face/output/6_P7260028.jpg
new file mode 100644
index 0000000..5c8c33c
--- /dev/null
+++ b/face/output/6_P7260028.jpg
Binary files differ
diff --git a/face/output/6_P7260029.jpg b/face/output/6_P7260029.jpg
new file mode 100644
index 0000000..ac96ac9
--- /dev/null
+++ b/face/output/6_P7260029.jpg
Binary files differ
diff --git a/face/output/6_Picture 031.jpg b/face/output/6_Picture 031.jpg
new file mode 100644
index 0000000..911e74c
--- /dev/null
+++ b/face/output/6_Picture 031.jpg
Binary files differ
diff --git a/face/output/6_Picture 039.jpg b/face/output/6_Picture 039.jpg
new file mode 100644
index 0000000..c52fabe
--- /dev/null
+++ b/face/output/6_Picture 039.jpg
Binary files differ
diff --git a/face/output/6_gl.jpg b/face/output/6_gl.jpg
new file mode 100644
index 0000000..ec3f399
--- /dev/null
+++ b/face/output/6_gl.jpg
Binary files differ
diff --git a/face/output/7_P7260011.jpg b/face/output/7_P7260011.jpg
new file mode 100644
index 0000000..dc128f2
--- /dev/null
+++ b/face/output/7_P7260011.jpg
Binary files differ
diff --git a/face/output/7_P7260026.jpg b/face/output/7_P7260026.jpg
new file mode 100644
index 0000000..068254b
--- /dev/null
+++ b/face/output/7_P7260026.jpg
Binary files differ
diff --git a/face/output/7_P7260027.jpg b/face/output/7_P7260027.jpg
new file mode 100644
index 0000000..7c9b3fb
--- /dev/null
+++ b/face/output/7_P7260027.jpg
Binary files differ
diff --git a/face/output/7_P7260028.jpg b/face/output/7_P7260028.jpg
new file mode 100644
index 0000000..8e83e9c
--- /dev/null
+++ b/face/output/7_P7260028.jpg
Binary files differ
diff --git a/face/output/7_Picture 031.jpg b/face/output/7_Picture 031.jpg
new file mode 100644
index 0000000..da6c8cb
--- /dev/null
+++ b/face/output/7_Picture 031.jpg
Binary files differ
diff --git a/face/output/7_gl.jpg b/face/output/7_gl.jpg
new file mode 100644
index 0000000..0bf8ff3
--- /dev/null
+++ b/face/output/7_gl.jpg
Binary files differ
diff --git a/face/output/8_P7260011.jpg b/face/output/8_P7260011.jpg
new file mode 100644
index 0000000..0bb4326
--- /dev/null
+++ b/face/output/8_P7260011.jpg
Binary files differ
diff --git a/face/output/8_P7260026.jpg b/face/output/8_P7260026.jpg
new file mode 100644
index 0000000..cbdf84b
--- /dev/null
+++ b/face/output/8_P7260026.jpg
Binary files differ
diff --git a/face/output/8_P7260027.jpg b/face/output/8_P7260027.jpg
new file mode 100644
index 0000000..703180f
--- /dev/null
+++ b/face/output/8_P7260027.jpg
Binary files differ
diff --git a/face/output/8_P7260028.jpg b/face/output/8_P7260028.jpg
new file mode 100644
index 0000000..6503128
--- /dev/null
+++ b/face/output/8_P7260028.jpg
Binary files differ
diff --git a/face/output/8_gl.jpg b/face/output/8_gl.jpg
new file mode 100644
index 0000000..bc3022e
--- /dev/null
+++ b/face/output/8_gl.jpg
Binary files differ
diff --git a/face/output/9_P7260011.jpg b/face/output/9_P7260011.jpg
new file mode 100644
index 0000000..c786abc
--- /dev/null
+++ b/face/output/9_P7260011.jpg
Binary files differ
diff --git a/face/output/9_P7260026.jpg b/face/output/9_P7260026.jpg
new file mode 100644
index 0000000..452308d
--- /dev/null
+++ b/face/output/9_P7260026.jpg
Binary files differ
diff --git a/face/output/9_P7260027.jpg b/face/output/9_P7260027.jpg
new file mode 100644
index 0000000..663e51a
--- /dev/null
+++ b/face/output/9_P7260027.jpg
Binary files differ
diff --git a/face/output/9_P7260028.jpg b/face/output/9_P7260028.jpg
new file mode 100644
index 0000000..dab18c5
--- /dev/null
+++ b/face/output/9_P7260028.jpg
Binary files differ
diff --git a/face/output/9_gl.jpg b/face/output/9_gl.jpg
new file mode 100644
index 0000000..494039f
--- /dev/null
+++ b/face/output/9_gl.jpg
Binary files differ
diff --git a/minio/configure-nats.yaml b/minio/configure-nats.yaml
new file mode 100644
index 0000000..eb5bb9c
--- /dev/null
+++ b/minio/configure-nats.yaml
@@ -0,0 +1,23 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: configure-nats
+ labels:
+ app: configure-nats
+spec:
+ volumes:
+ - name: minio-secrets
+ secret:
+ secretName: minio-creds-secret
+ containers:
+ - name: mc
+ image: minio/mc:RELEASE.2020-04-04T05-28-55Z
+ imagePullPolicy: IfNotPresent
+ volumeMounts:
+ - name: minio-secrets
+ readOnly: true
+ mountPath: "/etc/minio-secrets"
+ command: ["/bin/sh", "-c"]
+ args: ["mc config host add mio http://minio-hl-svc:9000 $(cat /etc/minio-secrets/accesskey) $(cat /etc/minio-secrets/secretkey) && mc mb mio/input && mc admin config set mio notify_nats:input streaming_max_pub_acks_in_flight=\"10\" subject=\"input-objects\" address=\"nats.svc:4222\" ping_interval=\"0\" queue_limit=\"1000\" tls=\"off\" streaming_async=\"on\" queue_dir=\"/data/events\" streaming_cluster_id=\"nats-streaming\" && mc admin service restart mio && mc event add mio/input arn:minio:sqs::input:nats"]
+ restartPolicy: Never
+
diff --git a/minio/deployment.yaml b/minio/deployment.yaml
new file mode 100644
index 0000000..a480be2
--- /dev/null
+++ b/minio/deployment.yaml
@@ -0,0 +1,108 @@
+apiVersion: miniocontroller.min.io/v1beta1
+kind: MinIOInstance
+metadata:
+ name: minio
+## If specified, MinIOInstance pods will be dispatched by specified scheduler.
+## If not specified, the pod will be dispatched by default scheduler.
+# scheduler:
+# name: my-custom-scheduler
+spec:
+ selector:
+ matchLabels:
+ app: minio # Should match spec.metadata.labels
+ ## Add metadata to the all pods created by the StatefulSet
+ metadata:
+ labels:
+ app: minio # Should match spec.selector.matchLabels
+ annotations:
+ prometheus.io/path: /minio/prometheus/metrics
+ prometheus.io/port: "9000"
+ prometheus.io/scrape: "true"
+ ## Registry location and Tag to download MinIO Server image
+ image: minio/minio:RELEASE.2020-01-03T19-12-21Z
+ ## Secret with credentials to be used by MinIO instance.
+ credsSecret:
+ name: minio-creds-secret
+ ## Supply number of replicas.
+ ## For standalone mode, supply 1. For distributed mode, supply 4 or more (should be even).
+ ## Note that the operator does not support upgrading from standalone to distributed mode.
+ replicas: 1
+ ## PodManagement policy for pods created by StatefulSet. Can be "OrderedReady" or "Parallel"
+ ## Refer https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#pod-management-policy
+ ## for details. Defaults to "Parallel"
+ ## If set to "OrderedReady", then disable Readiness checks below. Readiness check will only
+ ## work if PodManagementPolicy is set to "Parallel".
+ podManagementPolicy: Parallel
+ ## Enable Kubernetes based certificate generation and signing as explained in
+ ## https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster
+ requestAutoCert: false
+ ## Used when "requestAutoCert" is set to true. Set CommonName for the auto-generated certificate.
+ ## Internal DNS name for the pod will be used if CommonName is not provided.
+ certConfig:
+ commonName: ""
+ organizationName: []
+ dnsNames: []
+
+ ## Used to specify a toleration for a pod
+ # tolerations:
+ # - effect: NoSchedule
+ # key: dedicated
+ # operator: Equal
+ # value: storage
+ ## Add environment variables to be set in MinIO container (https://github.com/minio/minio/tree/master/docs/config)
+ env:
+ - name: MINIO_BROWSER
+ value: "on"
+ # - name: MINIO_STORAGE_CLASS_RRS
+ # value: "EC:2"
+ ## Configure resource requests and limits for MinIO containers
+ resources:
+ requests:
+ memory: 512Mi
+ cpu: 250m
+ ## Liveness probe detects situations where MinIO server instance
+ ## is not working properly and needs restart. Kubernetes automatically
+ ## restarts the pods if liveness checks fail.
+ liveness:
+ httpGet:
+ path: /minio/health/live
+ port: 9000
+ initialDelaySeconds: 120
+ periodSeconds: 20
+ ## Readiness probe detects situations when MinIO server instance
+ ## is not ready to accept traffic. Kubernetes doesn't forward
+ ## traffic to the pod while readiness checks fail.
+ ## Readiness check will only work if PodManagementPolicy is set to "Parallel".
+ ## Disable this check if you're setting PodManagementPolicy to "OrderedReady".
+ readiness:
+ httpGet:
+ path: /minio/health/ready
+ port: 9000
+ initialDelaySeconds: 120
+ periodSeconds: 20
+ ## nodeSelector parameters for MinIO Pods. It specifies a map of key-value pairs. For the pod to be
+ ## eligible to run on a node, the node must have each of the
+ ## indicated key-value pairs as labels.
+ ## Read more here: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
+ # nodeSelector:
+ # disktype: ssd
+ ## Affinity settings for MinIO pods. Read more about affinity
+ ## here: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity.
+ # affinity:
+ ## Secret with certificates to configure TLS for MinIO certs. Create secrets as explained
+ ## here: https://github.com/minio/minio/tree/master/docs/tls/kubernetes#2-create-kubernetes-secret
+ # externalCertSecret:
+ # name: tls-ssl-minio
+ ## Mountpath where PV will be mounted inside container(s). Defaults to "/export".
+ # mountPath: /export
+ ## Subpath inside Mountpath where MinIO starts. Defaults to "".
+ # subPath: /data
+ volumeClaimTemplate:
+ metadata:
+ name: data
+ spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 10Gi
\ No newline at end of file
diff --git a/minio/operator.yaml b/minio/operator.yaml
new file mode 100644
index 0000000..3b9910e
--- /dev/null
+++ b/minio/operator.yaml
@@ -0,0 +1,136 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: minio-operator-ns
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: minioinstances.miniocontroller.min.io
+spec:
+ group: miniocontroller.min.io
+ version: v1beta1
+ scope: Namespaced
+ names:
+ kind: MinIOInstance
+ singular: minioinstance
+ plural: minioinstances
+ preserveUnknownFields: true
+ validation:
+ # openAPIV3Schema is the schema for validating custom objects.
+ # Refer https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#specifying-a-structural-schema
+ # for more details
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ replicas:
+ type: integer
+ minimum: 1
+ maximum: 32
+ version:
+ type: string
+ mountpath:
+ type: string
+ subpath:
+ type: string
+ additionalPrinterColumns:
+ - name: Replicas
+ type: integer
+ JSONPath: ".spec.replicas"
+---
+apiVersion: rbac.authorization.k8s.io/v1beta1
+kind: ClusterRole
+metadata:
+ name: minio-operator-role
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - namespaces
+ - secrets
+ - pods
+ - services
+ - events
+ verbs:
+ - get
+ - watch
+ - create
+ - list
+ - patch
+- apiGroups:
+ - apps
+ resources:
+ - statefulsets
+ verbs:
+ - get
+ - create
+ - list
+ - patch
+ - watch
+ - update
+- apiGroups:
+ - "certificates.k8s.io"
+ resources:
+ - "certificatesigningrequests"
+ - "certificatesigningrequests/approval"
+ - "certificatesigningrequests/status"
+ verbs:
+ - update
+ - create
+ - get
+- apiGroups:
+ - miniocontroller.min.io
+ resources:
+ - "*"
+ verbs:
+ - "*"
+- apiGroups:
+ - min.io
+ resources:
+ - "*"
+ verbs:
+ - "*"
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: minio-operator-sa
+ namespace: minio-operator-ns
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+ name: minio-operator-binding
+ namespace: minio-operator-ns
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: minio-operator-role
+subjects:
+- kind: ServiceAccount
+ name: minio-operator-sa
+ namespace: minio-operator-ns
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: minio-operator
+ namespace: minio-operator-ns
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ name: minio-operator
+ template:
+ metadata:
+ labels:
+ name: minio-operator
+ spec:
+ serviceAccountName: minio-operator-sa
+ containers:
+ - name: minio-operator
+ image: minio/k8s-operator:1.0.7
+ imagePullPolicy: IfNotPresent
\ No newline at end of file
diff --git a/minio/secrets.yaml b/minio/secrets.yaml
new file mode 100644
index 0000000..8672768
--- /dev/null
+++ b/minio/secrets.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: minio-creds-secret
+type: Opaque
+data:
+ accesskey: bWluaW8= # base 64 encoded "minio" (echo -n 'minio' | base64)
+ secretkey: bWluaW8xMjM= # based 64 encoded "minio123" (echo -n 'minio123' | base64)
diff --git a/minio/setup.sh b/minio/setup.sh
new file mode 100644
index 0000000..447d9cd
--- /dev/null
+++ b/minio/setup.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+kubectl create -f operator.yaml
+kubectl create namespace minio
+kubectl create -n minio -f secrets.yaml
+kubectl create -n minio -f deployment.yaml
diff --git a/nats/deployment.yaml b/nats/deployment.yaml
new file mode 100644
index 0000000..66418cb
--- /dev/null
+++ b/nats/deployment.yaml
@@ -0,0 +1,15 @@
+---
+apiVersion: "nats.io/v1alpha2"
+kind: "NatsCluster"
+metadata:
+ name: "nats"
+spec:
+ size: 1
+---
+apiVersion: "streaming.nats.io/v1alpha1"
+kind: "NatsStreamingCluster"
+metadata:
+ name: "nats-streaming"
+spec:
+ size: 2
+ natsSvc: "nats"
\ No newline at end of file
diff --git a/nats/setup.sh b/nats/setup.sh
new file mode 100644
index 0000000..e988ea3
--- /dev/null
+++ b/nats/setup.sh
@@ -0,0 +1,11 @@
+# kubectl apply -f https://github.com/nats-io/nats-operator/releases/download/v0.5.0/00-prereqs.yaml
+# kubectl apply -f https://github.com/nats-io/nats-operator/releases/download/v0.5.0/10-deployment.yaml
+
+# # Install NATS Streaming Operator on default namespace
+# kubectl apply -f https://raw.githubusercontent.com/nats-io/nats-streaming-operator/master/deploy/default-rbac.yaml
+
+# kubectl apply -f https://raw.githubusercontent.com/nats-io/nats-streaming-operator/master/deploy/deployment.yaml
+
+# sleep 10
+
+kubectl apply -f deployment.yaml