text:
Q: How do I solve kubeflow notebook internal server error When I run this kubeflow tutorial notebook, I got ApiException: (500) Reason: Internal Server Error.
Environment:

*

*minikube version: (Server version v1.21.14)

*kubectl version: v1.21.14
Code snippet:
# Specify pipeline argument values
arguments = {'a': '7', 'b': '8'}
# Launch a pipeline run given the pipeline function definition
kfp.Client().create_run_from_pipeline_func(calc_pipeline, arguments=arguments,
                                           experiment_name=EXPERIMENT_NAME)
# The generated links below lead to the Experiment page and the pipeline run details page, respectively

Error message:
--------------------------------------------------------------------------- ApiException                              Traceback (most recent call
> last) Input In [8], in <cell line: 4>()
>       2 arguments = {'a': '7', 'b': '8'}
>       3 # Launch a pipeline run given the pipeline function definition
> ----> 4 kfp.Client().create_run_from_pipeline_func(calc_pipeline, arguments=arguments,
>       5                                            experiment_name=EXPERIMENT_NAME)
>
> File /opt/conda/lib/python3.8/site-packages/kfp/_client.py:781, in
> Client.create_run_from_pipeline_func(self, pipeline_func, arguments,
> run_name, experiment_name, pipeline_conf, namespace, mode,
> launcher_image, pipeline_root)
>     775 pipeline_package_path = os.path.join(tmpdir, 'pipeline.yaml')
>     776 compiler.Compiler(mode=mode, launcher_image=launcher_image).compile(
>     777   pipeline_func=pipeline_func,
>     778   package_path=pipeline_package_path,
>     779   pipeline_conf=pipeline_conf)
> --> 781 return self.create_run_from_pipeline_package(
>     782   pipeline_file=pipeline_package_path,
>     783   arguments=arguments,
>     784   run_name=run_name,
>     785   experiment_name=experiment_name,
>     786   namespace=namespace,
>     787   pipeline_root=pipeline_root,
>     788 )
>
> File /opt/conda/lib/python3.8/site-packages/kfp/_client.py:842, in
> Client.create_run_from_pipeline_package(self, pipeline_file,
> arguments, run_name, experiment_name, namespace, pipeline_root)
>     838 experiment_name = overridden_experiment_name or 'Default'
>     839 run_name = run_name or (pipeline_name + ' ' +
>     840                         datetime.datetime.now().strftime(
>     841                             '%Y-%m-%d %H-%M-%S'))
> --> 842 experiment = self.create_experiment(name=experiment_name, namespace=namespace)
>     843 run_info = self.run_pipeline(
>     844     experiment_id=experiment.id,
>     845     job_name=run_name,
>     846     pipeline_package_path=pipeline_file,
>     847     params=arguments,
>     848     pipeline_root=pipeline_root)
>     849 return RunPipelineResult(self, run_info)
>
> File /opt/conda/lib/python3.8/site-packages/kfp/_client.py:366, in
> Client.create_experiment(self, name, description, namespace)
>     364 experiment = None
>     365 try:
> --> 366   experiment = self.get_experiment(experiment_name=name, namespace=namespace)
>     367 except ValueError as error:
>     368   # Ignore error if the experiment does not exist.
>     369   if not str(error).startswith('No experiment is found with name'):
>
> File /opt/conda/lib/python3.8/site-packages/kfp/_client.py:478, in
> Client.get_experiment(self, experiment_id, experiment_name, namespace)
>     468 experiment_filter = json.dumps({
>     469     "predicates": [
>     470       {     (...)
>     475     ]
>     476   })
>     477 if namespace:
> --> 478   result = self._experiment_api.list_experiment(
>     479     filter=experiment_filter,
>     480     resource_reference_key_type=kfp_server_api.models.api_resource_type.ApiResourceType.NAMESPACE,
>
>     481     resource_reference_key_id=namespace)
>     482 else:
>     483   result = self._experiment_api.list_experiment(filter=experiment_filter)
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api/experiment_service_api.py:567,
> in ExperimentServiceApi.list_experiment(self, **kwargs)
>     532 """Finds all experiments. Supports pagination, and sorting on certain fields.  # noqa: E501
>     533
>     534 This method makes a synchronous HTTP request by default. To make an    (...)
>     564 :rtype: ApiListExperimentsResponse
>     565 """
>     566 kwargs['_return_http_data_only'] = True
> --> 567 return self.list_experiment_with_http_info(**kwargs)
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api/experiment_service_api.py:668,
> in ExperimentServiceApi.list_experiment_with_http_info(self, **kwargs)
>     665 # Authentication setting
>     666 auth_settings = ['Bearer']  # noqa: E501
> --> 668 return self.api_client.call_api(
>     669     '/apis/v1beta1/experiments', 'GET',
>     670     path_params,
>     671     query_params,
>     672     header_params,
>     673     body=body_params,
>     674     post_params=form_params,
>     675     files=local_var_files,
>     676     response_type='ApiListExperimentsResponse',  # noqa: E501
>     677     auth_settings=auth_settings,
>     678     async_req=local_var_params.get('async_req'),
>     679     _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
>     680     _preload_content=local_var_params.get('_preload_content', True),
>     681     _request_timeout=local_var_params.get('_request_timeout'),
>     682     collection_formats=collection_formats)
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api_client.py:364,
> in ApiClient.call_api(self, resource_path, method, path_params,
> query_params, header_params, body, post_params, files, response_type,
> auth_settings, async_req, _return_http_data_only, collection_formats,
> _preload_content, _request_timeout, _host)
>     327 """Makes the HTTP request (synchronous) and returns deserialized data.
>     328
>     329 To make an async_req request, set the async_req parameter.    (...)
>     361     then the method will return the response directly.
>     362 """
>     363 if not async_req:
> --> 364     return self.__call_api(resource_path, method,
>     365                            path_params, query_params, header_params,
>     366                            body, post_params, files,
>     367                            response_type, auth_settings,
>     368                            _return_http_data_only, collection_formats,
>     369                            _preload_content, _request_timeout, _host)
>     371 return self.pool.apply_async(self.__call_api, (resource_path,
>     372                                                method, path_params,
>     373                                                query_params,    (...)
>     381                                                _request_timeout,
>     382                                                _host))
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api_client.py:188,
> in ApiClient.__call_api(self, resource_path, method, path_params,
> query_params, header_params, body, post_params, files, response_type,
> auth_settings, _return_http_data_only, collection_formats,
> _preload_content, _request_timeout, _host)
>     186 except ApiException as e:
>     187     e.body = e.body.decode('utf-8') if six.PY3 else e.body
> --> 188     raise e
>     190 content_type = response_data.getheader('content-type')
>     192 self.last_response = response_data
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api_client.py:181,
> in ApiClient.__call_api(self, resource_path, method, path_params,
> query_params, header_params, body, post_params, files, response_type,
> auth_settings, _return_http_data_only, collection_formats,
> _preload_content, _request_timeout, _host)
>     177     url = _host + resource_path
>     179 try:
>     180     # perform request and return response
> --> 181     response_data = self.request(
>     182         method, url, query_params=query_params, headers=header_params,
>     183         post_params=post_params, body=body,
>     184         _preload_content=_preload_content,
>     185         _request_timeout=_request_timeout)
>     186 except ApiException as e:
>     187     e.body = e.body.decode('utf-8') if six.PY3 else e.body
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/api_client.py:389,
> in ApiClient.request(self, method, url, query_params, headers,
> post_params, body, _preload_content, _request_timeout)
>     387 """Makes the HTTP request using RESTClient."""
>     388 if method == "GET":
> --> 389     return self.rest_client.GET(url,
>     390                                 query_params=query_params,
>     391                                 _preload_content=_preload_content,
>     392                                 _request_timeout=_request_timeout,
>     393                                 headers=headers)
>     394 elif method == "HEAD":
>     395     return self.rest_client.HEAD(url,
>     396                                  query_params=query_params,
>     397                                  _preload_content=_preload_content,
>     398                                  _request_timeout=_request_timeout,
>     399                                  headers=headers)
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/rest.py:230, in
> RESTClientObject.GET(self, url, headers, query_params,
> _preload_content, _request_timeout)
>     228 def GET(self, url, headers=None, query_params=None, _preload_content=True,
>     229         _request_timeout=None):
> --> 230     return self.request("GET", url,
>     231                         headers=headers,
>     232                         _preload_content=_preload_content,
>     233                         _request_timeout=_request_timeout,
>     234                         query_params=query_params)
>
> File
> /opt/conda/lib/python3.8/site-packages/kfp_server_api/rest.py:224, in
> RESTClientObject.request(self, method, url, query_params, headers,
> body, post_params, _preload_content, _request_timeout)
>     221     logger.debug("response body: %s", r.data)
>     223 if not 200 <= r.status <= 299:
> --> 224     raise ApiException(http_resp=r)
>     226 return r
>
> ApiException: (500) Reason: Internal Server Error HTTP response
> headers: HTTPHeaderDict({'content-type': 'application/json', 'date':
> 'Sun, 14 Aug 2022 05:07:05 GMT', 'x-envoy-upstream-service-time':
> '26', 'server': 'envoy', 'transfer-encoding': 'chunked'}) HTTP
> response body: {"error":"Internal error: Unauthenticated: Request
> header error: there is no user identity header.: Request header error:
> there is no user identity header.\nFailed to authorize with API
> resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).canAccessExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:249\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:148\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581\nFailed
> to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:150\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581","code":13,"message":"Internal
> error: Unauthenticated: Request header error: there is no user
> identity header.: Request header error: there is no user identity
> header.\nFailed to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).canAccessExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:249\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:148\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581\nFailed
> to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:150\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581","details":[{"@type":"type.googleapis.com/api.Error","error_message":"Internal
> error: Unauthenticated: Request header error: there is no user
> identity header.: Request header error: there is no user identity
> header.\nFailed to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).canAccessExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:249\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:148\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581\nFailed
> to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:150\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581","error_details":"Internal
> error: Unauthenticated: Request header error: there is no user
> identity header.: Request header error: there is no user identity
> header.\nFailed to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).canAccessExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:249\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:148\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581\nFailed
> to authorize with API resource
> references\ngithub.com/kubeflow/pipelines/backend/src/common/util.Wrap\n\t/go/src/github.com/kubeflow/pipelines/backend/src/common/util/error.go:287\ngithub.com/kubeflow/pipelines/backend/src/apiserver/server.(*ExperimentServer).ListExperiment\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/server/experiment_server.go:150\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler.func1\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1089\nmain.apiServerInterceptor\n\t/go/src/github.com/kubeflow/pipelines/backend/src/apiserver/interceptor.go:30\ngithub.com/kubeflow/pipelines/backend/api/go_client._ExperimentService_ListExperiment_Handler\n\t/go/src/github.com/kubeflow/pipelines/backend/api/go_client/experiment.pb.go:1091\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1282\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:1616\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/go/pkg/mod/google.golang.org/grpc@v1.44.0/server.go:921\nruntime.goexit\n\t/usr/local/go/src/runtime/asm_amd64.s:1581"}]}

Update
After I got the comment from Adiii, I try again.
I got 404 response error. KeyError: 'authservice_session' caused by the error.
I do port-forwarding by
kubectl port-forward svc/istio-ingressgateway -n istio-system 8888:80
Code snippet:
import requests

HOST = "http://localhost:8888/"
USERNAME = "user@example.com"
PASSWORD = "12341234"
NAMESPACE = "kubeflow-user-example-com"

session = requests.Session()
response = session.get(HOST)
print(response)
headers = {
    "Content-Type": "application/x-www-form-urlencoded",
}

data = {"login": USERNAME, "password": PASSWORD}
session.post(response.url, headers=headers, data=data)
session_cookie = session.cookies.get_dict()["authservice_session"]

client = kfp.Client(
    host=f"{HOST}/pipeline",
    cookies=f"authservice_session={session_cookie}",
    namespace=NAMESPACE,
)

print(client.list_pipelines())

Error message:
<Response [404]>
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Input In [8], in <cell line: 17>()
     15 data = {"login": USERNAME, "password": PASSWORD}
     16 session.post(response.url, headers=headers, data=data)
---> 17 session_cookie = session.cookies.get_dict()["authservice_session"]
     19 client = kfp.Client(
     20     host=f"{HOST}/pipeline",
     21     cookies=f"authservice_session={session_cookie}",
     22     namespace=NAMESPACE,
     23 )
     25 print(client.list_pipelines())

KeyError: 'authservice_session'

A: I could solve the additional issue by myself.
kubectl get svc -n  istio-system shows ip address of istio-ingressgateway.
I used it then I can get 200 response and could run notebook successfully.


text:
Auckland nurse denounces union's sellout deal in New Zealand
There is growing anger and resentment among health workers over a sellout pay deal agreed early this month between the New Zealand Nurses Organisation (NZNO) and the country's District Health Boards, covering nearly 30,000 public hospital workers.
Conditions in the health system have deteriorated dramatically over the past decade. Following the global financial crisis of 2008 the then-National Party government effectively froze wages for nurses and other health workers and starved hospitals of funding for staff, building upgrades and other vital resources.
Nothing has been resolved since the election of a Labour Party-led government in October 2017. The new agreement maintains low wages, with an increase of just 3 percent per year for 2017–2019 for most nurses, midwives and healthcare assistants. Funding has been provided to increase staff numbers by a meagre 500 nationally.
The WSWS recently spoke to a nurse at Middlemore Hospital, which serves the working-class suburbs of South Auckland, an area of more than half a million people. According to the Counties Manukau District Health Board, over 192,000 people in the district live "in areas of high socioeconomic deprivation," i.e., among the poorest 20 percent of the country. Many are Maori and immigrants from Asian and Pacific Island countries.
Media reports have detailed chronic overcrowding at Middlemore—the hospital was at or above 100 percent capacity for a third of 2017—as well as building leaks, severe mould and rot, asbestos and structural problems. Millions of dollars are urgently needed to carry out repairs and expand facilities at the hospital.
Work to build a new mental health unit had been underway but was abruptly stopped on August 1 after the company in charge, Ebert Construction, collapsed with a debt of more than $40 million. Hospital staff have not been told when construction will resume.
The nurse, who asked not to be named, told the WSWS that staff shortage had severe consequences at Middlemore Hospital. Last week an outbreak of swine flu in the mental health unit affected about seven patients and staff. New patients were admitted despite the outbreak. "They had nowhere else to place them so they stuck them in the ward," she said, which was already "tightly packed."
Management told the media that precautions had been taken, but the nurse said "management was blasé about it," telling health workers it was "just like an ordinary flu" and there was no need for protective masks.
Staff are frequently overworked, often "getting maybe five hours of sleep. We are tired and you can't give your all to the patients because of that." Assaults are also common and made worse by lack of experienced staff. Workers have recently been bitten and punched by patients under the influence of drugs or suffering a mental health episode.
The nurse dismissed the government's promise to hire more nurses, saying "a few years ago they said they were going to bring in more staff. They're employing nurses all the time, but there's an increase of people coming through the hospital that they don't understand. What makes you think they'll increase staff this time when they haven't done that before?"
Lester Levy, former chairman of the three Auckland region District Health Boards, told a parliamentary committee in February that in the past five years resourcing of hospitals had not kept pace with population growth of 9.4 percent, an 18.8 per cent increase in emergency department admissions and 15 percent rise in in-patient discharges.
A major factor in the failure to retain staff is low pay, the Middlemore nurse explained. "They're paying us hardly anything, and then giving us more stuff that we have to do." The cost of living in Auckland is out of control, with the average house price now over $1 million, driven by a speculative property bubble.
The nurse said she had voted for the Labour Party, which promised to improve the health system and address inequality, but "next time I probably won't vote. No matter who you vote for, they say what you want them to say at the beginning, but then they don't do anything, and the only ones that get rich are rich already."
She pointed out that Labour had said "we don't have enough money" for a decent pay increase for health workers "but then, all of a sudden, they had millions of dollars going towards a yacht race and new jet planes for the air force." This would have happened regardless of the election result, she added, because most governments "don't care about anyone down at the bottom."
The NZNO, she said, had "told nurses to go and vote for Labour because we were going to be heard, and a lot of nurses did vote for Labour, and now we've been slapped in the face again."
She was scathing of the NZNO for pushing through the sellout agreement and noted that while the union said 64 percent of members voted in favour, it had not released the actual voting numbers. Most co-workers she had spoken to voted against the deal, which was virtually identical to two offers they previously rejected.
After workers rejected four separate offers and held a one-day strike, the union "couldn't be bothered to keep going and get what the nurses wanted," she said. "I think they're absolute crap. NZNO and the other unions are supposed to be for their members but I believe they weren't there for their members.
"When it comes to [union officials'] pay rises, it's not like that goes to a vote from their members. A lot of them are on six figure salaries, whereas we're struggling. They're so blasé about everything, and I think it's because as long as their pockets are getting lined, that's all they care about."
The nurse described the NZNO's staffing arrangements during the July 12 strike as "an absolute joke." Parts of Middlemore had "more staff than there would be usually", she said, which "portrayed to the public that the hospital could run just as well with thousands of staff out on strike."
She also denounced the Public Service Association, New Zealand's largest union, which has some hospital workers among its members but "just sat on their hands" during the walkout. "There was no push for any of the PSA members to go out there and close down the wards."
In response to the Socialist Equality Group's call for the establishment of rank-and-file committees, independent of the unions and democratically controlled by workers themselves, the nurse said: "I think it's a good idea to try and get an organisation that's actually going to do something and listen to the members."
The SEG is holding an online forum on Saturday September 1 to discuss the lessons of the NZNO's sellout, including the need for rank-and-file committees and for a socialist strategy to unite workers, in New Zealand and internationally, in a political and industrial campaign against austerity.
Lessons of the New Zealand Nurses Organisation's sellout: Build rank-and-file committees! Unite the working class against the Labour government!
[18 August 2018]
New Zealand Nurses Organisation lashes out at critics on social media
New Zealand nurses stage first nationwide strike in 30 years
New ZealandWorld NewsGlobal class struggleAustralia and New Zealand

redpajama_set_name: RedPajamaCommonCrawl


text:
Home/Elk Network/Volunteer News/New Chapter Awards and Recognition Up for Grabs in 2023
Elk NetworkNew Chapter Awards and Recognition Up for Grabs in 2023
Volunteer News | January 23, 2023
In 2023, RMEF will recognize chapter accomplishments that took place in 2022, based on the same recognition and award categories from previous years. For 2023 fundraising efforts, we are excited to announce new categories and opportunities for RMEF chapters and states to be recognized for in 2024.
2023 Categories (to be recognized in 2024):
TOP PERFORMING SPECIAL EVENT
Do you hold an additional event outside of your normal big game banquet? Ladies night out events, gun bash/gun fest events and golf tournaments, among others, may all compete for the top-performing special event in 2023. Online raffles, online auctions or any other fundraising effort that does not include an in-person event does not qualify.
TOP GROSSING CHAPTER IN EVENT SPONSORSHIP SALES
Chapters in this category will receive recognition for having the highest gross revenue in event sponsorship sales within the given year. Chapters may sell event sponsorships year-round and all sales within the given year apply to your chapter's total.
TOP NEW BANQUET NET
New chapters hosting their first banquet or chapters that have not held a banquet since at least 2019 are eligible to compete in this category. To qualify, the banquets must also meet a minimum of $20,000 in banquet net revenue.
*In the above categories, 1st place chapters will receive a special award and 2nd & 3rd places will be recognized.
REGIONAL BANQUET OF THE YEAR
RMEF is operationally segmented into three geographical regions made up of states in the East, Southwest and Northwest. This new category will recognize the top three performing banquets (based on event net) within each geographic region. The top banquet in each region will receive a special award.
TOP REGIONAL FUNDRAISING STATE
We hope this award spurs team unity within your state! Friendly rivalries between chapters can be fun and motivating, however it is important to remember that what states raise cumulatively determines what can be invested into RMEF's mission the following year. This category recognizes the top three states within each RMEF region that have the highest net revenue generated through all fundraising efforts in the given year. First-place states in each region will receive a special award.
$100K CLUB CHAPTERS
A new spin on a previous category will recognize chapters that raised at least $100,000 in net revenue through all chapter-based fundraising efforts in the given year. The top three chapters, or all chapters with "legendary" status (if there are more than three), will receive an award. All chapters reaching $100K club status will be recognized.
Royal Chapters: $100K-$150K
Imperial Chapters: $150K-$200K
Monarch Chapters: $200K-$250K
Legendary Chapters: $250K+
*Your regional director has access to the full detailed list of award and recognition categories, as well as additional definitions. If you have any questions about our new awards and recognition program, do not hesitate to ask your regional director.
Thank you for answering the call to volunteer for RMEF's mission!


text:
Durante los años noventa el sistema financiero argentino se fue consolidando y reforzando. Los depósitos crecieron fuertemente, pero durante la recesión económica y financiera de 2001, con la implementación del corralito y la devaluación asimétrica de préstamos y depósitos, muchos bancos técnicamente llegaron a la bancarrota.

A partir del crecimiento económico iniciado en 2003 los depósitos pasaron de $ 114 462 millones en diciembre de 2004 a $ 169 729 en diciembre de 2006, lo que implica un crecimiento de más del 48 %. Durante 2007, el patrimonio neto del sistema mostró un alza de 3000 millones de pesos, mejorando la solvencia y solidez del sistema bancario argentino. La plaza financiera argentina es de las más desarrolladas de la región, y uno de las más avanzadas en gestión de activos y mercado bursátil

Durante 2012, los depósitos en pesos aumentaron del 39.1 %, mientras que los créditos en esa moneda aumentaron en un 41.8 % interanual. En 2013 los depósitos en pesos alcanzaron los $618 617 millones (aproximadamente 117 000 millones de dólares estadounidenses). Durante 2013, el sistema financiero reforzó su solidez al acumular ganancias superiores a 26 000 millones de pesos, un 34 % más que el año anterior. Durante los últimos años, los bancos mostraron un incremento sostenido en sus resultados netos, pasando de 4746 millones de pesos en 2008 a 29 169 millones en 2013, mostrando una de las rentabilidades más altas de Latinoamérica.

En 2013, el índice Merval alcanzó su récord histórico, y se consolidó como la segunda plaza bursátil de mejor desempeño en todo el mundo. En 2014 se consolidó nuevamente como la Bolsa más rentable del mundo.

De acuerdo a un estudio realizado por la ABA (Asociación de Bancos de la Argentina), los ocho primeros bancos (2016) por nivel de depósitos del financiero son: Banco de la Nación Argentina (29.3 % de participación), Banco de la Provincia de Buenos Aires (8.6 %), Banco Santander Río (7.0 %), Banco Galicia (5.8 %), BBVA Francés (6 %), Banco Macro (5.6 %), HSBC Bank Argentina (4.3 %), Banco Credicoop (3.8 %) y otros bancos 29.6 % de participación.

Década de los '90

Durante la década de los '90, en la Argentina se aplicó una política liberal bajo la presidencia de Carlos Saúl Menem, Cavallo anticipaba para 31 de diciembre de 1995 la deuda del Estado nacional ascendía ya a 87.091 millones y para cuando Domingo Cavallo fue reemplazado por Roque Fernández, en julio de 1996, la misma se había elevado a 90.471,80 millones. Esta situación condujo a un crecimiento en la carga de intereses dentro del gasto público, lo que a su vez generó un aumento en el déficit fiscal. Asimismo el déficit fiscal fue cubierto a través de nuevas deudas. Cuando Domingo Cavallo asumió como ministro de Economía en enero de 1991, la deuda pública era de 61.400 millones de dólares. El restablecimiento pleno de los pagos se había concretado recién en 1993, tras la puesta en marcha del Plan Brady.

Se produjeron fusiones y adquisiciones que disminuyeron el número de bancos de casi 300 en 1990 a menos de 100 en 1999.

Sin embargo estas reservas fueron usadas para respaldar las responsabilidades monetarias, según la Ley de la convertibilidad por cada peso argentino en circulación debía haber un dólar en reserva.

A pesar de la recesión (comenzando en 1998 después del shock internacional económico debido a la Crisis de Rusia), los depósitos bancarios siguieron creciendo hasta 2001. A principios de marzo de 2001 comenzaron a circular evidencias de que Argentina no lograría cumplir con las metas de gasto público y déficit fiscal comprometidas con el FMI, con lo cual peligraban los futuros desembolsos. La salida de depósitos se reanudó: a lo largo del mes de marzo se produjo una fuga de depósitos de 5.543 millones de pesos/dólares, la mayor salida mensual de depósitos de toda la historia Argentina. el presidente Fernando de la Rúa decreto la medida el 3 de diciembre de 2001, por la cual todos los depósitos en Argentina fueron retenidos, se obligó a la restricción de la libre disposición de dinero en efectivo de plazos fijos, cuentas corrientes y cajas de ahorros impuesta por el gobierno de la UCR. Al restringir bruscamente la liquidez monetaria estas medidas ahogaron todo movimiento económico, paralizando el comercio y el crédito, rompiendo las cadenas de pago y asfixiando a la «economía informal o no formal».

Los bancos extranjeros aplazaron el 40% de depósitos totales, y seis de los 10 primeros bancos comerciales estaban en instituciones financieras estadounidenses y europeas.

De todos modos el nivel de utilización bancaria en Argentina permaneció relativamente bajo y solo representó el 30% del PBI —una proporción mucho menor que en Chile, México o Brasil, por ejemplo.

Crisis del 2001

Sin embargo el sistema bancario sufrió un defecto fatal: prestó dólares y tomó depósitos en pesos. Antes de principios de 2001 había alcanzado los 87.000 millones de dólares, pero cuando la economía tomó una segunda pendiente, el capital comenzó a irse.

Esto tarde o temprano condujo a una carrera bancaria y una congelación de los depósitos, y una devaluación de las divisas, que incluyó una devaluación asimétrica de préstamos y depósitos. Los bancos forzaron a recoger sus préstamos en dólares a una tarifa de conversión mucho más abajo que la tarifa aplicada a sus depósitos en dólares. Esto hizo que muchos bancos se fueran a la bancarrota y destruir así la confianza de la población argentina sobre el sistema financiero.

Los depósitos se cayeron a menos de 40.000 millones de dólares hacia el final de 2002. Bancos extranjeros cerraron sus sucursales en el país durante 2002 y 2003 y vendieron sus operaciones a bancos locales más pequeños. Solo los bancos extranjeros más grandes decidieron quedarse en el país.

En 2004 el gobierno compensó a los bancos por el impacto de la devaluación asimétrica de depósitos y préstamos por una serie de compensaciones.

Post 2001: recuperación del sector

Actualmente, los bancos otra vez ganan depósitos que ascendieron a 44.000 millones de dólares hacia febrero de 2006, y han estado aumentando su cartera de préstamos. Sus operaciones son más escuetas, debido a los despidos masivos de 2002, que redujo su fuerza laboral por más del 30%. Sin embargo el público permanece cauteloso de tomar préstamos a largo plazo y las condiciones son bastantes exigentes.

Hoy, los bancos públicos dominan el mercado (el más grande es el Banco de la Nación Argentina). En 2005, por primera vez desde el derrumbe de 2001, el sistema bancario obtuvo beneficios, según un informe del Banco Central liberado en febrero de 2006. Las ganancias totales ascendieron a 1.950 millones de pesos argentinos (más de 650 millones de dólares).

En diciembre de 2005, el presidente Néstor Kirchner decidió liquidar la deuda argentina con el FMI en un solo pago, sin la nueva financiación, por un total de 9.810 millones de dólares utilizando las reservas internacionales que alcanzaron el récord histórico de 28.000 millones de dólares ese año, reduciéndose estas a 18.000 millones de dólares en enero de 2006.A partir del crecimiento económico iniciado en 2003 los depósitos pasaron de $ 114 462 millones en diciembre de 2004 a $ 169 729 en diciembre de 2006, lo que implica un crecimiento de más del 48 %. Durante 2007, el patrimonio neto del sistema mostró un alza de 3000 millones de pesos, mejorando la solvencia y solidez del sistema bancario argentino. La plaza financiera argentina es de las más desarrolladas de la región, y uno de las más avanzadas en gestión de activos y mercado bursátil

Durante 2012, los depósitos en pesos aumentaron del 39.1 %, mientras que los créditos en esa moneda aumentaron en un 41.8 % interanual. En 2013 los depósitos en pesos alcanzaron los $618 617 millones (aproximadamente 117 000 millones de dólares estadounidenses). Durante 2013, el sistema financiero reforzó su solidez al acumular ganancias superiores a 26 000 millones de pesos, un 34 % más que el año anterior. Durante los gobiernos de Néstor Kirchner y Cristina Fernández de Kirchner los bancos mostraron un incremento sostenido en sus resultados netos, pasando de 4746 millones de pesos en 2008 a 29 169 millones en 2013, mostrando una de las rentabilidades más altas de Latinoamérica.

En 2013, el índice Merval alcanzó su récord histórico, y se consolidó como la segunda plaza bursátil de mejor desempeño en todo el mundo. En 2014 se consolidó nuevamente como la Bolsa más rentable del mundo.

De acuerdo a un estudio realizado por la ABA (Asociación de Bancos de la Argentina), los ocho primeros bancos (2016) por nivel de depósitos del financiero son:

Bancos más importantes
Según los activos a diciembre de 2019, las 20 entidades más importantes son:

Referencias

Enlaces externos

 Banco Central de la República Argentina
 Bancos de Argentina

Economía de Argentina

redpajama_set_name: RedPajamaWikipedia


I welcome you to this website of S S Public School!
Feeling and assessing the need of quality and value-based education in the region, we entered the education scenario eleven years ago and with your active partnership and patronage, at present this institution needs no introduction in the area.
I belong to a family of freedom-fighters who struggled hard to envisage a literate,developed and cultured India,free from the clutches of any power in the world and thus the love and concern for education run in my blood.
We owe a lot to our environment,our nation and the last,but not the least,to our new generations.
I assure you that S S Public School will always be serving all the above purposes which will go a long way in the larger interest of the Education.
I take the opportunity to thank all our patrons for their valuable suggestions, freely available to us from time to time.I request you to let this flow of suggestions,advices and guidelines be available to us on perennial basis.


text:
Q: SQL Server Profiler behavior? I want to monitor only sp's.
Does SQL Server Profiler listen to all events and then filters the desired data (e.g. sp's)?
Or rather the sql emits  only Profiler pre-configured events ?

A: SQL Trace (what Profiler is built on) will capture all instances of any events that you decide to collect. So if you collect RPC:Completed events, you'll get an event for every RPC completed, trace will be capturing that event. If you don't select that event, trace won't be grabbing it. So it will only capture what it is told to.
You can (and should) then further filter the data returned by adding filters on various columns (say a database name or a duration for a completed event to capture only events with a duration of greater than a certain value, for example). In that case, all of the instances of that event are still captured, but the filter is then applied before the information is dumped to the mechanism you are using to trace.
See the difference? If you don't select the event, that event isn't captured or sent (Emitted as you are saying, if I comprehend you correctly), but if you do select the event - all instances are captured but only those that pass the filter criteria are sent (emitted).
I would also argue against using profiler but consider doing a Server Side trace to a file. Look at this blog post from Jonathan Kehayias to show the difference in performance impact between the methods.

redpajama_set_name: RedPajamaStackExchange


In the mid 1700s, Anabaptists fled persecution in Europe, settling in Pennsylvania and 19 other states. They are now a presence in Aroostook County and other parts of Maine, and they have brilliantly colored my childhood memories. We are fortunate to have these talented folks in our midst. Known collectively as Pennsylvania Dutch, both sects, Amish and Mennonite share similar history, fashion style, and religious beliefs. The difference between them is lifestyle—Amish live off the grid and travel by horse-drawn carriage while Mennonites accept and use technology and embrace the convenience of motorized travel.
For the next couple of columns, I will feature food from these gentle, hardworking, devoted folks. Of course, most of the dishes derive, not from Dutch, but from German cookery (Deutsch is German for German!)—usually very simple with fewer ingredients than most other European fare. But hard work deserves good food, so these dishes do not lack richness and satisfaction!
Spaetzle is a German noodle they call dumplings . Great mixed with hot buttered whole green beans or as a side with schnitzel gravy. HINT: Dropping the batter into boiling liquid using a funnel or a metal colander will make it easier than pouring from a bowl. Batter can be thinned a bit if necessary. Cooking time is not specified so taste testing is necessary! Start testing after 3 minutes.
If you're on a salt-restricted diet, skip salting the cukes and onions. Or if you're too lazy to do it, that's okay, too. You will need to eat it all up the same day, though, because the water will leach out into the dressing over time. My Aunt Myrtle taught me how to make this. It disappears from the table quickly.
Sprinkle cukes and onion with a teaspoon of salt and let stand for a few minutes. Pat with towel or absorbent paper to remove moisture. Place cucumbers and onions in a bowl, dissolve sugar in the vinegar, add a pinch of salt and mix with sour cream. Toss thoroughly with cucumber mix to cover. Turn out to a serving dish; dust with pepper and parsley or dill. Chill. Best eaten same day.
Place 4 Tbs of bacon grease in a large heavy pot. Brown one finely chopped onion till golden. Shred one 2½ lb head of red cabbage. Mix ¼ cup vinegar with ¼ cup water and 2 Tbs sugar.
Next, place cabbage in onion and grease. Pour vinegar and sugar mixture over. Salt and pepper to taste, and combine. Bring to boil over medium high heat taking care not to scorch bottom. Quarter 1 large pared, cored apple and place on top of cabbage. Lower heat, cover, and simmer 20 minutes. Makes 10 servings.
Wash spinach and remove tough stems. Drain and cook with a little water in covered pot over moderate heat for 8 to 10 minutes. Drain and chop finely. Add milk, beaten eggs, 1½ cups of the bread crumbs, butter, salt, pepper then mix well. Sprinkle the remaining ½ cup bread crumbs and the chopped bacon, on the top. Bake in moderate oven (350 ° F) 35 minutes.
Rivels are miniature dumplings dropped into soup, similar to spaetzle, to extend the volume of the meal and add taste and texture with little effort.
Add corn to water and cook for 10 minutes. Mix egg, flour and milk together in a medium size bowl. Pour this batter through a colander, letting it drop into the boiling corn. Add butter and salt. Cook slowly in a covered pan for 3 minutes. Test for doneness. Garnish with chopped parsley. Serve immediately.
Prepare jars for canning by sterilizing in a large pot of boiling water or baking jars in the oven. See a book like Putting Food By (Hertzberg, Vaughn and Greene) for exact canning instructions. Remove greens and root strings taking care not to trim too closely or beets will "bleed" into the cooking water. Boil until tender. Cool a bit, remove skins, and cut into thin slices or chunks as desired. Tie spices in cheesecloth packet. Bring to a boil the vinegar, water, sugar, and spices. Add beets and boil 5 minutes. Pack in sterile jars and fill with hot liquid. Seal.
In high school I cleaned house every Saturday for a couple, both artists, who were of German descent. After working for a couple of hours, they would put out a spread on the kitchen table and their two children and I would enjoy these delicious beets and eggs along with thick slices of creamy Meunster cheese and dark pumpernickel bread. I still use their recipe for the beets to this day.
To make red beet eggs, thinly slice some red onions and add to hot pickled beets about two-thirds up in a large jar. Cool. Hard-boil six eggs. Remove shells and drop the eggs into the jar making sure they are totally submerged in the liquid. Refrigerate at least overnight. Longer is better. These take on a beautiful color and excellent flavor and are grand as appetizers served with crisp vegetables. They are also good sliced in sandwiches or salads.
This entry was posted in Comfort food, History, Pasta & Noodles, Vegetables and tagged Amish, Pennsylvania, Pennsylvania Dutch by cmtstardesign. Bookmark the permalink.


This one also for CPC A challemge to use fibres. I stitched the flowers which were pre-punched in this c/s. Don't know how many years I've had this and not used it, but finally found a use for it! Gorgeous girlie Cosmo Cricket pp's...I had to steal my niece for the morning and take some photos just so I could use it!
Another newsletter item.....my Little Book Worm! Love these Bo Bunny pp's!
The next one was for the cybercrop over at Scrapping Outback. Don't be fooled...my craft room is not really that tidy! Obviously had just had a reshuffle so it looks clean and tidy!
This is my "swap-back" from my Friend Leonie. I sent her some photos and she sent some to me and we each scrapped each others. Fun to try someone else's style for a change. Love what she did with mine..hope she loved hers too!
Another Scrapping Outback Twilight Cybercrop challenge. I had to do some quite different things with this Cybercrop. I could have looked at them and decided they were just too hard (or time consuming!), but I decided to step out of my comfort zone and try some new things...and guess what??? I loved how they all turned out!
Final CPC newsletter item...shaped background (not round or square) And barely any pp! So not me...I love my patterned paper!!
Have got a few more to scan and upload but will save them for another day.
Might also share some photos from my 20 year High School Reunion last night!....or I might not!
20 years! I remember when I was a kid and my mum and dad went to their 20 year reunions and I thought they must be sooo old to be out of high school for 20 years! lol.....now that's me! OLD!!


Cervical artificial discs can be installed to treat degenerative disc disease and intervertebral herniation in the neck anatomy. Artificial disc replacement has been available for decades now and has proven itself to be a viable alternative to the traditional treatment path of spinal fusion. Although not perfect, disc replacement surgery does demonstrate some distinct advantages when contrasted against spondylodesis procedures. We initially covered spinal disc replacement over 15 years ago, when it began to enjoy widespread application in the USA. However, pioneers in these technologies have been using synthetic disc substitutes to treat a range of back and neck pain conditions since before 1990.
This fascinating essay delves into one of our favorite topics: artificial cervical spinal disc replacement. We will evaluate the risk and benefits of the procedure in comparison to spinal fusion and will also examine some of the current models of artificial cervical disc which are available for use as orthopedic implants.
Available types of artificial cervical spinal discs are always changing, as new designs are created, new governmental approvals granted and old designs taken off market, revised or proven to be problematic. Once, there were only a few styles of cervical replacement disc options, often regulated by extremely constricting criteria for indicated use, at least in America. Now, there are more options than ever before and more possible indications for utilization globally.
The BRYAN cervical artificial disc is one of the more complicated and engineered models, featuring a multi-piece design comprised of titanium and polyurethane.
Mobi-C artificial cervical disc is a simple design of metal endplates with a flexible polyethylene core.
PCM cervical disc is a similar style, with metal plates encompassing a polyethylene nucleus.
ProDisc-C is another style of metal disc with a polyethylene core material for flexibility and shock reduction.
SECURE-C artificial cervical disc is another metal design with a plastic core.
Prestige LP cervical artificial spinal disc is a very simple titanium/ceramic mix without a separate core material.
Surgical implantation of artificial spinal discs has improved light years in the past decade. Now, all implants can be placed using minimally invasive and sometimes anterior approach surgical techniques for minimal disruption of the surrounding muscular anatomy. Typically, only a small incision or two is necessary to access the spine and allow placement of the disc substitute into the intervertebral space, after the organic disc material has been completely removed using discectomy.
Some artificial discs require fixation to the vertebrae above and below. This is usually accomplished using surgical screws. Other discs are simply inserted into the spine and are held in place by a combination of factors including natural design of the spine, engineering of the artificial disc shape and gravity, combined with weight of the body pressing downwards.
We have witnessed a range of diverse placement techniques being used to position synthetic spinal discs in the neck. All of the procedures utilized impressed us with their simplicity, minimal blood loss and virtually immediate ability for the patient to ambulate rather easily and independently after surgery.
Fusion negatively impacts the organic design and functionality of the spine. Results include increased stress and exponentially accelerated degeneration of spinal levels surrounding the fused sections of backbone. Disc replacement maintains natural spinal form and function, allowing independent movement of each vertebral level.
Spinal fusion also has far-reaching consequences on posture, gait and lower body joint deterioration outside of the spine. Typically influenced structures include the sacroiliac joints, hip joints, knee joints and lower leg joints. Disc replacement spares the anatomy these stresses by allowing the patient to move in a manner which is comfortable and familiar to them and their spine.
Hardware failure is possible, particularly in multi-piece disc designs. The actual prosthesis can break, but far more common is the slippage of these implants which may necessitate secondary surgical correction.
Infection, implant rejection and other complications of the disc itself are some of the most commonly observed risks of spinal disc replacement operations. Even once the procedure is deemed a success, complications can still occur over time due to the development of organic tissue infiltration into moving parts of the disc, related deterioration of the fixation mechanism, scar tissue accumulation or other problematic occurrence, such as reduction or elimination in the disc's ability to provide flexibility in the operated level.


text:
\section{Introduction}
\medskip

We are given an $n$-dimensional compact manifold $M$ with a non-empty boundary
$\partial M$ and a Morse function
$f: M\to \mathbb{R}$ which is generic with respect to the boundary, meaning that $f$ has no critical point on the boundary
and that the restriction $f_\partial$ of $f$ to $\partial M$ is a Morse function.
It is well-known that the set of critical points of $f_\partial$
is divided into two {\it types} $+$ and $-$:
\begin{equation}
crit f_\partial= crit^+ f_\partial \sqcup crit^- f_\partial\,.
\end{equation}
A point $x$ belongs to
$crit^+ f_\partial$ (resp. $crit^- f_\partial$) if it is a critical point of $f_\partial$ and
 the differential $df(x)$ is positive (resp. negative) on a tangent vector
at $x$ pointing outwards.\footnote{Here, we choose to introduce notations which are more suggestive than in \cite{lauden}.}

We have introduced in \cite{lauden} the notion of quasi-gradients\footnote{In \cite{lauden}, these vector fields
are named {\it pseudo-gradients} though they vanish at points of $\partial M$ where $df$ does not vanish. So, we prefer to name them {\it quasi-gradients}.}
{\it positively} (resp. {\it negatively})
{\it adapted to $f$}. Such vector fields, noted respectively noted $X^+$ and $ X^-$, satisfy:
 \begin{itemize}
  \item[--] $X^+ $ vanishes only in $crit f\cup crit^+f_\partial$ and $\langle df, X^+\rangle >0$ elsewhere;
 \item[--]$X^-$ vanishes only in $crit f\cup crit^-f_\partial$ and $\langle df, X^-\rangle <0$ elsewhere.
 \end{itemize}
  The zeroes of both of them are assumed  hyperbolic, implying the existence of local stable and unstable
  manifolds. The quasi-gradient $X^+$ (resp. $X^-$) is required to be tangent to the boundary near $crit^+f_\partial$
  (resp. $crit^-f_\partial$).
  Globally, both $X^+$ and $X^-$ are nowhere pointing outwards along $\partial M$. As a consequence,
  their flows are positively complete, and hence, global unstable manifolds exist.
  By taking inverse images of the local stable manifolds by the
  positive semi-flow,
  global stable manifolds are also defined  (see Section \ref{globalstable}).

  These  invariant submanifolds are denoted by $W^s(x, X^\pm)$ and $W^u(x, X^\pm)$ respectively
  when $x$ is a zero of the considered quasi-gradient. If $x\in crit f$, the dimension of $W^s(x, X^+)$
  (resp. $W^u(x,X^-)$)
  is equal to the Morse index of $f$ at $x$. If $x\in crit^- f_\partial$,  the dimension of $W^u(x, X^-)$ is equal to the Morse
  index of $f_\partial$ at $x$; but, if $x\in crit^+f_\partial$, we have
  \begin{equation}\label{dim}
 \dim W^s(x, X^+)= Ind_xf_\partial +1.
 \end{equation}

  It makes sense to assume $X^\pm$ Morse-Smale (mutual transversality of stable and unstable manifolds);
  this property is open and dense.
  An orientation is chosen on each stable (resp. unstable) manifold arbitrarily when dealing with $X^+$
  (resp. $X^-$). This makes the unstable (resp. stable) manifolds co-oriented
  and allows us to put a {\it sign} on the orbits in $W^s(x, X^+)\cap W^u(y, X^+)$ when the sum of the

   codimensions is equal to $n-1$; and similarly for $X^-$.

 Thus, two Morse complexes
 $C_*(f, X^+)$ and $C_*(f,X^-)$  are built
 whose homologies are respectively isomorphic to $H_*(M,\partial M; \mathbb{Z})$
 and to $H_*(M; \mathbb{Z})$.\footnote{For defining the differential of
 these complexes, only the {\it local} stable manifolds are needed.}
 By abuse of notation, we first neglect to mention the choice of orientations; this will be corrected  in \ref{abuse}
 for further need.
 For brevity, they are also noted $C_*^+$ and $C_*^-$.

 To be more precise, $C_k^+$ is freely generated by $crit_kf \cup crit_{k-1}^+f_\partial$ (note the shift in the grading
 due to (\ref{dim})) while $C_k^-$  is freely generated by $crit_kf \cup crit_{k}^-f_\partial$.
 The differential $\partial^+:= \partial^{X^+}$ evaluated on a  generator $x\in C_k^+$
 is given by the algebraic counting of orbits of $X^+$ ending at $x$ and starting from generators of $C_{k-1}^+$.
 And similarly for the complex $C_*^-$.
The present note is aimed at proving two results which are stated below.

\begin{thm} \label{exact}
Let $X_\partial$ be a Morse-Smale descending pseudo-gradient of $f_\partial$ on the boundary
$\partial M$ and let $C_*(f_\partial,X_\partial)$ be the associated Morse complex. Then
for suitable adapted quasi-gradients $X^-$ and $X^+$, there exist a quasi-isomorphic
extension
$\widehat C_*(f,X^-)$
of the complex $C_*(f,X^-)$ and a short exact sequence of complexes
\begin{equation}
0\longrightarrow C_*(f_\partial,X_\partial)\longrightarrow\widehat C_*(f,X^-)\
\longrightarrow C_*(f,X^+)\longrightarrow 0.
\end{equation}
\end{thm}

The second result is stated right below.
I should add that Theorem \ref{pairing}  corrects something which was poorly said at
the end of \cite{lauden}.

\begin{thm} \label{pairing}Here, $M$ is assumed \emph{oriented}.
For a generic choice of the adapted quasi-gradients $X^+$ and $X^-$,
there is a pairing at the chain level
$$C_k(f, X^+)\otimes C_{n-k}
(f, X^-)\to \mathbb{Z}$$
which induces the intersection pairing in homology
$$\iota: H_*(M,\partial M;\mathbb{Z})\otimes H_{n-*}(M; \mathbb{Z})\to \mathbb{Z}
$$
\end{thm}

Intitially, this note was thought of as the beginning of an article on multiplicative structures, namely
$A_\infty$-algebra structures,  on  Morse complexes \cite{abba}. It appeared that
the pairing $C_*^+\otimes C_{n-*}^-\to \mathbb{Z}$ was not of the same type in nature as the multiplications
of these
$A_\infty$-structures. Therefore, I decided to separate this piece from \cite{abba}.

\section{A short exact sequence}

We first describe the suitable adapted quasi-gradients $X^+$ and $X^-$ in   Theorem
\ref{exact}.
Let $X_\partial$ be a vector field on $\partial M $
which is a Morse-Smale descending pseudo-gradient of $f_\partial$ and gives rise to the usual Morse complex
of the boundary $C_*(f_\partial,X_\partial)$; its differential is denoted by
$\partial_{\partial M}$.
 By partition of unity, one easily constructs
a quasi-gradient $X$ of $f$ which extends $X_\partial$.
This $X$ is tangent to the boundary, and hence
it is not an {\it adapted quasi-gradient}. But it satisfies $X\cdot f<0$ everywhere
except at the critical points of $f$ and $f_\partial$, where it vanishes with some non-degeneracy condition.
The flow of $X$ is complete,   positively and negatively as well. Therefore,
one can make $X$ Morse-Smale.

When $x\in crit_k^- f_\partial$, the unstable $W^u(x,X)$
 coincides
with $W^u(x,X_\partial)\cong \mathbb{R}^k$ and is contained in the boundary.
The  stable manifold  $W^s(x, X)$ is diffeomorphic to  $\mathbb{R}^{n-k}_{\geq 0}$ and is bounded by
$W^s(x,X_\partial)$. In the same way, when $y\in crit_k^+f_\partial$, the unstable manifold
$W^u(y,X)$ coincides with the unstable manifold $W^u (y,X_\partial)\cong \mathbb{R}^{n-1-k}$ and is contained
in the boundary. Moreover, the unstable manifold $W^s(y, X)$ is diffeomorphic to $\mathbb{R}^{k+1}_{\geq 0}$
 and is bounded by $W^s(y,X_\partial)$.

\begin{remarque} \label{condition*} Since $X$ is tangent to the boundary
there are no connecting orbits of $X$ descending from $x\in crit^-f_\partial$
to $y\in crit f$. Similarly, there are no connecting orbits of $X$ descending from $x\in crit f$
to $y\in crit^+ f_\partial$.
\end{remarque}
 We now change  $X$  to  $X^-= X+Y$, which will be  negatively adapted to $f$,
 just  by adding a small vector field Y which satisfies the following condition:
 \begin{equation}\label{*}
 \left\{
\begin{array}{l}
 1)\ Y\ {\rm vanishes\  on\  a\  closed\ neighborhood\  }U\ {\rm of\  }crit^- f_\partial\  {\rm in\ } M;\\
 2)\   Y\  {\rm  points\  inwards\  along\ }
  \partial M\smallsetminus U\ {\rm  and\ satisfies\  }Y\cdot f\leq 0\ {\rm everywhere}\, ;\\
 3) \ Y\ {\rm vanishes\ away\  from\ a\ neighborhood \ of\ }\partial M\,.
 \end{array}
 \right.
 \end{equation}
 Similarly, $-X$ can be perturbed to $X^+$, which will be  positively adapted to $f$; just take
 $X^+= -X+Z$ where $Z$ is
 a small vector field vanishing on a neighborhood $V$ of $crit^+f_\partial$ in $M$,
   pointing inwards along $\partial M\smallsetminus V$ and satisfying
 $Z\cdot f\geq0$ everywhere. The perturbations $Y$ and $Z$ are small enough so that Remark \ref{condition*}
still applies. So, $X^-$ and $X^+$ will be the desired quasi-gradients of Theorem \ref{exact}.

 \begin{prop} \label{no-D}Assume $crit f^+_\partial$ is empty.
 Then the  Morse complex $C_*(f_\partial, X_\partial)$ embeds as a subcomplex
 of $C_*(f,X^-)$. Moreover, one has the following short exact sequence:
 $$
 0\longrightarrow C_*(f_\partial, X_\partial)\mathop{\longrightarrow}\limits^i
 C_*(f,X^-)\longrightarrow C_*(f,X^+)\longrightarrow 0\, .
 $$
 \end{prop}

 \nd {\bf Proof.\ }  The embedding $i$ is induced by the inclusion
 $$crit f _\partial
 =crit^- f _\partial \hookrightarrow
 \left(crit f \cup crit^- f _\partial\right).$$
 We have to prove that $i$ is a chain morphism. This will follow
 from equalities (1) and (2) below.
 Let $x\in crit_k f_\partial=crit^-_k f_\partial$.

 By Remark \ref{condition*} applied to $X^-$, for every $y\in crit_{k-1} f$ we have
  $$(1) \quad \quad  \langle\partial^- x, y\rangle=0.$$

  If $y\in crit^-_{k-1} f_\partial$,
 the  intersection  $W^u(x,X^-)\cap W^s_{loc}(y,X^-) $, which is transverse in $M$, can be pushed by an $f$-preserving isotopy
  to $W^u(x,X_\partial)\cap W^s_{loc}(y,X_\partial) $, which is a transverse
 intersection in $\partial M$ -- note that
 $W^s_{loc}(y,X_\partial)$ is
  the boundary of $W^s_{loc}(y, X^-)$.
 Then, the signed number of connecting orbits is  the same
 for both quasi-gradients and we have
 $$(2)\quad\quad \langle\partial^- x, y\rangle= \langle\partial_{\partial M}x, y\rangle.$$

 For the exactness of the  sequence, observe that the complex $C_*(f,X^+)$ is generated
  by the critical points of $f$. Both vector fields $X^+$ and $X^-$ are approximations
  of the Morse-Smale vector field $X$ (up to sign). Therefore, for every $x\in crit_k f$
and $y\in crit_{k-1}f$, the signed number of connecting orbits is the same when counted
with $X^-$ or $X^+$:
$$\langle\partial^+ x, y\rangle=\langle\partial^- x, y\rangle.
$$
  The quotient kills $crit^- f_\partial$, which generates the image of $C_*(f_\partial, X_\partial)$,
  and also the connecting orbits from $crit f$   to  $crit^-f_\partial$.
   The exactness follows.\hfill$\Box$\\

  \noindent {\bf Proof of Theorem \ref{exact}}

  It was shown in \cite{lauden} (Lemma 2.4),\footnote{
   After that \cite{lauden} appeared, I was informed that a similar lemma exists in
   \cite{morse} in a setting where only the Morse inequalities are discussed.}
   that there is  a $C^0$-small deformation, supported in a neighborhood $U$ of $crit^-f_\partial$,
   of the generic  Morse function
  $f$ to a new generic  Morse function $f'$ with the following property:

  each $x\in crit_k^-f_\partial$ becomes a critical point of \emph{positive} type and index
  $k$. The degree of
    $x$ as generator of
    $C_*(f')$ is $k+1$. This is obtained at the cost of
   a new critical point $ x'\in int\, M$ for $f'$, of index $k$ and close to $x$.  The two critical points $x$ and
   $x'$ of $f'$ are indeed linked by a unique gradient line; since $x$ belongs to the boundary, this pair is not
   cancellable but its fusion cancels $x'$ only and changes the type of $x$ from $+$ to $-$.

   Arguing  this way with the function $-f$
   leads to the following. There exists a $C^0$-small
   deformation of $f$, supported in a neighborhood  $V$
   of $crit^+ f_\partial$,
   to some generic function $\hat f$ having the following property:
   $\hat f_\partial=f_\partial$ and
   each $x\in crit_k^+ f_\partial$
   becomes a critical point of negative type  and index $k$, that is,  $x\in crit_k^- \hat f_\partial$.
   This is made at the cost of a critical point $\hat x\in int\, M$ for $\hat f$ of index $k+1$
   and close to $x$ and satisfying
   $$\hat f (\hat x)>\hat f(x)\,.
   $$
   The extension which is mentioned in Theorem \ref{exact} consists of
   adding to $C_*^-$ a pair of new generators $\{x,\hat x\}$ for each $x\in crit^+ f_\partial$.
   More precisely,
   $$ \widehat C_*(f,X^-):= C_*(\hat f, \widehat X^-)
   $$
   for some quasi-gradient $\widehat X^-$ negatively adapted to $\hat f$.

   According to \cite{lauden}, the new complex is quasi-isomophic  to the
   old one $C_*(f,X^-)$. Since the restriction $f_\partial=\hat f\vert_{\partial M}$
    has no critical point of positive type,
    Proposition \ref{no-D} applies and
   there is an exact sequence
   $$0\longrightarrow C_*(f_\partial,X_\partial)\longrightarrow
   C_*(\hat f,\widehat X^-)\ \longrightarrow C_*(\hat f,\widehat X^+)\longrightarrow 0,
  $$

   where $\widehat X^+$ denotes a suitable vector field positively
    adapted to $\hat f$.
   In order to
   identify the quotient in this exact sequence, it is necessary to specify
  this vector field $\widehat X^+$.

   In its  support $V$, the modification from $f$ to $\hat f$
 is modelled similarly to  the birth
   of a pair of critical points in usual Morse Theory.
   The model produces also
    a descending quasi-gradient $\widehat X$ of $\hat f$ from the quasi-gradient $X$
   of $f$, which coincides with $X$ out of $V$ and on $\partial M$.
   Then, $-\widehat X$ (which is tangent to the boundary) is changed to  $\widehat X^+$  by adding
    a  vector field  $Z$ which is small
 with respect to $\widehat X$ and satisfies
  the  condition
(\ref{*}) up to sign.\\

    \noindent {\sc Claim.} {\it The bijection $j:crit^+ f_\partial
\cup crit f\to crit  \hat f $ which maps $x\in crit^+f_\partial$
to $\hat x\in crit \hat f$ and which is the identity on $crit f\subset
crit \hat f$
induces a chain  isomorphism
$C_*(\hat f,\widehat X^+)\cong C_*(f,X^+)$\,. }\\

  \noindent {\sc Proof of the claim.} Say $x\in crit_k^+f_\partial$.

 On the one hand,  each
 $X$-orbit descending from $x$ to $y\in crit_kf$
   gives rise to an
   $\widehat X$-orbit from
 $\hat x$ to $y$
 and hence, an $\widehat X^+$-orbit from $y$ to $\hat x$.
   Similarly,
   each $X$-orbit on $\partial M$ descending
  from $x$ to $y\in crit_{k-1}^+f_\partial$ gives rise to  an
  $\widehat X^+$-orbit from $\hat y$ to $\hat x$. And conversely. Making $j$ an identification,
 this proves the following:
$$\partial^{X^+}\, x=\partial{\widehat X^+}\, \hat x\,.
$$

On the other hand, we have to consider $y\in crit_{k+2} f$ and compute
its two differentials with respect to $X^+$ and $\widehat X^+$ and evaluate
them at $x$
 (recall that $x$ has degree $k+1$ in $C^+_*$). When $x$ and $y$ have consecutive critical values,
 as a consequence of
   Remark \ref{condition*},
   there are no
    $X^+$-connecting orbits from
    $x$ to $crit_{k+2} f$.

    But, if their critical values are not consecutive, one could have

 a broken $X$-orbit from $y$ to
$x$ made of an orbit
from $y$ to $z\in crit_{k+1}^-f_\partial$ and an orbit from $z$ to $x$ on
$\partial M$. By using the deformation formula $X^+=-X+Z$,
such a broken orbit gives rise to an $X^+$-orbit from $x$ to $y$, and hence to an
$\widehat X^+$-orbit from $\hat x$ to $y$. Then, such connecting orbits may exist. Conversely, by looking at the fusion of the pair $(x,\hat x)$ we get that every
$\widehat X^+$-orbit from $\hat x$ to $y$ is produced by an $X^+$-orbit  from $x$ to $y$.
Then, via $j$ the following equality holds true:
$$\langle\partial^{X^+}\, y,x\rangle=\langle\partial^{\widehat X^+}\, y, \hat x\rangle\,.
$$
This finishes the proof of  the claim and  Theorem \ref{exact}
  follows.\hfill$\Box$\\

 \section{Global stable manifolds and application to intersection pairing}\label{globalstable}

  We now discuss the question of {\it global stable manifolds }
 for adapted quasi-gradients.
 We only
  consider   $X^-$ in the definition below;
there is a similar definition for $X^+$.
If $x\in \partial M$
  is a critical point of negative type, so far we  have only considered
its local
  stable manifold $W^s_{loc}(x, X^-)$. If $x$ is of index $k$, it
is a small half-disc $D^{n-k}_-$
  whose  planar boundary lies in a
  level set of $f$  and spherical boundary lies in $\partial M$.
 Since  the flow of $X^-$, noted
  $ X^-_t$ at time $t$, is  positively complete,
 the following definition makes sense:

  \begin{defn}  For $x\in crit f \cup crit^-(f_\partial)$, the global stable
 manifold  of
  $x$ with respect to $X^-$ is defined as the union
  $$W^s(x,X^-)= \mathop{\bigcup}\limits_{t>0}
 \left( X_t^-\right)^{-1}\left(W^s_{loc}(x, X^-)\right).
  $$
  \end{defn}

  Under mild   assumptions,
it is a (non-proper) submanifold with boundary and its closure
  is a stratified set. The following assumption (Morse-Model-Transversality)
   is made in what follows.\smallskip

  \begin{itemize}
  \item[(MMT)] {\it For every $x\in crit f\cup crit^- f_\partial$ and $y\in crit^- f_\partial$,  the
  neighborhood $U_y$ of $y$ in $\partial M$ where $X^-$ is tangent to the boundary
  is mapped by the flow transversely to $W^s_{loc}(x, X^-)$.
     }
  \end{itemize}
  \smallskip

 \noindent Notice that if $X^-$ is Morse-Smale, the transversality condition  is satisfied along
  a small neighborhood $U$ of the local unstable manifold $W^u_{loc}(y, X^-)$.
Then, after some
  small perturbation of $X^-$ on $U_y\smallsetminus U$ destroying the tangency
  of $X^-$ to $\partial M$, condition (MMT) is fulfilled for the pair $(y,x)$.
 Thus, condition (MMT) is generic among the
  negatively adapted vector fields.

  \begin{prop}${}$ \label{frontier} If the negatively quasi-gradient $X^-$ is Morse-Smale and  fulfils condition {\rm(MMT)}
  then the following holds:

  \noindent  $1)$   The global stable manifold $W^s(x, X^-)$ is a
  submanifold  with boundary (non-closed in general); its boundary lies in $\partial M$.

   \noindent $2)$ If $z$ lies in the frontier of $W^s(x, X^-)$ in $M$, then it belongs to the stable manifold of some
   critical point $y$ in   $crit f\cup crit^- f_\partial$ such that $\dim W^s(y, X^-)<\dim W^s(x,X^-)$.
      \end{prop}

   This statement
   also holds for stable manifolds of critical points in $crit f\cup crit^+ f_\partial$ with respect
   to positively adapted vector fields.\\

  \nd {\bf Proof.\ }  1) According to the Implicit Function Theorem, the conclusion
  is clear  near any point where
  $X^-$ is transverse to the boundary. Near a point $z$ of $U_y$, it follows
  from (MMT).\\

  \noindent 2)  This fact is well known in the case of closed manifolds. It is an easy consequence of the Morse-Smale
  assumption. The proof is alike if the boundary is non-empty. \hfill\hfill$\Box$\\

 \begin{remarque} \label{fundrem}
  {\rm Due to the transversality assumptions, a small
 perturbation of
 $X^-$ (resp. $X^+$) moves
 each of stable and unstable
manifolds
by a small isotopy,
 and hence, preserves the complex $C^-_*$ (resp.  $C^+_*$ ) up to a canonical
 isomorphism.}

 As a consequence, without  changing the above-mentioned complexes, we are allowed to assume
  that the $X^-$-unstable manifolds of
 $crit f\cup crit^-f_\partial$ intersect the global $X^+$-stable manifolds
 of $crit f\cup crit^+f_\partial$ transversely.
 \\
  \end{remarque}

   \begin{rien} {\bf Where an abusive notation is corrected.}\label{abuse} {\rm If the orientation of some of
 the unstable manifolds is changed then the differential
 of the considered Morse complex (absolute or relative)
 is changed by a non-trivial isomorphism. So, to understand the role of
 the orientability of $M$ in what follows, it will be better to replace $C_*(f, X^-)$ with $C_*(f,X^-, \ep_f^-)$

 where $\ep_f^-$ denotes the chosen {\it orientation map} which associates an orientation
  of $W^u(x,X^-)$ with each $x\in crit f\cup crit^- f_\partial$. Note that $\ep_f^-$ orients the unstable manifolds regardless
 of  the quasi-gradient since they all have isotopic  germs at the critical points. And similarly
 for $C_*(f, X^+)$. Actually, we will only apply this change of notation  at the places where it will be crucial.\\

 }
 \end{rien}

\begin{rien} {\bf The  Poincar\'e-Lefschetz isomorphism.}
{\rm At the homology level,  this
isomorphism is a
 isomorphism
$$P: H_{*}(M,\partial M;\mathbb{Z})\to H^{n-*}(M;\mathbb{Z}),$$
We wish to describe it
by means of our Morse complexes in order to deduce
a Morse theoretical description of the homological intersection. There are several steps to
achieve.
}
\end{rien}

\noindent 1) First, we recall that there is a \emph{natural} isomorphism at the homology level
$$I_*(f,X^-): H_*\left(C_*(f,X^-)\right)\to H_*(M;\mathbb{Z}).$$
Indeed, we have described in \cite{lauden} a canonical process for removing the
 critical points of $f_\partial$ of negative
type.  Once this is done, the unstable manifolds of $X^-$
emerging  from $crit(f)$ yield
a cell decomposition of $M$ (see \cite{laudenbach}\footnote{ In this reference, a stronger assumption is made
on the vector field which implies this cell decomposition to be a $CW$-complex. Without this assumption, the cell decompositon has only the homotopy type of a $CW$-complex. This is sufficient for our discussion.})
whose homology is canonically isomorphic to the singular homology of $M$ (see \cite{milnor}, p. 90).

We now explain the naturality of this isomorphism. Let $(g, Y^-)$ be another pair of generic Morse
function and negatively adapted quasi-gradient. The choice of a generic path $\ga$
from $(g, Y^-)$ to $(f,X^-)$ gives rise to some \emph{simple homotopy equivalence}
\begin{equation}
\ga_*:C_*(g,Y^-)\to C_*(f,X^-)
\end{equation}
well defined up to the orientations.\footnote{The creation/cancellation times of pair of critical points along $\ga$ do not allow us to carry orientations along the path.}
At each time that $\ga$ crosses a  stratum corresponding to a codimension-one defect of
genericity of the pair ({\it function, negatively adapted quasi-gradient}) this yields an \emph{elementary}
modification of the Morse complex, indeed a \emph{quasi-isomorphism}  \cite{lauden}. One checks at each
occurrence that this quasi-isomorphism is compatible to the isomorphism
with $H_*(M;\mathbb{Z})$.
Finally, $\ga_*$ is the composition of all these quasi-isomorphisms. It induces  an isomorphism $[\ga_*]$ in homology making the next diagram commute:
\begin{equation}\label{natural}
\end{equation}
\vskip -1.3cm{
{\[\xymatrix@1{
 H_*\left(C_*(g,Y^-)\right) \ar[r]^(0.5){[\ga_*]}\ar[rd]_{I_*(g,Y^-)}&
H_*\left(C_*(f,X^-)\right) \ar[d]^{I_*(f,X^-)}\\
 & H_{*}(M;\mathbb{Z})
  }\]
  }
\noindent By taking the transpose of all  morphisms of chain complexes we get a similar diagram
in cohomology made of isomorphisms:
\[\xymatrix@1{
 H^*\left(C^*(g,Y^-)\right)\ar[rd]_{I^*(g,Y^-)}&
H^*\left(C^*(f,X^-)\right) \ar[l]_(0.5){[\ga^*]} \ar[d]^{I^*(f,X^-)}\\
 & H^{*}(M;\mathbb{Z})
  }\]
  Note that a change of orientations of some unstable manifolds has the same effect on $[\ga_*]$ and on $I_*(-,-)$.
  So, the commutativity of the above diagrams is not affected.\\

 \noindent 2) We can do the same for the Morse complex $C_*(f, X^+)$ which calculates the
 relative homology. Here, we will use the stable manifolds of $X^+$ that we introduced in the beginning of Section 3. More precisely, there is a canonical process,
 similar to the one above-mentioned for the complex $C_*(f,X^-)$, which removes
 the positive type critical points  of $f_\partial$. After removing them,
  the stable manifolds of $X^+$ associated with $crit f$ give rise to  a filtration of $M$ starting from $\partial M$:
 $$\partial M\subset M_{[1]}\subset \ldots \subset M_{[k]}\subset \ldots \subset M_{[n]}=M\,.
 $$
 Here, $M_{[k]}$ is the union of $\partial M $ and the closure of the stable manifolds
of $X^+$ converging
 to $crit_kf$.
 The cellular homology  associated with this filtration gives a canonical isomorphism
  $$I_*(f,X^+):H_*\left(C_*(f,X^+)\right)\to H_*(M,\partial M;\mathbb{Z}).$$

  Moreover, this isomorphism is \emph{natural }
 with respect to change of function and quasi-gradient in the same sense as it is detailed in 1) above.\\

 \noindent 3) Here comes the important point for orientations. Let $\ep_f^+$ be a choice of orientations of the stable manifolds
 of $X^+$. Since $M$ is oriented, the unstable manifolds of $X^+$ are not only co-oriented but they are also oriented.\footnote{Here, some convention has to be used, for instance: co-or(-)$\wedge$ or(-)= or($M$).}
 The latter orientations are denoted by $\ep_f^\perp$.

 We recall that $X^+$ is a negatively adapted quasi-gradient
of $-f$; we denote it by $Y^-:= X^+$ when it is considered as a descending quasi-gradient of $-f$. So, we have a chain complex $C_*(-f, Y^-, \ep_{-f}^-)$ where $\ep_{-f}^-$ is determined by $\ep_f^+$ by the rule
\begin{equation}\ep_{-f}^- {=}\ep_f^\perp.
\end{equation}

By applying the functor
$Hom(-,\mathbb{Z})$ we have  its dual, a co-chain complex, $C^*(-f, Y^-,\ep_f^\perp)$.
 By construction of $C_*^+$, we have
 \begin{equation}\label{obvious}
\quad\eta_*: C_*(f, X^+, \ep_f^+)\mathop{\longrightarrow}^{=}C^{n-*}(-f, Y^-,\ep_f^\perp)\,.
\end{equation}
This equality means same generators and same differential; only the grading is reversed.
It induces the equality $H_*\left(C_*(f, X^+,\ep_f^+)\right)= H^{n-*}\left(C^{n-*}(-f, Y^-,\ep_f^\perp)\right)$ and by
combining it with the isomorphims  $I_{*}(f,X^+)$ and $I^{n-*}(-f,Y^-)$ we get a description at the Morse complex level of
the Poincar\'e-Lefschetz isomorphism:
$$P: H_{*}(M,\partial M;\mathbb{Z})\to H^{n-*}(M;\mathbb{Z})\,.$$
\medskip

  \begin{rien} {\bf Application to the intersection pairing.} {\rm
 We are interested in  describing
  a pairing
  at the
   chain level
  $$ \sigma:  C_{k}(f,X^+)\otimes C_{n-k}(f,X^-)\to \mathbb{Z}
  $$ which induces the intersection pairing in homology.
This is achieved in the following way.

At the homology level the Poincar\'e-Lefschetz isomorphism  $P$
carries the intersection product
$$\iota:H_{*}(M,\partial M;\mathbb{Z})\otimes H_{n-*}(M,\mathbb{Z})\to \mathbb{Z}$$
to the evaluation map
$ev: H^{n-*}(M; \mathbb{Z})\otimes H_{n-*}(M;\mathbb{Z})\to\mathbb{Z}$\,.

After what was done in the previous subsection, we only have
  to understand this evaluation map in the setting of Morse homology.
First, there is  a canonical
evaluation map
$$ev=<-,->: C^{n-*}(-f,Y^-)\otimes C_{n-*}(-f,Y^-)\to\mathbb{Z}$$
which on the basis elements
 is the Kronecker product.
A more sophisticated way to say the same thing is to count  the  transverse
 intersection
$W^s(x, Y^-)\cap W^u(y, Y^-)$ for every pair of critical points of the same degree, that is both in
$crit_{k}f\cup crit^+_{k-1}f_\partial$ for some integer $k$. Here, it is essential $Y^-$ to be Morse-Smale
for avoiding undesirable  orbits connecting points of the same degree.

We choose a generic  path\footnote{First, choose a generic path ($f_t$) in the space of functions; then, complete with
a path of quasi-gradients. For this second step, use the convexity of the set of quasi-gradients adapted to $f_t$ for a given $t$. If the function $f_t$ has a codimension-one singularity, the involved critical point needs to be a zero of $X_t$ of corank one and the previous argument still works. }
$\Gamma$ from $(f,X^-)$ to  $(-f, Y^-)$ which yields a quasi-isomorphism
$\Gamma_*:C_{n-*}(f,X^-,,\ep_f^-) \to  C_{n-*}(-f, Y^-,\ep_f^\perp)$.
Thanks to (\ref{obvious}), the desired evalution map is given by
\begin{equation}
 \sigma= ev\circ(\eta_*\otimes \Gamma_*)\,.
 \end{equation}
If necessary, by Remark
\ref{fundrem} we may approximate $X^-$ in order to make
mutually transverse  $W^s(x, X^+)$ and $W^u(y, X^-)$
for every $x\in crit_{k}f\cup crit^+_{k-1}f_\partial $  and $y\in crit_{n-k}f\cup
crit^-_{n-k}f_\partial$\,.
}
\end{rien}

\noindent {\sc Claim.} {\it For every pair of cycles $\alpha\in C_{k}(f,X^+)$
and $\beta\in C_{n-k}(f,X^-)$, the geometric formula for
$\sigma(\alpha,\beta)$ is given by counting the signed intersection
number of the respective stable and unstable manifolds entering
in the linear combinations forming $\alpha$ and $\beta$.}\\

Indeed, by  (\ref{natural}) the cycles $\beta $ and $\Gamma_*(\beta)$ are homologous in $M$. Therefore,
they have the same algebraic intersection with the cycle $\alpha$. Notice that the frontier of the involved
invariant manifolds does not appear in this counting since it is made of invariant manifolds of less dimension.

\begin{cor} The pairing $\sigma$ induces the homological intersection.

\end{cor}

\vskip 1cm

redpajama_set_name: RedPajamaArXiv


Confession time, I'm a fantasy addict! For as long as I can remember I've loved the concept of magical worlds. I was the kid with dragons doodled around the edge of her school work, the one with her head constantly buried in a book. As a teen I shunned partying to play Magic the Gathering and DM Dungeons and Dragons games.
Through the years, I've always made up stories and took characters on amazing adventures, in the privacy of my own mind. Now I want to start sharing them with people.
I live with my husband and two cats in Nottinghamshire in England. When I'm not writing (or planning something I'm writing) I'm usually working, reading, playing bass for my church's worship team, playing computer games (World of Warcraft, Dragon Age, Pokemon, Minecraft) or drinking tea.


text:
ALPHA WOLF joins SHARPTONE RECORD
Fault in and of itself is a blameless word; it's the weight we decide to put into the direction it's thrown that defines who we are. Melbourne's Alpha Wolf have spent the past few years growing, learning, understanding, and accepting, and through that growth has come realisation, as guitarist Sabian Lynch explains. "Fault is our way of opening up, and doing our best to show that it's okay to mess up, it's okay to fail, it's okay make mistakes, as long as we can find ways to grow from it. We always want to be honest with our songwriting and these songs showcase a realisation within ourselves, thus creating the best music we've ever been a part of."
Today the five piece look to raise the bar they have set for themselves again with their new single "Sub-Zero," the announcement of the forthcoming EP Fault, and their inking a deal with Sharptone Records will help show the band to the world. Alpha Wolf's Fault EP will be available on CD, Vinyl, & Digital on April 19th, with pre-orders available HERE.
The band is proud to announce Sharptone Records is welcoming the Alpha Dogs into their esteemed roster which includes such artists as Emmure, Crystal Lake, and Australia's own Polaris. "We can't wait to work alongside the team at Sharptone, helping to take Alpha Wolf to the world stage." Guitarist Scott Simpson elates with a sense of humbling disbelief. "Being on the same roster as some of the bands that got us into heavy music in the beginning is extremely humbling and something we have worked towards since the inception of the band. We've shown Australia what we can do and it's time we showed the rest of the world"
Next month will see Alpha Wolf head to Europe for the first time to play alongside new label mates Emmure as well as Fit For A King, Obey The Brave, and Rise Of The Northstar, but this is just a taste of what is to come. When asked what Europeans can expect from the upcoming run of shows, Simpson is as straightforward as possible. "We're going to focus on what we've always done well, playing live and putting out crushingly heavy music. We have formed a team of great people around the world that believe in our vision and want to see us succeed. We have a lot to prove and even more to give, it's going to be a busy year for all things Alpha Wolf."
Fault tracklisting:
The Lonely Bones
Alpha Wolf Tour Dates:
04/05 Paris, France @ Gibus (no Rise Of The Northstar)
04/06 Leeds, UK @ Key Club
04/07 Bristol, UK @ The Fleece
04/08 Nottingham, UK @ Rescue Rooms
04/09 Manchester, UK @ Rebellion
04/10 London, UK @ O2 Islington Academy
04/11 Wiesbaden, Germany @ Schlachthof
04/12 Zurich, Switzerland @ Impericon Festival
04/13 Oberhausen, Germany @ Impericon Festival
04/14 Copenhagen, Denmark @ Richter Gladsaxe
04/16 Warsaw, Poland @ Proxima
04/17 Munchen, Germany @ Backstage
04/18 Prague, Czech Republic @ Futurum
04/19 Vienna, Austria @ Impericon Festival
04/20 Leipzig, Germany @ Impericon Festival
04/21 Hannover, Germany @ Faust
04/23 Hamburg, Germany @ Markthalle
04/24 Utrecht, Netherlands @ Tivoli
04/25 Stuttgart, Germany @ Wizemann
04/26 Meerhout, Belgium @ Groezerock (no Rise Of The Northstar)
www.facebook.com/alphawolfcvlt | www.twitter.com/alphawolfcvlt | www.instagram.com/alphawolfcvlt
ALPHA WOLFShare0


text:
Pushkar Fair
Hotel Peacock
Welcome to Hotel Peacock Holiday Resort
Booking Now:
Select Room Deluxe Room Elegant Room luxury Room
Number of Guests 1 2 3 4 5 5+
Pushkar stands for devout religiousness and spirituality. Having been mentioned in Mahabharata and Ramayana and Kalidasa's Abhigyanam Shakuntalam, the city oozes sanctity and mysticism. A quiet little quaint town in eastern Rajasthan, the city of Pushkar is situated at 13 km from Ajmer, on the banks of a beautiful placid lake. A city of 400 temples and 52 bathing ghats, Pushkar is actually, strangely enough, home to the only temple of the Hindu God of Creation, Brahma.
Bearing rich and heavy religious and mythological allusions to its name, Pushkar is one of the five Dhams or pilgrimage spots (others being Badrinath, Puri, Rameswaram, and Dwarka) that are highly revered by Hindus. If mythology is to be believed, it is said that in a battle Lord Brahma slew the demon Vajra Nabh with a lotus, whose petals traveled down to the earth and settled down in three spots in and around Pushkar where ultimately lakes came up. Legend has it that the Pushkar Lake was bordered by 500 temples and 52 palaces (a number of rajas and maharajas built palaces here for the purpose of pilgrimage). The Brahma temple offers an interesting visit to note. Out of a curse from Savitri, wife of Brahma, Brahma is not worshipped here, even though he is one of the Holy Trinity of Hinduism. This temple built with marble is decorated with silver coins and there is a silver turtle on the floor of the temple.
Apart from the Brahma Temple, Pushkar offers a host of other temples to be visited like Savitri Temple, Rangji Temple, Warah Temple and Apteshwar temple. A city of mythological relevance, ghats, temples and countless saffron clothes clad priests, Pushkar is most traveled due to its camel fair.
A dip in the Pushkar Lake at the famous Pushkar Fair held along the banks of the Pushkar Lake each year on the Kartik Shukla Ekadashi continuing for the next five days till Kartik Purnima is considered to wash all your sins away. It is generally around November that the fair is held. One of the most colorful and resplendent fairs of India, it is a major tourist attraction in India. Although Pushkar is barely a tiny town with a measly population of 14,000, it spills over to 200,000 during the fair. Albeit the fair is for Hindus primarily, it is visited by all and sundry. In fact, Pushkar fair is a meeting place for people from all over the world. You just need to be there to soak in the warmth of the place and its people.
You just cannot miss out on the camel safaris which lead you through the glistening golden sands of the vast Thar Desert (Near Pushkar). A ride through the sandy landscape, passing through remote villages will take your breath away – touch upon a new pedestal of romanticism. The Aravallis here are one of the oldest, and finest with sandy expanses, dunes, beautiful hills and captivating sunrises and sunsets. The camel races are too exotic to be overlooked. Usually a clumsy beast of burden, the camel amazes one and all decorated in finery.
Lose yourself amidst the swirls of colorful veils and ghagras of the women and richly hued turbans men and dashes of colors and dyes of vibrant fabrics and attire at Pushkar Fair. Every aspect of the fair including the people, the stalls, shoppers, acrobats, folk artists and more exudes a feel of liveliness and joie de vivre. A good buy of attires, bead necklaces of Nagpur, woolen blankets of Merta, textiles of Ajmer will be quite interesting.
Find your favorite room, feel more than home
Guests --Select-- 1 2 3 4 5 6 7 8 9 10 More than 10
Child --Select-- 1 2 3 4 5 6 7 8 9 10 More than 10
Room 1 2 3 4 5 6 7 8 9 10 More than 10
Mr. Rajendra Prasad Rajoria and Smt. Saroj Rajoria is the founder director of Pushkar Villas Resort, Peacock Holiday Resort and International Camp and Desert Resort. He is also there for you with a welcoming
Hotel Peacock Holiday Phone:(91) 145 2772093 Fax:(91) 145 2772 516 Email:arajoria@hotmail.com Web:www.peacock-pushkar.com
© All right reserved - peacock-pushkar.com
Designed and Developed By Tag Eleven Softech Pvt Ltd


text:
Ивашковичи — название населённых пунктов.

Белоруссия
 Ивашковичи — деревня в Петриковском районе Гомельской области.
 Ивашковичи — посёлок в Петриковском районе Гомельской области.
 Ивашковичи — деревня в Зельвенском районе Гродненской области.

Россия
 Ивашковичи — деревня в Жуковском районе Калужской области.
 Ивашковичи — деревня в Куйбышевском районе Калужской области.


The large room was earthen-floored and refreshingly cool. A table had been set in its middle, with small stools around it. The table top glistened with a shiny black finish. An old man sat by himself at one corner, with a square serving tray before him, drinking saké with a side dish of boiled vegetables.
The old man's face was bright red from the saké. And the skin of his face was taught and shiny, with not a wrinkle to be found. Only his white beard, which grew with great vigor, betrayed his advanced age. A young child myself, I wondered what this old man's age might be.
The lady of the place returned from the backyard spout with a bucket of water and was wiping her hands on her apron. "May I ask how old you are, good sir?"
The old man downed a mouthful of vegetables and replied in an easy manner, "Can't say that I remember."
The lady thrust her dried hands into her narrow sash and stood for a moment, observing the man's face in profile. The man took a big gulp of saké from a vessel the size of a rice bowl, then released a long breath through his white beard.
This time the lady asked him, "From where do you hail?"
The lady asked again, her hands still thrust into her narrow sash, "And where are you headed?"
The old man gulped down more warm saké from his large vessel and, releasing another breath as before, said, "Off yonder."
"Directly?" asked the lady. As she spoke, his breath flowed through the shōji, passed beneath the willow tree, and continued on directly toward the river bank.


text:
Other Pictures/Videos
Dodge Magnum Concept
RodneyJ
New From Daimler/Chysler
And its Rear Wheel Drive too.
It's growing on me all the time, future replacement for the 6 in five years time ?????
I know, it's a wagon, but I think it looks cool !!!
Replying to Topic 'Dodge Magnum Concept'
I like it.........
Gecko_2k2
Reading Topic: Dodge Magnum Concept
Looks like a hearst in the last pic.
A roof choped Durango?
Nice but it looks just to large for it's own good.
hehe, looks like an anvil fell on the dorango....and now you have the magnum.
Windsor6
I drove one at work the other day. It's a big car, but the interior is very small. It seems like there is 14 ft of dash and hood in front of the driver's seat. It's a pretty heavy car, but the hemi has no problems gettin' her to move. It IS fast.
robgtaasc
Glug glug glug... *BURP*
My impression of the 5.7 V8 guzzling down gas.
It's interesting to say the least...
It will also be available with 3.5 litre V6 .....
I like it, it kinda reminds me of a 6 wagon.......On steroids !!!!!!
0-60 4.7 sec........not bad for a 4,000 pound car.
Just though - If Batman got a family and kids - this is what he would drive *pow* *boom* *splash*
Originally posted by Blackbird
Just though - If Batman got a family and kids - this is what he would drive *pow* *boom* *splash*[/b]
Just as long as it is Not a *smash* *Crash* *Bang*...............
Phrosted
This thing just looks like a bear. As in, "get out of my way or I will eat you!" Just what America needs!
AliAL
Nice Avatar Phrosted!
As far as the Dodge Magnum goes...I think it's pretty intimidating looking.
Thanks, I'm a big fan of this new one! Yeah, that car is probably the most intimidating soccer-mobile EVER!
You know what it looks like? It looks like it has armor! The thing looks like an armored station wagon!
Yeah... Armor... It has pop-up HellFire's in the roof and a couple of M60's in the front air intakes.
Reading Topic: Reading Topic: Dodge Magnum Concept
Don't forget the flamethrowers in the exhaust pipes, and the vulcan cannons that pop out of the quarterpanels!
Ooops forgot that one...
Anyway it MUST have one of these "rail-chairs" then slide out from one of the rear doors that you can sit in and shoot. You know like the one on the hunting off-roader in Jurrasic Park 2. Off course the door sits on your outer side like a shield!
is this car has been designed for the army or what?
Haris Apr 27, 2003


text:
set -e
DJANGO_DIR={{ django_dir }}
PROJECT_DIR={{ project_dir }}
LOGFILE=$PROJECT_DIR/logs/gunicorn.log
LOGDIR=$(dirname $LOGFILE)
NUM_WORKERS=3

cd {{ django_dir }}
source $PROJECT_DIR/venv/bin/activate
export DATABASE_URL='postgres://{{ db_user }}:{{ db_password }}@localhost/{{ db_name }}'
export PYTHONPATH=$DJANGO_DIR:$PYTHONPATH

test -d $LOGDIR || mkdir -p $LOGDIR
exec $PROJECT_DIR/venv/bin/gunicorn bookshop.wsgi:application -w $NUM_WORKERS \
  --log-level=info --log-file=$LOGFILE -b 0.0.0.0:9000 2>>$LOGFILE

redpajama_set_name: RedPajamaGithub