Crowdsourcing is useful for performing a number of tasks. In the digital age, crowdsourcing has been used to allow tasks that computers cannot perform on their own to be performed by paid crowds. Types of tasks for which crowdsourcing has been used include annotation, transcription, judgment, and/or other tasks. Computerized platforms have been developed to manage crowdsourcing of tasks. Although useful, traditional crowdsourcing platforms suffer from a number of drawbacks. For example, contributors may be unqualified for some of the tasks they are asked to perform, resulting in low-quality contributions; contributors may introduce their personal biases when making contributions, thus skewing the results; and contributors may not be paid fair wages, causing the number of participants to go down over time. Consequently, research into crowdsourcing is ongoing, and there is a need to improve computerized crowdsourcing platforms to obtain higher quality, unbiased contributions while properly compensating the contributors.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
A framework for recruiting contributors is disclosed. In various embodiments, contributors are recruited for crowdsourcing tasks (also referred to as tasks). Examples of tasks include audio transcription, image/video classification/categorization, audio/video/photo/other data annotation, content moderation, relevance judgments, and other tasks. Contributors (also referred to as agents) contribute transcriptions, classifications, annotations, judgments, and/or any other type of contribution requested of them. Contributors/agents include people (i.e., human contributors/agents) and computer programs (i.e., software contributors/agents). In some embodiments, contributions are received from both human contributors/agents and software contributors/agents. In various embodiments, human contributors are recruited from across the world. Recruiting a human contributor typically includes inviting, soliciting, and/or ordering the human contributor to work on a task. Recruiting a software contributor typically includes selecting a computer program to work on a task. In various embodiments, for each task, a profile configuration comprising desired feature configurations for contributors for the task is used by a contributor recruitment component. Examples of desired features that are configurable include gender distribution, age distribution, language distribution, country of origin distribution, historical accuracy as measured from prior work, contributors for which a task would be similar/dissimilar from other tasks, contributor crowdsourcing experience, hourly wage, and number of contributors. Desired feature configurations typically vary depending on the task. For example, desired gender distributions might be different for a content moderation task versus an image annotation task. In this sense, in various embodiments, contributor profiles associated with collecting data labels are adjusted. In various embodiments, a selection (e.g., a group) of contributors is identified with a goal of having the selection have the desired features specified in a profile configuration. For example, if a desired feature specified in a profile configuration is a balanced gender distribution (e.g., equal numbers of males and females), then one objective in identifying contributors to potentially recruit for the task is to identify contributors in a manner such that a balanced gender distribution among contributors is achieved. In various embodiments, more than one desired feature is specified in a profile configuration, and thus there are multiple objectives when identifying contributors to recruit. In various embodiments, a multi-objective optimization is performed to identify a selected set of one or more contributors (e.g., a subset of a pool of available contributors) that substantially meets a set of one or more objectives derived from a profile configuration. In some embodiments, a prediction model (e.g., a machine learning model, such as a long short-term memory (LSTM) neural network) is used to determine when to commence (or continue) recruiting of contributors for a task. In some embodiments, an LSTM is trained on historical data of feature configurations of available contributors during various times during a 24-hour period in order to predict one or more times during which feature configurations of available contributors would be substantially similar to desired feature configurations specified in a profile configuration for a task. In various embodiments, recruiting commences (or continues) during times determined by the prediction model (e.g., an LSTM neural network).
As will be further described herein, the contributor recruitment framework described herein has several benefits. In some embodiments, at any given moment, available contributors that are qualified to work on a particular task may number in the thousands or more. Identifying a subset (of contributors from a myriad of available contributors) that substantially meets numerous objectives would not be feasible without an automated framework. In particular, multi-objective optimization used in various embodiments to identify subsets of contributors requires computer assistance and a framework. As will be further described herein, by employing such a framework, benefits such as higher quality contributions, reduced bias in contributions, and better paid workers can be achieved and/or managed. Biases in contributions can be reduced in a collective sense (e.g., biases of contributions in the aggregate).
Profiler 104 receives and stores profile configurations. Profile configurations include desired feature configurations for contributors for a task. Examples of desired features of contributors to be configured include gender distribution, age distribution, language distribution, country of origin distribution, historical accuracy as measured from prior work, crowdsourcing experience distribution, similarity of the task to previous tasks, hourly wage, and number of contributors. In some embodiments, profile configurations are a set of metrics that can be visualized graphically (e.g., as a radar chart). For example, as will be described herein,
Monitor 106 monitors contributors and keeps track of contributors that are currently working on or have already worked on a task and available contributors for hire (whether online or offline). For any particular task, monitor 106 stores feature information (e.g., gender, age, language, country of origin, historical accuracy as measured from prior work, and hourly wage) associated with each contributor that is currently working on or has already worked on that particular task. Hourly wage may be associated with a minimum hourly wage in a country where a contributor is located. Monitor 106 provides feature information associated with contributors to recruiter 108.
Recruiter 108 identifies and solicits contributors for a task according to an algorithm that considers a profile configuration comprising desired feature configurations for contributors for the task (e.g., a profile configuration provided by profiler 104), feature information associated with contributors that are currently working or have already worked on the task (e.g., feature information provided by monitor 106), and feature information associated with contributors available for recruiting. Recruiter 108 has access to feature information associated with contributors available for recruiting (e.g., via a network). In various embodiments, an algorithm seeks to identify which contributors, if recruited and combined with the contributors that are currently working or have already worked on the task, would result in the combined contributors achieving a profile configuration substantially similar to a desired profile configuration. In various embodiments, recruiter 108 performs recruiting by soliciting the identified contributors to work on the task. This may be done by sending the identified contributors an invitation to work on the task. The invitation can be a notification sent within crowdsourcing platform 100, a notification shown in a platform (e.g., a website) affiliated with and/or linked to crowdsourcing platform 100, a message sent via a messaging application, an email, etc. In the example shown, recruiter 108 uses network 112 to reach contributors 114. In various embodiments, contributors 114 are a pool of available contributors distributed across the world. In various embodiments, recruiter 108 concurrently recruits for multiple tasks associated with distinct profile configurations.
Each of profiler 104, monitor 106, recruiter 108, and predictor 110 may be any hardware or software system, component, process, and/or application. Each of profiler 104, monitor 106, recruiter 108, and predictor 110 may be co-located or remote via a public, private or hybrid network and may be running on one or more back-end systems where crowdsourcing platform 100 is situated or on one or more front-end systems used by task requesters and contributors. For example, monitor 106 may reside between and connected to network 112 and contributors 114. In various embodiments, the implementation of contributor recruitment component 102 includes at least one microprocessor subsystem (also referred to as a processor or a central processing unit (CPU)). For example, contributor recruitment component 102 can be implemented by a single-chip processor or by multiple processors. In some embodiments, a general-purpose digital processor that controls the operation of contributor recruitment component 102 is used. In various embodiments, profiler 104, monitor 106, recruiter 108, and predictor 110 are implemented on a processor coupled to a memory. The processor is coupled bi-directionally with the memory, which can include a first primary storage area, typically a random access memory (RAM), and a second primary storage area, typically a read-only memory (ROM). As is well known in the art, primary storage can be used as a general storage area and as scratch-pad memory, and can also be used to store input data and processed data. Primary storage can also store programming instructions and data, in the form of data objects and text objects, in addition to other data and instructions for processes operating on the processor. Also, as is well known in the art, primary storage typically includes basic operating instructions, program code, data, and objects used by the processor to perform its functions (e.g., programmed instructions). The memory can include any suitable computer readable storage media. The processor can also directly and very rapidly retrieve and store frequently needed data in a cache memory. Mass storage may be used to provide additional data storage capacity for contributor recruitment component 102 and is coupled either bi-directionally (read/write) or uni-directionally (read only) to the processor. For example, mass storage can include computer readable media such as flash memory, portable mass storage devices, and other storage devices. Mass storage generally stores additional programming instructions, data, and the like that typically are not in active use by the processor. It will be appreciated that the information retained within mass storage can be incorporated, if needed, in standard fashion as part of the memory (e.g., RAM) as virtual memory.
In the example shown in
where p1 and p2 are probabilities (in this case, percentages) corresponding to male and female contributors.
When p1=p2=0.5 (i.e., 50%), H(x)=½ log2 2+½ log2 2=½+½=1. As is well known in the art, entropy is readily generalizable to probability distributions in which an arbitrary number of probabilities exists
as well as to continuous probability distributions. In various embodiments, entropies of distributions other than gender are used (e.g., age, language, and country (of origin)). For any distribution, an entropy of 1 corresponds to maximal diversity. The maximum entropy (maximal diversity) is 1 because entropy has been normalized (entropy with log base N where N is the number of distinct categorical values for which a probability distribution is calculated). In some embodiments, the SciPy library is used to compute the entropy. Metrics other than entropy may also be used to describe diversity objectives.
In the radar charts shown in
In embodiments in which software contributors are recruited, profile configurations include features specific to software contributors. In some embodiments, software contributor biases are included in profile configurations. In various embodiments, software contributors utilize models trained to perform tasks that human contributors perform. These models, and thus the software contributors, may have biases in a manner similar to how human contributors have biases. For example, if a software contributor's face recognition model is trained on data sets comprising predominantly Caucasian faces, then the software contributor may have a Caucasian bias (e.g., it might make more errors when it encounters non-Caucasian faces). Biases may be determined by examining training data. For example, if data sets used to train models were labeled by contributor groups having skewed gender, age, or country of origin distributions, then the models may have gender, age, or country of origin biases in a manner similar to gender, age, or country of origin biases of groups of human contributors. Biases of models may be measured, for example, by comparing answers given by the models to answers given by groups of human contributors having balanced distributions for specified features. For example, a model might have a gender bias if the answers the model gives are significantly different from those given by groups of human contributors having balanced gender distributions. In some embodiments, software contributor biases are formulated in terms of performance with respect to specific tasks. For example, a model has a content moderation bias if it tends to rate pieces of text as offensive at a higher rate than human contributors and other software contributors. In some embodiments, a feature of software contributors included in profile configurations is the overall model used by a software contributor. In some embodiments, this overall model encapsulates all of the model's attributes (e.g., biases with respect to various tasks, accuracy with respect to various tasks, and other attributes). In some embodiments, profile configurations specify diversity objectives for models. For example, a profile configuration might specify high model diversity, indicating that dividing up work among 10 different models might be more desirable than using a single model for the work. Model diversity may be measured, for example, by using an entropy metric, as described above. The amount of work (e.g., the percentage of work needed to complete a task) to be performed by software contributors versus human contributors may also be a feature in profile configurations.
In some embodiments, characteristics of contributions are features that are included in profile configurations. For example, for a task in which pieces of text are read by contributors to produce audio samples, background noise of audio samples is a characteristic of contributions made by the contributors. A corresponding feature that may be tracked for contributors is the rate at which a contributor provides audio samples with background noise. A profile configuration may specify diversity in background noise (e.g., specify that half of audio samples should include background noise above a threshold level and the other half should include background noise below the threshold). In various embodiments, characteristics of contributions are automatically detected by contributor recruitment component 102 of
Features that may be included in profile configurations, whether for human contributors or software contributors, are not limited to the examples described herein. The examples of profile configuration features described herein are illustrative and not restrictive.
At 302, a profile configuration (the profile configuration comprising desired feature configurations for contributors for a task on a crowdsourcing platform) is provided. In some embodiments, the profile configuration is provided by profiler 104. In some embodiments, the profile configuration has desired feature configurations that can be visualized in a radar chart. Desired feature configurations may exist for features including gender, age, language, country of origin, experience, skills, historical accuracy as measured from prior work (e.g., as related to specific tasks, such as audio transcription and image classification), hourly wage, and number of contributors. Other characteristics of contributors that may be included in profile configurations include occupation, education level, marital status, etc. As shown in
At 304, among a plurality of available contributors, a selected set of one or more contributors that substantially meets a set of one or more objectives associated with the task is automatically identified (the identification being based at least in part on the profile configuration). An example set of contributors in list form is shown in
At 306, the selected set of one or more contributors is recruited to perform the task. In various embodiments, recruitment corresponds to soliciting the selected contributors to work on the task. This may be done by sending human contributors an invitation to work on the task. Human contributors invited to work on the task may not accept the invitation. In various embodiments, contributor recruitment component 102 of
At 502, a set of contributors that have worked on a current task is determined. This set may include both contributors currently working on the current task that have not finished their work and contributors that have worked on the current task and have finished their work. In some embodiments, the set of contributors that have worked on a current task is determined by monitor 106 of
At 504, an initial state using the set of contributors that have worked on the current task is calculated. The initial state is calculated using only the set of contributors that have worked on the current task. The initial state is an instance of a state that can be calculated. In various embodiments, each state that is calculated is a set of measurements associated with a set of features associated with a set of contributors. The set of features associated with a calculation of a state for a current task can be obtained from a profile configuration for the current task. For example, suppose that the profile configuration for the current task includes the following features: gender, age, and country (of origin). In this case, if the features of gender, age, and country (of origin) are characterized as entropies in the profile configuration, then the initial state calculated for the set of contributors that have worked on the current task would be gender, age, and country (of origin) entropies of the gender, age, and country (of origin) distributions, respectively, of the set of contributors that have worked on the current task. Each state that is calculated can be compared with a profile configuration associated with the calculation of the state. In the above example involving a profile configuration including gender, age, and country (of origin) as features, if uniform distributions for gender, age, and country (of origin) are desired, the profile configuration would read {gender entropy=1; age entropy=1; country entropy=1}. In this example, an initial state that is calculated using entropy equations such as equation (1) and variations of equation (1) might be {gender entropy=0.8; age entropy=0.7; country entropy=0.3} (or whatever results from the set of contributors that have worked on the current task). In various embodiments, calculation of states is performed by recruiter 108 of
At 506, a set of contributors that are available to recruit for the current task is determined. The set of contributors that are available to recruit for the current task is the pool of available contributors (e.g., contributor users that are currently logged onto crowdsourcing platform 100 and/or any affiliated platform, have logged onto the platform within a certain time window, etc.) that can be solicited to work on the current task. In some embodiments, contributors that are offline may be deemed available (e.g., if they can be contacted and can respond to a recruitment request). In various embodiments, available contributors are distributed across the world and accessible via a network.
At 508, a new state using a new set of contributors that is a union of the set of contributors that have worked on the current task and a specified subset of the set of contributors that are available to recruit for the current task is calculated. Stated differently, the new state is calculated using an updated set that includes the set of contributors that have worked on the current task and a subset of the pool of available contributors that can be solicited to work on the current task.
For example, if there are 5 contributors that have worked on the current task and there are 10 available contributors that can be solicited, a possible new set of contributors for which to calculate a new state is a set of contributors that includes the 5 contributors that have worked on the current task plus one of the 10 available contributors. In this example, any combination of a single available contributor, 2 available contributors, 3 available contributors, and so forth up to 10 available contributors may be added to the 5 contributors that have worked on the current task to form a new set for which a new state is calculated. If no contributors have worked on the current task (e.g., recruiting has not commenced), then the set of contributors that have worked on the current task is an empty set, in which case, the embodiment of the process illustrated in
At 510, it is determined whether there are more subsets to use for calculations of states resulting from sets that are unions of the set of contributors that have worked on the current task and specified subsets of the set of contributors that are available to recruit for the current task. If at 510 it is determined that there are more subsets to use for calculations, then step 508 is repeated. Otherwise, step 512 is performed. In the example above with 2 out of 10 available contributors added to 5 existing contributors, more subsets to use for calculations corresponds to more combinations of 2 available contributors to add. In some embodiments, all or substantially all combinations of a specified number of contributors to add are used to calculate new states.
At 512, based at least in part on the calculated new states, a subset of contributors to potentially recruit that substantially meets a set of one or more objectives is determined. In the example above with 2 out of 10 available contributors added to 5 existing contributors, a specific subset of 2 out of the 10 available contributors is identified as a potential group to recruit for the current task. The specific subset of contributors to potentially recruit is determined based at least in part on determining which subset's state substantially meets one or more objectives specified in the profile configuration. Sets with different contributors result in different feature values for states (e.g., different gender, age, and country entropies). For example, sets in which all male contributors are added to a set of existing contributors that is already all male would result in lower gender entropy. Adding female contributors to a set of existing contributors that is all male would increase gender entropy. If one of the objectives specified in the profile configuration is high gender entropy (e.g., gender entropy=1), then a subset whose state is characterized by high gender entropy may be a good candidate for selection. Because profile configurations often include more than one feature, several state characteristics are often considered at the same time. For example, if high gender, age, and country entropies are specified in the profile configuration, a subset whose state is characterized by age, gender, and country entropies in a manner that substantially meets the gender, age, and country entropy objectives better than other subsets could be a good candidate for selection. Timing for recruitment is described in further detail herein (e.g., see
In some embodiments, the multi-objective optimization produces pareto-optimal results in the sense that improvements for one feature (e.g., gender entropy) come at the cost of another feature (e.g., age entropy). In various embodiments, performing multi-objective optimization involves determining an objective function to maximize. In the example above where gender, age, and country entropies are specified in the profile configuration, a possible objective function is an unweighted sum of gender, age, and country entropies. Determining a state that maximizes or is substantially close to the maximum of the unweighted sum of gender, age, and country entropies in this example is the multi-objective optimization problem to be solved. In some embodiments, PyGMO methods that deal with choosing pareto-optimal portions of a population are used. In some embodiments, the multi-objective optimization considers likelihoods of individual contributors accepting tasks and/or completing tasks (e.g., in a prediction model based on historical records associated with contributors). Aggregate metrics (e.g., mean of historical accuracy) may also be considered.
At 702, contributor group sizes that align with a set of one or more objectives are determined. As shown in
At 704, for each determined group size, a subset of contributors to potentially recruit that substantially meets the set of one or more objectives is determined. In some embodiments, the subset of contributors of that determined group size to potentially recruit (not already recruited) that substantially meets the set of one or more objectives is determined using an embodiment of a process illustrated in
At 706, among the determined subsets of contributors to potentially recruit, one subset that meets the set of one or more objectives better than the other subsets is selected. In some embodiments, PyGMO methods that deal with pareto-optimization are used to select a subset that meets the set of one or more objectives better than the other subsets. In various embodiments, each determined subset is associated with a state that can be compared with a profile configuration that specifies one or more objectives to meet. For example, gender, age, and country entropies equal to one can be specified in the profile configuration, and, in this case, each subset's state would be characterized by age, gender, and country entropies. In some embodiments, states of the subsets are compared with the profile configuration by using a distance metric/formula, and a state that is closer to the profile configuration than other states is determined. In the example above involving gender, age, and country entropies, distances between points in a three-dimensional space can be calculated, and a subset that meets the set of one or more objectives better than other subsets is a subset whose associated point in a gender/age/country entropy three-dimensional space is closest to a point representing gender, age, and country entropies of value one (as is shown in
At 708, the selected subset is recruited. In various embodiments, recruitment corresponds to soliciting contributors that are members of the subset to work on a task via messages, emails, etc. In some embodiments, if it is desirable to complete a task quickly, it is desirable to recruit as many contributors as possible during each recruitment of contributors. Promoting recruitment of more contributors during each recruitment of contributors may be accomplished by including contributor group size as a feature in the profile configuration and specifying a large contributor group size as an objective.
Subsequently, in various embodiments, the recruited contributors perform the task and the results are recorded. In some embodiments, the output of contributors is used to predict contributor availability and/or is used by requestors of tasks for various purposes (e.g., as training data for artificial intelligence models).
A further benefit of the framework is flexibility with respect to how traits for which balance is desirable are determined. In some embodiments, determination of traits for which balance is desirable can be done manually by a requestor of a task if the requestor has the ability to define a desirable composition of contributors for a specific task. Determination of traits may also be data-driven. An automated framework may determine traits for which balance is desirable by comparing differences in responses across different populations and determining which traits, when unbalanced, lead to significantly different responses. For example, it is possible to review content moderation tasks and check if differences in answers from men and women are statistically significant (if so, a balanced gender distribution might be desirable).
At 902, a time period (e.g., 24 hours) is divided into smaller, specified intervals of time. For example, there might be 24 intervals, one corresponding to each hour in a day. The intervals could also be smaller (e.g., 20-minute intervals instead of one-hour intervals) or larger (e.g., 2-hour intervals instead of one-hour intervals). The intervals do not need to be the same duration (e.g., it is possible to have some 20-minute intervals, some one-hour intervals, and some two-hour intervals).
At 904, historical data relating to metrics associated with available contributors is designated according to the specified intervals of time. All features, metrics, and/or traits that can be included in a profile configuration (e.g., those related to gender, age, language, country of origin, historical accuracy, hourly wage, and number of contributors available) are considered. These features, metrics, and/or traits are calculated for contributors available during the specified intervals of time. For example, gender distributions (and thus gender entropies) could be calculated for available contributors during each hour for every day from the past three months.
At 906, a prediction model (e.g., a neural network) is trained using the historical data to determine, among the specified intervals of time, one or more intervals of time for recruiting that substantially meet a set of one or more objectives. For example, historical data in the form of states corresponding to features that can be included in profile configurations with respect to available contributors during one-hour increments could be used as training data. In some embodiments, the training data is used to train a prediction model that includes an LSTM neural network in which the output is a sequence of states. In the example in which one-hour intervals are used for 24 hours, the output of the prediction model (e.g., LSTM neural network) would be 24 sequential states, with each state associated with a one-hour interval. As an example, suppose that a profile configuration for a task specifies gender, age, and country entropies of value one, in which case a prediction model (e.g., neural network) would have been trained so that its output states include gender, age, and country entropies. In this example, if the prediction model (e.g., neural network) predicts that certain hours are more likely to be associated with high gender, age, and country entropies, then those hours might be identified as desirable hours in which to commence or continue recruiting.
The problem to solve (in the example illustrated in
At 908, recruiting occurs during the one or more determined intervals of time. In some embodiments, recruiting is configured to occur during specific intervals of time. For example, recruiting may be configured to commence during one determined interval of time, paused, and continued during another determined interval of time. In some embodiments, after recruiting is commenced, recruiting continues periodically until the task for which recruiting was commenced is completed. For example, recruiting may be configured to occur every 20 minutes (i.e., a subset of available contributors that substantially meets a set of one or more objectives is determined every 20 minutes) after recruiting is commenced until a task is completed. In some embodiments, the periodicity with which recruiting occurs after it is commenced is such that recruiting occurs in real time or almost in real time (e.g., if recruiting occurs every minute, recruiting may be considered to occur in real time). A benefit of recruiting during the determined intervals of time is faster recruiting (and thus faster completion of tasks) due to recruiting during intervals of time when desired contributor compositions are more likely to exist. During intervals of time when desired contributor compositions exist, it is likely that more contributors can be recruited than during other intervals of time.
A framework for recruiting contributors for crowdsourcing tasks has been disclosed. This framework has several benefits. This framework allows for the ability to control compositions of groups of contributors working on various crowdsourcing tasks. Examples of the measurable gains from controlling compositions of groups of contributors include reducing bias in contributions made by contributors, increasing accuracy of contributions made by contributors, and faster recruiting. Furthermore, the framework promotes fair wages and worker satisfaction for contributors, thereby promoting the ethical collection of data.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
This application claims priority to U.S. Provisional Patent Application No. 62/720,836 entitled FRAMEWORK FOR ADJUSTING CONTRIBUTOR PROFILE IN COLLECTING DATA LABELS filed Aug. 21, 2018 which is incorporated herein by reference for all purposes.
Number | Date | Country | |
---|---|---|---|
62720836 | Aug 2018 | US |