d52a3b1c64
Client.Shared now project-references Driver.OpcUaClient.Contracts (Core.Abstractions only, no NuGet/SDK; pinned by ContractsIsDependencyLightTests) and delegates the host/port rewrite to OpcUaEndpointUrlRewriter, deleting its own copy. The two copies differed; reconciled toward the client so its pinned behaviour is unchanged (EndpointSelectorRewriteParityTests, written green against the old copy): - no-op rewrite (same host case-insensitively + same port) now returns the advertised string verbatim in the shared rewriter too (it re-serialised: added a trailing slash and case-folded a case-only host difference); - a real rewrite serialises via AbsoluteUri, not Uri.ToString(), which un-escaped the advertised path (/x%20y became /x y) in the driver + browser; - unusable URLs: the rewriter still falls back to the configured URL (driver/browser); the client keeps its loud failure as call-site validation (null -> InvalidOperation, unparseable -> UriFormatException).