Fix gRPC unqualified DateTime issue

Fix gRPC unqualified DateTime issue

(This is fixed in a later version of gRPC codegen)

--- apis/Google.Cloud.Dlp.V2/Google.Cloud.Dlp.V2/DlpGrpc.cs
+++ apis/Google.Cloud.Dlp.V2/Google.Cloud.Dlp.V2/DlpGrpc.cs
@@ -588,7 +588,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.InspectContentResponse InspectContent(global::Google.Cloud.Dlp.V2.InspectContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.InspectContentResponse InspectContent(global::Google.Cloud.Dlp.V2.InspectContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return InspectContent(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -616,7 +616,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectContentResponse> InspectContentAsync(global::Google.Cloud.Dlp.V2.InspectContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectContentResponse> InspectContentAsync(global::Google.Cloud.Dlp.V2.InspectContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return InspectContentAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -643,7 +643,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.RedactImageResponse RedactImage(global::Google.Cloud.Dlp.V2.RedactImageRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.RedactImageResponse RedactImage(global::Google.Cloud.Dlp.V2.RedactImageRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return RedactImage(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -669,7 +669,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.RedactImageResponse> RedactImageAsync(global::Google.Cloud.Dlp.V2.RedactImageRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.RedactImageResponse> RedactImageAsync(global::Google.Cloud.Dlp.V2.RedactImageRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return RedactImageAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -695,7 +695,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DeidentifyContentResponse DeidentifyContent(global::Google.Cloud.Dlp.V2.DeidentifyContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DeidentifyContentResponse DeidentifyContent(global::Google.Cloud.Dlp.V2.DeidentifyContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeidentifyContent(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -721,7 +721,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyContentResponse> DeidentifyContentAsync(global::Google.Cloud.Dlp.V2.DeidentifyContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyContentResponse> DeidentifyContentAsync(global::Google.Cloud.Dlp.V2.DeidentifyContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeidentifyContentAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -745,7 +745,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ReidentifyContentResponse ReidentifyContent(global::Google.Cloud.Dlp.V2.ReidentifyContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ReidentifyContentResponse ReidentifyContent(global::Google.Cloud.Dlp.V2.ReidentifyContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ReidentifyContent(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -767,7 +767,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ReidentifyContentResponse> ReidentifyContentAsync(global::Google.Cloud.Dlp.V2.ReidentifyContentRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ReidentifyContentResponse> ReidentifyContentAsync(global::Google.Cloud.Dlp.V2.ReidentifyContentRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ReidentifyContentAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -789,7 +789,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ListInfoTypesResponse ListInfoTypes(global::Google.Cloud.Dlp.V2.ListInfoTypesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ListInfoTypesResponse ListInfoTypes(global::Google.Cloud.Dlp.V2.ListInfoTypesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListInfoTypes(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -811,7 +811,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListInfoTypesResponse> ListInfoTypesAsync(global::Google.Cloud.Dlp.V2.ListInfoTypesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListInfoTypesResponse> ListInfoTypesAsync(global::Google.Cloud.Dlp.V2.ListInfoTypesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListInfoTypesAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -834,7 +834,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate CreateInspectTemplate(global::Google.Cloud.Dlp.V2.CreateInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate CreateInspectTemplate(global::Google.Cloud.Dlp.V2.CreateInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateInspectTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -858,7 +858,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> CreateInspectTemplateAsync(global::Google.Cloud.Dlp.V2.CreateInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> CreateInspectTemplateAsync(global::Google.Cloud.Dlp.V2.CreateInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateInspectTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -881,7 +881,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate UpdateInspectTemplate(global::Google.Cloud.Dlp.V2.UpdateInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate UpdateInspectTemplate(global::Google.Cloud.Dlp.V2.UpdateInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateInspectTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -903,7 +903,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> UpdateInspectTemplateAsync(global::Google.Cloud.Dlp.V2.UpdateInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> UpdateInspectTemplateAsync(global::Google.Cloud.Dlp.V2.UpdateInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateInspectTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -925,7 +925,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate GetInspectTemplate(global::Google.Cloud.Dlp.V2.GetInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.InspectTemplate GetInspectTemplate(global::Google.Cloud.Dlp.V2.GetInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetInspectTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -947,7 +947,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> GetInspectTemplateAsync(global::Google.Cloud.Dlp.V2.GetInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.InspectTemplate> GetInspectTemplateAsync(global::Google.Cloud.Dlp.V2.GetInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetInspectTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -969,7 +969,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ListInspectTemplatesResponse ListInspectTemplates(global::Google.Cloud.Dlp.V2.ListInspectTemplatesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ListInspectTemplatesResponse ListInspectTemplates(global::Google.Cloud.Dlp.V2.ListInspectTemplatesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListInspectTemplates(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -991,7 +991,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListInspectTemplatesResponse> ListInspectTemplatesAsync(global::Google.Cloud.Dlp.V2.ListInspectTemplatesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListInspectTemplatesResponse> ListInspectTemplatesAsync(global::Google.Cloud.Dlp.V2.ListInspectTemplatesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListInspectTemplatesAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1013,7 +1013,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteInspectTemplate(global::Google.Cloud.Dlp.V2.DeleteInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteInspectTemplate(global::Google.Cloud.Dlp.V2.DeleteInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteInspectTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1035,7 +1035,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteInspectTemplateAsync(global::Google.Cloud.Dlp.V2.DeleteInspectTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteInspectTemplateAsync(global::Google.Cloud.Dlp.V2.DeleteInspectTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteInspectTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1058,7 +1058,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate CreateDeidentifyTemplate(global::Google.Cloud.Dlp.V2.CreateDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate CreateDeidentifyTemplate(global::Google.Cloud.Dlp.V2.CreateDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateDeidentifyTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1082,7 +1082,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> CreateDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.CreateDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> CreateDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.CreateDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateDeidentifyTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1105,7 +1105,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate UpdateDeidentifyTemplate(global::Google.Cloud.Dlp.V2.UpdateDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate UpdateDeidentifyTemplate(global::Google.Cloud.Dlp.V2.UpdateDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateDeidentifyTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1127,7 +1127,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> UpdateDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.UpdateDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> UpdateDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.UpdateDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateDeidentifyTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1149,7 +1149,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate GetDeidentifyTemplate(global::Google.Cloud.Dlp.V2.GetDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DeidentifyTemplate GetDeidentifyTemplate(global::Google.Cloud.Dlp.V2.GetDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetDeidentifyTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1171,7 +1171,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> GetDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.GetDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DeidentifyTemplate> GetDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.GetDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetDeidentifyTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1193,7 +1193,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesResponse ListDeidentifyTemplates(global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesResponse ListDeidentifyTemplates(global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListDeidentifyTemplates(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1215,7 +1215,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesResponse> ListDeidentifyTemplatesAsync(global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesResponse> ListDeidentifyTemplatesAsync(global::Google.Cloud.Dlp.V2.ListDeidentifyTemplatesRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListDeidentifyTemplatesAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1237,7 +1237,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteDeidentifyTemplate(global::Google.Cloud.Dlp.V2.DeleteDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteDeidentifyTemplate(global::Google.Cloud.Dlp.V2.DeleteDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteDeidentifyTemplate(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1259,7 +1259,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.DeleteDeidentifyTemplateRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteDeidentifyTemplateAsync(global::Google.Cloud.Dlp.V2.DeleteDeidentifyTemplateRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteDeidentifyTemplateAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1282,7 +1282,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.JobTrigger CreateJobTrigger(global::Google.Cloud.Dlp.V2.CreateJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.JobTrigger CreateJobTrigger(global::Google.Cloud.Dlp.V2.CreateJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateJobTrigger(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1306,7 +1306,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> CreateJobTriggerAsync(global::Google.Cloud.Dlp.V2.CreateJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> CreateJobTriggerAsync(global::Google.Cloud.Dlp.V2.CreateJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateJobTriggerAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1329,7 +1329,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.JobTrigger UpdateJobTrigger(global::Google.Cloud.Dlp.V2.UpdateJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.JobTrigger UpdateJobTrigger(global::Google.Cloud.Dlp.V2.UpdateJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateJobTrigger(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1351,7 +1351,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> UpdateJobTriggerAsync(global::Google.Cloud.Dlp.V2.UpdateJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> UpdateJobTriggerAsync(global::Google.Cloud.Dlp.V2.UpdateJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return UpdateJobTriggerAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1373,7 +1373,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.JobTrigger GetJobTrigger(global::Google.Cloud.Dlp.V2.GetJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.JobTrigger GetJobTrigger(global::Google.Cloud.Dlp.V2.GetJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetJobTrigger(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1395,7 +1395,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> GetJobTriggerAsync(global::Google.Cloud.Dlp.V2.GetJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.JobTrigger> GetJobTriggerAsync(global::Google.Cloud.Dlp.V2.GetJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetJobTriggerAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1417,7 +1417,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ListJobTriggersResponse ListJobTriggers(global::Google.Cloud.Dlp.V2.ListJobTriggersRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ListJobTriggersResponse ListJobTriggers(global::Google.Cloud.Dlp.V2.ListJobTriggersRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListJobTriggers(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1439,7 +1439,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListJobTriggersResponse> ListJobTriggersAsync(global::Google.Cloud.Dlp.V2.ListJobTriggersRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListJobTriggersResponse> ListJobTriggersAsync(global::Google.Cloud.Dlp.V2.ListJobTriggersRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListJobTriggersAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1461,7 +1461,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteJobTrigger(global::Google.Cloud.Dlp.V2.DeleteJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteJobTrigger(global::Google.Cloud.Dlp.V2.DeleteJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteJobTrigger(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1483,7 +1483,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteJobTriggerAsync(global::Google.Cloud.Dlp.V2.DeleteJobTriggerRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteJobTriggerAsync(global::Google.Cloud.Dlp.V2.DeleteJobTriggerRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteJobTriggerAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1506,7 +1506,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DlpJob CreateDlpJob(global::Google.Cloud.Dlp.V2.CreateDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DlpJob CreateDlpJob(global::Google.Cloud.Dlp.V2.CreateDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateDlpJob(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1530,7 +1530,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DlpJob> CreateDlpJobAsync(global::Google.Cloud.Dlp.V2.CreateDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DlpJob> CreateDlpJobAsync(global::Google.Cloud.Dlp.V2.CreateDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CreateDlpJobAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1553,7 +1553,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.ListDlpJobsResponse ListDlpJobs(global::Google.Cloud.Dlp.V2.ListDlpJobsRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.ListDlpJobsResponse ListDlpJobs(global::Google.Cloud.Dlp.V2.ListDlpJobsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListDlpJobs(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1575,7 +1575,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListDlpJobsResponse> ListDlpJobsAsync(global::Google.Cloud.Dlp.V2.ListDlpJobsRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.ListDlpJobsResponse> ListDlpJobsAsync(global::Google.Cloud.Dlp.V2.ListDlpJobsRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return ListDlpJobsAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1597,7 +1597,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Cloud.Dlp.V2.DlpJob GetDlpJob(global::Google.Cloud.Dlp.V2.GetDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Cloud.Dlp.V2.DlpJob GetDlpJob(global::Google.Cloud.Dlp.V2.GetDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetDlpJob(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1619,7 +1619,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DlpJob> GetDlpJobAsync(global::Google.Cloud.Dlp.V2.GetDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Cloud.Dlp.V2.DlpJob> GetDlpJobAsync(global::Google.Cloud.Dlp.V2.GetDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return GetDlpJobAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1643,7 +1643,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteDlpJob(global::Google.Cloud.Dlp.V2.DeleteDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Protobuf.WellKnownTypes.Empty DeleteDlpJob(global::Google.Cloud.Dlp.V2.DeleteDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteDlpJob(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1669,7 +1669,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteDlpJobAsync(global::Google.Cloud.Dlp.V2.DeleteDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> DeleteDlpJobAsync(global::Google.Cloud.Dlp.V2.DeleteDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return DeleteDlpJobAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1695,7 +1695,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The response received from the server.</returns>
-      public virtual global::Google.Protobuf.WellKnownTypes.Empty CancelDlpJob(global::Google.Cloud.Dlp.V2.CancelDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual global::Google.Protobuf.WellKnownTypes.Empty CancelDlpJob(global::Google.Cloud.Dlp.V2.CancelDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CancelDlpJob(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }
@@ -1721,7 +1721,7 @@
       /// <param name="deadline">An optional deadline for the call. The call will be cancelled if deadline is hit.</param>
       /// <param name="cancellationToken">An optional token for canceling the call.</param>
       /// <returns>The call object.</returns>
-      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> CancelDlpJobAsync(global::Google.Cloud.Dlp.V2.CancelDlpJobRequest request, grpc::Metadata headers = null, DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
+      public virtual grpc::AsyncUnaryCall<global::Google.Protobuf.WellKnownTypes.Empty> CancelDlpJobAsync(global::Google.Cloud.Dlp.V2.CancelDlpJobRequest request, grpc::Metadata headers = null, global::System.DateTime? deadline = null, CancellationToken cancellationToken = default(CancellationToken))
       {
         return CancelDlpJobAsync(request, new grpc::CallOptions(headers, deadline, cancellationToken));
       }


Update buildtaskcall to include commitid and message

--- RegTesting.BuildTasks/UpdateTestcasesTask.cs
+++ RegTesting.BuildTasks/UpdateTestcasesTask.cs
@@ -25,7 +25,7 @@
 				Log.LogMessage(MessageImportance.Normal, "Updating Testcases: " + stage + ".dll -> " + EndpointAdress);
 				using (WcfClient wcfClient = new WcfClient(EndpointAdress))
 				{
-					wcfClient.SendFile(File, stage, ReleaseManager, Testsuite);
+					wcfClient.SendFile(File, stage, ReleaseManager, Testsuite, Branch, CommitId, CommitMessage);
 					Log.LogMessage(MessageImportance.Normal, "Updating Testcases: SUCCESS.");
 					Log.LogMessage(MessageImportance.Normal, "Testresults will be sent to " + ReleaseManager );
 				}
@@ -90,5 +90,35 @@
 			get;
 			set;
 		}
+
+
+		/// <summary>
+		/// The branch of the commit
+		/// </summary>
+		public String Branch
+		{
+			get;
+			set;
+		}
+
+
+		/// <summary>
+		/// The commit id
+		/// </summary>
+		public String CommitId
+		{
+			get;
+			set;
+		}
+
+
+		/// <summary>
+		/// The commit message
+		/// </summary>
+		public String CommitMessage
+		{
+			get;
+			set;
+		}
 	}
 }


name change

name change

--- Nez-PCL/ECS/Scene.cs
+++ Nez-PCL/ECS/Scene.cs
@@ -662,10 +662,9 @@
 		/// </summary>
 		/// <typeparam name="T">entity type</typeparam>
 		/// <returns></returns>
-		public T createAndAddEntity<T>( string name ) where T : Entity, new()
-		{
-			var entity = new T();
-			entity.name = name;
+		public Entity createEntity( string name )
+		{
+			var entity = new Entity( name );
 			return addEntity( entity );
 		}


make AppVeyor happy for release builds

make AppVeyor happy for release builds

--- Nez.Portable/Core.cs
+++ Nez.Portable/Core.cs
@@ -334,8 +334,10 @@
 		[Conditional( "DEBUG" )]
 		void startDebugUpdate()
 		{
+#if DEBUG
 			TimeRuler.instance.startFrame();
 			TimeRuler.instance.beginMark( "update", Color.Green );
+#endif
 		}

 		[Conditional( "DEBUG" )]


Better start up behaviour when an instance is already running

--- OmniSharp/Program.cs
+++ OmniSharp/Program.cs
@@ -50,6 +50,23 @@
                 return;
             }

+            bool createdNew;
+            using (var mutex = new Mutex(true, "OmniSharp", out createdNew))
+            {
+                if (createdNew)
+                {
+                    StartServer(solutionPath, port);
+                }
+                else
+                {
+                    Console.WriteLine("Detected an OmniSharp instance already loaded. Press a key.");
+                    Console.ReadKey();
+                }
+            }
+        }
+
+        private static void StartServer(string solutionPath, int port)
+        {
             var solution = new CSharpSolution(solutionPath);

             var nancyHost = new NancyHost(new Bootstrapper(solution), new Uri("http://localhost:" + port));


Don't throw exception on closing

Don't throw exception on closing

if Outlook is not responding.

--- OotD.Core/Startup.cs
+++ OotD.Core/Startup.cs
@@ -158,12 +158,21 @@

         public static void DisposeOutlookObjects()
         {
-            _outlookExplorer?.Close();
+            try
+            {
+                _outlookExplorer?.Close();

-            _outlookExplorer = null;
-            _outlookFolder = null;
-            OutlookNameSpace = null;
-            _outlookApp = null;
+                _outlookExplorer = null;
+                _outlookFolder = null;
+                OutlookNameSpace = null;
+                _outlookApp = null;
+            }
+            catch
+            {
+                // ignore any exceptions cleaning up as they might result
+                // from a crash in Outlook itself.
+            }
+
         }
     }
 }


simplified lookup, added HTC resolving

simplified lookup, added HTC resolving

--- PhoneNameResolver.cs
+++ PhoneNameResolver.cs
@@ -15,6 +15,8 @@
             {
                 case "NOKIA":
                     return ResolveNokia(manufacturer, model);
+                case "HTC":
+                    return ResolveHtc(manufacturer, model);
                 default:
                     return new CanonicalPhoneName()
                     {
@@ -28,6 +30,43 @@
             }
         }

+        private static CanonicalPhoneName ResolveHtc(string manufacturer, string model)
+        {
+            var modelNormalized = model.Trim().ToUpper();
+
+            var result = new CanonicalPhoneName()
+            {
+                ReportedManufacturer = manufacturer,
+                ReportedModel = model,
+                CanonicalManufacturer = "HTC",
+                CanonicalModel = model,
+                IsResolved = false
+            };
+
+
+            var lookupValue = modelNormalized;
+
+            if (lookupValue.StartsWith("A620"))
+            {
+                lookupValue = "A620";
+            }
+
+            if (lookupValue.StartsWith("C625"))
+            {
+                lookupValue = "C625";
+            }
+
+            if (htcLookupTable.ContainsKey(lookupValue))
+            {
+                var modelMetadata = htcLookupTable[lookupValue];
+                result.CanonicalModel = modelMetadata.CanonicalModel;
+                result.Comments = modelMetadata.Comments;
+                result.IsResolved = true;
+            }
+
+            return result;
+        }
+
         private static CanonicalPhoneName ResolveNokia(string manufacturer, string model)
         {
             var modelNormalized = model.Trim().ToUpper();
@@ -50,71 +89,136 @@
             if (nokiaLookupTable.ContainsKey(lookupValue))
             {
                 var modelMetadata = nokiaLookupTable[lookupValue];
-                if (nokiaCanonicalModels.ContainsKey(modelMetadata.ModelId))
-                {
-                    result.CanonicalModel = nokiaCanonicalModels[modelMetadata.ModelId].CanonicalModel;
-                    result.Comments = modelMetadata.Description;
+                    result.CanonicalModel = modelMetadata.CanonicalModel;
+                    result.Comments = modelMetadata.Comments;
                     result.IsResolved = true;
-                }
             }

             return result;
         }

-        private static Dictionary<string, CanonicalPhoneName> nokiaCanonicalModels = new Dictionary<string, CanonicalPhoneName>()
-        {
-            { "Lumia505", new CanonicalPhoneName() { CanonicalModel = "Lumia 505" } },
-            { "Lumia510", new CanonicalPhoneName() { CanonicalModel = "Lumia 510" } },
-            { "Lumia610", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } },
-            { "Lumia620", new CanonicalPhoneName() { CanonicalModel = "Lumia 620" } },
-            { "Lumia710", new CanonicalPhoneName() { CanonicalModel = "Lumia 710" } },
-            { "Lumia800", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } },
-            { "Lumia810", new CanonicalPhoneName() { CanonicalModel = "Lumia 810" } },
-            { "Lumia820", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } },
-            { "Lumia822", new CanonicalPhoneName() { CanonicalModel = "Lumia 822" } },
-            { "Lumia900", new CanonicalPhoneName() { CanonicalModel = "Lumia 900" } },
-            { "Lumia920", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }
+        private static Dictionary<string, CanonicalPhoneName> htcLookupTable = new Dictionary<string, CanonicalPhoneName>()
+        {
+            // Surround
+            { "7 MONDRIAN T8788", new CanonicalPhoneName() { CanonicalModel = "Surround" } },
+            { "T8788", new CanonicalPhoneName() { CanonicalModel = "Surround" } },
+            { "SURROUND", new CanonicalPhoneName() { CanonicalModel = "Surround" } },
+            { "SURROUND T8788", new CanonicalPhoneName() { CanonicalModel = "Surround" } },
+
+            // Mozart
+            { "7 MOZART", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "7 MOZART T8698", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "HTC MOZART", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "MERSAD 7 MOZART T8698", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "MOZART", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "MOZART T8698", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "PD67100", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+            { "T8697", new CanonicalPhoneName() { CanonicalModel = "Mozart" } },
+
+            // Pro
+            { "7 PRO T7576", new CanonicalPhoneName() { CanonicalModel = "7 Pro" } },
+            { "MWP6885", new CanonicalPhoneName() { CanonicalModel = "7 Pro" } },
+            { "USCCHTC-PC93100", new CanonicalPhoneName() { CanonicalModel = "7 Pro" } },
+
+            // Arrive
+            { "PC93100", new CanonicalPhoneName() { CanonicalModel = "Arrive", Comments = "Sprint" } },
+            { "T7575", new CanonicalPhoneName() { CanonicalModel = "Arrive", Comments = "Sprint" } },
+
+            // HD2
+            { "HD2", new CanonicalPhoneName() { CanonicalModel = "HD2" } },
+            { "HD2 LEO", new CanonicalPhoneName() { CanonicalModel = "HD2" } },
+            { "LEO", new CanonicalPhoneName() { CanonicalModel = "HD2" } },
+
+            // HD7
+            { "7 SCHUBERT T9292", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "GOLD", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "HD7", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "HD7 T9292", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "MONDRIAN", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "SCHUBERT", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "Schubert T9292", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+            { "T9296", new CanonicalPhoneName() { CanonicalModel = "HD7", Comments = "Telstra, AU" } },
+            { "TOUCH-IT HD7", new CanonicalPhoneName() { CanonicalModel = "HD7" } },
+
+            // HD7S
+            { "T9295", new CanonicalPhoneName() { CanonicalModel = "HD7S" } },
+
+            // Trophy
+            { "7 TROPHY", new CanonicalPhoneName() { CanonicalModel = "Trophy" } },
+            { "7 TROPHY T8686", new CanonicalPhoneName() { CanonicalModel = "Trophy" } },
+            { "PC40100", new CanonicalPhoneName() { CanonicalModel = "Trophy", Comments = "Verizon" } },
+            { "SPARK", new CanonicalPhoneName() { CanonicalModel = "Trophy" } },
+            { "TOUCH-IT TROPHY", new CanonicalPhoneName() { CanonicalModel = "Trophy" } },
+            { "MWP6985", new CanonicalPhoneName() { CanonicalModel = "Trophy" } },
+
+            // 8S
+            { "A620", new CanonicalPhoneName() { CanonicalModel = "8S" } },
+            { "WINDOWS PHONE 8S BY HTC", new CanonicalPhoneName() { CanonicalModel = "8S" } },
+
+            // 8X
+            { "C625", new CanonicalPhoneName() { CanonicalModel = "8X" } },
+            { "HTC6990LVW", new CanonicalPhoneName() { CanonicalModel = "8X", Comments="Verizon" } },
+            { "PM23300", new CanonicalPhoneName() { CanonicalModel = "8X", Comments="AT&T" } },
+            { "WINDOWS PHONE 8X BY HTC", new CanonicalPhoneName() { CanonicalModel = "8X" } },
+
+            // Titan
+            { "ETERNITY", new CanonicalPhoneName() { CanonicalModel = "Titan", Comments = "China" } },
+            { "PI39100", new CanonicalPhoneName() { CanonicalModel = "Titan", Comments = "AT&T" } },
+            { "TITAN X310E", new CanonicalPhoneName() { CanonicalModel = "Titan" } },
+            { "ULTIMATE", new CanonicalPhoneName() { CanonicalModel = "Titan" } },
+            { "X310E", new CanonicalPhoneName() { CanonicalModel = "Titan" } },
+            { "X310E TITAN", new CanonicalPhoneName() { CanonicalModel = "Titan" } },
+
+            // Titan II
+            { "PI86100", new CanonicalPhoneName() { CanonicalModel = "Titan II", Comments = "AT&T" } },
+            { "RADIANT", new CanonicalPhoneName() { CanonicalModel = "Titan II" } },
+
+            // Radar
+            { "RADAR", new CanonicalPhoneName() { CanonicalModel = "Radar" } },
+            { "RADAR 4G", new CanonicalPhoneName() { CanonicalModel = "Radar", Comments = "T-Mobile USA" } },
+            { "RADAR C110E", new CanonicalPhoneName() { CanonicalModel = "Radar" } },
+
         };

-        private static Dictionary<string, ReportedNameMetadata> nokiaLookupTable = new Dictionary<string, ReportedNameMetadata>()
+        private static Dictionary<string, CanonicalPhoneName> nokiaLookupTable = new Dictionary<string, CanonicalPhoneName>()
         {
             // Lumia 505
-            { "LUMIA 505", new ReportedNameMetadata("Lumia505", null) },
+            { "LUMIA 505", new CanonicalPhoneName() { CanonicalModel = "Lumia 505" } },
             // Lumia 510
-            { "LUMIA 510", new ReportedNameMetadata("Lumia510", null) },
-            { "NOKIA 510", new ReportedNameMetadata("Lumia510", null) },
+            { "LUMIA 510", new CanonicalPhoneName() { CanonicalModel = "Lumia 510" } },
+            { "NOKIA 510", new CanonicalPhoneName() { CanonicalModel = "Lumia 510" } },
             // Lumia 610
-            { "LUMIA 610", new ReportedNameMetadata("Lumia610", null) },
-            { "LUMIA 610 NFC", new ReportedNameMetadata("Lumia610", "NFC") },
-            { "NOKIA 610", new ReportedNameMetadata("Lumia610", null) },
-            { "NOKIA 610C", new ReportedNameMetadata("Lumia610", null) },
+            { "LUMIA 610", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } },
+            { "LUMIA 610 NFC", new CanonicalPhoneName() { CanonicalModel = "Lumia 610", Comments = "NFC" } },
+            { "NOKIA 610", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } },
+            { "NOKIA 610C", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } },
             // Lumia 620
-            { "LUMIA 620", new ReportedNameMetadata("Lumia620", null) },
-            { "RM-846", new ReportedNameMetadata("Lumia620", null) },
+            { "LUMIA 620", new CanonicalPhoneName() { CanonicalModel = "Lumia 620" } },
+            { "RM-846", new CanonicalPhoneName() { CanonicalModel = "Lumia 620" } },
             // Lumia 710
-            { "LUMIA 710", new ReportedNameMetadata("Lumia710", null) },
-            { "NOKIA 710", new ReportedNameMetadata("Lumia710", null) },
+            { "LUMIA 710", new CanonicalPhoneName() { CanonicalModel = "Lumia 710" } },
+            { "NOKIA 710", new CanonicalPhoneName() { CanonicalModel = "Lumia 710" } },
             // Lumia 800
-            { "LUMIA 800", new ReportedNameMetadata("Lumia800", null) },
-            { "NOKIA 800", new ReportedNameMetadata("Lumia800", null) },
-            { "NOKIA 800C", new ReportedNameMetadata("Lumia800", "China") },
+            { "LUMIA 800", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } },
+            { "NOKIA 800", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } },
+            { "NOKIA 800C", new CanonicalPhoneName() { CanonicalModel = "Lumia 800", Comments = "China" } },
             // Lumia 810
-            { "RM-878", new ReportedNameMetadata("Lumia810", "T-Mobile USA") },
+            { "RM-878", new CanonicalPhoneName() { CanonicalModel = "Lumia 810" } },
             // Lumia 820
-            { "RM-824", new ReportedNameMetadata("Lumia820", null) },
-            { "RM-825", new ReportedNameMetadata("Lumia820", null) },
-            { "RM-826", new ReportedNameMetadata("Lumia820", null) },
+            { "RM-824", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } },
+            { "RM-825", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } },
+            { "RM-826", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } },
             // Lumia 822
-            { "RM-845", new ReportedNameMetadata("Lumia822", "Verizon") },
+            { "RM-845", new CanonicalPhoneName() { CanonicalModel = "Lumia 822", Comments = "Verizon" } },
             // Lumia 900
-            { "LUMIA 900", new ReportedNameMetadata("Lumia900", null) },
-            { "NOKIA 900", new ReportedNameMetadata("Lumia900", null) },
+            { "LUMIA 900", new CanonicalPhoneName() { CanonicalModel = "Lumia 900" } },
+            { "NOKIA 900", new CanonicalPhoneName() { CanonicalModel = "Lumia 900" } },
             // Lumia 920
-            { "RM-820", new ReportedNameMetadata("Lumia920", null) },
-            { "RM-821", new ReportedNameMetadata("Lumia920", null) },
-            { "RM-822", new ReportedNameMetadata("Lumia920", "China") },
-            { "RM-867", new ReportedNameMetadata("Lumia920", "920T") },
-            { "NOKIA 920", new ReportedNameMetadata("Lumia920", null) },
+            { "RM-820", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } },
+            { "RM-821", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } },
+            { "RM-822", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } },
+            { "RM-867", new CanonicalPhoneName() { CanonicalModel = "Lumia 920", Comments = "920T" } },
+            { "NOKIA 920", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } },
         };
     }

@@ -128,15 +232,4 @@
         public bool IsResolved { get; set; }
     }

-    class ReportedNameMetadata
-    {
-        internal string ModelId { get; set; }
-        internal string Description { get; set; }
-
-        internal ReportedNameMetadata(string modelId, string description)
-        {
-            this.ModelId = modelId;
-            this.Description = description;
-        }
-    }
 }


added another Lumia 1520 model code

added another Lumia 1520 model code

--- PhoneNameResolver.cs
+++ PhoneNameResolver.cs
@@ -456,6 +456,7 @@
             // Lumia 1520
             { "RM-937", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520" } },
             { "RM-938", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520", Comments="AT&T" } },
+            { "RM-939", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520" } },
             { "RM-940", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520", Comments="AT&T" } },

         };


提交20150317 0

提交20150317 0

改进Hash的API设计

--- Core/Base/Code/Hash.cs
+++ Core/Base/Code/Hash.cs
@@ -28,6 +28,11 @@
         {
         }

+        public Hash(string text)
+        {
+            SetText(text);
+        }
+
         public Hash(Stream stream)
         {
             _Stream = stream;
@@ -41,6 +46,14 @@
             foreach (byte b in codes)
                 sbd.Append(b.ToString("x2"));
             return sbd.ToString();
+        }
+
+        public void SetText(string text)
+        {
+            if(_Stream != null)
+                _Stream.Close();
+            _Stream = new MemoryStream(
+                _Encoding.GetBytes(text));
         }

         public string GetMD5()


Introduce constant for quote char.

Introduce constant for quote char.

--- CsvReader/CsvReader.cs
+++ CsvReader/CsvReader.cs
@@ -41,6 +41,8 @@
     /// </remarks>
     public sealed class CsvReader
     {
+        #region Helper Classes
+
         internal sealed class Context
         {
             public Context(int line, int column)
@@ -86,6 +88,7 @@
             public TextAfterQuotedValueException(Context context) :
                 base("Text after quoted value", context) { }
         }
+
         internal sealed class QuoteStartWithoutEndException : CsvException
         {
             public QuoteStartWithoutEndException(Context context) :
@@ -169,7 +172,14 @@
             }
         }

-        private void ConsumeWhitespace(Buffer buffer)
+        #endregion
+
+        private const char Quote = '"';
+        private readonly Buffer _buffer;
+        private HashSet<char> _delimiters = new HashSet<char> { ',' };
+        private HashSet<char> _commentChars;
+
+        private static void ConsumeWhitespace(Buffer buffer)
         {
             buffer.ConsumeWhile(char.IsWhiteSpace);
         }
@@ -180,7 +190,7 @@
             buffer.ConsumeWhile(c => !_delimiters.Contains(c));
             string value = buffer.SubstringConsumed(startPos);
             value = value.TrimEnd();
-            int quotePos = value.IndexOf('"');
+            int quotePos = value.IndexOf(Quote);
             if (quotePos != -1)
                 throw new QuoteInUnquotedValueException(new Context(buffer, quotePos));
             return value;
@@ -190,12 +200,12 @@
         {
             var startContext = new Context(buffer.LineNumber, buffer.LinePos);
             var startPos = buffer.LinePos;
-            buffer.ConsumeChar(); // start '"'
+            buffer.ConsumeChar(); // start quote
             bool done = false;
             string value = "";
             while (!done)
             {
-                buffer.ConsumeWhile(c => c != '"');
+                buffer.ConsumeWhile(c => c != Quote);
                 if (buffer.EndOfLine)
                 {
                     // value spans lines
@@ -207,10 +217,10 @@
                 }
                 else
                 {
-                    buffer.ConsumeChar(); // end or escape '"'
-                    if (!buffer.EndOfLine && buffer.Char == '"')
+                    buffer.ConsumeChar(); // end or escape quote
+                    if (!buffer.EndOfLine && buffer.Char == Quote)
                     {
-                        buffer.ConsumeChar(); // escaped '"'
+                        buffer.ConsumeChar(); // escaped quote
                     }
                     else
                     {
@@ -235,14 +245,10 @@
             ConsumeWhitespace(buffer);
             if (buffer.EndOfLine)
                 return "";
-            if (buffer.Char == '"')
+            if (buffer.Char == Quote)
                 return ConsumeQuotedValue(buffer);
             return ConsumeUnquotedValue(buffer);
         }
-
-        private readonly Buffer _buffer;
-        private HashSet<char> _delimiters = new HashSet<char> { ',' };
-        private HashSet<char> _commentChars;

         /// <summary>
         /// Sets the chars that delimit values.  Default is [','].


Fixed bug #3211934 - Bug in iCalendar.cs - UnauthorizedAccessException

--- DDay.iCal/iCalendar.cs
+++ DDay.iCal/iCalendar.cs
@@ -145,7 +145,8 @@

         static public IICalendarCollection LoadFromFile(string filepath, Encoding encoding, ISerializer serializer)
         {
-            FileStream fs = new FileStream(filepath, FileMode.Open);
+            // NOTE: Fixes bug #3211934 - Bug in iCalendar.cs - UnauthorizedAccessException
+            FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);

             IICalendarCollection calendars = LoadFromStream(fs, encoding, serializer);
             fs.Close();


Created generic LoadFromStream<T>() method for TextReader

git-svn-id: 95472bb50cfb75dbf91fed26dc933cae36d5c45c@152 1ca100b6-b014-4248-a4f8-5dbb9f49130a

--- DDay.iCal/iCalendar.cs
+++ DDay.iCal/iCalendar.cs
@@ -396,14 +396,18 @@
         /// <returns>An <see cref="iCalendar"/> object</returns>
         static public iCalendar LoadFromStream(Stream s) { return LoadFromStream(typeof(iCalendar), s); }
         static public iCalendar LoadFromStream(TextReader tr) { return LoadFromStream(typeof(iCalendar), tr); }
-        static public T LoadFromStream<T>(Stream s)
+        static public T LoadFromStream<T>(TextReader tr)
         {
             if (typeof(T) == typeof(iCalendar) ||
                 typeof(T).IsSubclassOf(typeof(iCalendar)))
-            {
-                object obj = LoadFromStream(typeof(T), s);
-                return (T)obj;
-            }
+                return (T)(object)LoadFromStream(typeof(T), tr);
+            else return default(T);
+        }
+        static public T LoadFromStream<T>(Stream s)
+        {
+            if (typeof(T) == typeof(iCalendar) ||
+                typeof(T).IsSubclassOf(typeof(iCalendar)))
+                return (T)(object)LoadFromStream(typeof(T), s);
             else return default(T);
         }
         static public iCalendar LoadFromStream(Type iCalendarType, Stream s)


Set TLS 1.2 as the default potocol

Set TLS 1.2 as the default potocol

--- DancingGoat/Startup.cs
+++ DancingGoat/Startup.cs
@@ -1,5 +1,6 @@
 using Microsoft.Owin;
 using Owin;
+using System.Net;

 [assembly: OwinStartupAttribute(typeof(DancingGoat.Startup))]

@@ -9,6 +10,8 @@
     {
         public void Configuration(IAppBuilder app)
         {
+            // .NET Framework 4.6.1 and lower does not support TLS 1.2 as the default protocol, but Delivery API requires it.
+            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
         }
     }
 }


Only log to the console in development

Only log to the console in development

Only log to the console in the development environment.

--- src/LondonTravel.Site/StartupBase.cs
+++ src/LondonTravel.Site/StartupBase.cs
@@ -81,7 +81,10 @@
             ILoggerFactory loggerFactory,
             IOptionsSnapshot<SiteOptions> options)
         {
-            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
+            if (environment.IsDevelopment())
+            {
+                loggerFactory.AddConsole(Configuration.GetSection("Logging"));
+            }

             app.UseCustomHttpHeaders(environment, Configuration, options);


fixed bug when there are SoI changes before the first maneuver node

--- Plugin/Trajectory.cs
+++ Plugin/Trajectory.cs
@@ -161,6 +161,28 @@
             else
                 aerodynamicModel_.IncrementalUpdate();

+            /*Debug.Log("======== Initial orbit ============");
+            for (var sub = vessel_.orbit; sub != null && sub.activePatch; sub = sub.nextPatch)
+            {
+                Debug.Log("Orbit: arround " + sub.referenceBody.name + ", start=" + sub.StartUT + ", period=" + sub.period + ", start trans=" + sub.patchStartTransition + ", end trans=" + sub.patchEndTransition);
+            }
+
+            Debug.Log("========= Flight plan ==============");
+            foreach (var patch in vessel_.patchedConicSolver.flightPlan)
+            {
+                Debug.Log("- flightPlan entry");
+                for (var sub = patch; sub != null && sub.activePatch; sub = sub.nextPatch)
+                {
+                    Debug.Log("Orbit: arround " + sub.referenceBody.name + ", start=" + sub.StartUT + ", period=" + sub.period + ", start trans=" + sub.patchStartTransition + ", end trans=" + sub.patchEndTransition);
+                }
+            }
+
+            Debug.Log("========= Maneuver nodes ============");
+            foreach (var node in vessel_.patchedConicSolver.maneuverNodes)
+            {
+                Debug.Log("at " + node.UT + ", deltav=" + node.DeltaV.magnitude);
+            }*/
+
             var state = vessel.LandedOrSplashed ? null : new VesselState(vessel);
             for (int patchIdx = 0; patchIdx < Settings.fetch.MaxPatchCount; ++patchIdx)
             {
@@ -228,15 +250,18 @@
             patch.spaceOrbit = startingState.stockPatch ?? createOrbitFromState(startingState);
             patch.endTime = patch.startingState.time + patch.spaceOrbit.period;

-            var flightPlan = vessel_.patchedConicSolver.flightPlan;
-            if (!flightPlan.Any())
-            {
-                // when there is no maneuver node, the flight plan is empty, so we populate it with the current orbit and associated encounters etc.
-                flightPlan = new List<Orbit>();
-                for (var orbit = vessel_.orbit; orbit != null && orbit.activePatch; orbit = orbit.nextPatch)
-                {
-                    flightPlan.Add(orbit);
-                }
+            // the flight plan does not always contain the first patches (before the first maneuver node), so we populate it with the current orbit and associated encounters etc.
+            var flightPlan = new List<Orbit>();
+            for (var orbit = vessel_.orbit; orbit != null && orbit.activePatch; orbit = orbit.nextPatch)
+            {
+                if (vessel_.patchedConicSolver.flightPlan.Contains(orbit))
+                    break;
+                flightPlan.Add(orbit);
+            }
+
+            foreach (var orbit in vessel_.patchedConicSolver.flightPlan)
+            {
+                flightPlan.Add(orbit);
             }

             Orbit nextStockPatch = null;


Added Initailised Event

Added Initailised Event

--- plmOS.Database.SQLServer/Session.cs
+++ plmOS.Database.SQLServer/Session.cs
@@ -75,6 +75,29 @@
             }
         }

+        private Boolean _initialised;
+        public Boolean Initialised
+        {
+            get
+            {
+                return this._initialised;
+            }
+            private set
+            {
+                this._initialised = value;
+
+                if (this._initialised)
+                {
+                    if (this.InitialseCompleted != null)
+                    {
+                        this.InitialseCompleted(this, new EventArgs());
+                    }
+                }
+            }
+        }
+
+        public event EventHandler InitialseCompleted;
+
         internal Model.ItemType RootItemType { get; private set; }

         internal Table RootItemTable
@@ -229,6 +252,7 @@
             this.VaultDirectory = VaultDirectory;
             this.TableCache = new Dictionary<Model.ItemType, Table>();
             this.ItemTypeCache = new Dictionary<Guid, Model.ItemType>();
+            this.Initialised = true;
         }
     }
 }


Added custom parameter type example

Added custom parameter type example

--- src/TestMode/Tests/CommandsTest.cs
+++ src/TestMode/Tests/CommandsTest.cs
@@ -14,8 +14,11 @@
 // limitations under the License.

 using System;
+using System.Linq;
 using SampSharp.GameMode.Definitions;
+using SampSharp.GameMode.SAMP;
 using SampSharp.GameMode.SAMP.Commands;
+using SampSharp.GameMode.SAMP.Commands.Parameters;
 using SampSharp.GameMode.World;

 namespace TestMode.Tests
@@ -72,6 +75,64 @@
             sender.SendClientMessage("That was awkward.");
         }

+        [Command("color")]
+        public static void TestComand(BasePlayer sender,
+            [ParameterType(typeof (CustomCommandParameterType))] Color color)
+        {
+            sender.SendClientMessage(color, "YOU CHOSE THIS COLOR!!!");
+        }
+
+        class CustomCommandParameterType : ICommandParameterType
+        {
+            #region Implementation of ICommandParameterType
+
+            /// <summary>
+            ///     Gets the value for the occurance of this parameter type at the start of the commandText. The processed text will be
+            ///     removed from the commandText.
+            /// </summary>
+            /// <param name="commandText">The command text.</param>
+            /// <param name="output">The output.</param>
+            /// <returns>true if parsed successfully; false otherwise.</returns>
+            public bool GetValue(ref string commandText, out object output)
+            {
+                output = null;
+
+                // Can't parse without intput.
+                if (string.IsNullOrWhiteSpace(commandText))
+                    return false;
+
+                // Get the first word.
+                var word = commandText.TrimStart().Split(' ').First();
+
+                // Set the output (color) based on the input.
+                switch (word.ToLower())
+                {
+                    case "red":
+                        output = Color.Red;
+                        break;
+                    case "green":
+                        output = Color.Green;
+                        break;
+                    case "blue":
+                        output = Color.Blue;
+                        break;
+                }
+
+                // Remove the word from the input and trim the start.
+                if (output != null)
+                {
+                    commandText = commandText.Length == word.Length
+                        ? string.Empty
+                        : commandText.Substring(word.Length).TrimStart();
+                    return true;
+                }
+
+                return false;
+            }
+
+            #endregion
+        }
+
         #region Implementation of ITest

         public void Start(GameMode gameMode)


Fixed bug that trapped non .NET exceptions

--- Netjs/CsToTs.cs
+++ Netjs/CsToTs.cs
@@ -2513,25 +2513,30 @@
 				base.VisitTryCatchStatement (tryCatchStatement);

 				var catches = tryCatchStatement.CatchClauses.ToList ();
-
-
+				if (catches.Count == 0)
+					return;
+
+				var varName = catches.Where (x => !string.IsNullOrEmpty (x.VariableName)).Select (x => x.VariableName).FirstOrDefault ();
+				if (varName == null) {
+					varName = "_ex";
+				}

 				//
 				// Fix first
 				//
 				foreach (var c in catches) {
 					if (string.IsNullOrEmpty (c.VariableName)) {
-						c.VariableName = "_ex";
+						c.VariableName = varName;
 					}
 				}

 				//
 				// Merge them
 				//
-				if (catches.Count > 1) {
+				if (catches.Count > 0) {
 					var body = new BlockStatement ();
 					var newCatch = new CatchClause {
-						VariableName = "_ex",
+						VariableName = varName,
 						Body = body,
 					};

@@ -2542,7 +2547,7 @@
 						var cbody = c.Body;
 						cbody.Remove ();

-						var iff = new IfElseStatement (GetNotNullTypeCheck ("_ex", c.Type), cbody);
+						var iff = new IfElseStatement (GetNotNullTypeCheck (varName, c.Type), cbody);

 						if (lastIf == null)
 							body.Add (iff);
@@ -2554,7 +2559,7 @@
 						c.Remove ();
 					}

-					var rethrow = new ThrowStatement (new IdentifierExpression ("_ex"));
+					var rethrow = new ThrowStatement (new IdentifierExpression (varName));

 					if (lastIf == null)
 						body.Add (rethrow);


Added to AssemblyWeaver methods to add references.

--- src/Tools/Weaver/AssemblyWeaver.cs
+++ src/Tools/Weaver/AssemblyWeaver.cs
@@ -112,6 +112,28 @@
             TargetModule.Assembly.Write(outputAssemblyPath, writerParameters);
         }

+        public void AddReference(string fromAssemblyPath, string referenceName)
+        {
+            var directory = Path.GetDirectoryName(fromAssemblyPath);
+            AddSearchDirectory(directory);
+
+            var assembly = CecilUtils.GetAssemblyDef(fromAssemblyPath);
+
+            var reference = assembly.MainModule.AssemblyReferences.Single(r => r.Name == referenceName);
+
+            TargetModule.AssemblyReferences.Add(reference);
+        }
+
+        public void AddReference(string assemblyPath)
+        {
+            var directory = Path.GetDirectoryName(assemblyPath);
+            AddSearchDirectory(directory);
+
+            var assembly = CecilUtils.GetAssemblyDef(assemblyPath);
+
+            TargetModule.AssemblyReferences.Add(assembly.Name);
+        }
+
         private void CheckErrors()
         {
             if(Copier.Errors.Any())


Fixed exc msg

Fixed exc msg

--- src/NJsonSchema/JsonPathUtilities.cs
+++ src/NJsonSchema/JsonPathUtilities.cs
@@ -104,7 +104,7 @@
                 }
                 catch (Exception exception)
                 {
-                    throw new InvalidOperationException("Could not resolve the path '" + jsonPath + "' with the URL '" + url + "': " + exception.Message, exception);
+                    throw new InvalidOperationException("Could not resolve the path '" + jsonPath + "' with the file path '" + url + "': " + exception.Message, exception);
                 }
             }
             else
@@ -124,7 +124,7 @@
                 }
                 catch (Exception exception)
                 {
-                    throw new InvalidOperationException("Could not resolve the path '" + jsonPath + "' with the file path '" + filePath + "': " + exception.Message, exception);
+                    throw new InvalidOperationException("Could not resolve the path '" + jsonPath + "' with the URL '" + filePath + "': " + exception.Message, exception);
                 }
             }
             else


Add comment explaining the query string building

--- src/NLog/Targets/WebServiceTarget.cs
+++ src/NLog/Targets/WebServiceTarget.cs
@@ -275,6 +275,8 @@
             }

             var builder = new UriBuilder(this.Url);
+            //append our query string to the URL following
+            //the recommendations at https://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx
             if (builder.Query != null && builder.Query.Length > 1)
             {
                 builder.Query = builder.Query.Substring(1) + "&" + queryParameters.ToString();


Don't throw exceptions from Parse!

Don't throw exceptions from Parse!

--- src/NodaTime/Format/InstantParser.cs
+++ src/NodaTime/Format/InstantParser.cs
@@ -55,7 +55,7 @@
             format = format.Trim();
             if (format.Length > 1)
             {
-                throw FormatError.FormatInvalid(format);
+                return ParseResult<Instant>.FormatInvalid(format);
             }
             char formatChar = format[0];
             return DoStrictParse(value, formatChar, formatInfo, parseStyles);


[LinkWith] Add support for specifying that -lgcc_eh is needed.

--- src/ObjCRuntime/LinkWithAttribute.cs
+++ src/ObjCRuntime/LinkWithAttribute.cs
@@ -70,7 +70,11 @@
 		public LinkTarget LinkTarget {
 			get; set;
 		}
-
+
+		public bool NeedsGccExceptionHandling {
+			get; set;
+		}
+
 		public bool NeedsCpp {
 			get; set;
 		}


Small refactor and updated documentation for 'SignupANotEnabledAccount' #730

--- web/App_Code/LcAuthHelper.cs
+++ web/App_Code/LcAuthHelper.cs
@@ -215,28 +215,47 @@
     }

     #region Internal Signup processes
-    private static bool IsRecordedButNotAnAccount(LcRest.UserProfile user)
+    /// <summary>
+    /// Is true when the user exist at database but the account is not enabled (never accepted TOU or created a password).
+    /// That happens when:
+    /// - Has a status of 'serviceProfessionalClient'
+    /// </summary>
+    /// <param name="user"></param>
+    /// <returns></returns>
+    private static bool IsUserButNotEnabledAccount(LcRest.UserProfile user)
     {
         return user.accountStatusID == (int)LcEnum.AccountStatus.serviceProfessionalClient;
     }
-    private static LoginResult SignupANotAnAccount(int userID, string email, string password, bool returnProfile)
-    {
-        // CLIENT--CONFIRMATION LOGIC
-        // The email can exists because the user has an account created as client by a service professional:
-        // - A: On that cases, we need to communicate that specific situation (error message), generate a confirmation code
-        // for the existent user, send email to let him to confirm it owns the given e-mail.
-        // - B: On returning here after point A, a confirmation code is provided and we must proceed
-        // by checking the confirmation code and, on success, unlock and update the membership password and
-        // continue updating any given data.
+    /// <summary>
+    /// Convert a user record with 'Not Enabled Account' into a standard enabled account. This doesn't validate the user
+    /// record fits that case, so call IsUserButNotEnabledAccount before this (and see it's docs)
+    /// This supports the cases
+    /// - User with status of 'serviceProfessionalClient': the user has an account created as client by a service professional.
+    ///
+    /// For the conversion, we need support next actions/requests:
+    /// - A: We need to communicate that specific situation (error message), generate a confirmation code
+    ///   for the existent user, send email to let him to confirm that he/she owns the given e-mail.
+    /// - B: On returning here after request/response A, a confirmation code is being provided and we must proceed
+    ///   by checking the confirmation code and, on success, enable account (change status), update the membership password and
+    ///   continue with a valid set of LoginResult. External code should allow user to update any additional account data.
+    /// </summary>
+    /// <param name="userID"></param>
+    /// <param name="email"></param>
+    /// <param name="password"></param>
+    /// <param name="returnProfile"></param>
+    /// <returns></returns>
+    private static LoginResult SignupANotEnabledAccount(int userID, string email, string password, bool returnProfile)
+    {
         var confirmationCode = Request["confirmationCode"];
-        var errMsg = String.Format(@"We see one of our service professionals has already scheduled services for you in the past.
-                        We've just sent an invitation to create your account to {0}.
-                        Please follow its instructions. We can't wait to get you on board!", email
+        var errMsg = String.Format(@"
+            We see one of our service professionals has already scheduled services for you in the past.
+            We've just sent an invitation to create your account to {0}.
+            Please follow its instructions. We can't wait to get you on board!", email
         );
+        // Action/Request A: Create confirmation code
         if (String.IsNullOrEmpty(confirmationCode))
         {
-            // Point A: create confirmation code
-            // generate a confirmation code (creates the Membership record, that does not exists still since is as just a client)
+            // To generate a confirmation code (creates the Membership record, that does not exists still since is as just a client)
             // this needs a random password (we still didn't verified the user, so do NOT trust on the given password).
             // NOTE: since this can be attempted several time by the user, and next attempts will fail because the Membership
             // record will exists already, just double check and try creation only if record don't exists:
@@ -250,9 +269,10 @@
             // Not valid after all, just communicate was was done and needs to do to active its account:
             throw new HttpException(409, errMsg);
         }
+        // Action/Request B: confirm confirmation code
         else
         {
-            // Point B: confirm confirmation code
+            // If confirmation token is valid, enable account and reset password
             if (LcAuth.GetConfirmationToken(userID) == confirmationCode)
             {
                 // We know is valid, we can update the accountStatus to not be any more a "service professional's client"
@@ -367,26 +387,20 @@
             // Otherwise, just register the user.
             if (LcAuth.ExistsEmail(email))
             {
-                // If the email exists, we try to log-in using the provided password, to don't bother with "e-mail in use" error
-                // if the user provides the correct credentials (maybe just don't remember he/she has already an account; make it easy for them
-                // to return).
-                // BUT we have a special situation that needs extra checks:
-                // CLIENT--CONFIRMATION LOGIC
-                // The email can exists because the user has an account created as client by a service professional:
-                // - A: On that cases, we need to communicate that specific situation (error message), generate a confirmation code
-                // for the existent user, send email to let him to confirm it owns the given e-mail.
-                // - B: On returning here after point A, a confirmation code is provided and we must proceed
-                // by checking the confirmation code and, on success, unlock and update the membership password and
-                // continue updating any given data.
+                // We query the user with that email
                 var userID = WebSecurity.GetUserId(email);
                 var user = LcRest.UserProfile.Get(userID);
-                if (IsRecordedButNotAnAccount(user))
-                {
-                    logged = SignupANotAnAccount(userID, email, password, returnProfile);
+                // There are special cases when a user is registered, but never has accepted TOU or created a password (Not Enabled Account),
+                // and is possible for that user to become an regular/enabled account.
+                if (IsUserButNotEnabledAccount(user))
+                {
+                    logged = SignupANotEnabledAccount(userID, email, password, returnProfile);
                 }
                 else
                 {
-                    // NOT a client, just standard sign-up that requires verify the email/password or fail
+                    // If the email exists, we try to log-in using the provided password, to don't bother with "e-mail in use" error
+                    // if the user provides the correct credentials (maybe just don't remember he/she has already an account; make it easy for them
+                    // to return).
                     // Try Login
                     try
                     {


Implement Edit menu items

Implement Edit menu items

--- CefSharp.WinForms.Example/BrowserForm.cs
+++ CefSharp.WinForms.Example/BrowserForm.cs
@@ -110,37 +110,65 @@

         private void UndoMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Undo();
+            }
         }

         private void RedoMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Redo();
+            }
         }

         private void CutMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Cut();
+            }
         }

         private void CopyMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Copy();
+            }
         }

         private void PasteMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Paste();
+            }
         }

         private void DeleteMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.Delete();
+            }
         }

         private void SelectAllMenuItemClick(object sender, EventArgs e)
         {
-
+            var control = GetCurrentTabControl();
+            if (control != null)
+            {
+                control.Browser.SelectAll();
+            }
         }
     }
 }


#261 set execution policy before evaluating globalparams.

--- src/SIM.Sitecore9Installer/Tasker.cs
+++ src/SIM.Sitecore9Installer/Tasker.cs
@@ -248,6 +248,7 @@
         importParam = string.Format(" -RequiredVersion {0}", sifVersion);
       }
       StringBuilder globalParamsEval = new StringBuilder();
+      globalParamsEval.Append("Set-ExecutionPolicy Bypass -Force\n");
       globalParamsEval.AppendFormat("Import-Module SitecoreInstallFramework{0}\n", importParam);
       globalParamsEval.AppendLine("$GlobalParams =@{");
       globalParamsEval.Append(this.tasksToRun.First().GetGlobalParamsScript(false));


Owin initialization

Owin initialization

--- ClusterKit.Web/ClusterKit.Web/Startup.cs
+++ ClusterKit.Web/ClusterKit.Web/Startup.cs
@@ -51,9 +51,9 @@
             config.DependencyResolver = dependencyResolver;

             config.EnsureInitialized();
-            appBuilder.UseWebApi(config);

             owinStartupConfigurators.ForEach(c => c.ConfigureApp(appBuilder));
+            appBuilder.UseWebApi(config);
         }

         /// <summary>


Port 443 is also a default port and should be excluded from the Host header on websocket requests for compatibility reasons

--- websocket-sharp/HttpRequest.cs
+++ websocket-sharp/HttpRequest.cs
@@ -133,7 +133,8 @@
       var headers = req.Headers;
       headers["Upgrade"] = "websocket";
       headers["Connection"] = "Upgrade";
-      headers["Host"] = uri.Port == 80 ? uri.DnsSafeHost : uri.Authority;
+	  bool isDefaultPort = (uri.Port == 80 && uri.Scheme == "ws") || (uri.Port == 443 && uri.Scheme == "wss");
+	  headers["Host"] = isDefaultPort ? uri.DnsSafeHost : uri.Authority;

       return req;
     }


Fix extra line

Fix extra line

--- src/SixLabors.Fonts/GlyphInstance.cs
+++ src/SixLabors.Fonts/GlyphInstance.cs
@@ -104,7 +104,6 @@
             // (lineHeight * dpi.Y)
             if (surface.BeginGlyph(box, hash))
             {
-
                 int startOfContor = 0;
                 int endOfContor = -1;
                 for (int i = 0; i < this.endPoints.Length; i++)