Xamarin.Android and user downloadable executable code (.dll)
I have a question regarding this bullet point of the Malicious Behavior policy.
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
Does an app fall into that category if the user can use it to download and run .NET assemblies (IL) from the NuGet gallery? More specifically: Xamarin.Android bindings.
.NET assemblies by themselves should fall into the "JavaScript" category or "code that runs in a virtual machine and has limited access to Android APIs".
However Android bindings contain native executable code which can technically be considered potentially malicious. A simple example would be downloading a native binding like "Refractored.GifImageView". Which is just a convenient library.
The app itself is an educational tool for C#. It compiles and runs user C# code on their device.
c# android xamarin.android google-play
add a comment |
I have a question regarding this bullet point of the Malicious Behavior policy.
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
Does an app fall into that category if the user can use it to download and run .NET assemblies (IL) from the NuGet gallery? More specifically: Xamarin.Android bindings.
.NET assemblies by themselves should fall into the "JavaScript" category or "code that runs in a virtual machine and has limited access to Android APIs".
However Android bindings contain native executable code which can technically be considered potentially malicious. A simple example would be downloading a native binding like "Refractored.GifImageView". Which is just a convenient library.
The app itself is an educational tool for C#. It compiles and runs user C# code on their device.
c# android xamarin.android google-play
add a comment |
I have a question regarding this bullet point of the Malicious Behavior policy.
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
Does an app fall into that category if the user can use it to download and run .NET assemblies (IL) from the NuGet gallery? More specifically: Xamarin.Android bindings.
.NET assemblies by themselves should fall into the "JavaScript" category or "code that runs in a virtual machine and has limited access to Android APIs".
However Android bindings contain native executable code which can technically be considered potentially malicious. A simple example would be downloading a native binding like "Refractored.GifImageView". Which is just a convenient library.
The app itself is an educational tool for C#. It compiles and runs user C# code on their device.
c# android xamarin.android google-play
I have a question regarding this bullet point of the Malicious Behavior policy.
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
Does an app fall into that category if the user can use it to download and run .NET assemblies (IL) from the NuGet gallery? More specifically: Xamarin.Android bindings.
.NET assemblies by themselves should fall into the "JavaScript" category or "code that runs in a virtual machine and has limited access to Android APIs".
However Android bindings contain native executable code which can technically be considered potentially malicious. A simple example would be downloading a native binding like "Refractored.GifImageView". Which is just a convenient library.
The app itself is an educational tool for C#. It compiles and runs user C# code on their device.
c# android xamarin.android google-play
c# android xamarin.android google-play
edited Nov 12 at 21:47
asked Nov 11 at 22:08
radostin dimitrov
1111
1111
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Well this a first time well basically the malicious behavior policy says that
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play
But what you seem to be missing is that this policy applies when your application is downloading an exe i.e. an executable file.(Emphasis on the application)
Now when you talk about nuget packages your application is not downloading the nuget packages it is basically being downloaded by vs then when you make an apk it gets converted into a Java Android Executable i.e. the APK now this apk is not downloading anything in app its already downloaded and bundled in so "the malicious behavior" policy doesn't apply at all in your scenario.
I hope it helps, Revert in case of queries
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
|
show 1 more comment
I don't speak for Google Play policy but I think it is extremely unlikely this would be allowed. Google Play has this policy to protect Android users from malicious code. Making app developers put all their code in the APK has two advantages:
- it allows Google's abuse teams to look for malware before the app is published, so protect users
- it prevents developers from having accidental security holes, where an attacked could attack the network or the server, and create arbitrary code for a user to execute on the device, even if the original developer did not intend anything malicious. App developers have made lots of mistakes in this area in the past.
Downloading arbitrary packages from NuGet at runtime sounds like it would be extremely dangerous from both counts, and so I suspect Google Play Policy won't allow it.
Have you considered the new Google Play feature dynamic delivery to accomplish what you want?
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53253736%2fxamarin-android-and-user-downloadable-executable-code-dll%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Well this a first time well basically the malicious behavior policy says that
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play
But what you seem to be missing is that this policy applies when your application is downloading an exe i.e. an executable file.(Emphasis on the application)
Now when you talk about nuget packages your application is not downloading the nuget packages it is basically being downloaded by vs then when you make an apk it gets converted into a Java Android Executable i.e. the APK now this apk is not downloading anything in app its already downloaded and bundled in so "the malicious behavior" policy doesn't apply at all in your scenario.
I hope it helps, Revert in case of queries
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
|
show 1 more comment
Well this a first time well basically the malicious behavior policy says that
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play
But what you seem to be missing is that this policy applies when your application is downloading an exe i.e. an executable file.(Emphasis on the application)
Now when you talk about nuget packages your application is not downloading the nuget packages it is basically being downloaded by vs then when you make an apk it gets converted into a Java Android Executable i.e. the APK now this apk is not downloading anything in app its already downloaded and bundled in so "the malicious behavior" policy doesn't apply at all in your scenario.
I hope it helps, Revert in case of queries
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
|
show 1 more comment
Well this a first time well basically the malicious behavior policy says that
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play
But what you seem to be missing is that this policy applies when your application is downloading an exe i.e. an executable file.(Emphasis on the application)
Now when you talk about nuget packages your application is not downloading the nuget packages it is basically being downloaded by vs then when you make an apk it gets converted into a Java Android Executable i.e. the APK now this apk is not downloading anything in app its already downloaded and bundled in so "the malicious behavior" policy doesn't apply at all in your scenario.
I hope it helps, Revert in case of queries
Well this a first time well basically the malicious behavior policy says that
Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play
But what you seem to be missing is that this policy applies when your application is downloading an exe i.e. an executable file.(Emphasis on the application)
Now when you talk about nuget packages your application is not downloading the nuget packages it is basically being downloaded by vs then when you make an apk it gets converted into a Java Android Executable i.e. the APK now this apk is not downloading anything in app its already downloaded and bundled in so "the malicious behavior" policy doesn't apply at all in your scenario.
I hope it helps, Revert in case of queries
answered Nov 11 at 23:32
G.hakim
2,8191627
2,8191627
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
|
show 1 more comment
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
To clarify I'm not asking if an application can be compiled and published with nuget packages. Obviously that's a yes. In this scenario additional packages can be downloaded at runtime. So yes this is an in app download initiated by the user.
– radostin dimitrov
Nov 12 at 10:51
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
So basically your application is downloading NuGet packages afterwards?
– G.hakim
Nov 13 at 5:23
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Yes, exactly. Afterwards the user can make the application download NuGet packages
– radostin dimitrov
Nov 13 at 9:18
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Well I am not sure if this makes your application fall under the category or not most probably I would say it does, so I would suggest you get in touch with Google Play Support and ask them whether or not your application falls under that category or not and if yes what can be a suitable resolution as I do not think anyone has probably done what you are trying to do here.
– G.hakim
Nov 13 at 10:21
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
Google support can be quite hard to reach but I guess it's the only viable option left. Thanks anyway
– radostin dimitrov
Nov 13 at 11:03
|
show 1 more comment
I don't speak for Google Play policy but I think it is extremely unlikely this would be allowed. Google Play has this policy to protect Android users from malicious code. Making app developers put all their code in the APK has two advantages:
- it allows Google's abuse teams to look for malware before the app is published, so protect users
- it prevents developers from having accidental security holes, where an attacked could attack the network or the server, and create arbitrary code for a user to execute on the device, even if the original developer did not intend anything malicious. App developers have made lots of mistakes in this area in the past.
Downloading arbitrary packages from NuGet at runtime sounds like it would be extremely dangerous from both counts, and so I suspect Google Play Policy won't allow it.
Have you considered the new Google Play feature dynamic delivery to accomplish what you want?
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
add a comment |
I don't speak for Google Play policy but I think it is extremely unlikely this would be allowed. Google Play has this policy to protect Android users from malicious code. Making app developers put all their code in the APK has two advantages:
- it allows Google's abuse teams to look for malware before the app is published, so protect users
- it prevents developers from having accidental security holes, where an attacked could attack the network or the server, and create arbitrary code for a user to execute on the device, even if the original developer did not intend anything malicious. App developers have made lots of mistakes in this area in the past.
Downloading arbitrary packages from NuGet at runtime sounds like it would be extremely dangerous from both counts, and so I suspect Google Play Policy won't allow it.
Have you considered the new Google Play feature dynamic delivery to accomplish what you want?
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
add a comment |
I don't speak for Google Play policy but I think it is extremely unlikely this would be allowed. Google Play has this policy to protect Android users from malicious code. Making app developers put all their code in the APK has two advantages:
- it allows Google's abuse teams to look for malware before the app is published, so protect users
- it prevents developers from having accidental security holes, where an attacked could attack the network or the server, and create arbitrary code for a user to execute on the device, even if the original developer did not intend anything malicious. App developers have made lots of mistakes in this area in the past.
Downloading arbitrary packages from NuGet at runtime sounds like it would be extremely dangerous from both counts, and so I suspect Google Play Policy won't allow it.
Have you considered the new Google Play feature dynamic delivery to accomplish what you want?
I don't speak for Google Play policy but I think it is extremely unlikely this would be allowed. Google Play has this policy to protect Android users from malicious code. Making app developers put all their code in the APK has two advantages:
- it allows Google's abuse teams to look for malware before the app is published, so protect users
- it prevents developers from having accidental security holes, where an attacked could attack the network or the server, and create arbitrary code for a user to execute on the device, even if the original developer did not intend anything malicious. App developers have made lots of mistakes in this area in the past.
Downloading arbitrary packages from NuGet at runtime sounds like it would be extremely dangerous from both counts, and so I suspect Google Play Policy won't allow it.
Have you considered the new Google Play feature dynamic delivery to accomplish what you want?
answered Nov 16 at 8:42
Nick Fortescue
5,4111422
5,4111422
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
add a comment |
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
I don't know if dynamic delivery is supported for Xamarin.Android.
– radostin dimitrov
Nov 16 at 19:45
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
It isn't an option as I could only add the "most popular" packages. Even then it would be hundreds of packages with complex dependencies (several hundred more maybe). They would have to be compressed to reduce the number of additional apks so a user will still end up with too much taken up space. Or worse: 1 huge apk with everything. Also with such an app or even a scripting/task app a user could theoretically always use it to download something malicious, so by that logic the entire basic concept of many apps is in violation. The ansewers I got from google support were basically "don't know"
– radostin dimitrov
Nov 16 at 20:04
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
Forgot to mention. "Making app developers put all their code in the APK". I, the developer am not using the Nuget packages . Only the user within their own code
– radostin dimitrov
Nov 16 at 20:29
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53253736%2fxamarin-android-and-user-downloadable-executable-code-dll%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown